/*
This functions were created by Ross Sampere (www.diantresoft.com)
You can re-use this file at your will.
*/
//dbg & dbd_id needed

var DSctt = { ESQ:0 , CEN:1 , DRE:2 , EmptyString:"",ESPACI:" ", ESPACI_HTML:"&nbsp;", COMETA:"\'", COMETAD:"\""
 
};
    
function d(a,b,c) {dd(a,b,c);}
function dd(t,es_error) 			{ if (dbg || (es_error && pagina_ei_locau() && false))		{alert("[" + dbg_id + "]:" + t);} 		}
function dif(c,t)		{ if (c) 		{dd(t);							}		}
function dbgnof(o,t)	{ if (!o) 	{dd("Obj.not found:"+t); return false;} else {return true;}}
function ddnull (o,nom,msg) {if (!o) 		{dd("Obj.\""+nom+"\" not found:"+  o  + (msg?msg:""),true  ); } }





function x2int(x) { return parseInt(x,10); }
function x2Int(x) { rx2int(x); dd("uso de x2Int --<"); }


/******************************************************************************/
function amb_valor(a)
{

	if (a===false || a===0)
	{ 
		return true; 
	}
	else            // no es un booleano con valor false ni un entero con valr 0
	{
		if (a)	{return true;}
		else	{return false;}	//deber&iacute;a entrar aqu&iacute; por: null undefined NaN "" (string vac&iacute;o)
	
	}
/*
 if (a==null)  				return true;
 if (typeof(a)=='string')
 {
	if (a==DSctt.EmptyString)  	return true;
	if (a.length==0)  		return true;
 } 
return false;
*/
}
function sense_valor(a) {return !amb_valor(a); }

/*
function amb_valor(a)
{
	return !sense_valor(a);
}
*/

//dd("codi_i_global loading...");

/***************************************************************************************************************/




var DSobj ={};
DSobj.pren 			=function(obj_id,obj_doc)		{var o,d;  if (obj_doc) {d=obj_doc;} else {d=self.document;		}  o=d.getElementById(obj_id);    /*dd("id:" + obj_id + " obj:" + o +  " tipo:" + typeof o);*/    ddnull(o,obj_id,"DSobj.pren");  return o;};
DSobj.pren_de_hi 	=function(obj_id,hiestra)		{var d;    if (hiestra) {d=hiestra.document;} else {d=self.document;}  return DSobj.pren(obj_id,d); };


DSobj.pren_valor=function(obj_id,obj_doc)		{var o; return (o=DSobj.pren(obj_id,obj_doc)) && o.value    ; /* retorna el obj, que es falsable, porque no existe, si existe retorna el html */	};
DSobj.pren_html =function(obj_id,obj_doc)		{var o; return (o=DSobj.pren(obj_id,obj_doc)) && o.innerHTML; /* retorna el obj, que es falsable, porque no existe, si existe retorna el html */	};


DSobj.pren_x   	=function(id,strmem,doc)			
{
 var propiedades,i,sub_obj,o=DSobj.pren(id,doc); 

 if(o) 
 {
 	sub_obj=o;	
 	propiedades = strmem.split(".");
 	for (i=0; i<propiedades.length-1 ; i++)  
 	{ 
   		sub_obj = sub_obj[propiedades[i]]; /*dd("o."+propiedades[i] +":"+sub_obj);*/
 	}
 	return sub_obj[ propiedades[i] ];  //i = propiedades.length - 1
 }

 return o;
};



//DSobj.met_x     =function(id,strmem,valor,doc)  {var o=DSobj.pren(id,doc); if(o) {o[strmem]=valor;} return o;};

DSobj.met_x     =
function(id,strmem,valor,doc) 
{
 var propiedades,i;
 var sub_obj;
 var o;
 
 
 if (typeof id == 'string')
 {
 	o=DSobj.pren(id,doc); 

 //dd("met_x(" + strmem + ") para obj:" + id); 

 if(o) 
 {
 	sub_obj=o;	
 	propiedades = strmem.split(".");

 	for (i=0; i<(propiedades.length-1) ; i++)  
 	{ 
 		sub_obj = sub_obj[ propiedades[i] ]; 
   		//dd("Accediendo a o."+propiedades[i] +":"+sub_obj);
 	}
 	
 	
 	
 	
/*f (false || id=="t1_fila1_celda1")
	{
	 
		dd("ANTES  id:"+id+" members:"+strmem+  " i:"+i+"  props.length:" + propiedades.length + "   props[i]:" + propiedades[i] +   "  subobj:"+sub_obj  + "  sub_obj[ propiedades[i] ]:" + sub_obj[ propiedades[i] ]  +   "   sub_obj.innerHTML:" + sub_obj.innerHTML +    "   valor:" + valor);
	 	
		var atributo = propiedades[i]; 
		
		dd("pongo a pinyon algo en    atrib:"+atributo);
		
		sub_obj.innerHTML = "ALGO";
			
			
		dd("DESP:" + sub_obj.innerHTML);
	}
*/ 
		sub_obj[ propiedades[i] ] = valor;  	// i = propiedades.length - 1
		
	
	 
	
	//dd("se ha puesto " + propiedades[i] + "=" + valor + " en " + sub_obj ); 	
 }
 //else dd("met_x(" + strmem + ") no trobat obj:" + id);	


 return o;
 
 }
 else
 {
 	for (i=0; i<id.length ; i++){ DSobj.met_x(id[i],strmem,valor,doc);}
 
 }
 
};


DSobj.met_html  =function(id,valor,doc)         {return DSobj.met_x(id,"innerHTML",valor,doc); };
DSobj.del       =function(id,doc)				{var o=DSobj.pren(id,doc);	if(o) {o.parentNode.removeChild(o); return true;} else {return false;} };
DSobj.met_imatge=function(id,psrc,ptit,palt,doc)
{

var o=DSobj.pren(id,doc); 	

if(o)
 {
  o.src		=	psrc; 
  o.title	=   ptit;	  
  o.alt		=	palt;
 }
  
  return o; 

}; //todo texto que debe ponerse como title debe venir en binario (sin  html entities ni c&oacute;digos escapados)   


DSobj.mod_visi =function(id,bln,doc) 
{
	var o; 
	//if (bln)dd("Posant visibility "+bln+"- abans:"+ DSobj.pren(id).style.visibility );
	
	o=DSobj.met_x(id,"style.visibility",(bln?"visible":"hidden"),doc); 
	
	//if (bln)dd("Posant visibility "+bln+"- despres:"+ DSobj.pren(id).style.visibility ); 
	
return o;

};




DSobj.mod_disp =function(id,bln,doc) { return DSobj.met_x(id,"style.display",(bln?DSctt.EmptyString:"none"),doc); };


 


    

function met_obj_src(obj_id,psrc,phiestra){var o;	dd("met_obj_src OBS:" + obj_id,true);o=DSobj.pren_de_hi(obj_id,phiestra);	if(o){o.src  =psrc;}	return o;}
function met_obj_tit(obj_id,ptit,phiestra){var o;	o=DSobj.pren_de_hi(obj_id,phiestra);	if(o){o.title=ptit;}	return o;}


