/*************************************************************************/
//				Librería de funciones de JavaScript útiles               //
/*************************************************************************/

function FormatRealNr(nr){
	//-----------------------------------------------------------------
	// Descripción:       Quita los puntos separadores de millares de 
	//					  un número
	// Autor:             José Antonio Ovejero (Kristina Internet B.S.)
	// Fecha de creación: 12/Junio/2001
	// Retorno:           Número formateado
	// Argumentos:        Número a formatear
	//-----------------------------------------------------------------
	
	if (InStr(nr,".")>0){
		return Replace(nr,".","");
	}
	else{
		return nr;
	};
}

/*************************************************************************/

function InStr(strWhole,strPartial){
	//-----------------------------------------------------------------
	// Descripción:       Devuelve la posición de una cadena (strPartial) 
	//					  dentro de otra (strWhole). Si no la encuentra,
	//					  devuelve 0
	// Autor:             José Antonio Ovejero (Kristina Internet B.S.)
	// Fecha de creación: 12/Junio/2001
	// Retorno:           Posición de la ocurrencia
	// Argumentos:        Cadena en la que buscar
	//					  Cadena a buscar
	//-----------------------------------------------------------------
	
	var bFound=false;
	for (var iIndex=0;iIndex<=strWhole.length;iIndex++){
		if (strWhole.substring(iIndex,iIndex+strPartial.length)==strPartial){
			iRet=iIndex;
			bFound=true;
		}
	};
	if (bFound){
		return iRet;
	}
	else{
		return 0;
	};
	
}

/*************************************************************************/

function Replace(str,cad1,cad2){
	//-----------------------------------------------------------------
	// Descripción:       Reemplaza dentro de la cadena (str) el literal 1 
	//					  (cad1) por el literal (cad2)
	// Autor:             José Antonio Ovejero (Kristina Internet B.S.)
	// Fecha de creación: 12/Junio/2001
	// Retorno:           Cadena con el texto ya reemplazado
	// Argumentos:        Cadena en la que reemplazar
	//					  Subcadena a ser reemplazada
	//					  Subcadena derivada
	//-----------------------------------------------------------------
	
	var part1;var part2;var part3;
	var strAux;var strAux2;
	
	strAux=str;
	strAux2='';
	
	for (var i=0;i<=strAux.length-cad1.length+1;i++){
		if (strAux.substring(i,i+cad1.length)==cad1){
			part1=strAux2;
			part2=cad2;
						
			strAux2=part1+part2;
			
			//Tiene que avanzar hasta el final de la ocurrencia
			i=i+cad1.length-1;	
		}
		else{
			strAux2=strAux2+strAux.substring(i,i+1);
		};
	}
	
	return strAux2;

}

/*************************************************************************/

function IsNumeric(strString,blnNegative,blnDecimal){
	//-----------------------------------------------------------------
	// Descripción:       Comprueba si la cadena strString es un valor 
	//					  numérico o no
	// Autor:             José Antonio Ovejero (Kristina Internet B.S.)
	// Fecha de creación: 12/Junio/2001
	// Retorno:           Valor booleano que indica si es numérica
	// Argumentos:        Cadena a escrutar
	//					  Indicador para los números negativos
	//					  Indicador para los números reales
	//-----------------------------------------------------------------
	
	var intLength;
	var blnComma;		//Flag que indica que ya ha encontrado la coma

	blnComma=false;
	for (intLength=0;intLength<strString.length;intLength++){
		if ((strString.substring(intLength,intLength+1)>'9'||strString.substring(intLength,intLength+1)<'0')&&(strString.substring(intLength,intLength+1)!='.')){
			if (blnNegative) then
				if (strString.substring(intLength,intLength+1)!='-'){
					if (blnDecimal){
						if (strString.substring(intLength,intLength+1)!=','){
							return false;
						}
						else{
							if (blnComma){
								//Tiene dos separadores decimales
								return false;
							}
							else{
								blnComma=true;
							};
						};
					}
				}
			else
				if (blnDecimal){
					if (strString.substring(intLength,intLength+1)!=','){
							return false;
						}
						else{
							if (blnComma){
								//Tiene dos separadores decimales
								return false;
							}
							else{
								blnComma=true;
							};
						};
				}
				else{
					return false;
				}
		}	
	};
	return true;
}

/*************************************************************************/

