/* 
	Nombre:			dhtmlapi2.js
	Descripcion:	funciones javascript para abstraccion de navegadores. Prefijo API2_
	Creación:		19/02/2001

	Ultima:			$Date: 7/06/05 12:59 $		($Author: Rrodriguez $)

	ComuNET S.A.
*/

	function API2_AddOption(doc,combo,texto,valor,pos)	{

		var oOption;

		if (is_ie4up)	{
			oOption = doc.createElement("OPTION");
			oOption.text=texto;
			oOption.value=valor;

			if (pos==null)	combo.add(oOption);
			else			combo.add(oOption,pos);
		}
		else if (is_nav4up)	{
			oOption = new Option(texto, valor, false, false);	
			if (pos==null)	pos=combo.options.length;
			combo.options[pos] = oOption;
		}
	}

	function API2_AddOptions(doc,objName,arr,textprop,valprop)	{

		var combo,objDoc;
		var texto,valor;

		if (doc!=null)	objDoc=doc;
		else			objDoc=document;
		if (typeof(objName)!='object') 	{ combo=API_findObj(objName,objDoc);}
		else							{ combo=objName;}

		for(i=combo.options.length-1;i>=0;i--)		combo.options[i]=null;
		for(i=2;i<arr.length;i++)	{
			texto=eval('arr[i].' + textprop);
			valor=eval('arr[i].' + valprop);
			API2_AddOption(objDoc,combo,texto,valor);
		}
	}

	function API2_DelOption(objName,pos,doc)	{
		var combo,objDoc;

		if (doc!=null)	objDoc=doc;
		else			objDoc=document;
		if (typeof(objName)!='object') 	{ combo=API_findObj(objName,objDoc);}
		else							{ combo=objName;}

		if (combo.options[pos]==null)	alert('Error: API2_DelOption pos=' + pos);
		else	combo.options[pos]=null;
	}

	function cmbRemoveTail(cmb,nUpTo)	{
		var i;
		if (cmb)	for(i=cmb.options.length-1;i>=nUpTo;i--)	{cmb.options[i]=null;}
	}

	function API2_EditOption(objName,pos,prop,valor,doc)	{
		var combo,objDoc,sEval;

		if (doc!=null)	objDoc=doc;
		else			objDoc=document;
		if (typeof(objName)!='object') 	{ combo=API_findObj(objName,objDoc);}
		else							{ combo=objName;}

		if (combo.options[pos]==null)	alert('Error: API2_EditOption pos=' + pos);
		else	{	
			sEval='combo.options[' + pos + '].' + prop + '="' + valor + '"';
			eval(sEval);
		}
	}

	function API2_EnableRadio(nombre,nIndex,valor,doc)	{

		if ( (obj=API2_CheckObj('API2_EnableRadio',doc,nombre))==0) return 0;
		if (is_ie4up || is_nav5up)		{	obj[nIndex].disabled=!valor;	}
		if (is_nav4)			{	
			if (valor==0) 	{ obj[nIndex].onClick=NoDejarClick;}
		}
	}

	function NoDejarClick()	{
		this.checked=0;
	}

	function API2_EnableCheck(nombre,valor,doc)	{
		
		if ( (obj=API2_CheckObj('API2_EnableCheck',doc,nombre))==0) return 0;
		if (is_ie4up || is_nav5up)		{	obj.disabled=!valor;	}
	}
	function API2_EnableText(nombre,valor,doc)	{

		if ( (obj=API2_CheckObj('API2_EnableText',doc,nombre))==0) return 0;
		if (is_ie4up || is_nav5up)		{	obj.disabled=!valor;	}
		if (is_nav4)			{	
			if (valor==0) 	{ obj.onFocus=obj.blur;}
			else			{ obj.onFocus=obj.focus;}
		}
	}

	function API2_EnableCombo(nombre,valor,doc)	{

		if ( (obj=API2_CheckObj('API2_EnableCombo',doc,nombre))==0) return 0;
		if (is_ie4up || is_nav5up)		{	obj.disabled=!valor;	}
		if (is_nav4)			{	
			if (valor==0) 	{ obj.onFocus=obj.blur;}
			else			{ obj.onFocus=obj.focus;}
		}
	}

	function API2_MoveOption(cbo1,cbo2,doc) {
		cboOrigen=API_findObj(cbo1);
		cboDestino=API_findObj(cbo2);
		
		if (cboOrigen && cboDestino )	{
			if (cboOrigen.selectedIndex>0)	{
				API2_AddOption(doc,cboDestino,cboOrigen.options[cboOrigen.selectedIndex].text, cboOrigen.options[cboOrigen.selectedIndex].value);
				cboOrigen.options[cboOrigen.selectedIndex] = null;
			}
		}
	}

	function API2_MoveSelOptions(cbo1,cbo2,doc) {
		cboOrigen=API_findObj(cbo1);
		cboDestino=API_findObj(cbo2);
		
		if (cboOrigen && cboDestino )	{
			for (i=cboOrigen.options.length-1;i>=0;i--)	{
				if (cboOrigen.options[i].selected)	{
					API2_AddOption(doc,cboDestino,cboOrigen.options[i].text, cboOrigen.options[i].value);
					cboOrigen.options[i] = null;
				}
			}
		}
	}

	function API2_MoveAllOptions(cbo1,cbo2,doc) {
		cboOrigen=API_findObj(cbo1);
		cboDestino=API_findObj(cbo2);

		if (cboOrigen && cboDestino)	{
			for (var i=cboOrigen.options.length-1; i>=1; i--)	{
				if (cboOrigen.options[i].value>0)	{
					API2_AddOption(doc,cboDestino,cboOrigen.options[i].text,cboOrigen.options[i].value);
     				cboOrigen.options[i] = null;			
				}
			}
		}
	}

	function API2_CheckObj(sFunc,doc,nombre)	{

		if (doc==null)	doc=window.document;
		if (typeof(nombre)!='object')		{	obj=API_findObj(nombre,doc);}
		else								{	obj=nombre;}

		if (!obj) {alert(sFunc + ' Error: could not find text ' + nombre); return 0;	}
		else return obj;
	}
