var strBotonesEstandardSufijos='';
//Para el control del popup
var popUpWidth=null;
var popUpHeight=null;
var popUpResizable=null;

<!-- DETECTAR NAVEGADORES -->
<!--======================-->

<!-- detect Netscape 4.7+ -->
<!--ATENCION Netscape 4.7 no reconoce esta variable dentro de las funciones -->
var blnNetscape47 =((navigator.appName=="Netscape") && ((document.layers)?true:false));
<!-- Netscape 4.7 se considera no compatible -->
<!-- detect Mozilla 1.6 (Netscape 5.0)+ -->
var blnMozilla =((navigator.appName=="Netscape") && (parseFloat(navigator.appVersion)>=5));
<!-- Detect IE5.5 -->
var blnIE55 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1);
<!-- Detect IE5.5+ -->
var blnIE55mas = (navigator.appVersion.indexOf("MSIE")!=-1);
var IE55masVersion=0;
var blnIE=(blnIE55mas || blnIE55);
if (blnIE55mas==true) {
	var temp=navigator.appVersion.split("MSIE");
	IE55masVersion=parseFloat(temp[1]);
}
<!-- Detect Opera -->
var blnOpera6 = ((navigator.userAgent.indexOf("Opera 6")!=-1) || (navigator.userAgent.indexOf("Opera/6")!=-1));


function muestraNavegadorYVersion() {
	var strMensaje="";
	
	if (blnNetscape47) strMensaje="Netscape 4.7 detectado.";
	if (blnMozilla==true) strMensaje="Mozilla detectado.";
	if (blnIE55==true) strMensaje="Internet Explorer 5.5 detectado.";
	if (blnIE55mas==true) strMensaje="Internet Explorer "+IE55masVersion+" detectado.";
	if (blnOpera6==true) strMensaje="Opera 6 detectado";

	if (strMensaje=="") {
		alert(msgNavegadorNoDetectado);
	} else if (blnDepurar) {
		//alert(strMensaje);
	}
}


function WriteLayer(ID,parentID,sText) {
	if (document.layers) {
		var oLayer;
		if(parentID){
			oLayer = eval('document.' + parentID + '.document.' + ID + '.document');
	   	}else{
	    	oLayer = document.layers[ID].document;
	   	}
	 	oLayer.open();
	 	oLayer.write(sText);
	 	oLayer.close();
	} else if (parseInt(navigator.appVersion)>=5&&navigator.appName=="Netscape") {
		document.getElementById(ID).innerHTML = sText;
	} else if (document.all) 
		document.all[ID].innerHTML = sText
} 


function getElementById(strElement) {
	var obj=null;
	if (strElement==null) return null;
	if (strElement=='') return null; 
	if (blnNetscape47) {
		alert("blnNetscape47");
		if (obj==null && document.all) obj=eval('document.all.'+strElement);
		//alert("document.all."+strElement+"\n --> getElementById("+strElement+")="+obj);
		if (obj==null) {
			obj=eval('document.FRM.'+strElement);							
			//alert("document.FRM."+strElement+"\n --> getElementById("+strElement+")="+obj);
			if (obj==null) {
				obj=eval('document.'+strElement);
				//alert("document."+strElement+"\n --> getElementById("+strElement+")="+obj);
				if (obj==null) {
					obj=eval('document.layers.'+strElement);
					//alert("document.layers."+strElement+"\n --> getElementById("+strElement+")="+obj);
				}
			}
		}
		
	} else obj=document.getElementById(strElement);
	return obj;
}

function getElementById_InOpener(strElement) {
	var obj = window.opener.document.getElementById(strElement);
	return obj;
}

function vacio(s) {   
	return ((s == null) || (s.length == 0)) 
}
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}				

// c es un digito
function isDigit (c) {   
	return ((c>= "0") && (c<= "9"))
}

