


/******************************************************************************
* La funci�n IsNumeric, nos valida que el campo sea un n�mero
*******************************************************************************/
function IsNumeric(sNumber)
{
	for ( lPos = 0; lPos < sNumber.length; lPos++ ) {
		var sChar = sNumber.charAt( lPos );
		if ( isNaN( parseInt( sChar ) ) 
   			&& sChar != "-"
     		&& sChar != "+"
     		&& sChar != "."
	   		&& sChar != "," ) {
			return false;
		}
	}
	return true;
}

/******************************************************************************
* La funci�n IsMailAddress, nos valida que el campo email tenga un formato de
* correo correcto
*******************************************************************************/
function IsMailAddress(sMail) 
{
	var Pos    = sMail.indexOf('@')
	var Period   = sMail.lastIndexOf('.')
	var Space    = sMail.indexOf(' ')
	var Length   = sMail.length - 1   // Array is from 0 to length-1
	var invalid = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // invalid characters
	var valid = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid characters
	var end = /\.[a-zA-Z]{2,3}$/; // end of email
	if ((Pos < 3) ||				// Must be atleast 3 characters before @ sign
		(Period <= Pos+1) ||        // Must be atleast one valid char btwn '@' and '.'
		(Period == Length ) ||      // Must be atleast one valid char after '.'
		(Space  != -1) ||           // No empty spaces permitted
		(invalid.test(sMail)) ||	// Mustn't contain invalid characters
		(!valid.test(sMail)) ||		// Must contain valid characters
		(sMail.search(end) == -1))  // Check email's end
	{       		
		return false;
	}
  return true;
}

/******************************************************************************
* La funci�n MensajeEmail, contiene el mensaje que se muestra cuando  el email no es
correcto
*******************************************************************************/

function MensajeEmail(campo){
	alert("Campo incorrecto " + campo.title );
	campo.focus();
}

/******************************************************************************
* La funci�n MensajeError, contiene el mensaje que se muestra cuando un campo no es
correcto
*******************************************************************************/

function MensajeError(campo){
	alert("Campo incorrecto  " + campo.title );
	campo.focus();
}


/******************************************************************************
* La funci�n contador, fuerza a un l�mite de caracteres los campos
*******************************************************************************/
function contador (campo,cuentacampo,limite)
{
	if (campo.value.length > limite){
		campo.value = campo.value.substring (0, limite);
	}else{
		cuentacampo.value = limite - campo.value.length;
	}	
}

/******************************************************************************
* La funci�n tamanoCampo, tambi�n fuerza a un l�mite de caracteres los campos
* sin utilizar cuentacampo
*******************************************************************************/
function tamanoCampo(nombre,tamano){
	var escritas=nombre.value.length;
	if(escritas>=tamano){
		return false;
	}else{
		return true;
	}
}



/******************************************************************************
* La funci�n validaCampoRelleno, nos valida que el campo indicado est� relleno
*******************************************************************************/
function validaCampoRelleno(campo)
{
	if (campo.value=="")
	{			
		alert("Rellene el campo " + campo.title);
		campo.focus();
		return false;
	}
	return true;
}
/***************************************************************************************
* La funci�n validaSelectRelleno, nos valida que en el select exista una opci�n elegida
****************************************************************************************/
function validaSelectRelleno(campoSelect)
{
	var indice=campoSelect.selectedIndex
	if(campoSelect.options[indice].value==-1){
		alert("Seleccione una de las opciones " + campoSelect.title);		
		return false;
	}	
	return true;
}

/*************************************************************************************************
* La funci�n validaRadioRelleno, nos valida que exista una opci�n elegida entre los radioButtons
**************************************************************************************************/

function validaRadioRelleno(varRadio,nombreCampo){

	var select=false;
	var i 
	for (i=0;i<varRadio.length;i++){ 
	   if (varRadio[i].checked) 
		 select=true;
	} 
	if (select==false){
		alert("Seleccione una opcion de " + nombreCampo);
		return false;
	}	
	return true;
}
/******************************************************************************
* La funci�n validar_formato_numero, nos valida la existencia de n�meros enteros!!!
* en un campo que debe de ser num�rico.Recibe un par�metro, el valor del campo
* del formulario a evaluar. No permite ni puntos ni comas.
*******************************************************************************/

function validar_formato_numero(numero){
  
    if(numero.value.length==0){
		return true;
    }
	if(isNaN(numero.value)){
       alert('Solo debe introducir digitos en el campo '+ numero.title); 
       numero.focus(); // Selecci�n del campo  
       return false;
	}
    if(numero.value.indexOf('.')!=-1){
       alert('No use el punto decimal en ese campo ' + numero.title); 
       numero.focus(); // Selecci�n del campo  
       return false;
	}
	if(numero.value.indexOf(',')!=-1){
       alert('No use la coma en ese campo ' + numero.title); 
       numero.focus(); // Selecci�n del campo  
       return false;
	}
  
	return true;
} // Fin de la funci�n validar_formato_numero


/***************************************************************************
* La funci�n validar_formato_fecha, es una funci�n gen�rica para validar la
* fecha. Los par�metros que necesita
* son el d�a, mes y a�o.
****************************************************************************/


