//Modifico el prototipo del objeto XMLHTTPRequest:
try
{
    if((!typeof XMLHttpRequest===undefined) && (!XMLHttpRequest.prototype===undefined))
    {
        XMLHttpRequest.prototype.loadXML=function(sXMLSource,async,functionHandler)
        {
            if(async)
            {
                this.onreadystatechange=function()
                {
                    if(this.readyState == 4 && this.status == 200)
                    {
                        if(this.responseXML!=null)
                        {
                            functionHandler(this.responseXML);
                        }
                    }
                }
            }
            else
            {
                this.onreadystatechange=null;
            }
            this.open("GET",sXMLSource,async);
            this.send(null);
            if(!async)
            {
                if(oXmlHttpReq.readyState == 4 && oXmlHttpReq.status==200)
                {
                    functionHandler(this.responseXML);
                }
            }
        }
    }
}
catch(err)
{

}

function triggerFromKey(e,iKeyCode,functionHandler)
// Basada en: XPLOREDOTNET
// http://xploredotnet.blogspot.com/2007/09/block-f5refresh-key-in-ie-and-firefox.html
{
    var keycode =(window.event) ? event.keyCode : e.keyCode;

    if(keycode == iKeyCode)
    {
        if ((navigator.appVersion.indexOf('MSIE') != -1))
        {
            event.keyCode = 0;
            functionHandler();
        }
        else
        {
            functionHandler();
            return(false);
        }
        
    }
}

function blockF5(e)
// FUENTE: XPLOREDOTNET
// http://xploredotnet.blogspot.com/2007/09/block-f5refresh-key-in-ie-and-firefox.html
{
    var keycode =(window.event) ? event.keyCode : e.keyCode;

    if ((navigator.appVersion.indexOf('MSIE') != -1))
    {
        if(keycode == 116)
        {
            event.keyCode = 0;
            event.returnValue = false;
            return false;
        }
    }
    else
    {
        if(keycode == 116)
        {
            return false;
        }
    }
}
function addImg(sId,sName,sSrc,sIdContainer)
{
	var sImg;
			
	sImg="<img id='" + sId + "' name='" + sName + "' src='" + sSrc + "' />";
	document.getElementById(sIdContainer).innerHTML+=sImg
}

function fx_CargarLista(oXmlLista,tblbLista,tblLista,sNombreTabla)
{
	var oNodoClave;
	var tr;
	var td;
	var span;
	var x;
	var iSubItems;
	var sAux1;
	var sAux2;
	var sAux3=new String();
	var iEncontrado;
	var rowtodelet;
	var tblLista;
	var z;

	rowtodelet=tblbLista.rows.length;

	while(rowtodelet>0)
	{
		tblLista.deleteRow(rowtodelet);
		rowtodelet=rowtodelet-1;

	}

	tblLista.refresh();	
	if(oXmlLista.xml!='')
	{
		oNodoClave=oXmlLista.getElementsByTagName(sNombreTabla);
		if(oNodoClave.item(0)!=null)
		{			
			iSubItems=1;
			sAux1="";
			sAux2="";
			iEncontrado=0;
			
			if(oNodoClave.item(0).childNodes.item(0)!=null)
			{
				sAux1=oNodoClave.item(0).childNodes.item(0).nodeName;
				x=1;
				
				while(iEncontrado==0 && x<oNodoClave.item(0).childNodes.length)
				{
					sAux2=oNodoClave.item(0).childNodes.item(x).nodeName;
					if(sAux1==sAux2)
					{
						iEncontrado=1;
					}
					else
					{
						iSubItems++;	
					}
					x++;
				}

				x=0;
				z=1;
				while(x<oXmlLista.documentElement.childNodes.item(0).childNodes.length)
				{
					tr=document.createElement("<TR id='tr" + sNombreTabla + z + "'>");
					y=0;
					span=null;
					td=null;
					while(y<iSubItems && x<oXmlLista.documentElement.childNodes.item(0).childNodes.length)
					{
						sAux3=oXmlLista.documentElement.childNodes.item(0).childNodes.item(x).nodeName;
						sAux3="td" + sAux3.substring(0,1).toUpperCase() + sAux3.substring(1,sAux3.length);
						td=document.createElement("<TD nowrap name='" + sAux3 + "' id='" + sAux3 + "'>");
						span=document.createElement("<SPAN>");
						//span.innerText=oXmlLista.documentElement.childNodes.item(0).childNodes.item(x).text;
						span.innerHTML=oXmlLista.documentElement.childNodes.item(0).childNodes.item(x).text;
						td.appendChild(span);
						tr.appendChild(td);
						y++;
						x++;
					}
					tblbLista.appendChild(tr);
					tr=null;
					z++;
				}
			}
		}

	}
	tblLista.refresh();
	oNodoClave=null;
	tblbLista=null;
	oXmlLista=null;
}