function met_obj_val(obj_id,pval){var o=document.getElementById(obj_id);if(o){o.value=pval;return o;}		else {return null;}}
function met_obj_siz(obj_id,pval){var o=document.getElementById(obj_id);if(o){o.size =pval;return o;}		else {return null;}}
function met_obj_ron(obj_id,pval){var o=document.getElementById(obj_id);if(o){if (pval) {o.readonly=true;}	else {o.readonly=false;} return o;}else {return null;}	}
function met_obj_tex (obj_id,pval){var o=document.getElementById(obj_id);if(o){o.text=pval;return o;}		else {return null;}}
function met_obj_text(obj_id,pval){var o=document.getElementById(obj_id);if(o){o.text=pval;return o;}		else {return null;}}
function  met_obj_href(obj_id,pval)	{var o=document.getElementById(obj_id);if(o){ o.href=pval;} return o;}
function pren_obj_href(obj_id)		{var o=document.getElementById(obj_id);if(o){return o.href;} return null;}





function random_num1(maxi)	/*ret. de 0 a maxim <=3599 		*/	{var avui=new Date();var menutes=avui.getMinutes();var seconds=avui.getSeconds();  return ((menutes * 60 + seconds) % (maxi+1));}
function random_num2(maxi)	/*ret. de 0 a maxim <=1000000 	*/	{var avui=new Date();  return ((avui.getTime()) % (maxi+1));}






/***************************************************************************************************************/
function busca_texte (texte , paraula , damb_case) /*ara*/ // ret:true se l'a trapat
{
if (sense_valor(  texte  )) {return false;}

if (sense_valor(damb_case)) {damb_case=true;}


//cdr(l,sep,do_trim,mirar_case)
if (null === DSstr.cdr(texte,paraula,false,damb_case)) {  return false;}
else                                             { return true;}

}



/********************************************************************************/ 
function set_frame_rows_arr(finestra,frameset_name,arr_row)
{
var i;
var	obj;
var txt;

 txt=arr_row[0];
 for(i=1; i<arr_row.length ; i++)	{txt=txt + "," + arr_row[i];}

 obj		=	finestra.document.getElementById(frameset_name);
 if (obj) {obj.rows=txt;}

}

function get_frame_rows_arr(finestra,frameset_name)
{
var obj,txt;
 
 obj	=	finestra.document.getElementById(frameset_name);
 if (obj)
 {
 	txt	=	obj.rows;
 	//dd("obj:" + obj + " rows es un " + typeof obj.rows + " con valor " + obj.rows);
	return txt.split(",");
 }
 else
 {
 	//dd("no trobat (" + frameset_name + ")");
 	return [];
 }
}

/*
function set_window_height(doc,v)		
{
if 		(doc.layers) 	{ doc.parent.innerHeight=v;}
else if	(doc.all) 		{ doc.body.clientHeight=v;}
else 					{ return false; }
}
*/

function get_window_height(doc)		
{
	if 		(doc.layers) 	{ return doc.parent.innerHeight;}
	else if	(doc.all) 		{ return doc.body.clientHeight;}
	else 					{ return -1; }
}


function fin_mida(fin) //out: [ ample , al&ccedil;ada ]		
{
var doc;

	fin = fin || self;
	doc = fin.document;
	
 //dd("doc: "+doc+" .layers"+doc.layers+ " .body"+doc.body);
 if (doc)
 {	
 
 	
	if 		(doc.layers) 	{ return [fin.innerWidth,fin.innerHeight];}
	else if	(doc.body) 		{ return [doc.body.clientWidth ,doc.body.clientHeight];}
	
 }
 return []; 
}


function fra_mida(obj_frameset)  //out: [ [array cols] , [array rows] ]
{
var ret=[[],[]];
 
 //obj	=	fra_mida finestra.document.getElementById(frameset_name);
 if (obj_frameset)
 {
 	if (obj_frameset.rows) ret[1] = obj_frameset.rows.split(",");
	if (obj_frameset.cols) ret[0] = obj_frameset.cols.split(",");
 }
 return ret;
 //dd("frameset con " +mida[0].length+" cols :" + mida[0].slice(",") + " y "+mida[1].length+" fila:" + mida[1].slice(",") );
}

function fra_mida_set(obj_frameset,mida)  //in: [ [array cols] , [array rows] ]
{
  
 if (mida[0].length>0) 	{ obj_frameset.cols = mida[0].slice(","); }
 else					{ obj_frameset.cols = undefined; 		  }
 
 if (mida[1].length>0) 	{ obj_frameset.rows = mida[1].slice(","); }
 else					{ obj_frameset.rows = undefined; 		  }

}








/***********************************************************************************/
function pagina_ei_locau(hiestra)
{
var text	= DSctt.EmptyString ;
var busca	= "FILE:" ;
var pos=-1;
var locau;

//UBICACIO LOCAL
var uri_root_locau = "file://localhost/E:/Ross/projectes/Web_DiantreSoftware/font/actual/";

var uri_root_remot = "http://www.diantresoft.com/";


if (DSweb.uri_root)  

{

	return (0===DSweb.uri_root.toUpperCase().indexOf(busca)? true:false);

}

// todo esto solo una vez

if (hiestra)    {	text  = hiestra.location.toString();	}		
else 			{ 	text  =    self.location.toString();	} //LOCATION ei un obj&egrave;cte


text = text.toUpperCase();
pos  = text.indexOf(busca);

//dd(text + "   p:" + pos);
if (0 === pos) 		{	locau= true;				}
else 				{	locau = false;	dbg=false;	}

if 	(locau) 		DSweb.uri_root = uri_root_locau;
else				DSweb.uri_root = uri_root_remot;

return locau; 
   	
//dd ("car de txt:" + cdr(text   ,"/"));
} 

/***********************************************************************************************/

function busca_parent_obj(obj_id,hiestra)	
{

	if (hiestra===null) {hiestra=self.parent;}
	return DSobj.pren(obj_id,hiestra.document);
}








/********************************************************************************/
function text_replace(t,a,b,do_trim,mirar_case) //usar el trim es un poco weird
{
var ini;
var fin;

	if (sense_valor(mirar_case)) {	mirar_case=true;}	//per defecte s&iacute; mira el case
	if (sense_valor(do_trim)) 	{	do_trim=false;		}//per defecte no fa trim
	
	fin=DSstr.cdr(t,a,do_trim,mirar_case);
	if (fin===null) 
	{
		//dd("text_replace, no trobat ("+a+") a ("+t+ ")");
		return t;		//null indica que a no hi &egrave;s
	}
	
	ini = DSstr.car(t,a,do_trim,DSctt.EmptyString,mirar_case);
	if (sense_valor(fin)) {return ini + b;}
	return ini + b + text_replace(fin,a,b,do_trim,mirar_case);

}
/********************************************************************************/
function text_replace_array(t,a,arr_b,ind_start)
{ /* array 0 a n */
var ini;
var fin;

	if (null===ind_start) {ind_start=0;}

	fin=DSstr.cdr(t,a);
	if (fin===null){ return t;}		//null indica que a no i &egrave;s
	ini=DSstr.text_car(t,a);
	if (sense_valor(fin)) {return ini + arr_b[ind_start];}

	return ini + arr_b[ind_start] + text_replace_array( DSstr.cdr(t,a) , a , arr_b , ind_start+1);
}
/********************************************************************************/
function text_replace_array2(t,a,arr_b,ind_start)	// a->b[1] , a->b[2], ...   total_chg->b[0]
{
 /* array arr_b (1 a n) damb es valors a me'ter, era posicion 0 ei per a m&eacute;ter eth totau de cambis h&egrave;ts, a de venir damb valor 0 ent&agrave; anar ben */
 /* ind_start aurie d'&egrave;ster d'un ent&agrave; deuant, s'ei z&egrave;ro, se met a un */

var ini;
var fin;
var r;

 if (null===ind_start) {	ind_start=1;}
 if (ind_start<=0) 	{	ind_start=1;}


 
 fin=DSstr.cdr(t,a);
 if (fin===null) 
 {
	r=t;		//null indica que 'a' no hi &egrave;s
 }
 else
{
	ini=DSstr.car(t,a); //case on, claro, igual que el cdr!
	arr_b[0]++; //gessuda: totau de cambis h&egrave;ts
	
	if (sense_valor(fin))	{r=ini + arr_b[ind_start];}
	else					{r=ini + arr_b[ind_start] + text_replace_array2( fin , a , arr_b , ind_start+1);}
	//else					r=ini + arr_b[ind_start] + text_replace_array2( cdr(t,a) , a , arr_b , ind_start+1);
	
}
	//dd("text_replace_array2 retorna " + r);
	return r;
}