function TransformCommaToPoint(strString){
	//-----------------------------------------------------------------
	// Descripción:       Transforma las comas de un número a puntos
	// Autor:             José Antonio Ovejero (Kristina Internet B.S.)
	// Fecha de creación: 12/Junio/2001
	// Retorno:           Cadena con las transformaciones realizadas
	// Argumentos:        Cadena a transformar
	//-----------------------------------------------------------------	
	
	//Quita los puntos
	for (var i=0;i<strString.length;i++){
		if (strString.substring(i,i+1)=='.'){
			strString=strString.substring(1,i-1)+strString.substring(i+1,strString.length-i+1);
		};
	};
	
	//Reemplaza las comas por los puntos
	for (var i=0;i<strString.length;i++){
		if (strString.substring(i,i+1)==','){
			strString=strString.substring(1,i-1)+'.'+strString.substring(i+1,strString.length-i+1);
		};
	};
	
	return (strString);
};

/*************************************************************************/

function openwindow(cual,altura,anchura,izquierda,arriba,scroll,titulo,toolbar,location)
	//-----------------------------------------------------------------
	// Descripción:       Abre una nueva ventana según los parámetros expedidos
	// Autor:             José Antonio Ovejero (Kristina Internet B.S.)
	// Fecha de creación: 2/Julio/2001
	// Retorno:           Manejador de la ventana
	// Argumentos:        Nombre del objeto
	//					  Alto de la ventana
	//					  Ancho de la ventana
	//					  Posición izquierda de la ventana
	//					  Posición superior de la ventana
	//					  Flag de existencia o no de la barra de scroll
	//					  Título de la ventana
	//					  Flag de existencia o no de la barra de herramientas
	//					  Flag de existencia o no de la barra de direcciones
	//-----------------------------------------------------------------
{
	window.open(cual,'','toolbar='+toolbar+',location='+location+',directories=no,status=no,scrollbars=' + scroll + ',resizable=yes,copyhistory=yes,width=' + anchura + ',height=' + altura + ',top=' + arriba + ',left=' + izquierda);
};

/*************************************************************************/

function FormatNIF(strNIF)
	//-----------------------------------------------------------------
	// Descripción:       Formatea el valor del NIF/NIE
	// Autor:             José Antonio Ovejero (Kristina Internet B.S.)
	// Fecha de creación: 2/Julio/2001
	// Retorno:           Valor formateado
	// Argumentos:        Valor antes de ser formateado
	//-----------------------------------------------------------------
{
	var strAux;
	var strValoresPermitidos = '0123456789TRWAGMYFPDXBNJZSQVHLCKE';
	strAux='';
	strNIF=strNIF.toUpperCase();
	for (var i=0;i<=strNIF.length;i++){
		if (strValoresPermitidos.indexOf(strNIF.substring(i,i+1)) != -1) {
			strAux=strAux + strNIF.substring(i,i+1);
		};
	};
	return strAux;
};

/*************************************************************************/

function Eraser(intSeconds){
	window.status="Le restan "+intSeconds+" segundos para que caduque su sesión"
	//Llamada recursiva
	CheckSessionTime(intSeconds);
};

function CheckSessionTime(intSeconds){
	//------------------------------------------------------------------------------
	// Descripción:       Comprueba mediante javascript que la sesión no ha caducado
	// Autor:             José Antonio Ovejero
	// Fecha de creación: 2/Agosto/2001
	// Argumentos:        Número en segundos que restan para que caduque la sesión
	//------------------------------------------------------------------------------
	
	//Controla el tiempo de sesión en la parte del cliente
	if (intSeconds<=0){
		document.location.href="/sesion_caducada.asp";
	}
	else{
		intSeconds=intSeconds-1;
		setTimeout("Eraser("+intSeconds+")",1000);
	};
};

/*************************************************************************/

function IsEuro(strString){
	//-----------------------------------------------------------------
	// Descripción:       Comprueba si la cadena puede contener euros
	// Autor:             José Antonio Ovejero
	// Fecha de creación: 08/Enero/2002
	// Retorno:           Valor booleano que indica si es válida o no
	// Argumentos:        Cadena a escrutar
	//-----------------------------------------------------------------
	
	var intLength;
	var blnComma;		//Flag que indica que ya ha encontrado la coma
	
	blnComma=false;
	for (intLength=0;intLength<strString.length;intLength++){
		if ((strString.substring(intLength,intLength+1)>'9'||strString.substring(intLength,intLength+1)<'0')&&(strString.substring(intLength,intLength+1)!=',')){
			//No es numérico
			return false;
		}
		else{
			if (strString.substring(intLength,intLength+1)==','){
						
					//Si ya encontró la coma, no es numérico
					if (blnComma) return false;
					
					//Si tiene más de dos posiciones posteriormente no se permite tampoco
					if (intLength+3<strString.length) return false;
					
					blnComma=true;
			}
		};
	};
	return true;
}