function setForFilter(sListOfFieldNames)
{
	var vFields;
	var sQueryString;
	
	vFields=sListOfFieldNames.split('|');
	
	sQueryString=document.frmCargaDatos.action + "?"
	
	if(document.frmCargaDatos.hPaginaXSLT && document.frmCargaDatos.hPaginaXSLT.value!='')
	{
		sQueryString+="hAccion=FILTRARXSLT&";
		sQueryString+="hPaginaXSLT=" + document.frmCargaDatos.hPaginaXSLT.value + "&";
	}
	else
	{
		sQueryString+="hAccion=FILTRAR&";
	}
	sQueryString+="hNombreTabla=" + document.frmCargaDatos.hNombreTabla.value + "&";
	sQueryString+="hNombreTablaFiltro=" + document.frmCargaDatos.hNombreTablaFiltro.value + "&";
	sQueryString+="hPaginaRetorno=" + document.frmCargaDatos.hPaginaRetorno.value + "&";

	for(var x=0;x<vFields.length;x++)
	{
		for(var y=0;y<document.getElementsByName(vFields[x]).length;y++)
		{
			sQueryString+="@" + document.getElementsByName(vFields[x]).item(y).name + '=' + document.getElementsByName(vFields[x]).item(y).value + "&";
		}
	}

	sQueryString=sQueryString.substr(0,sQueryString.length-1);
	return(sQueryString);
}

function setForDB(sListOfFieldNames)
{
	var vFields;

	vFields=sListOfFieldNames.split('|');
	for(var x=0;x<vFields.length;x++)
	{
		for(var y=0;y<document.getElementsByName(vFields[x]).length;y++)
		{
			document.getElementsByName(vFields[x]).item(y).name="@" + document.getElementsByName(vFields[x]).item(y).name;
		}
		
		//document.getElementById(vFields[x]).setAttribute("name","@" + document.getElementById(vFields[x]).getAttribute("name"));
	}
}
function setAsDBKey(sListOfFieldNames)
{
	var vFields;
			
	vFields=sListOfFieldNames.split('|');
	for(var x=0;x<vFields.length;x++)
	{
		for(var y=0;y<document.getElementsByName(vFields[x]).length;y++)
		{
			document.getElementsByName(vFields[x]).item(y).name="@k" + document.getElementsByName(vFields[x]).item(y).name;
		}
		
		//document.getElementById(vFields[x]).setAttribute("name","@k" + document.getElementById(vFields[x]).getAttribute("name"));
	}
}


function adjustToNCharsWidth(sString,iCharsLength,bCutWords)
{
	var sStringEQ=new String();
	sStringEQ=divideToNCharsWidth(sString,sStringEQ,iCharsLength,bCutWords);
	return(sStringEQ);
}

//función privada,
//la llama "adjustToNCharsWidth(sString,iCharsLength,bCutWords)"
//hay algún error por el cual a veces deja un espacio en blanco. No hubo tiempo de corregir...
function divideToNCharsWidth(sString,sStringEQ,iCharsLength,bCutWords)
{
	var iAux1;
	var iAux2;
	if(sString.length>iCharsLength)
	{
		if(bCutWords)
		{
			sStringEQ+=sString.substr(0,iCharsLength) + "<br>";
			sString=sString.substring(iCharsLength,sString.lenght);
		}
		else
		{
			if(sString.charAt(iCharsLength)!=' ')
			{
				var i;
				i=iCharsLength;
				while(i>=0 && sString.charAt(i)!=' ')
				{
					i--;
				}
				
				if(i<=0)
				{
					i=iCharsLength;
					while(i<sString.length && sString.charAt(i)!=' ')
					{
						i++;
					}
					iAux1=i;//-1;
					while(i<sString.length && sString.charAt(i)==' ')
					{
						i++;
					}
					
				}
				else
				{
					i++;
					iAux1=i;
					while(iAux1>=0 && sString.charAt(iAux1)==' ')
					{
						iAux1--;
					}
					//iAux1++;
					
				}
				sStringEQ+=sString.substr(0,iAux1) + "<br>";
				sString=sString.substring(i,sString.lenght);
			}
			else
			{
				sStringEQ+=sString.substr(0,iCharsLength) + "<br>";
				sString=sString.substring(iCharsLength,sString.lenght);
			}
		}
		sStringEQ=divideToNCharsWidth(sString,sStringEQ,iCharsLength,bCutWords);
	}
	else
	{
		sStringEQ+=sString;
	}
	return(sStringEQ);
}