function text_replace_il_array2 (t,a,b,arr_a,arr_b,damb_miei,ind_start)
{
	/* array 1 ent&agrave; n damb es valors, era posicion 0 ei per a m&eacute;ter eth totau de cambis h&egrave;ts, a de venir damb valor 0 ent&agrave; anar ben */
 	/* ind_start aurie d'&egrave;ster d'un ent&agrave; deuant, s'ei z&egrave;ro, se met a un */

var ini;		//___ini___xxx___fin
var fin; var miei;
var r=DSctt.EmptyString;

 if (null===ind_start) 	{ind_start=1;}
 if (ind_start<=0) 		{ind_start=1;}
 
 //dd("damb_miei:"+damb_miei);
 if (sense_valor(damb_miei)) {damb_miei=true;}
//dd("damb_miei:"+damb_miei);
 while(true)
 {
	ini = DSstr.car(t,a);
	fin = DSstr.cdr(t,a);
	miei= DSstr.car(fin,b);
	fin = DSstr.cdr(fin,b);
//	dd("ini:"+ini);
//	dd("miei:"+miei);
//	dd("fin:"+fin);
	
	if (miei!==null)
//	if ((ini!=null)&&(fin!=null)) 
	{
		if (damb_miei===false) {  miei=DSctt.EmptyString; }
		r = r + ini + arr_a[ind_start] + miei + arr_b[ind_start];
		t = fin;
		
		arr_a[0]++;	
		ind_start++;		
	}
	else
		{
			r=r+t;
			break;
		}
	}
		
	return r;
}


function text_get_il_array (t,a,b,o_obj_arr, mirar_case)	//ret booleano
{
	/* case on */
	/* gessuda: array 0 = esqu&egrave;rra 1 = miei 2 = DSstr.dreta   */
	/* ret&ograve;rne true se trape es dues termi&egrave;res */
	
var ini;		//___ini__a__MIEI__b__fin
var fin; 
var miei;
var retorn=true;

if (sense_valor(mirar_case)) {mirar_case=false;}		//sense case, per defecte

o_obj_arr[0]=DSctt.EmptyString;
o_obj_arr[1]=DSctt.EmptyString;
o_obj_arr[2]=DSctt.EmptyString;

  	ini = DSstr.car(t,a,null,null,mirar_case);
 	if (ini===null) { retorn= false; }
 	
	fin = DSstr.cdr(t,a,false,mirar_case);		
	if (fin===null) { retorn=  false; }
	
	if (amb_valor(fin))
	{
		miei = DSstr.car(fin,b,null,null,mirar_case);
		if (miei==null) { retorn= false; }
		fin = DSstr.cdr(fin,b,false,mirar_case);
	}

if (retorn)
{
	o_obj_arr[0]=ini;
	o_obj_arr[1]=miei;
	o_obj_arr[2]=fin;
}	//amb retorn false no s'ha de mirar resultat
return retorn;
}



/*************************************************************************************/
function get_tag_from_html(str,chg_case)		//chg_case 1 low , 2 up
{
 var arr_lmr1 = new Array(3);
 var arr_lmr2 = new Array(3);
 
 var ESPACI = " "; //ara
 var retorno=DSctt.EmptyString; 
 var id_trapat1;
 var id_trapat2;
 
 id_trapat1		= text_get_il_array (str  , "<" , ESPACI, arr_lmr1 ,  false);
 id_trapat2 	= text_get_il_array (str  , "<" , ">" 	, arr_lmr2 ,  false); 
 
 if ((id_trapat1) && (id_trapat2))
 {
 	if (arr_lmr1[DSctt.CEN].length < arr_lmr2[DSctt.CEN].length) 	{retorno = arr_lmr1[DSctt.CEN];}
 	else												{retorno = arr_lmr2[DSctt.CEN];}    
 }
 else if (id_trapat1){	retorno = arr_lmr1[DSctt.CEN];}
 else 				{	retorno = arr_lmr2[DSctt.CEN]; }   
  
 //dd("IN:("+str+") IZQ("+arr_lmr[DSctt.ESQ]+") CEN("+arr_lmr[DSctt.CEN]+") DER("+arr_lmr[DSctt.DRE]+")");
 //dd("in:("+str+") sincomillas:" + sin_comillas+" id found:("+id_trapat+") resultado:("+retorno+")");
 
 if (amb_valor(chg_case)) 
 {
 	//retorno = DSobj.pren_valor(retorno);
 	if 		(1==chg_case) 	{retorno = retorno.toLowerCase();}
 	else if (2==chg_case)	{retorno = retorno.toUpperCase();}
 }
 
 return retorno;
 
}


function del_tag_from_html(str)		//esfa&ccedil;ar tags
{
 var arr_lmr = new Array(3);
 var retorno=DSctt.EmptyString; 
 
 retorno=str;
 
 while (true === text_get_il_array (retorno  , "<" , ">" 	, arr_lmr ,  false)) 
 {
 	retorno = arr_lmr[DSctt.ESQ] + arr_lmr[DSctt.DRE];    
 }
 
 return retorno;
 
}


/*****************************************************************************/
function get_id_from_html(str, sin_comillas)
{
 var arr_lmr1 = new Array(3);
 var arr_lmr2 = new Array(3);
 
 
 var ESPACI = " "; //ara
 var retorno=DSctt.EmptyString; 
 var id_trapat1;
 var id_trapat2;
 
 if (sense_valor(sin_comillas)) {sin_comillas=true;}
 
 id_trapat1		= text_get_il_array (str  , " id=" , ESPACI	, arr_lmr1 ,  false);
 id_trapat2 	= text_get_il_array (str  , " id=" , ">" 	, arr_lmr2 ,  false); 
 
 if ((id_trapat1) && (id_trapat2))
 {
 	if (arr_lmr1[DSctt.CEN].length < arr_lmr2[DSctt.CEN].length){retorno = arr_lmr1[DSctt.CEN];}
 	else											{	retorno = arr_lmr2[DSctt.CEN];}    
 }
 else if (id_trapat1) {	retorno = arr_lmr1[DSctt.CEN];}
 else {retorno = arr_lmr2[DSctt.CEN];}    
  
 //dd("IN:("+str+") IZQ("+arr_lmr[DSctt.ESQ]+") CEN("+arr_lmr[DSctt.CEN]+") DER("+arr_lmr[DSctt.DRE]+")");
 //dd("in:("+str+") sincomillas:" + sin_comillas+" id found:("+id_trapat+") resultado:("+retorno+")");
 
 if (sin_comillas) {retorno=DSstr.desencomilla(retorno);}
 return retorno;
}