/*************************************************************************/

function replaceString(oldS,newS,fullS) {
	// Replaces oldS with newS in the string fullS   
	for (var intReplaceString=0; intReplaceString<fullS.length; intReplaceString++) {      
		if (fullS.substring(intReplaceString,intReplaceString+oldS.length) == oldS) {         
			fullS = fullS.substring(0,intReplaceString)+newS+fullS.substring(intReplaceString+oldS.length,fullS.length)      
		}   
	}   
	return fullS
}

function codificarEuro(codi){
	//-----------------------------------------------------------------
	// Descripción:       Formatea una codena al formato euro
	// Autor:             Antonio Coronado Albi
	// Fecha de creación: 31/Mayo/2002
	// Retorno:           Cadena formateada con puntos y decimales
	// Argumentos:        Valor 
	//-----------------------------------------------------------------
	  
	  var caux="";
	  var cauxcoma="";
	  var cauxcomabis="";
		
		//Quito los puntos	
		while (codi.indexOf('.') != -1) {
			codi = codi.replace('.', '');
		}
		//Recupero la primera posicón de la coma  
		var i = codi.indexOf(",");
		if (i!=-1){
		 //Cojo la subcadena desde el principio hasta la coma
		 cauxcoma = codi.substr(0,i);
		 //Cojo la subcadena desde la coma hasta el finañ
		 cauxcomabis = codi.substr(i,codi.length);
		} else {
			//Si no hay coma cjo toda la cadena como numero entero
			cauxcoma = codi;
		}
		//Voy cogiendo la parte entera y la voy recorriendo de 3 en 3 y poniendo un punto
		while (cauxcoma.length >3){
		   caux = cauxcoma.substr(cauxcoma.length - 3,3) + caux;     
		   caux = "." + caux;
		   cauxcoma = cauxcoma.substr(0,cauxcoma.length - 3);
		}
		caux = cauxcoma + caux 
		//Si no hay nada en la parte entera, pero si en la decimal pongo un cero como parte entera
		if ((caux.length==0)&&(cauxcomabis.length>0)) caux = "0";
		
		
		if (cauxcomabis.length>2){
			if ((cauxcomabis.substr(1,1)!=",")&&(cauxcomabis.substr(2,1)!=",")){
				 caux = caux + cauxcomabis.substr(0,3);
			}
		}else{
				
			if (cauxcomabis.length == 2){
				if (cauxcomabis.substr(1,1)!=",") caux = caux + cauxcomabis.substr(0,2) + '0';
			}else{
				
				//No hay parte decimal
				if (caux != ''){
					caux = caux + ',00';
				}
			}
		} 
	  
		return caux;
	}
	
	function anyoBisiesto(anyo)
	    {
	        
	        //-----------------------------------------------------------------
		// Descripción:       Me indica si un años es bisiesto
		// Autor:             Antonio Coronado Albi
		// Fecha de creación: 26/Diciembre/2002
		// Retorno:           true o false
		// Argumentos:        Valor 
		//-----------------------------------------------------------------
	        
	        if (anyo < 100)
	            var fin = anyo + 1900;
	        else
	            var fin = anyo ;
	
	        if (fin % 4 != 0)
	            return false;
	        else
	        {
	            if (fin % 100 == 0)
	            {
	
	                if (fin % 400 == 0)
	                {
	                    return true;
	                }
	                else
	                {
	                    return false;
	                }
	            }

            else
            {
                return true;
            }
        }
    }
    

    function validaFecha(fecha )
	    {
		//-----------------------------------------------------------------
		// Descripción:       Valida si una fecha es correcta
		// Autor:             Antonio Coronado Albi
		// Fecha de creación: 26/Diciembre/2002
		// Retorno:           true o false
		// Argumentos:        Valor 
		//-----------------------------------------------------------------
		var a, mes, dia, anyo, febrero;
	       
	       a=window.document.MainForm[fecha].value;
	       dia=a.split("/")[0];
	       mes=a.split("/")[1];
	       anyo=a.split("/")[2]; 
	       
	       if (a==''){
			return(true);
	       }
	       
	       if (isNaN(dia) ||isNaN(mes) || isNaN(anyo)){
				alert("El formato de la fecha tiene que ser dd/mm/yyyy");
				return(false);
	       }
	              
	       if(anyoBisiesto(anyo))
	           febrero=29;
	       else
	           febrero=28;
	    
	       if (((mes<1) || (mes>12)))
	       {
	           alert("El mes introducido no es valido. Por favor, introduzca un mes correcto");
	           window.document.MainForm[fecha].focus();
	           window.document.MainForm[fecha].select();
	           return(false);
	       }
	    
	       if ((mes==2) && ((dia<1) || (dia>febrero)))
	       {
	           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
	           window.document.MainForm[fecha].focus();
	           window.document.MainForm[fecha].select();
	           return(false);
	       }
	    
	       if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
	       {
	           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
	           window.document.MainForm[fecha].focus();
	           window.document.MainForm[fecha].select();
	           return(false);
	       }
	    
	       if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
	       {
	           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
	           window.document.MainForm[fecha].focus();
	           window.document.MainForm[fecha].select();
	           return(false);
	       }
	    
	           
	       else
	                    
	          return(true);
	          //document.forms[0].submit();    
	    }    


	