//originally written by Scott Andrew
//http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

//originally written by Scott Andrew
//http://www.quirksmode.org/js/cookies.html
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

//originally written by Scott Andrew
//http://www.quirksmode.org/js/cookies.html
function eraseCookie(name)
{
	createCookie(name,"",-1);
}


function changeCSSClassFontSize(iCSSClassIndex,iIncrement)
{
	var sFont=new String;
	var iFont;
	
	sFont=document.styleSheets[0]["rules"][iCSSClassIndex].style["fontSize"];
	iFont=parseInt(sFont.substr(0,sFont.length-2));
	iFont+=iIncrement;
	document.styleSheets[0]["rules"][iCSSClassIndex].style["fontSize"]=iFont;
	//document.styleSheets.styleControlCambios.addRule(".L-chica","font-size:" + iFont);
}

function fx_AddZeroPrefixWhenNeeded(sNumber)
{
	var sAux=new String;
	
	sAux="" + sNumber + "";
	if(sAux.length==1)
	{
		sAux="0"+sAux;
	}
	return(sAux);
}

function fx_ContarCaracteres(TextArea, Limite) 
{
	var Long = TextArea.value.length;	
	
	if (Long == Limite)
		alert('El texto a ingresar debe ser de '+ Limite +' caracteres como máximo!');
		
	if (Long > Limite)
	{
		TextArea.value = TextArea.value.substring(0,Limite-1);
		TextArea.focus();
	}
}
//Hace una transcición entre una imagen y otra:
function blendTrans(sId,sDestImg)
{
	var img1;
	img1=document.getElementById(sId);
	
	if(img1.filters)
	{
	    img1.style.filter="blendTrans(duration=2)";
	    img1.filters.blendTrans.Apply();
	}
	
	img1.src=sDestImg;
	
	if(img1.filters)
	{
	    img1.filters.blendTrans.Play();
	}
	img1=null;
}

//Hace un fade in/out de un objeto según se le pase un incremento positivo o negativo:
function makeAlphaBlending(iCurrentOpacity,iIncrement,sIdObject,callbackFunction)
{
    var object=document.getElementById(sIdObject);
    
    iCurrentOpacity+=iIncrement;
    			
	if(iIncrement>0)
	{
		if(iCurrentOpacity<156)
		{
			object=changeOpacity(object,iCurrentOpacity);
			window.setTimeout("makeAlphaBlending(" + iCurrentOpacity + "," + iIncrement + ",'" + sIdObject + "')",10);
		}
		else
		{
		    if(callbackFunction)
		    {
		        callbackFunction();
		    }
		}
	}
	else
	{
		if(iCurrentOpacity>0)
		{
			object=changeOpacity(object,iCurrentOpacity);
			window.setTimeout("makeAlphaBlending(" + iCurrentOpacity + "," + iIncrement + ",'" + sIdObject + "')",10);
		}
		else
		{
			object.style.display='none';
			if(callbackFunction)
		    {
			    callbackFunction();
			}
		}
	}			
	object=null;
}


function changeOpacity(obj,iNewOpacity)
{
    obj.style.display='';
	obj.style.opacity=iNewOpacity/100;
	obj.style.MozOpacity=iNewOpacity/100;
	obj.style.KhtmlOpacity=iNewOpacity/100;
	obj.style.filter="alpha(opacity=" + iNewOpacity + ")";
    return(obj)	
}

