function OverNivel1(texto) { 
document.aspnetForm.tituloTemporal.value=texto;
 return false;
}

function OutNivel1() { 
document.aspnetForm.tituloTemporal.value='';
 return false;
}

function sustitucion(obj){
 var nuevaRuta = obj.src;
 nuevaRuta = nuevaRuta.replace('.gif','Iluminado.gif') 
 obj.src=nuevaRuta;
 return false;
}

function sustitucionOut(obj){
 var nuevaRuta = obj.src;
 nuevaRuta = nuevaRuta.replace('Iluminado.gif','.gif') 
 obj.src=nuevaRuta;
 return false;
}

function salta(pagina) {
    document.location.href=pagina;
}


function efectoBotonIn(obj) {
obj.style.backgroundColor='#BDB377';
}

function efectoBotonOn(obj) {
   obj.style.backgroundColor='#DDD8B9';
}
   

function verDecimal(oValor,iLengthEntero, iLengthDecimal){
	var reg= /\./g
	var sValor=oValor.value.replace(reg,'');	
	var sEntero=sValor;
	var sDecimal=""
	if (sValor.indexOf(",")!=-1){
		var aValor=sValor.split(",");
		sEntero=aValor[0];
		sDecimal=aValor[1];
	}
	if (sEntero.length>iLengthEntero || sDecimal.length>iLengthDecimal){
		alert("- El campo \"Valor\" debe tener como máximo "+iLengthEntero+" digitos enteros y "+iLengthDecimal+" digitos decimales.");
		return false;
	}
	return true;
}

function setFocus(oElem){
	bFormatEdicion=false;
	oElem.focus();
}

function formatVisual(oValor){
	if (oValor.value!=""){
		var anum=/(^-*\d{0,15}$)|(^-*\d{0,15}\,\d{1,15}$)|(^-*\d{0,15}\.\d{1,15}$)/
		if (oValor.value.search(anum)==-1){
			//La cifra no guarda un formato correcto
			var sValor=oValor.value;
			
			alert("- La cifra no tiene un formato correcto. El formato correcto es:\n\n  * Sólo se admiten caracteres de 0 a 9.\n\n  * Se puede utilizar como separador decimal tanto el \".\" como la \",\". \n\n * No se admite introducir separdor de miles. \n\n  * La parte decimal debe tener como máximo 15 digitos.\n\n  * La parte entera, si existe, debe tener como mínimo 1 dígito y como máximo 15 digitos.");
			oValor.value="";
			setFocus(oValor);			
			return false;
		}
		
		anum=/(^-*\d{0,15}\.\d{1,15}$)/
		var sEntero=oValor.value;
		var sDecimal=""
		if (oValor.value.search(anum)!=-1){
		    sEntero=sEntero.replace(".",","); 
		    oValor.value=sEntero;
		}
		
		//La cifra guarda un formato correcto. Damos formato con separador de miles.
		
		if (oValor.value.indexOf(",")!=-1){
			var aValor=oValor.value.split(",");
			sEntero=aValor[0];
			sDecimal=","+aValor[1];
		}
			
		var iPuntos=parseInt(sEntero.length/3);		
		var iContChar=0;
		var sNewEntero="";
		for (var i=sEntero.length;i>=0;i--){
			if (iContChar==4){
			    if (sEntero.charAt(i) != "-")
			    {
				sNewEntero="."+sNewEntero;
				iContChar=1;
				iPuntos--;
			}
			}
			sNewEntero=sEntero.charAt(i)+ sNewEntero;
			iContChar++;
		}
		sEntero=sNewEntero;
		oValor.value=sEntero+sDecimal;
	}
	
}

function formatEdicion(oValor){
	if (bFormatEdicion && oValor.value.indexOf(".")!=-1){	
		var reg= /\./g
		oValor.value=oValor.value.replace(reg,'');
	}
	bFormatEdicion=true;	
}