//Funciones para Registro de Usuarios
	function ValidateUser(){

		//Usuario: longitud máxima 25, longitud mínima 5
		//Contraseña: longitud máxima 25, longitud mínima 5
		
		var strUser = window.document.forms['validacion'].LoginUserName.value;
		var strPass = window.document.forms['validacion'].LoginPassword.value;
		var intUserApostrofe = strUser.lastIndexOf("'");
		var intPasswordApostrofe = strPass.lastIndexOf("'");
		
		if ( (strUser == "") || (intUserApostrofe != -1)) {
			alert("Introduzca un nombre de usuario válido.");
			return;
		}
		
		
		if (((strPass == "") || (strPass.indexOf(" ") >= 0)) || (intPasswordApostrofe != -1)) {
			alert("Introduzca una contraseña válida. Sin espacios");
			return;
		}
		
		//Todo Bien
		ThrowValidateFrom();
	}
	
	
	function ThrowValidateFrom() {
		
		//Hacemos submit
		window.document.forms['validacion'].submit();
	
	}


	function ValidateUserKeyPressed () {
		if (event.keyCode == 13){
			//Se llama a lanzamiento del formulario
			javascript:ValidateUser();
				return(false);
		}
	}


	function trim() {
            return this.replace(/^\s+/,'').replace(/\s+$/,'');
        }
	function trim2(var1) {
            return var1.replace(/^\s+/,'').replace(/\s+$/,'');
        }       

	function rtrim() {
            return this.replace(/\s+$/,'');
        }
        
    function rtrim2(var1) {
            return var1.replace(/\s+$/,'');
        }

	function ltrim() {
            return this.replace(/^\s+/,'');
        }
    function ltrim2(var1) {
            return var1.replace(/^\s+/,'');
        }
    
    var winn;
	function abrirPopups(cual,wid,heig,scrol){
				
			// centramos la flotante	
			var LeftP = (screen.width) ? (screen.width-wid)/2 : 0;
			var TopP = (screen.height) ? (screen.height-heig)/2 : 0;
			// control de ventana abierta		
				if(winn){
					if(document.all||(!document.all && document.getElementById))	winn.close();
					winn = null;
				}
				window.focus();
				winn=eval("open('"+cual+"','','width="+wid+",height="+heig+",top="+TopP+",left="+LeftP+",scrollbars="+scrol+"')");
		
	};

	
	//Funciones utilizadas para prevenir la salida no voluntaria de un cliente del web

	var intObject = "0";

	function setObject(intValue){
			intObject=intValue;
		}

	function PreventExit(){	
		//Sólo para versiones IE5.5+
		var strAgentDesc=navigator.userAgent; 
		if (InStr(strAgentDesc,"MSIE 6")>0||InStr(strAgentDesc,"MSIE 5.5")>0) {
			window.onbeforeunload = confirmExit;
		}
	}

	function confirmExit(){
		if (intObject!='1'){
			mess = ""
			return mess;
		}
	}