function getSizeValueWithoutUnit(sSize)
{
    var iReturnValue;
    if(sSize.indexOf && sSize.indexOf("px")>0)
    {
        iReturnValue=parseInt(sSize.substr(0,sSize.indexOf("px",0)));
    }
    else
    {
        if(isInteger(sSize))
        {
            iReturnValue=parseInt(sSize);
        }
        else
        {
            iReturnValue=sSize;
        }
    }
    return(iReturnValue);
}

function makeObjectGrow(sObjId,iIncreaseSize,iMaxWidth,iMaxHeight)
{
	var obj;
	obj=document.getElementById(sObjId);

	if(iIncreaseSize>0)			
	{
		if(getSizeValueWithoutUnit(obj.style.width)<getSizeValueWithoutUnit(iMaxWidth))
		{
			obj.style.width=(getSizeValueWithoutUnit(obj.style.width)+iIncreaseSize) + "px";
		}
		if(getSizeValueWithoutUnit(obj.style.height)<getSizeValueWithoutUnit(iMaxHeight))
		{
			
			obj.style.height=getSizeValueWithoutUnit(obj.style.height)+iIncreaseSize + "px";
		}
	}
	else
	{
		if(getSizeValueWithoutUnit(obj.style.width)>getSizeValueWithoutUnit(iMaxWidth))
		{
            if(getSizeValueWithoutUnit(obj.style.width)+iIncreaseSize>=0)
            {
                obj.style.width=(getSizeValueWithoutUnit(obj.style.width)+iIncreaseSize) + "px";
            }
            else
            {
                obj.style.width="0px";
            }
		}
		if(getSizeValueWithoutUnit(obj.style.height)>getSizeValueWithoutUnit(iMaxHeight))
		{
			if(getSizeValueWithoutUnit(obj.style.height)+iIncreaseSize>=0)
			{
			    obj.style.height=(getSizeValueWithoutUnit(obj.style.height)+iIncreaseSize) + "px";
			}
			else
			{
			    obj.style.height="0px";
			}
		}
	}
}

function fx_MakeObjectGrowVertically(sObjId,iIncreaseSize,iMaxHeight)
{
	var obj;
	obj=document.getElementById(sObjId);

	if(iIncreaseSize>0)			
	{
		if(obj.runtimeStyle.posHeight<iMaxHeight)
		{
			obj.runtimeStyle.posHeight+=iIncreaseSize;
		}
	}
	else
	{
		if(obj.runtimeStyle.posHeight>iMaxHeight)
		{
			obj.runtimeStyle.posHeight+=iIncreaseSize;
		}
	}
	obj=null;
}

function fx_RefreshTime(spanDate,spanTime)
{
	var spanTime;
	var spanDate;
	var hora;
		
	hora=new Date;
		
	spanTime.innerHTML=hora.toLocaleTimeString();
	spanDate.innerHTML=hora.toLocaleDateString();
		
	window.setTimeout("fx_RefreshTime(spanDate,spanTime)",1000);
}
/*
function validateInteger(obj)
{
  var val = obj.value;
  var key = window.event.keyCode; 
  if ((key < 48) || (key > 57))
  {
    window.event.keyCode = 8;
  }
}
*/


function validateInteger(e)
// BASADA EN: XPLOREDOTNET
// http://xploredotnet.blogspot.com/2007/09/block-f5refresh-key-in-ie-and-firefox.html
{
    var keycode =(window.event) ? event.keyCode : e.keyCode;

    if ((navigator.appVersion.indexOf('MSIE') != -1))
    {
        if((keycode!=9 && keycode!=111 && keycode!=8 && keycode!=46 && keycode!=37 && keycode!=39 && keycode!=16) && ((keycode < 48) || (keycode > 57)) && ((keycode < 95) || (keycode > 105)))
        {
            event.keyCode = 0;
            event.returnValue = false;
            return false;
        }
    }
    else
    {
        if((keycode!=9 && keycode!=111 && keycode!=8 && keycode!=46 && keycode!=37 && keycode!=39 && keycode!=16) && ((keycode < 48) || (keycode > 57)) && ((keycode < 95) || (keycode > 105)))
        {
            return false;
        }
    }
}



function fx_BlanquearCombo(combo)
{
	/*for(x=0;x=combo.length;x++)
	{
		combo.remove(combo(0));
	}
	combo.length=0;
	fx_AgregarOptionACombo(combo,'','');
	combo.length=0;
	*/
	if(combo.options)
	{
	    combo.options.length = 0;
	}
}