/******************************************************************************************/

function eiObj(o) { return (typeof(o)=="object"); }
function eiStr(o) { return (typeof(o)=="string"); }

function eiNum(o) { return (typeof(o)=="number"); }
function eiBoo(o) { return (typeof(o)=="boolean"); }




function bool2num(bo)	{	if (bo) {return 1;}	return 0;	}
function num2bool(nu)	{	if (nu===0)  {return false;} return true;	}
function str2bool(s)		{	if (s=="0" || s=="false")  {return false;} return true;	}


function daurir_hiestra2(windowname , dst_link, extra_args)
{
//-if (! window.focus)	return true;
var href;
var ret;
	
	dd("DH2:"+windowname+","+dst_link+","+extra_args);
	
	if (sense_valor(extra_args)) extra_args=ctEmptyString;
	
	if (sense_valor(dst_link)) 	{	dst_link=ctEmptyString; }
	else						{	if (typeof(dst_link)=='string') {href=dst_link;		}	//string recebut
									else							{href=dst_link.href;}		//obj&egrave;cte <a> recebut
								}
	
	if (sense_valor(windowname)) {windowname="_self";}
	
	dd("daurir_hiestra href:" + href  + " window_name:" + windowname + " extras:" + extra_args);
	
	
	if (windowname=="_self")
	{
		window.location.href =href;
	}
	else if (windowname=="_parent")
	{
		window.parent.location.href =href;
	}
	
	else 
	{
	
	ret = window.open(href, windowname, extra_args);
	
	if (window.focus) { ret.focus(); }	//+
	
	}

return false;
}

function daurir_hiestra( url , tgt , dofocus, txt_extra)
{
  var h;
    
  if (txt_extra===undefined) txt_extra='status, resizable, scrollbars, menubar';
  
  dd("opening 1:"+url+", tgt:"+tgt + ", extra:"+txt_extra);
  h = self.open(url, tgt, txt_extra);
  dd("opening 2:" + h);
  	
  
//  , location
//, width=0, height=0
	if (h) 
	{
  		if (dofocus && h.focus)  	{dd("focus");	h.focus();}
  		if (h.load)  			{dd("load");	h.load();}
  	}
  	else
  	{
		dd("intento de abrir (" + url + ") en target:" + tgt + " ha fallado");	  
	}
  	
  return false;
}


//dd("loading glo...{");

function writeTitle() { document.write("<title>&ETH; Software</title>"); }

function novetat()    { document.write("<img src='../pic/esnou.png'>&nbsp;"); }


function writeHeader( t ) { 

document.write("<div id='id_header' align='right'  style='width:*; font-size: 12px;margin-top:05px; border-top: 1px solid #555;'>" + t + "</div>");

document.write("<div align='center' style='width:*; font-size: 12px;margin-top:01px; border-top: 1px solid #555;'>         </div>");

 }

//dd("global loaded");
/* ************************************************************************* */
var DSweb = {
uri_root 			: null , /* la met pagina_ei_locau() */

COMANDA_GOTO		: "P",	
COMANDA_LANG		: "L",
SEP_COMANDES 		: ",",
SEP_COMANDA  		: ":",
COMANDA_PRE 		: "ordre_",

 
PAGE_LINKS			:"L",

PAGE_SW				:"S",

	
	PAGE_SW_CLOCK_INTRO	:"ST",
		PAGE_SW_CLOCK_DLOAD	:"STD",
		PAGE_SW_CLOCK_IMAGE :"STI",
	
PAGE_ARANES			:"A",
	
	PAGE_ARANES_QUIZ	:"AE",
	PAGE_ARANES_AUDIO	:"AA",
	PAGE_ARANES_MEM_JB	:"AMJ",

PAGE_WELCOME		:"W"


};



DSweb.crea_comanda=function(comanda,valor,damb_pagina)
{
var res="";


//if (!DSweb.uri_root) pagina_ei_locau();

if (damb_pagina) res = DSweb.uri_root + "index.html?";

res+= comanda + DSweb.SEP_COMANDA + valor;
return res;

 
}; 



DSweb.crea_comanda_goto =function ( page , damb_pagina )
{
	return DSweb.crea_comanda ( DSweb.COMANDA_GOTO , page , damb_pagina ); 
};

DSweb.crea_comanda_lang =function(lang,damb_pagina)
{
	return DSweb.crea_comanda ( DSweb.COMANDA_LANG , lang || 0 , damb_pagina);
};   
 
 
DSweb.get_lang_parameter = function(finestra)
{
var retorn;

var def=3;	//1 cat 2 esp 3 eng

var total_langs=3;
var t;	
var txt_search;

 if (finestra)	{txt_search = finestra.location.search;}
 else			{txt_search = window.location.search;}

 if (DSstr.esquerra(txt_search,1)=="?") 	{txt_search=DSstr.dreta(txt_search,-1);}


 if (pagina_ei_locau()===false) {dbg=false;}

 t=DSweb.pren_comanda ( DSweb.COMANDA_LANG, txt_search );


 if (t)
 {
 	 retorn = x2int(t);
	 if (isNaN(retorn))	{	retorn=def;	}		
 	else	

	{	

		retorn = retorn % (1+total_langs);	 

		if (retorn===0) {retorn=def;}

	}
 }
 else retorn=def;

 //dd("get_lang_parameter recuperando lang..."+t + " ->" + retorn);
return retorn;
};


DSweb.pren_comanda	=	function	(comanda, txt_query)
{
var o;
var r;


 o=DSweb.pren_comandes(txt_query); 

 
 r = o[DSweb.COMANDA_PRE+comanda];

	//dd("Tractant de agafar la comanda "+comanda+ "  amb resultat:" + r);
	

return r;
};

DSweb.pren_comandes	=	function	(txt_query)
{
var comandes;
var i;
var parts;
var obj_ret = {};


 if (sense_valor(txt_query)) 			{txt_query = window.location.search;}
 if (DSstr.esquerra(txt_query,1)=="?") 	{txt_query = DSstr.dreta(txt_query,-1);}

 txt_query  = txt_query.toUpperCase() ;

 //dd("COMANDES QUE VENEN:" + txt_query);

 comandes = txt_query.split(DSweb.SEP_COMANDES);
 for (i=0; i<comandes.length; i++)
 {
	parts = comandes[i].split(DSweb.SEP_COMANDA);
	if (parts[0]) 
	{
			obj_ret[DSweb.COMANDA_PRE + parts[0]] = parts[1];	  
 			//dd("string sin partir:" +comandes[i]+ "   afegida comanda" + parts[0] + " amb valor " + parts[1]);
 	}
 }			

 return obj_ret;

};


DSweb.header_text = function (arr_header_words,webpair)
{
var objid	= "id_header";
var html1 	= "<a class='hdrpage-link' target='_parent' href='" +webpair+ "'>";
var	html2 	= "</a>";
var	html 	= "";
var sep		=" &raquo; ";
var i;

 if (typeof arr_header_words == 'string') {arr_header_words =arr_header_words.split(">");} 


 html = arr_header_words[0];
	 
 for (i=1 ; i<arr_header_words.length ; i++)	
 {	
   html += sep + arr_header_words[i];
 }	
 
 html = html1 + html + html2;
	
 if (DSobj.met_html(objid,html))		{	return true;	}
 else									{	return false;	}


};


