// Variables a utilizar en las funciones

var digits="0123456789";
var digits1="0123456789.";
var digits2="0123456789,";
var digits3="0123456789.,";
var textchars="/'\"[]{}()*&^%$#@!~?<>-_+=|\\ \r\t\n.,:;`";
var lwr="abcdefghijklmnopqrstuvwxyz";
var upr="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var diac_lwr='áàâäåéèëêìíîïòóôõöøùúûüýñæßç';
var diac_upr='ÁÀÂÄÅÉÈËÊÌÍÎÏÒÓÔÕÖØÙÚÛÜÝÑÆßÇ';
var espacio=" ";
var whitespace=" \t\n\r";                     
var decimalPointDelimiter=".";                  
var phoneNumberDelimiters="()- ";  
var ZIPCodeDelimiters=".";

var PassLength=6;
var LoginLength=6;
var bgcolor_error = "#ff8f75";
var bgcolor_normal = "#ffffff";

var validPhoneChars=digits + phoneNumberDelimiters;
var validDNIChars=digits + upr + lwr;
var validZIPCodeChars=digits;

var digitsInPhoneNumber=9;
var digitsInDNI=9;
var digitsInZIPCode1=5;


/**********************************************************************/
// restablecer
// Función para volver a poner el fondo de su color original
/**********************************************************************/
/*
function restablecer(element){
	element.style.background=bgcolor_normal;
}
*/
/**********************************************************************/
// esVacio
// Función para comprobar si el valor está vacio. 
/**********************************************************************/

function esVacio(s){
	return((s==null)||(s.length==0))
}

/**********************************************************************/
// esValido
// Función para comprobar si el valor es válido comparandolo con los valores pasados. 
/**********************************************************************/

function esValido(parm,val){
	if(parm=="")return true;
	for(i=0;i<parm.length;i++){
		if(val.indexOf(parm.charAt(i),0)==-1)return false;
	}
	return true;
}

/**********************************************************************/
// esLetra
// Función para comprobar si el valor es una letra. 
/**********************************************************************/

function esLetra(c){
	return (((c>="a")&&(c<="z"))||((c>="A")&&(c<="Z")))
}

/**********************************************************************/
// esDigito
// Función para comprobar si el valor es un dígito. 
/**********************************************************************/

function esDigito(c){
	return ((c>="0")&&(c<="9"))
}


/**********************************************************************/
// esEspacio
// Función para comprobar si el valor es un espacio. 
/**********************************************************************/

function esEspacio(s){
	for(i=0;i< s.length;i++){
		c=s.charAt(i);
		if(whitespace.indexOf(c)==-1) return false;
	} 
	return true;
}

/**********************************************************************/
// esEntero
// Función para comprobar si el valor es un número entero. 
/**********************************************************************/

function esEntero(valor){ 
	
	if(esVacio(valor)){
		if(esEntero.arguments.length==1) return false;
		else return (esEntero.arguments[1]==true); 
	}
	for(i=0;i< valor.length;i++){ 
		c=valor.charAt(i); 
		if(!esDigito(c)) return false; 
	} 
	return true;
}

/**********************************************************************/
// esDNI
// Funcion para comprobar si el valor es un DNI correcto. 
/**********************************************************************/

function esDNI(valor){
	if (esValido(valor,validDNIChars) && valor.length==digitsInDNI) {
		for(var i=0; i<(valor.length)-1;i++){
			if(esDigito(valor.charAt(i))==false) {
				return false;
			}
		}
		if (esLetra(valor.charAt(i))){
			// Ahora compruebo si es un DNI correcto, es decir, si es la letra correcta.
			var numero = valor.substr(0,valor.length-1);
			var letra = valor.substr(valor.length-1,1);
	  		numero = numero % 23;
			cadena='TRWAGMYFPDXBNJZSQVHLCKET';
			cadena=cadena.substring(numero,numero+1);
			return (cadena==letra); 
		} else return false;
	} else return false;
}

/**********************************************************************/
// esEmail
// Funcion para comprobar si un mail es correcto
/**********************************************************************/

function esEmail(s){
	if(esVacio(s))
		if(esEmail.arguments.length==1) return false;
		else return(isEmail.arguments[1]==true);
		
		if(esEspacio(s)) return false;
		i=1;
		sLength=s.length;
		while((i<sLength) && (s.charAt(i) !="@")){
			i++
		};
		if((i >=sLength) || (s.charAt(i) !="@")) return false;
		else i +=2;
		while((i < sLength) && (s.charAt(i) !=".")){
			i++
		};
		if((i >=sLength - 1) || (s.charAt(i) !=".")) return false;
		else return true;
}