// s es un numero (entero o flotante, con o sin signo)
function isStringNumber(s) {   
	var i;
    var dotAppeared;
    dotAppeared = false;
    if (vacio(s)) 
       return false;
    
    for (i = 0; i< s.length; i++) {   
        var c = s.charAt(i);
        if( i != 0 ) {
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else     
                if (!isDigit(c)) return false;
        } else { 
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else     
                if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}						

function PopUp(page, name, details) {
	/* Use this in the A HREF tag:
	popUp('images/image.jpg','imageName','width=xxx,height=xxx,resizable=yes')
	popUp('images/image.jpg','imageName','width=xxx,height=xxx,directories=yes,location=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes,screenX=xxx,screenY=xxx,top=xxx,left=xxx')
	By default, all options are off. To enable an option, therefore, 
	you must use option=yes. All options are enabled in 	
	the custom example. Replace "yes" with "no", or remove the option to 
	disable it. "xxx" should be replaced with pixel 	
	values. screenX, screenY, top and left position the window on the 
	screen, and you need both to have it work in IE and Netscape

	You can use .html files or images, same as usual with an "a" tag.
	*/
	/*
	alert("page="+page+"\n"+
		  "name="+name+"\n"+
		  "details="+details);*/
	name=null;  //Para evitar error en IE sobre win98
	var newWin=window.open(page, name, details);
	newWin.focus();
	return newWin;
}

function checkTextAreaMaxLenght(obj,maxLength) {
	if (obj==null || obj.value==null || maxLength==null) return;
	if (obj.value.length>maxLength)
		obj.value=obj.value.substring(0,maxLength);
}


function TRMuestraOculta(id) {	
	var tr = getElementById(""+id);
	//var trImg = getElementById("trImage"+id);
	if (tr.className=="HIDE") { 		
		tr.className="";
		//trImg.className=tr.name;
		//obj.value="-";
	} else {
		tr.className="HIDE"; 
		//trImg.className="HIDE";
		//obj.value = "+";
	} 
}

function MostrarTR(TR_Id,COMBO_Id) {	//Mostrar los campos de texto libres, alternativos a las listas desplegables.
	var tr = getElementById(TR_Id);
	var obj = getElementById(COMBO_Id);
	if (tr==null || obj==null) return;
	if (obj.selectedIndex==0) {	tr.className="SHOW";} 
		else { tr.className="HIDE"; } 
}


function MuestraTRSiChecked(trId,checkBoxId) {  
	//Muestra/ocultao trId si se hace click en el checkBoxId
	//Abmos par?metros son string
	check = getElementById(checkBoxId);
	tr = getElementById(trId);
	if (check.checked) tr.className="SHOW"
		else tr.className="HIDE";
}

function MuestraTRCheck(trId,chkId) {
	tr=getElementById(trId);
	chk=getElementById(chkId);
	if (chk.checked) tr.className='SHOW'; else tr.className='HIDE';
}

function MuestraTRSiCondition(trId,condition) {  
	//Muestra/ocultao trId si se cumple la condition
	tr = getElementById(trId);
	if (condition) tr.className="SHOW"
		else tr.className="HIDE";
}

function compruebaCheckHijo(chkPadre,strChkHijo) {
	//Deshabilita el hijo si el padre est? sin chekear
	//Y lo habilita si est? checkeado.
	var chkHijo=getElementById(strChkHijo);
	if (chkPadre.checked==true) {
		chkHijo.disabled=false;
	} else {
		chkHijo.checked=false;
		chkHijo.disabled=true;
	}
}

function disableFormButtons(disable) {
	if (disable==null) disable=true;
	aBotonesSufijos=strBotonesEstandardSufijos.split(';');
	for (i=0; i<aBotonesSufijos.length; i++) {
		var paginaSiguiente = getElementById("paginaSiguiente"+aBotonesSufijos[i]);
		var paginaSiguiente = getElementById("paginaSiguiente"+aBotonesSufijos[i]);
		var paginaAnterior = getElementById("paginaAnterior"+aBotonesSufijos[i]);
		var btnGrabar = getElementById("botonCrear"+aBotonesSufijos[i]);
		var btnModificar = getElementById("botonModificar"+aBotonesSufijos[i]);
		var btnDuplicar = getElementById("botonDuplicar"+aBotonesSufijos[i]);
		var btnModificarImg = getElementById("botonModificarImagenes"+aBotonesSufijos[i]);
		var btnEliminar = getElementById("botonEliminar"+aBotonesSufijos[i]);
		var btnImprimir = getElementById("botonImprimir"+aBotonesSufijos[i]);
		if (paginaSiguiente!=null) paginaSiguiente.disabled=disable;
		if (paginaAnterior!=null) paginaAnterior.disabled=disable;
		if (btnGrabar!=null) btnGrabar.disabled=disable;
		if (btnModificar!=null) btnModificar.disabled=disable;
		if (btnDuplicar!=null) btnDuplicar.disabled=disable;
		if (btnModificarImg!=null) btnModificarImg.disabled=disable;
		if (btnEliminar!=null) btnEliminar.disabled=disable;
		if (btnImprimir!=null) btnImprimir.disabled=disable;

		var btn1 = getElementById("boton1"+aBotonesSufijos[i]);
		if (btn1!=null) btn1.disabled=disable;
	}
}
	
function copiaIdCombo(objCombo,strNombreComboDestino) {
	//Copia el selectedIndex de objCombo a strNombreComboDestino
	var objComboDest=getElementById(strNombreComboDestino);
	for (i=0; i<objComboDest.options.length; i++) {
		if (objComboDest.options[i].value==objCombo.options[objCombo.selectedIndex].value)
			objComboDest.selectedIndex=i;
	}
}


function compruebaEMail(strMail) {
	if (vacio(strMail)) return false;
	var posArroba=strMail.indexOf('@');
	var posPunto=strMail.indexOf('.');
	if (posArroba==-1 || posPunto==-1 ||
		posArroba+1>=posPunto || 
		posPunto+2>=strMail.length) {
		return false;
	}
	return true;
}

function compruebaNumero(strNumero) {
	if (strNumero==null || strNumero=='')
		return false;
	var regexpNum=/(^\d+$)|(^\d+\.\d+$)/
	return (regexpNum.test(strNumero));
}

function compruebaCampoDefValue(obj,strComprobacionCampo,strDefValue,strRange) {
	if (!compruebaCampos(strComprobacionCampo)) {
		obj.value=strDefValue;
		obj.focus();
		return false;
	}
	return checkNumericRange(obj.value,strRange);;
}


function cambiaCheck(strObj) {
	var obj = getElementById(strObj);
	if (obj!=null) {
		obj.checked=!obj.checked;
	}
}

function cambiaClass(strObjectsId,strConditions,strTrueValues,strFalseValues) {
	//Cambia el attributo class de los objetosId
	//Si cumple la condicion class tomar? el valor true, si no, el false
	//La condicion tiene que ser:
	//  - ejecutable en javascript con eval()  (ESTA PARTE NO EST? TESTEADA#####)
	//  - 'nombreObj.==valor' y se comparar? con nombreObj.value==valor
	//  - 'nombreObj.>valor' (idem)
	//  - 'nombreObj. menor valor'  (idem) (hay que poner el s?mbolo en lugar de menor)
	//Todos los parametros pueden ser listas separadas por puntos y comas (;)
	//todas las listas tienen que ser de la misma longitud
	var arrObjects = strObjectsId.split(";");
	var arrConditions = strConditions.split(";");
	var arrTrueValues = strTrueValues.split(";");
	var arrFalseValues = strFalseValues.split(";");
	//Se comprueban las longitudes de las listas
	if (arrObjects.length!=arrConditions.length &&
		arrConditions.length!=arrTrueValues.length &&
		arrTrueValues.length!=arrFalseValues.length) {
		alert('ERROR DE APLICACION\n\nPrincipal.xsl->javascript:cambiaClass->No coinciden las longitudes de objetos/condiciones/valoresTrue/valoresFalse.');
		return;
	}
	//Se procesan las listas
	for (i=0; i<arrObjects.length; i++) {
		var strObj = arrObjects[i];
		var obj = getElementById(strObj);
		if (obj==null) {
			/*
			if (blnDepurar && blnMostrarObjetosNulosJS && strObj!='trMensajeServicio')
			alert('ERROR DE APLICACION\n\nPrincipal.xsl->javascript:cambiaClass->El objeto del formulario ('+strObj+') no existe.');
			*/
		} else {
			var strObjCondition = arrConditions[i].substring(0,arrConditions[i].indexOf("."));
			var objCondition = getElementById(strObjCondition);
			if (objCondition!=null) {
				var posIgual = arrConditions[i].lastIndexOf("=");
				var posMayor = arrConditions[i].lastIndexOf(">");
				var posMenor = arrConditions[i].lastIndexOf("<");
				var strEqualsCond = "";
				var blnResult=false;
				if (posIgual!=-1) {
					strEqualsCond = arrConditions[i].substring(posIgual+1);
					blnResult=(objCondition.value==strEqualsCond);
				} else if (posMayor!=-1) {
					strEqualsCond = arrConditions[i].substring(posMayor+1);
					blnResult=(objCondition.value>strEqualsCond);
				} else if (posMenor!=-1) {
					strEqualsCond = arrConditions[i].substring(posMenor+1);
					blnResult=(objCondition.value<strEqualsCond);
				} else {
					blnResult=eval(arrConditions[i]);
				}
				if (blnResult) {
					obj.className=arrTrueValues[i];
				} else {
					obj.className=arrFalseValues[i];
				}
			} else {
				if (eval(arrConditions[i])) {
					obj.className=arrTrueValues[i];
				} else {
					obj.className=arrFalseValues[i];
				}
			}								
		}
	}
	
}


function setQueryStringParam(strParamName,strParamValue) {
	<!-- modifica o crea (si no existe) un parametro de la query string -->
	var strURL = document.location.href;
	var strParams = null;
	var posParams = strURL.indexOf('?');
	if (posParams>-1) strParams = strURL.split('?')[1];
	if (strParams==null || strParams=='') {
		return strURL+(posParams==-1?'?':'')+strParamName+'='+strParamValue;
	}
	var aParams = strParams.split('+');
	var blnEncontrado = false;
	strURL=strURL.substring(0,posParams+1);
	for (i=0; i<strParams.length; i++) {
		var strParamNameActual=null;
		var strParamValueActual=null;
		/* NO USAR TRY PARA COMPATIBILIDAD CON NETSCAPE 4.7
		try {*/
			if (aParams[i]!=null && aParams[i].indexOf("=")>-1) {
				strParamNameActual=aParams[i].split('=')[0];
				strParamValueActual=aParams[i].split('=')[1];
			}
		/* NO USAR TRY PARA COMPATIBILIDAD CON NETSCAPE 4.7
		} catch (Exception) {}*/
		if (strParamNameActual!=null) {
			if (strParamNameActual==strParamName) {
				strParamValueActual=strParamValue;
				blnEncontrado=true;
			}
			strURL+=strParamNameActual+'='+strParamValueActual+'&';
		}
	}
	if (!blnEncontrado) strURL+=strParamName+'='+strParamValue+'&';
	//if (strURL.lastIndexOf('&')==strURL.length-1) strURL=strURL.substring(0,strURL.length-1);
	return strURL;
}
					