DSweb.pagedata2link=function(hiestra)
{

// COMPTE SOBRE MANTENIR COMPTABILITAT CAP ENRERE

// in	: parametre de la p&agrave;gina principal de DS
// out	: link entar meter contiengut ena part DSstr.dreta dera pagina


 var args; 
 var res=DSctt.EmptyString;
 var pagina_dest, llengua_dest;
 var comandes = [], parts = [];
 var i,j;
 

 var comanda2pagina = function(ordre)
 { 
 
	 var r;
	 var dft=false;
	 switch (ordre)
	 {
	 
	 
	 case DSweb.PAGE_LINKS:		r= "./links";				break;
	 case DSweb.PAGE_SW: 		r= "./software";			break;
	 
	 case DSweb.PAGE_SW_CLOCK_INTRO: 	r= "./soft/ch/intro"; 		break;
	 case DSweb.PAGE_SW_CLOCK_DLOAD: 	r= "./soft/ch/dload"; 		break;
	 case DSweb.PAGE_SW_CLOCK_IMAGE: 	r= "./soft/ch/image"; 		break;
	 
	 case DSweb.PAGE_ARANES 		:	r="../aranes/index"; 		break;
	 case DSweb.PAGE_ARANES_QUIZ	:	r="../aranes/quiz/quiz"; 	break;
	 case DSweb.PAGE_ARANES_AUDIO	:	r="../aranes/audio/audio"; 	break;
	 case DSweb.PAGE_ARANES_MEM_JB	:	r="../aranes/mem/bond"; 	break;
	 	 
	 case DSweb.PAGE_WELCOME		:	r= "./pagdreta"; 			break;
	 default						: 	r= "./pagdreta"; 			dft=true; dd("comanda desconeguda:" + ordre,true);  break;
	 }
	 
	 if (dft===false && ordre===undefined) {dd("ERROR.CONSTANT DSweb.PAGE... EI UNDEFINED! r:"+r,true);}
	 
	 //if (!DSweb.uri_root) pagina_ei_locau();
	 r = DSweb.uri_root + "all/" + r + ".html";
	 
	 dd("ordre in:" + ordre + " page out:" + r);
	 return r;
 };


 if (hiestra){args = hiestra.location.search;}	else {args = self.location.search;}
 if (DSstr.esquerra(args,1)=="?") {args=DSstr.dreta(args,-1);}
 args 	= 	args.toUpperCase(); // + DSweb.SEP_COMANDES;

 //dd("arguments args:" + args);

 comandes = args.split(DSweb.SEP_COMANDES);
 for (i=0; i<comandes.length; i+=1)
 {
	parts = comandes[i].split(DSweb.SEP_COMANDA);
	dd("mirando " + parts);
	if 		(DSweb.COMANDA_LANG == parts[0] ) 	{ llengua_dest = parts[0] + DSweb.SEP_COMANDA + parts[1];	}  
	else if (DSweb.COMANDA_GOTO == parts[0] ) 	{ pagina_dest  = comanda2pagina(parts[1]);		}
	else										{ dd("COMANDA DESCONEGUDA:" + comandes[i]); 	}
 }			
 res=(pagina_dest || comanda2pagina()) + "?" + llengua_dest;
 //     ?P=A,L=1
 //dd("pageparam2link - in:(" + args + ") resultat:("+res+")"	);
return res; 
};







function sautar_entath_darrer(llengua,dest_page)
{	

var res=DSctt.EmptyString; 
var locau=pagina_ei_locau();
 
 if (!locau) {dbg=false;}

 res = DSweb.crea_comanda_lang(llengua,true);

//dd("a:"+res);

res+=DSweb.SEP_COMANDES+DSweb.crea_comanda(DSweb.COMANDA_GOTO,dest_page,false); 

//dd("b:"+res);
 
 if (locau)
 {
	if (self.parent == self)	{dd("Se siguessem non en locau sautariem ent&agrave; " + res);}
 }
 else 
 {	

	/* s'obre la p&agrave;gina directament i sense diantresoft */
	if (self.parent==self)		{daurir_hiestra(res,"_parent");}

	/* s'obre la p&agrave;gina directament amb diantresoft */
	//if ((self.parent.name==DSctt.EmptyString) && (self.name=="top"))	daurir_hiestra("_parent",res);
	if ((self.parent.name==DSctt.EmptyString) && (self==self.top))	{daurir_hiestra(res,"_parent");}
 }
 
 return res;

}



DSobj.camina_pel_DOM = function (node,fun)
{

 fun(node);
 node = node.firstChild;
 while (node)
 {
 dd("aplica fun a nodo " + node);
 
 	DSobj.camina_pel_DOM(node,fun);
	node=node.nextSibling;	
 }		


};

DSobj.getElementsByClassName = function  (i_nom_class, obj_doc)
{

 var resultat = [];		//array vac&iacute;o
 var d = obj_doc || self.document;
		
 i_nom_class = i_nom_class.toUpperCase();
	
 DSobj.camina_pel_DOM 	(	d.body,
		
			function (n)
			{
				var noms,nom_class=n.className.toString().toUpperCase(), i;
				if (nom_class)
				{
				dd("trobat class      " + nom_class);
				
					noms = nom_class.split(' '); //separo los distintos nombres de class que pueda tener, ya pueden haber varios
					for (i=0; i<noms.length; i+=1)
					{
						if (noms[i] === i_nom_class) { resultat.push(n); break; }
					}			
				}
			}	
	);
	
 return resultat;
		
};
		
		

  

function pren_document_en_inframe(o)
{  

if (o.contentDocument)	  	return o.contentDocument; 
if (o.contentWindow) 		return o.contentWindow.document;
if (o.document) 			return o.document;

}







/* ------------------------------------------------------------------------ */
var DSstr={};
DSstr.str2int     =function(x)			{ return parseInt(x,10); };
DSstr.str2arr     =function (str,sep) 	{ return str.split(sep); };
DSstr.arr2str     =function (arr,sep) 	{ var i,r=DSTctt.EmptyString; r=arr[0].toString(); for (i=1;i<arr.lenght;i++){ r+= sep+arr[i].toString(); } return r; };
DSstr.text_car    =function(l,sep,do_trim){ return  DSstr.car(l,sep,do_trim,"$CAR$LIST",false); };
DSstr.text_cdr    =function(l,sep,do_trim){ return  DSstr.cdr(l,sep,do_trim,false); 			};
DSstr.get_list_pos=function (item,l,sep,do_trim)
{
var prumer,pos,retorn=0;
 
prumer=DSstr.text_car(l,sep);
if (prumer===null) {return 0;}
if (do_trim)  {  item= DSstr.trim(item);  prumer=DSstr.trim(prumer);  }

if (prumer==item) {return 1;}
pos=DSstr.get_list_pos(item,DSstr.cdr(l,sep),sep,do_trim);
if (pos>0) 	{retorn=pos+1;}
return retorn;
};

DSstr.get_list_total = function(l,sep,mirar_case)
{
var	pos_sep;
var l2;
var l_up;	// 	= DSctt.EmptyString;
var sep_up;	//	= DSctt.EmptyString;
var ret;

//pos_sep=l.indexOf(sep);
//if (-1==pos_sep) return 0;
//return (1+get_list_total(l.substring(pos_sep+1),sep));

if (sense_valor(l))	{return 0;}


if (sense_valor(mirar_case)) {mirar_case=true;}
	
	if (sep===null)		//modo char	
	{
		return l.length;
	}
	else
	{	

	if (mirar_case)
	{
		pos_sep=l.indexOf(sep);
	}
	else
	{
		l_up	=	l.toUpperCase();
		sep_up	=	sep.toUpperCase();
		pos_sep	=	l_up.indexOf(sep_up); 
	}
	
	if (-1==pos_sep) {return 1;}
		
	l2 = l.substring(pos_sep+1);
	if (l2==="")	{ret = 2;}	//"a,b,c," -> 4
	else		{ret = (DSstr.get_list_total(l2,sep,mirar_case) + 1);}
	
	return ret;	
	
	}
};