function fx_AgregarOptionACombo(combo,sValue,sText)
{
	var oOption;
			
	oOption=document.createElement("OPTION");
	oOption.value=sValue;
	oOption.text=sText;
	if(navigator.appName=="Microsoft Internet Explorer")
    {
		combo.add(oOption);
	}
    else
    {
		combo.add(oOption,null);
    }
}

function selectComboText(combo,sText)
{
	//si se usa la propiedad "value" para posicionarse en un item del combo
	//la propiedad selected index no se actualiza y queda en -1,por eso esta función.
	var x=-1;
			
	do
	{
		x++;
	}
	while((x<combo.length)&&(combo.item(x).text!=sText))
			
	if((x<combo.length)&&(combo.item(x).text==sText))
	{
		combo.selectedIndex=x;
	}
}

function selectComboValue(combo,sValue)
{
	//si se usa la propiedad "value" para posicionarse en un item del combo
	//la propiedad selected index no se actualiza y queda en -1,por eso esta función.
	var x=-1;
			
	do
	{
		x++;
	}
	//while((x<combo.length)&&(combo.item(x).value!=sValue))
	while((x<combo.length)&&(combo.options[x].value!=sValue))
			
	//if((x<combo.length)&&(combo.item(x).value==sValue))
	if((x<combo.length)&&(combo.options[x].value==sValue))
	{
		combo.selectedIndex=x;
	}
}

function moveComboItem(listaDesde, listaHasta)
{
	if (listaDesde.selectedIndex>=0)
	{
		fx_AgregarOptionACombo(listaHasta,listaDesde.options[listaDesde.selectedIndex].value,listaDesde.options[listaDesde.selectedIndex].text);
		listaDesde.remove(listaDesde.selectedIndex);
	}
}

function fx_CargarXML(sIdXml,sASP)
{
	var oXml;
			
	oXml=document.getElementById(sIdXml);
	oXml.async=false;
	oXml.load(sASP);
	oXml=null;
}

function loadXML(oXml,sXMLSource,functionHandler)
{
    if(navigator.appName!="Microsoft Internet Explorer")
    {
        oXml.onload = functionHandler;
    }
    oXml.load(sXMLSource);
    if(navigator.appName=="Microsoft Internet Explorer")
    {
        functionHandler();
    }
}


function loadComboFromXMLStream(oCombo,xmlDoc,sText,sValue,sParentNode)
{
	if (xmlDoc.xml!='')
	{
	
		if (sParentNode=='')
		{
			putXMLinCombo(oCombo,xmlDoc,sText,sValue);
		}
		else
		{
			putXMLChildsInCombo(oCombo,xmlDoc,sText,sValue,sParentNode);
		}
	}
}


function putXMLinCombo(oCombo,xmlDoc,sText,sValue)
{
	var item;
	var x;
	var nodosValue;
	var nodosText;

	nodosValue=xmlDoc.getElementsByTagName(sValue);
	nodosText=xmlDoc.getElementsByTagName(sText);

	for (x=0;x<nodosValue.length;x++)
	{
		item=document.createElement("OPTION");
		item.value=nodosValue.item(x).childNodes.item(0).nodeValue;
		item.text=nodosText.item(x).childNodes.item(0).nodeValue;
		
		if(navigator.appName=="Microsoft Internet Explorer")
        {
			oCombo.add(item);
		}
        else
        {
			oCombo.add(item,null);
        }
	}
}

function putXMLChildInTextBox(oTextBox,xmlDoc,sParentNode,sChildNode,iIndex)
{
	var parent;
	var child;
	
	if(xmlDoc.getElementsByTagName(sParentNode)!=null)
	{
		parent=xmlDoc.getElementsByTagName(sParentNode).item(0);
		if(parent.hasChildNodes)
		{
			child=parent.getElementsByTagName(sChildNode).item(iIndex);
			oTextBox.value=child.childNodes.item(0).nodeValue;
		}
	}
	
}

function returnXMLChildvalue(xmlDoc,sParentNode,sChildNode,iIndex)
{
	var parent;
	var child="";

	if(xmlDoc.getElementsByTagName(sParentNode)!=null)
	{
		parent=xmlDoc.getElementsByTagName(sParentNode).item(0);
		if(parent.hasChildNodes)
		{
			child=parent.getElementsByTagName(sChildNode).item(iIndex);
		}
	}
	return(child.childNodes.item(0).nodeValue);
}