function validar_formato_fecha(dia,mes,ano){
	if(!validaCampoRelleno(dia)){
			return false;
	}
	if(!validaCampoRelleno(mes)){
			return false;
	}
	if(!validaCampoRelleno(ano)){
			return false;
	}
	 
	if(dia.value.length!=2){
       alert('Debe introducir dos digitos en este campo ' + dia.title + ', ej. si es  �3� escriba �03�');
	     dia.focus();
	    return false;
   	}
	if(mes.value.length!=2){
       alert('Debe introducir dos digitos en este campo ' + mes.title + ', ej. si es �3� escriba �03�');
	    mes.focus();
	    return false;
   	}
	if(ano.value.length!=4){
		alert('Debe introducir dos digitos en este campo ' + ano.title );
		ano.focus();
		return false;
    }

    var bisiesto;  // Variable para almacenar el resto de la divisi�n 
      //del a�o introducido por el usuario entre el n�mero 4 para 
      //para comprobar si el a�o introducido es bisiesto
    bisiesto=ano.value%4;//Asignaci�n a la variable bisiesto del resto del
      //cociente entre el a�o introducido por usuario y el n�mero 4 (cada 4 a�os
      // es a�o bisiesto)
    if (ano.value%4==0&&(ano.value%100!=0 || ano.value%400==0))
    {
		bisiesto=0;
    }else{
		bisiesto=-1;
	}
	


	if (!(validar_formato_numero(dia,'dia')&&validar_formato_numero(mes,'mes')&&validar_formato_numero(ano,'a�o')))
	{
		return false;
	}else if((dia.value >31)||(dia.value <1)){
		// el d�a introducido tiene que estar comprendido entre los d�gitos 1 y 31
		alert('Introduzca un numero entre el 1 y el 31'); 
		dia.focus();
		return false;
	}else if((mes.value >12)||(mes.value <1)){
		// el mes introducido tiene que estar comprendido entre los d�gitos 1 y 12
	   alert('Introduzca un numero entre el 1 y el 12'); 
	   mes.focus();
	   return false;
	}else if((dia.value>=29)&&(mes.value==2)&&(bisiesto!=0)){
		// comprobaci�n si el a�o introducido es bisiesto o no lo es
		alert('Febrero tiene 28 dias');
		dia.focus();
	  return false;
	}else if((dia.value>29)&&(mes.value==2)){
		alert('Febrero tiene 28 dias');
		// febrero no puede tener m�s de 29 d�as
		dia.focus();
        return false;
    }
	// fin del �ltimo else
    return true;
 } // Fin de la funci�n validar_formato_fecha

/***************************************************************************
* La funci�n validar_formato_fecha, es una funci�n gen�rica para validar la
* fecha. Los par�metros que necesita
* son el d�a, mes y a�o.
****************************************************************************/


function validar_formato_fecha_entera(fecha){

	Datos=fecha.value.split('/');

	if (Datos.length<3)
	{
		alert('Debe introducir correctamente la fecha ' + fecha.title + '. (dd/mm/yyyy)');
		fecha.focus();
        return false;
	}	
	 
	if(Datos[0].length!=2){
       alert('Debe introducir dos digitos en este campo  ' + fecha.title + ', ej. si es �3� escriba �03�');
		fecha.focus();
	    return false;
   	}
	if(Datos[1].length!=2){
       alert('Debe introducir dos digitos en este campo  ' + fecha.title + ', ej. si es �3� escriba �03�');
	    fecha.focus();
	    return false;
   	}
	if(Datos[2].length!=4){
		alert('Debe introducir dos digitos en este campo ' + fecha.title );
		fecha.focus();
		return false;
    }

	dia=Datos[0]
	mes=Datos[1]
	ano=Datos[2]

    var bisiesto;  // Variable para almacenar el resto de la divisi�n 
      //del a�o introducido por el usuario entre el n�mero 4 para 
      //para comprobar si el a�o introducido es bisiesto
    bisiesto=ano%4;//Asignaci�n a la variable bisiesto del resto del
      //cociente entre el a�o introducido por usuario y el n�mero 4 (cada 4 a�os
      // es a�o bisiesto)
    if (ano%4==0&&(ano%100!=0 || ano%400==0))
    {
		bisiesto=0;
    }else{
		bisiesto=-1;
	}
	

	
	if(isNaN(dia)){
       alert('Debe introducir dos digitos en el dia de '+ fecha.title); 
       fecha.focus(); // Selecci�n del campo  
       return false;
	}
	if(isNaN(mes)){
       alert('Debe introducir dos digitos en el mes de '+ fecha.title); 
       fecha.focus(); // Selecci�n del campo  
       return false;
	}
	if(isNaN(ano)){
       alert('Debe introducir dos digitos en el a�o '+ fecha.title); 
       fecha.focus(); // Selecci�n del campo  
       return false;
	}

	if((dia >31)||(dia <1)){
		// el d�a introducido tiene que estar comprendido entre los d�gitos 1 y 31
		alert('Introduzca un numero entre el 1 y el 31'); 
		fecha.focus();
		return false;
	}else if((mes >12)||(mes <1)){
		// el mes introducido tiene que estar comprendido entre los d�gitos 1 y 12
	   alert('Introduzca un numero entre el 1 y el 12'); 
	   fecha.focus();
	   return false;
	}else if((dia>=29)&&(mes==2)&&(bisiesto!=0)){
		// comprobaci�n si el a�o introducido es bisiesto o no lo es
		alert('Febrero tiene 28 dias');
		fecha.focus();
	  return false;
	}else if((dia>29)&&(mes==2)){
		alert('Febrero  tiene 28 dias');
		// febrero no puede tener m�s de 29 d�as
		fecha.focus();
        return false;
    }
	// fin del �ltimo else

    return true;
 } // Fin de la funci�n validar_formato_fecha_entera