DSstr.desencomilla=function (str) //  "''hola''"   -> hola
{
var c = DSctt.COMETA;
var d = DSctt.COMETAD;	//"

if (DSstr.esquerra(str,1)==c && DSstr.dreta(str,1)==c) {	return  DSstr.desencomilla(DSstr.dreta(DSstr.esquerra(str,-1),-1));		}
if (DSstr.esquerra(str,1)==d && DSstr.dreta(str,1)==d) {	return  DSstr.desencomilla(DSstr.dreta(DSstr.esquerra(str,-1),-1));		}

return str;
};

DSstr.encomilla=function (str,doble_com)		// hola 	-> 'hola' o "hola"
{
var c = DSctt.COMETA;
var d = DSctt.COMETAD;	//"
var com =DSctt.EmptyString;

if (sense_valor(doble_com)) {doble_com=false;}

if (doble_com) 	{com=d;} 
else 			{com=c;}

if (str===null) {return str;}

str = DSstr.desencomilla(str);
//dd("comilla empleada(" + com + ") doble_com:"+doble_com);

return com+str+com; 

};




DSstr.car= function (txt_in,sep,do_trim,ret_si_no_hay_marca,mirar_case)	 
{
var txt,	pos_sep,len_sep,retorn,txt_up,sep_up;// 	= DSctt.EmptyString;

	if (sense_valor(txt_in))		
	{	
		if (ret_si_no_hay_marca=="$CAR$LIST") 	{	return txt_in; }
		else 									{	return ret_si_no_hay_marca; }
	}
txt = txt_in.toString(); 
if (sense_valor(mirar_case)) {mirar_case=true; }
if (sense_valor(sep))	//char mode
{
	if (sense_valor(txt))	{ return txt; }
	retorn = txt.toString().charAt(0);
}
else	//sep mode
{	len_sep=sep.length;
	if (mirar_case)
	{
		pos_sep=txt.indexOf(sep);  
	}
	else
	{
		txt_up	=	txt.toUpperCase();
		sep_up	=	sep.toUpperCase();
		pos_sep	=	txt_up.indexOf(sep_up); 
	}
	if 		(pos_sep<0)	{	if (ret_si_no_hay_marca=="$CAR$LIST") {retorn=txt;} else {retorn= ret_si_no_hay_marca;}	}
	else if	(pos_sep===0){	retorn=DSctt.EmptyString;				}
	else				{	retorn=txt.substring(0,pos_sep);		}
}
if (do_trim) { retorn=DSstr.trim(retorn); }
return retorn;
};




DSstr.cdr= function (l,sep,do_trim,mirar_case) 
{
 var pos_sep,retorn,sep_long;
 var l_up,sep_up;

if (sense_valor(do_trim)) 		{do_trim		=false;}
if (sense_valor(mirar_case)) 	{mirar_case	=true;}

if (sense_valor(l))		{return l;}

if (typeof l != 'string') {l= l.toString();} 

			
if (sense_valor(sep))	  //char mode	
{
//	dd("antes");
	//	retorn = l.subString( 1 );
	retorn = DSstr.dreta( l , -1);
//	dd("desp");  
	if (do_trim){ retorn = DSstr.trim(retorn);}	
	return retorn;	
}

// sep mode
	sep_long=sep.length;
	
	if (mirar_case)
	{
		pos_sep=l.indexOf(sep);  
	}
	else
	{
		l_up	=	l.toUpperCase();
		sep_up	=	sep.toUpperCase();
		pos_sep	=	l_up.indexOf(sep_up);
	
		//dd("cdr  sep:" +sep + " list:"+ l + "pos_sep="+pos_sep);	 
	}

	if (pos_sep==-1) 	{return null;}
	retorn= l.substring(pos_sep+sep_long);
	
	
if (do_trim) {retorn=DSstr.trim(retorn);}
	
return retorn;

};


DSstr.pren_entre_limits = function(t,l1,l2,do_trim)
{
var r;

 if (sense_valor(l1) || sense_valor(l2)) {return null;}
  r=DSstr.cdr(t,l1);
  if (amb_valor(r))
  {
   r = DSstr.car(r,l2,do_trim,null);	  	//non trapar l2 => null
  }
return r;  
};


DSstr.get_list_item = function  (pos,l,sep,do_trim)		//case off 
{
var retorn=DSctt.EmptyString;

if (sense_valor(l))	{retorn=DSctt.EmptyString;}
else
{

// "r" "r1" "r2" => random
// >0            => pos
// <0            => pos desde el final
// 0             => mitad

	if        (pos=="r" || pos=="r2")     { pos = 1 + random_num2( DSstr.get_list_total(l,sep,false) - 1);}
	else if   (pos=="r1")                 { pos = 1 + random_num1( DSstr.get_list_total(l,sep,false) - 1);}
	else if   (pos===0)                   { pos =(1+DSstr.get_list_total(l,sep,false))/2;                  }
	else if   (pos<0)                     { pos =1+pos+	DSstr.get_list_total(l,sep,false);                }

	if (pos<=0)  	{ return DSctt.EmptyString;}
	if (1==pos) 	{ retorn=DSstr.text_car(l,sep,do_trim);}
	else			{ retorn=DSstr.get_list_item(pos-1,DSstr.text_cdr(l,sep,false),sep,do_trim);}
	
	if (do_trim) 	{retorn=DSstr.trim(retorn);}
}	  
return retorn;
};












DSstr.trim = function (t)
{
var res="";
var caracters=" |\t|\b|\f|\n|\r|\t";
//\b	Backspace
//\f	Form feed
//\n	New line
//\r	Carriage return
//\t	tab
var sep="|";
var i;

if (sense_valor(t))	{	return t;}

i=0;
while(true)
{
	if (i>t.length) {break;}
	if (0===DSstr.get_list_pos(t.charAt(i),caracters,sep))	
	{	res = t.substring(i);
		break;
	}
	i++;
}

i=res.length-1;

while(true)
{
	if (i<0) {break;}
	//d("TRIM a t:'" + res + "' #" + res.length + " evaluando pos " + i + " '" + res.charAt(i) + "'");
	if (0===DSstr.get_list_pos(res.charAt(i),caracters,sep))
	{
		res = res.substring(0,i+1);
		break;
	}
	i--;
}
//if (t!=res) dd("TRIM (" + res + ")<-(" + t + ")");

return res;
};



DSstr.dreta = function (t,n)
{
var res;
var chrs2get=n;

if (sense_valor(t)) {return t;}

t=t.toString();

if 	(n<0)
{ 
	chrs2get= t.length + n;
}

if 			(chrs2get<=0) 		{	res=DSctt.EmptyString;}
else if 	(chrs2get>t.length) {	res=t;}
else							{	res=t.substring(t.length - chrs2get);}
						//	   subString( 1 );
return res; 
};