/**********************************************************************/
// es_telefono
// Funcion para comprobar si el valor es un teléfono. 
/**********************************************************************/

function es_telefono(numero)
{
	return (es_entero(numero)&& numero.length==digitsInPhoneNumber);
}

/**********************************************************************/
// esCodigoPostal
// Funcion para comprobar si el valor es un teléfono. 
/**********************************************************************/

function esCodigoPostal(s){
	return (esValido(s,validZIPCodeChars) && s.length==digitsInZIPCode1);
}

/**********************************************************************/
/* Esta función valida el formulario de Acceso Privado de la página.  */
/* 																      */
/**********************************************************************/

function validar_login()
{
// Ponemos todas las casillas sin fondo
document.form_login.login.style.background=bgcolor_normal;
document.form_login.pass.style.background=bgcolor_normal;
	var error="";
		
	if (vacio(document.form_login.login.value)) 
	{
		error+="Debe introducir el usuario.\n";
		document.form_login.login.style.background=bgcolor_error;
	}
	else
	{
		if (!es_valido(document.form_login.login.value))
		{
			error+="El usuario contiene caracteres no válidos.\n";
			document.form_login.login.style.background=bgcolor_error;
		}
	}	

	if (vacio(document.form_login.pass.value)) 
	{
		error+="Debe introducir la clave.\n";
		document.form_login.pass.style.background=bgcolor_error;
	}
	else
	{
		if (!es_valido(document.form_login.pass.value))
		{
			error+="La clave contiene caracteres no válidos.\n";
		}
	}	

	if (!error)
	{
		document.form_login.action="login.php";
		document.form_login.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función devuelve verdadero si el valor pasado como argumento  */
/* es una cadena vacia.						      */
/**********************************************************************/


function vacio(valor)
	{
		if (valor=="")
			{
				return(true);
			}
		else
			{
				return(false);
			}
	}


/**********************************************************************/
/*  Esta funcion comprobará si el valor introducido en la variable    */
/*  'valor' tiene el número de caracteres introducidos en la          */
/*   variable 'num'.                                                  */   
/**********************************************************************/


function num_caracteres(valor,num)
	{
		if (valor.length==num) 
			
				return true;
			
		else
			
				return false;
			
		
	}
	


/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos.                                                  */
/**********************************************************************/

function es_entero(numero)
	{
		cadena2="1234567890";
		valido=true;			
		cadena=numero;			
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos y espacios.                                       */
/**********************************************************************/


/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos y una coma.                                                  */
/**********************************************************************/

function es_real(numero)
	{
		cadena2="1234567890.";
		contador=0;
		valido=true;			
		cadena=numero;			
		longitud=cadena.length;
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				if (ch==".") 
					{
						++contador;
					}
					
				
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
	
		if (contador>=2 || cadena.charAt(longitud-1)==".")
			{
				 valido=false;
			}
		
		
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por caracteres válidos para hacer una inserción en una base   */	
/* de datos.                                                          */
/**********************************************************************/

function es_valido(valor)
	{
		cadena2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_-";
		valido=true;
		cadena=valor;
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{
						if (ch==cadena2.charAt(j)) break;
							
					}
					if (j == cadena2.length)
						{
      							valido = false;
      							break;
    						}
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}


function es_campo_valido(valor)
	{
		cadena2="AÁÀÂÃÄBCDEÉÈÊËFGHIÍÌÎÏJKLMNÑOÓÒÔÖÕPQRSTUÚÙÛÜVWXYZaáàâãäbcdeéèêëfghiíìîïjklmnñoóòôöõpqrstuúùûüvwxyz1234567890_- ,.";
		valido=true;
		cadena=valor;
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{
						if (ch==cadena2.charAt(j)) break;
							
					}
					if (j == cadena2.length)
						{
      							valido = false;
      							break;
    						}
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/
/*  Esta función recibe como argumento una cadena de caracteres       */
/* y devuelve verdadero si la cadena posée los caracteres '@' y '.'   */
/**********************************************************************/

function es_correo(email)
	{		
		if ((email.indexOf("@") == -1) || (email.indexOf(".") == -1))
			{
				return(false);
			}
		else
			{
				return(true);
			}
	}	
		
		
/**********************************************************************/
// validar una dirrecion web
// Expresión regular que valida que el formato de URL sea correcto
/**********************************************************************/

// 
function ValidaURL(url) {
	var re=/^(http|ftp)(s)?:\/\/\w+(\.\w+)*(-\w+)?\.([a-z]{2,3}|info|mobi|aero|asia|name)(:\d{2,5})?(\/)?((\/).+)?$/;

return re.test(url);
}	
/**********************************************************************/
/*Esta función valida si una fecha introducida es válida              */
/*    Ej: mm/dd/yyyy o mm-dd-yyyy o mm.dd.yyyy                      */
/*    								      */
/* 								      */
/**********************************************************************/	
function validar_fecha( strValue ) {

  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
  //Revisa si está en el formato correcto
  if(!objRegExp.test(strValue))
    return false; //no se ajusta al patron, fecha no valida
  else{
    var strSeparator = strValue.substring(2,3) //encuentra separador de fechas
    var arrayDate = strValue.split(strSeparator); //separa la fecha en dia, mes y año
    //crea un vector con los meses no iguales a febrero
    var arrayLookup = { '01' : 31,'03' : 31,'04' : 30,'05' : 31,'06' : 30,'07' : 31,'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
    var intDay = arrayDate[1]-0; 
    //revisa si el valor del día y del mes son válidos
    if(arrayLookup[arrayDate[0]] != null) {
      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
        return true; //encontrado en el vector, fecha valida
    }
    
    //revisa febrero
    var intYear = arrayDate[2]-0;
    var intMonth = arrayDate[0]-0;
    if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
      return true; //Feb. tiene un número valido de días
  }
  return false; //cualquier otro valor, fecha no valida
}
	
	
/**********************************************************************/
//Validar fecha
//Este codigo JavaScript Permite validar la fecha en formato 00/00/0000. 
//formato fecha: dd/mm/yyyy
//Valida bisiestos y meses de 30 y 31 dias, 
//asegurandose demás de que la fecha sea mayor de 1900.
/**********************************************************************/

function fecha_correcta(fecha)
{ 
   if(fecha)
   {
      borrar = fecha;
      if ((fecha.substr(2,1) == "/") && (fecha.substr(5,1) == "/"))
      {      
         for (i=0; i<10; i++)
	     {	
            if (((fecha.substr(i,1)<"0") || (fecha.substr(i,1)>"9")) && (i != 2) && (i != 5))
			{
               borrar = '';
               break;  
			}  
         }
	     if (borrar)
	     { 
	        a = fecha.substr(6,4);
		    m = fecha.substr(3,2);
		    d = fecha.substr(0,2);
//		    if((a < 1900) || (a > 2050) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
			if((a < 1900) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
			{
		       borrar = '';
			 }
		    else
		    {
		       if((a%4 != 0) && (m == 2) && (d > 28))	 
			   {  
		          borrar = ''; // Año no biciesto y es febrero y el dia es mayor a 28
				}
			   else	
			   {
		          if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))
				  {
			         borrar = '';	    
  				  }	 
			   }  // else
		    } // fin else
         } // if (error)
      } // if ((fecha.substr(2,1) == "/") && (fecha.substr(5,1) == "/"))			    			
	  else
	  {
	     borrar = '';
	  }
   } // if (fecha)   
   if (borrar == '')  return false;
   else	return true;
}

/**********************************************************************/
//limitar el número de los textarea
//Este codigo JavaScript Permite limitar el número de caracteres de los. 
//campos textarea
/**********************************************************************/

function cuenta(nombre,numero)
{ 
	var cadena="";
	
	if (eval("document.formulario." + nombre + ".value.length>" + numero))
	{
		for (i=0;i<numero;i++)
		{
			eval("cadena+=document.formulario." + nombre + ".value.charAt(" + i + ")");
		}
		
		eval("document.formulario." + nombre + ".value=cadena");
	}
}

/**********************************************************************/
// enviar
// Este codigo JavaScript permite devolver la ruta del archivo subido al 
// servidor.
/**********************************************************************/
function enviar_datos(valor, campo, directorio)
{
	var elemento = window.opener.document.getElementById(campo);
	var imagen = window.opener.document.getElementById(campo + '_img');
	
	if(elemento != null) elemento.value = valor;
	if(imagen != null) imagen.src = directorio + valor;
} 

function cerrarwindows(valor, campo, directorio)
{ 
	var elemento = window.opener.document.getElementById(campo);
	var imagen = window.opener.document.getElementById(campo + '_img');
	
	if(elemento != null) elemento.value = valor;
	if(imagen != null) imagen.src = directorio + valor;

	window.close();
}

/**********************************************************************/
// Ampliar foto
// Este codigo JavaScript abre un pop-up con una imagen. 
/**********************************************************************/

function abrir(archivo,foto,referencia)
{   
	nueva_ventana=window.open(archivo+ "?foto=" + foto + "&referencia=" + referencia, "" ,"scrollbars=no,toolbar=no,directories=no,menubar=no,left=15,top=15,resizable=no,status=no,width=660,height=550");
}