function putXMLChildsInCombo(oCombo,xmlDoc,sText,sValue,sParentNode)
{
	var item;
	var x;
	var padre;
	var hijosValue;
	var hijosText;
	var nodo;

	
	if(xmlDoc.getElementsByTagName(sParentNode)!=null)
	{
		padre=xmlDoc.getElementsByTagName(sParentNode).item(0)
		if(padre.hasChildNodes)
		{
			hijosValue=padre.getElementsByTagName(sValue);
			hijosText=padre.getElementsByTagName(sText);
			for(x=0;x<hijosValue.length;x++)
			{
				item=document.createElement("OPTION");
				item.value=hijosValue.item(x).childNodes.item(0).nodeValue;
				item.text=hijosText.item(x).childNodes.item(0).nodeValue;
				oCombo.add(item);
			}
		}
	}
}


function fx_Volver()
{
	var sLastHRef;
	var sHRef;
	
	sLastHRef=new String();
	sHRef=new String();
	
	if (window.opener==null || window.opener=='')
	{
		/*
		sLastHRef=document.referrer;
		sLastHRef=sLastHRef.substring(0,sLastHRef.search(".asp"));
		sLastHRef=sLastHRef.toLowerCase();
		sHRef=document.location.href;
		sHRef=sHRef.substring(0,sHRef.search(".asp"));
		sHRef=sHRef.toLowerCase();
		*/		
		
		
		/*
		while(sHRef==sLastHRef)
		{
		*/
			
			window.history.back();
		/*
			sHRef=document.location.href;
			sHRef=sHRef.substring(0,sHRef.search(".asp"));
			sHRef=sHRef.toLowerCase();
		}
		*/
	}
	else
	{
		window.close();
		//document.location.href(window.opener.location.href);		
	}
}

function lTrim(sString)
{
	if(sString.length>0)
	{
		while(sString.substring(0,1)==" ")
		{
			sString=sString.substring(1,sString.length);
			//alert("'" + sString + "'");
		}
	}
	return(sString);
}

function rTrim(sString)
{
	if(sString.length>0)
	{
		while(sString.substring(sString.length-1,sString.length)==" ")
		{
			sString=sString.substring(0,sString.length-1);
		}
	}
	return(sString);
}

function trim(sString)
{
	sString=lTrim(rTrim(sString));
	return(sString);
}

//Get cookie routine by Shelley Powers 
function get_cookie(Name)
{
	var search = Name + "="
	var returnvalue = "";
	if (document.cookie.length > 0)
	{
		offset = document.cookie.indexOf(search)
		// if cookie exists
		if (offset != -1)
		{ 
			offset += search.length
			// set index of beginning of value
			end = document.cookie.indexOf(";", offset);
			// set index of end of cookie value
			if (end == -1) end = document.cookie.length;
				returnvalue=unescape(document.cookie.substring(offset, end))
		}
	}
	return returnvalue;
}

//Basada en "Get cookie routine by Shelley Powers"
function getValueFromString(sString,sField,sSeparator)
{
	// Si sSeparator="" lo setea a sSeparator=";"
	sSeparator=sSeparator||";";
	
	var search = sField + "="
	var returnvalue = "";
	
	
	if (sString.length > 0)
	{
		offset = sString.indexOf(search)
		// if found
		if (offset != -1)
		{ 
			offset += search.length
			// set index of beginning of value
			end = sString.indexOf(sSeparator, offset);
			// set index of end of value
			if (end == -1) end = sString.length;
				returnvalue=unescape(sString.substring(offset, end))
		}
	}
	return returnvalue;
}

//Verifica si se cargaron HIJOS para un nodo PADRE especificado
function fx_XmlChilds(ovXml,sIdXml)
{
	var bCargo
	//  indica si cargo o no en el contenedor XML
	bCargo=false;
	
	if(ovXml!=null)
	{
		padre=ovXml.getElementsByTagName(sIdXml).item(0);
		if(padre==null || !padre.hasChildNodes)
		{
			ovXml.load('');
		}
		else
		{
			bCargo=true;
		}
	}
	else
	{
		ovXml.load('');
	}
	
	return(bCargo);
}		