DSstr.esquerra = function (t,n)
{
var res;

if (sense_valor(t)) {return t;}

t=t.toString();

if 		(n<0) 			{n=t.length + n;}

if 		(n<=0) 			{res=DSctt.EmptyString;}
else if (n>t.length) 	{res=t;}
else					{res=t.substring(0,n);}

return res; 
};




DSstr.word_delete = 
function  ( t, sep, palabra)
{
var res="", i;
var pars=[];

 pars= t.split(sep); //
 for (i=0; i<pars.length; i++)
 {
 
 	if (palabra!==pars[i]) 
	 {
	 	
	 	res = (res===""?  "" : sep) + res + pars[i];
	 }
 }

return res;
};

DSstr.word_insert = function ( t, sep, palabra , bln_pordelante,bln_repetir)
{	//por defecto NO REPITE Y POR DETRAS
var i,pars,trobat=false;

if (!t)	{	return palabra;} // buit !

 pars= t.split(sep); 
 for (i=0; i<pars.length; i++)
 {
  	if (palabra===pars[i])  { 	 trobat=true; 	 	break; 	 }
 }

 if ((trobat===false) || ((bln_repetir===true) && (trobat===true)))
 {

	if (bln_pordelante===true) 	{ 	return palabra + sep + t;   }
	else						{ 	return t + sep + palabra;   }

 }
 else
 {
 	return t;
 }

 
}; 



DSstr.replace_il_array = function (t,arr_limits,arr_replace,damb_miei,damb_case)
{
// arr_limits: in
// arr_limits[0] - string amb marca left
// arr_limits[1] - string amb marca right

// arr_replace: in
// arr_replace[0] - array amb els strings a posar com a part esquerra
// arr_replace[1] - array amb els strings a posar com a part dreta

var ini,fin,miei;
var r=DSctt.EmptyString;
var index=0;
 
 if (sense_valor(damb_miei))  {damb_miei=true;}
 if (sense_valor(damb_case))  {damb_case=true;}

 while(true)
 {
	ini = DSstr.car(t,arr_limits[0],false,null,damb_case);
	fin = DSstr.cdr(t,arr_limits[0],false,damb_case);
	
	if (fin===null)
	{
		miei=null;
	}
	else
	{
		miei= DSstr.car(fin,arr_limits[1],false,null,damb_case);
		fin = DSstr.cdr(fin,arr_limits[1],false     ,damb_case);
	}
	
	if (miei!==null)
	{
		r = r + ini + arr_replace[0][index] + (damb_miei? miei : DSctt.EmptyString) + arr_replace[1][index];
		t = fin;
		index++;		
	}
	else
	{
		r=r+t;
		break;
	}
 }
	return { text:r , changes:index };
};
























var DScol = {};


DScol.mig = function ()
{
//darrer = static var
 var colors=	"ecec34,88eb66,e3e310,88be9d,dc8574,dc87a6,ec9584,CFAF6F,FFEC00,DCFE22,dc8776,ec95a4,DC87C9,dca7a6,88be66,eeee23,dca7c9,DCBAC9" + 
               ",AABBCC,aacc66,eded0e,dcff22,a8be9d,a0b0cc,eeaa80,ed7d7d,adff40,adbbcc,cfaf9f,ccaa90,fded1e";
 
 var colors_sep=",";
 var color_sel;
 var ind,total;


//dd("#:" + DScol.suau.darrer);

 total=DSstr.get_list_total(colors,colors_sep);

 ind=random_num2(total-1)+1;
 if (ind==DScol.suau.darrer)	{ind=1+random_num1(ind);}
 if (ind==DScol.suau.darrer)	{ind=total-ind+1;}


DScol.mig.darrer = ind;


color_sel = DSstr.get_list_item ( ind , colors , colors_sep);

//dd(color_sel);

return "#"+color_sel;

};


DScol.suau = function ( arr_no_aquests )
{
//darrer = static var
 var colors=[	"FDFEE9","EEEEFF","FDFFEA","FDFEFE","ffc0a0","FAF0F2","DFEAFF","DDFF40","EEEEFE","ECFF00","EFDBFD","DCFF92","ECECFF","ECDCFE","ECDCFF","EDEDFE","F5F5FD","F0F3FD","E0E4FD","E3E3FD","E1E2FD","BACBDC","ECA5A4","DFBFC9","CFAFFF","DDCAAD","A8EEBD","ccaa60","adbbEc","ddcbad",   
              	"faf0e6","ED9D9D","FEBA95","aFcFbF","b0C0b0","ffc0a5","FFEC81","DFEA88","ADFF80","EEEE73","ECFF20","EFDBFA","DCFE82","ECEC74","ECDCAE","ECDCB0","FDED5E","F5F5FE","F0F6FD","E0E455","E3E390","E1E260","b0c0dC","dc85D4","DCC7C6","BADC86","CAADDD","C8EB66","ccca90","adBAcc","ddcbDA","F3E3C5"
		  	];
 
 var color_sel;
 var ind,total;
 var un_color;
 var trobat;

//dd("#:" + DScol.suau.darrer);

 total=colors.length;

 ind=random_num2(total-1)+1;
 if (ind==DScol.suau.darrer)	{ind=1+random_num1(ind);}
 if (ind==DScol.suau.darrer)	{ind=total-ind+1;}


DScol.suau.darrer = ind;
color_sel = "#" + colors[ind-1];
color_sel = color_sel.toLowerCase();

  if (arr_no_aquests && arr_no_aquests.length && arr_no_aquests.length>0)
  {	
  	trobat=false;
  	for (ind=0 ; ind<arr_no_aquests.length; ind++)
	{ 
		if (arr_no_aquests[ind])
		{
		un_color = arr_no_aquests[ind].toLowerCase();
		if (un_color.charAt(0)!="#") un_color = "#" + un_color ; 
		if (un_color == color_sel) {trobat=true; break;}
		}
		else
		{
			dd("color en pos.0,n:"+ind+"enviado erroneo:"+arr_no_aquests[ind],true);
		}
	} 
 	if (trobat) {return DScol.suau(arr_no_aquests);} //OJO, recursion here
  }


return color_sel;


};