function validarNumeroNegativo(sValue,ev){	

	//Teclas pulsadas con CTRL
	if ((ev.ctrlKey || ev.ctrlLeft) && ! ev.altKey && ! ev.altLeft){
		//log("Tecla con CTRL");
	 	return true;
	}
	
	//Teclas de movimiento
	if (ev.keyCode >=35 && ev.keyCode <41){
		//log("Tecla de movimiento");
	 return true;
	}
	//Teclas de teclado num?rico
	if (ev.keyCode >= 96 && ev.keyCode <= 105){
		//log("Tecla de teclado num?rico");
	 	return true;
	 }
	 
	 //Teclas de borrado
	 if (ev.keyCode == 8 || ev.keyCode==46){
		//log("Tecla de borrado");
	 	return true;
	 } 
     	 
	 //Teclas de negativo
	 if (ev.keyCode ==109){
		//log("Tecla de negativo");		
		if(sValue.indexOf("-")==-1){ 
		        //solo es valido si es el primer caracter		        
			    return true;
		}	 	
	 }
	 
	  //Teclas de INTRO
	 if (ev.keyCode ==13){
		//log("Tecla de INTRO");
	 	return true;
	 }
	 
	   //Teclas de Tab
	 if (ev.keyCode ==9){
		//log("Tecla de Tab");
	 	return true;
	 }

	if ((ev.keyCode>=48 && ev.keyCode<=57) || ev.keyCode==188 || ev.keyCode==190 || ev.keyCode==110 ){
		//Es un n?mero o una coma o un punto
		if (ev.keyCode>=48 && ev.keyCode<=57){
		//Es un n?mero
		    return true;
		}else{
		    if(sValue.indexOf(",")==-1 && sValue.indexOf(".")==-1){ 
		        //Es una coma o un punto pero no hab?a  previa antes en el valor
			    return true;
		    }
		}	
	}
	
	return false;
}



function validarNumeroSinFormato(sValue,ev){	

	//Teclas pulsadas con CTRL
	if ((ev.ctrlKey || ev.ctrlLeft) && ! ev.altKey && ! ev.altLeft){
		//log("Tecla con CTRL");
	 	return true;
	}
	
	//Teclas de movimiento
	if (ev.keyCode >=35 && ev.keyCode <41){
		//log("Tecla de movimiento");
	 return true;
	}
	//Teclas de teclado num?rico
	if (ev.keyCode >= 96 && ev.keyCode <= 105){
		//log("Tecla de teclado num?rico");
	 	return true;
	 }
	 
	 //Teclas de borrado
	 if (ev.keyCode == 8 || ev.keyCode==46){
		//log("Tecla de borrado");
	 	return true;
	 }
	 
	  //Teclas de INTRO
	 if (ev.keyCode ==13){
		//log("Tecla de INTRO");
	 	return true;
	 }
	 
	   //Teclas de Tab
	 if (ev.keyCode ==9){
		//log("Tecla de Tab");
	 	return true;
	 }

	if ((ev.keyCode>=48 && ev.keyCode<=57) || ev.keyCode==188 || ev.keyCode==190 || ev.keyCode==110 ){
		//Es un n?mero o una coma o un punto
		if (ev.keyCode>=48 && ev.keyCode<=57){
		//Es un n?mero
		    return true;
		}else{
		    if(sValue.indexOf(",")==-1 && sValue.indexOf(".")==-1){ 
		        //Es una coma o un punto pero no hab?a  previa antes en el valor
			    return true;
		    }
		}	
	}
	
	return false;
}


function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}

function valSep(oTxt){
var bOk = false;
bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
return bOk;
}

function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 29; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes;
}

function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.value.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}

function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}

function valAno(oTxt){
var bOk = true;
var nAno = oTxt.value.substr(6);
bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}

function validaFecha(oTxt){
    var bOk = true;
    if (oTxt.value != ""){
        bOk = bOk && (valAno(oTxt));
        bOk = bOk && (valMes(oTxt));
        bOk = bOk && (valDia(oTxt));
        bOk = bOk && (valSep(oTxt));
        if (!bOk)
        {
            alert("Fecha no válida (El formato debe ser: dd/mm/yyyy)");            
            oTxt.value = "";
            oTxt.focus();
            return false;
        }
        else
        {
            return true;
        }
    }
}