// Obtiene los n caracteres de la IZQUIERDA del texto pasado como parámetro
function Left(str, n)
{
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

// Obtiene los n caracteres de la DERECHA del texto pasado como parámetro
function Right(str, n)
{
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function isDate(sDate)
{
	var bFound=false;
	if(sDate.search(/(0[1-9]|1[0-9]|2[0-9]|3[0-1]){1}\/(0[1-9]|1[0-2]){1}\/[0-9]{4}/)>=0)
	{
	    bFound=true;
	}
	return(bFound);
}

function isEmail(sEmail)
{
    var bFound=false;
	
	if(sEmail.search(/([a-z]{0,}|_{0,}|-{0,}|[0-9]{0,}){1,}@{1}([a-z]{0,}|_{0,}|-{0,}|[0-9]{0,}){0,}\.{1}(\.{1}[a-z]{1,}|[a-z]{0,}){1}/)>=0)
	{
	    bFound=true;
	}
	return(bFound);
}

function dateToString(oDate)
{
    var sDay=new String();
    var iDay;
    var sMonth=new String();
    var iMonth;
    var sYear;
	
    iDay=oDate.getDate();
    sDay=iDay.toString();
    iMonth=(parseInt(oDate.getMonth())+1);
    sMonth=iMonth.toString();
    sYear=oDate.getFullYear();
	
    if(sDay.length==1)
    {
        sDay="0"+sDay;
    }
    if(sMonth.length==1)
    {
        sMonth="0"+sMonth;
    }
	
    return(sDay + "/" + sMonth + "/" + sYear);
    oDate=null;
    sMonth=null;
    sDay=null;
}

function dateAdd(oFecha,iDias)
{
     var b=new Date();
     oFecha.setTime(oFecha.getTime()+iDias*24*60*60*1000);
     return oFecha
}

function toDate(sFecha)
{
    var sDay ;
    var sMonth ;
    var sYear ;
    var oDate=new Date();
    	
    sDay = sFecha.substring(0,2) ;
    sMonth = parseInt(sFecha.substring(3,5),10)-1;
    sYear = sFecha.substring(6,10) ;

    oDate.setFullYear(sYear);
    oDate.setDate(sDay);
    oDate.setMonth(sMonth);
    oDate.setDate(sDay);
    oDate.setMonth(sMonth);
    return(oDate)
}

function today()
{
    var oDate=new Date();
    return(dateToString(oDate));
}


function cutFloatPart(iFloatNumber,iFloatParts)
{
    var s=new String();
    var s2=new String();
    var iIndex;
    var sDecimalPart;
    var sIntPart;
    var iRetVal;
    s=iFloatNumber.toString();
    iIndex=s.search(/[.]/);
    
    if(iIndex>=0)
    {
        sDecimalPart=s.substring(iIndex+1,iIndex+iFloatParts+1);
        sIntPart=s.substring(0,iIndex);
        s2=sIntPart + "." + sDecimalPart;
        iRetVal=parseFloat(s2);
    }
    else
    {
        iRetVal=iFloatNumber;
    }
    s=null;
    s2=null;
    return(iRetVal);
}

function addZeroFloatWhenNeeded(iFloatNumber,iFloatPositionsExpected)
{
    var s=new String();
    var iIndex;
    var sDecimalPart;
    var sIntPart;
    var sRetVal="";
    
    s=iFloatNumber.toString();
    iIndex=s.search(/[.]/);
    
    if(iIndex>=0)
    {
        sDecimalPart=s.substring(iIndex+1,s.length);
        sIntPart=s.substring(0,iIndex);
        if(sDecimalPart.length<iFloatPositionsExpected)
        {
            while(sDecimalPart.length<iFloatPositionsExpected)
            {
                sDecimalPart+="0";
            }
            sRetVal=sIntPart + "." + sDecimalPart;
        }
    }
    if(sRetVal.length==0)
    {
        sRetVal=iFloatNumber.toString();
    }
    
    s=null;
    return(sRetVal);
}


//Funciones Mouse: http://javascript.about.com/library/blmousepos.htm
function mouseX(evt)
{
    if (evt.pageX) return evt.pageX;
    else if (evt.clientX)
       return evt.clientX + (document.documentElement.scrollLeft ?
       document.documentElement.scrollLeft :
       document.body.scrollLeft);
    else return null;
}
function mouseY(evt)
{
    if (evt.pageY) return evt.pageY;
    else if (evt.clientY)
       return evt.clientY + (document.documentElement.scrollTop ?
       document.documentElement.scrollTop :
       document.body.scrollTop);
    else return null;
}
/*
function split(sList,sDelimiter)
{
    vAux=new Array();
    v=0;
    vAux[0]="";
    while(sList.length>0)
    {
        if(sList.substr(0,1)==sDelimiter)
        {
            v++;
            vAux[v]="";
            sList=sList.substr(1,sList.length);
        }
        vAux[v]+=sList.substr(0,1);
        sList=sList.substr(1,sList.length);
    }
    return(vAux);
}
*/

function getTotalLeftOffset(element)
{
    var fReturnValue=0;
    if(element.offsetParent)
    {
        fReturnValue=getTotalLeftOffset(element.offsetParent);
    }
    
    fReturnValue+=element.offsetLeft;
    return(fReturnValue);
}

function getTotalTopOffset(element)
{
    var fReturnValue=0;
    if(element.offsetParent)
    {
        fReturnValue=getTotalTopOffset(element.offsetParent);
    }
    
    fReturnValue+=element.offsetTop;
    return(fReturnValue);
}

function getOptionIndexInComboByValue(sText,combo)
{
  var x;
  var iIndex;
  
  if(sText.length>0 && combo.options.length>0)
  {
    x=0;
    iIndex=-1;

    while(x<combo.options.length && iIndex<0)
    {
        if(combo.options[x].value.toString()==sText.toString())
        {
            iIndex=x;
        }
        x++;
    }
  }
  return(iIndex);
}

function addMouseClickOverOut(obj,pMouseOver,pMouseOut,pClick)
{
    if(navigator.appName=="Microsoft Internet Explorer")
    {
      if(obj.attachEvent)
      {
        obj.attachEvent("onmouseover",pMouseOver);
        obj.attachEvent("onmouseout",pMouseOut);
        obj.attachEvent("onclick",pClick);
      }
      else
      {
        obj.setAttribute("onmouseover",pMouseOver);
        obj.setAttribute("onmouseout",pMouseOut);
        obj.setAttribute("onclick",pClick);
      }
    }
    else
    {
      obj.addEventListener("mouseover",pMouseOver,false);
      obj.addEventListener("mouseout",pMouseOut,false);
      obj.addEventListener("click",pClick,false);
    }
}

function addEventListenerCrossBrowser(obj,sEventName,pFunctionPointer,bUseCapture)
{
    if(sEventName.toString().substr(0,2).toLowerCase()=="on")
    {
        sEventName=sEventName.toString().substr(2,sEventName.toString().length-1);
    }
 
    if(navigator.appName=="Microsoft Internet Explorer")
    {
      if(obj.attachEvent)
      {   
        obj.attachEvent("on" + sEventName,pFunctionPointer);
      }
      else
      {
        obj.setAttribute("on" + sEventName,pFunctionPointer);
      }
    }
    else
    {
      obj.addEventListener(sEventName,pFunctionPointer,bUseCapture);
    }   
}

function removeEventListenerCrossBrowser(obj,sEventName,pFunctionPointer,bUseCapture)
{
    if(sEventName.toString().substr(0,2).toLowerCase()=="on")
    {
        sEventName=sEventName.toString().substr(2,sEventName.toString().length-1);
    }
 
    if(obj.detachEvent)
    {   
      obj.detachEvent("on" + sEventName,pFunctionPointer);
    }
    else
    {
      obj.removeEventListener(sEventName,pFunctionPointer,bUseCapture);
    }
}

function getCurrentPageName()
{
    var sPath = window.location.pathname;
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    return(sPage);
}

function getCurrentPageNameWithParams()
{
    var sPage = getCurrentPageName();
    var sFullUrl = window.location.href;
    var sPageWithParams = sPage + sFullUrl.substring(sFullUrl.lastIndexOf(sPage) + sPage.length);
    return(sPageWithParams);
}

function highlightText(obj,iHighlight,sColor)
{
  if(iHighlight==1)
  {
    obj.style.originalColor=obj.style.color;
    obj.style.color=sColor;
    document.body.style.cursor="pointer";
  }
  else
  {
    obj.style.color=obj.style.originalColor;
    document.body.style.cursor="default";
  }
}