function pren_color() 				{  return DScol.suau(); } //DEPRECATED
function busca_obj(obj_id,hiestra) 	{  return DSobj.pren(obj_id , hiestra && hiestra.document );} //DEPRECATED	
function pageparam2link(fin) { return DSweb.pagedata2link(fin); }		//DEPRECATED
function build_header (objid,theader,webpair) 
{
 dd("bh theader:" + theader + " webpair:" + webpair );
 DSweb.header_text( DSstr.str2arr(theader, ">") , webpair );

} //DEPRECATED
function pren_obj	  (id,doc)			{dd("pren_obj OBS " + id,true);  return DSobj.pren(id,doc);}	//DEPRECATED
function pren_obj_html(obj_id,obj_doc)	{dd("pren_obj_html OBS",true);  return DSobj.pren_html(obj_id,obj_doc); }	//DEPRECATED
function pren_obj_x(id,mem,doc)			{dd("OBS pren_obj_x",true);return DSobj.pre_x    (id,mem,doc); }	//DEPRECATED
function delete_obj(nom,doc) 			{dd("OBS delete_obj",true); 	return DSobj.del(nom,doc); } 							//DEPRECATED
function delete_intruder_vars()			{dd("OBS delete_intruder",true); 	 return true;} //DEPRECATED
function esquerra(t,n) 					{dd("OBS esquerra",true); 	 return DSstr.esquerra(t,n);}
function dreta(t,n) 					{dd("dreta OBS",true);  return DSstr.dreta(t,n);}
function trim(t)	 					{dd("OBS trim",true); 	 return DSstr.trim(t) ; }
var ctEmptyString = DSctt.EmptyString; 
function   text_car(l,sep,do_trim)		{dd("text_car OBS:" + l,true);  return DSstr.text_car(l,sep,do_trim);  }
function   text_cdr(l,sep,do_trim)		{dd("OBS text_cdr:" + l,true); 	return DSstr.text_cdr(l,sep,do_trim);   }
function car(txt_in,sep,do_trim,ret_si_no_hay_marca,mirar_case)	 	{dd("OBS car:" +txt_in,true); 	return DSstr.car(txt_in,sep,do_trim,ret_si_no_hay_marca,mirar_case);}
function cdr(l,sep,do_trim,mirar_case) 								{dd("OBS  cdr",true); 	return DSstr.cdr(l,sep,do_trim,mirar_case);}
function text_pren_entre_limits(t,l1,l2,do_trim)	{dd("pren_entre_limits OBS",true);  return DSstr.pren_entre_limits(t,l1,l2,do_trim);} // -- Pren t&egrave;xte entre limits ------------------------
function get_list_item(pos,l,sep,do_trim)			{dd("OBS get list item",true); 	 return DSstr.get_list_item(pos,l,sep,do_trim); } //case off
function pren_valor (a) { dd("ERROR NO EXISTE pren_Valor OBS",true);  }
function get_list_pos(item,l,sep,do_trim) {dd("OBS get list item:" + l,true); DSstr.get_list_pos(item,l,sep,do_trim); }
function get_list_total(l,sep,mirar_case) { dd("OBS get list total:" + l); DSstr.get_list_total(l,sep,mirar_case);}
function  met_obj_html(obj_id,pval){ dd("OBS met_obj_html:" + obj_id,true); return DSobj.met_html( obj_id,pval); }
function get_lang_parameter(finestra)  { return DSweb.get_lang_parameter(finestra); }



function amague_obj2 (id){                                  return DSobj.mod_disp(id,false);                 } 
function amague_obj  (id){return DSobj.mod_visi(id,false); }
function mostre_obj  (id){ /*dd("Es vol mostrar amb visibility objecte:"+id); */  	return DSobj.mod_visi(id, true); } 
function mostre_obj2 (id){ /*dd("Es vol mostrar amb display objecte:"+id);    */ 	return DSobj.mod_disp(id, true); }
//dd("CP0");



function crear_tag( obj )
{
var ret="";
var nom;
 
 for (nom in obj) 
 {
	if (obj.hasOwnProperty(nom))
	{	 
//	 dd("a obj." + nom + "=" + obj[nom]);

	 if (nom==="tagname") continue;
	 if (nom==="tagends") continue;
	 if (nom==="tagdata") continue;
			
	 ret+= " "+ (nom==="tagclass"? "class" : nom) + "=\"" + obj[nom] + "\"" ;
	
	}
 }	

 ret = "<" + obj.tagname + ret;


 if (obj.tagends===true) {ret+=">" + (obj.tagdata || "") +  "</" + obj.tagname +">";}
 else                    {ret+="/>";	}



//<SPAN class:"estil_ent_lab"="" tagdata:"pre."="">pre.</SPAN>
//<DIV class:"estil_subindex"="" tagdata:"1"="">1</DIV> 



//dd("crear_tag retorna: " + ret);

 return ret;
}


function crear_div( contiengut , obj_atributs)  //atributs &eacute;s un objecte, exemple: {class:"nom_class" , id:"nom_id"}
{
	var o=new Object(obj_atributs);
	
	o.tagdata = contiengut.toString();
	o.tagname = "div";
	o.tagends = true ;
	
	//dd("ficant un tag (" + o.tagname + ") un estil (" + o.tagclass + ") i a dintre:" + o.tagdata);
	
	return crear_tag(o);
}

function crear_span( contiengut , obj_atributs)  //atributs &eacute;s un objecte, exemple: {class:"nom_class" , id:"nom_id"}
{
	var o=new Object(obj_atributs);
	
	o.tagdata = contiengut.toString();
	o.tagname = "span";
	o.tagends = true ;
	
	//dd("ficant tag (" + o.tagname + ") un estil (" + o.tagclass + ") i a dintre:" + o.tagdata);
	
	
	return crear_tag(o);
}


function pon_bordes(str,str_margen)	// TODO pte recibir margen y ruta page
{
var tin;
var tout;
var resto;
var done;

if (typeof str_margen == 'number') 	{str_margen = str_margen.toString() + "px";} //dft unit
else 								{str_margen = str_margen || "0px";} //dft val

tin="#BOR_NO";	tout="<span style=\"float:left; overflow:hidden;  margin:-" + str_margen + " 0px -" + str_margen + " -" + str_margen + ";\"><img src=\'../pic/bordes/no.gif\'></span>";

//	dd(str);
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;

//dd("done="+done);

tin="#BOR_SO";	tout="<span style=\"float:left; overflow:hidden;  margin:-" + str_margen + " 0px -" + str_margen + " -" + str_margen + ";\"><img src=\'../pic/bordes/so.gif\'></span>";
str=done;
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){	done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;


tin="#BOR_NE";	tout="<span style=\"float:right; overflow:hidden;  margin:-" + str_margen + " -" + str_margen + " -" + str_margen + " -0px;\"><img src=\'../pic/bordes/ne.gif\'></span>";
str=done;
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){	done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;

tin="#BOR_SE";	tout="<span style=\"float:right; overflow:hidden;  margin:-" + str_margen + " -" + str_margen + " -" + str_margen + " -0px;\"><img src=\'../pic/bordes/se.gif\'></span>";
str=done;
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){	done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;




tin="#BOR_ESQ2";	tout="	<span style='float:left;  overflow:hidden;  margin:-" + str_margen + " 0px -" + str_margen + " -" + str_margen + ";'><img src='../pic/bordes/esq2.gif'></span>";
str=done;
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){	done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;



tin="#BOR_DRE2";	tout="<span style='float:right; overflow:hidden; margin:-" + str_margen + " -" + str_margen + " -" + str_margen + " -0px;'><img src='../pic/bordes/dre2.gif'></span>";
str=done;
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){	done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;



tin="#BOR_ESQ1";	tout="<span style='float:left; overflow:hidden;  margin:-" + str_margen + " 0px -" + str_margen + " -" + str_margen + ";'><img src='../pic/bordes/esq1.gif'></span>";
str=done;
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){	done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;


tin="#BOR_DRE1";	tout="<span style='float:right;overflow:hidden; margin:-" + str_margen + " -" + str_margen + " -" + str_margen + " -0px;'><img src='../pic/bordes/dre1.gif'></span>";
str=done;
done=ctEmptyString;
while(amb_valor(resto=DSstr.text_cdr(str,tin))){	done=done+DSstr.text_car(str,tin) + tout;	str=resto;}
done=done+str;





return done;
}


function procesar_html2borde(str_in,pix)
{
var str;
//if (sense_valor(str_in)) 	str=self.document.body.innerHTML;
//else						
str=str_in;


//dd("a:"+str);
str=pon_bordes(str,pix);
//dd("d:"+str);

		
//if (sense_valor(str_in)) 	self.document.body.innerHTML=str;
//else 
return str;
	
}



pagina_ei_locau(self.top || self.parent || self);
//dd("codi i global loaded " + DSweb.PAGE_WELCOME);
