/*
  Version 0.9    JCortijo 2002

  Funcion que valida los campos obligatorios de un formuladio , por defecto debe ser el forms[0]
  Recibe como parametro una cadena de nombres de campos a chequear junto con un texto explicativo
  del campo separados cada uno por una coma .
  Ejemplo:

          validaExiste('pnom,nombre usuario,apel,apellido usuario,dni,dni usuario')

*/
function validaExiste( todo )
{
	arraycampos = todo.split(",")

	//for (i=0; i<arraycampos.lenght ;i++)
	i=0;
	while (arraycampos[i])
	{

		if (document.forms[0][arraycampos[i]].value == "")
		{
			alert("El campo '" + arraycampos[i+1].toUpperCase() + "' debe tener valor")
			document.forms[0][arraycampos[i]].focus()
			return false
		}
		else i+=2;
	}
    return true
}

/*
  Version 0.9    JCortijo 2002

  Funcion que valida los campos numéricos de un formulario, por defecto debe ser el forms[0]
  Recibe como parametro una cadena de nombres de campos a chequear junto con un texto explicativo
  del campo separados cada uno por una coma .
  Ejemplo:

          validaNumerico('ptele,teléfono fijo,cp,código postal')

*/

function validaNumerico( todo )
{
	arraycampos = todo.split(",")

    // Definimos un patron de busqueda de numerica
    var reg = /^([0-9])+$/;
	i=0;
	while (arraycampos[i])
	{
		if ( document.forms[0][arraycampos[i]].value != "" &&
             document.forms[0][arraycampos[i]].value.search(reg) == -1)
		{
			alert("El campo '" + arraycampos[i+1].toUpperCase() + "' debe ser numérico");
			document.forms[0][arraycampos[i]].focus();
			document.forms[0][arraycampos[i]].select();
			return false
		}
		else i+=2;
	}
    return true
}


/*
  JCortijo 2002

  Comprobación de fecha, se comprueba incluso que el año sea bisiesto y las consecuentes modificaciones en Febrero

*/

var diasEnMes = hacerArray(12);
diasEnMes[1] = 31;
diasEnMes[2] = 29;
diasEnMes[3] = 31;
diasEnMes[4] = 30;
diasEnMes[5] = 31;
diasEnMes[6] = 30;
diasEnMes[7] = 31;
diasEnMes[8] = 31;
diasEnMes[9] = 30;
diasEnMes[10] = 31;
diasEnMes[11] = 30;
diasEnMes[12] = 31;

function hacerArray(n) {
   for (var i = 1; i <= n; i++) {
      this[i] = 0;
   }
   return this;
}

function diasEnFebrero(queAnyo) {
    return (queAnyo % 4 == 0 && (!(queAnyo % 100 == 0) || (queAnyo % 400 == 0)) ? 29 : 28);
}

function validaFecha(mm, dd, yyyy) {
	if (mm !="" && !(mm > 0 && mm < 13))
	{
		alert ("Mes erróneo! Por favor introduce un valor entre 1 y 12.");
		return false;
	}
	if (dd !="" && !(dd > 0 && dd < 32))
	{
		alert ("Día erróneo! Por favor introduzca un valor entre 1 y 31.");
		return false;
	}
	if ((dd!="" && mm!="") && dd > diasEnMes[mm])
	{
		alert ("Día imposible para ese mes.")
		return false;
	}
	if (yyyy !="" && !(yyyy > 1889))
	{
		alert ("Año erróneo! Por favor introduce un año mayor de 1890.");
		return false;
	}
	if ((mm=="2" || mm=="02" && dd!="" && yyyy!="") && dd > diasEnFebrero(yyyy))
	{
		alert ("Fecha imposible para ese año.")
		return false;
	}
	return true;
}

/*
  JCortijo 2002

  Comprobación de email. Comprueba que contenga @, el punto , y que no hayan caracteres raros en ningun lado.
  El parametro pasado es el nombre del INPUT del formulario, por defecto debe ser el forms[0].
  Solo se permiten letras,numeros , el punto, guion bajo y guion normal.


*/


function validaEmail(campo)
{
 //Primero recogemos el valor del campo

 var strMail = document.forms[0][campo].value;


 // Define la expresion regular para verificar si el email tiene el formato usuario@dominio
  var patMail = /^(.+)@(.+)$/;

 // Define la expresion regular para nombres de usuario validos
  var patUser = /^[a-zA-Z\d_-]+(\.[a-zA-Z\d_-]+)*$/;

 // Define la expresion regular para direccciones IP
  var patDomainIP = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;

 // Define la expresion regular para nombres de dominio validos
  var patDomain = /^[a-zA-Z\d_-]+(\.[a-zA-Z\d_-]+)+$/;

 // Verifica que el string que recibe la funcion sea del tipo string@string y separa los substring
 // correspondientes a usuario y dominio
  var matchArray = strMail.match(patMail);
  if(matchArray == null)
  {
   alert("Error en la introducción del correo electrónico, \nel texto introducido no se corresponde con un correo válido.");
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   return false;
  }
  var user = new String(matchArray[1]);
  var domain = new String(matchArray[2]);

 // Si el nombre de usuario no es valido la funcion devuelve falso
  if(user.match(patUser) == null)
  {
   alert("Error en la introducción del correo electrónico, usuario inválido. \n No ha introducido ningún nombre antes de la arroba o quizás usó caracteres prohibidos\n(solo se permiten letras, números y'.' '_' '-').");
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   return false;
  }

 // Verifica si el string de dominio corresponde a una direccion IP
 // De ser asi varifica que la ip sea valida.  La funcion devuelve verdadero si la ip es valida y falso si no lo es
  var IPArray = domain.match(patDomainIP);
  if(IPArray != null)
  {
   for (var i=1;i<=4;i++)
   {
    if(IPArray[i]>255)
    {
     alert("Por favor repase IP introducida. Números fuera de rango (>255).")
     document.forms[0][campo].focus();
     document.forms[0][campo].select();
     return false;
    }
   }
   //alert("MAIL VALIDO")
   return true;
  }

 // Verifica que el string de dominio sea valido.
 // Si es valido verifica que la ultima extension tenga 3 o 4 caracteres de longitud (2 o 3 caracteres mas el punto)
  var domainArray = domain.match(patDomain);
  if(domainArray == null)
  {
   alert("Error en la introducción del correo electrónico, falta introducir o completar el dominio (parte derecha de la arroba). \nEjemplo: jose.perez@yahoo.es")
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   return false;
  }
  if(domainArray[domainArray.length - 1].length < 3 || domainArray[domainArray.length - 1].length > 4)
  {
   alert("Error en la introducción del correo electrónico, error en el dominio (parte derecha de la arroba). \nPor favor compruebe que su mail este completo y no contenga espacios en blanco.\nEjemplos de posibles errores: jose.perez@yahoo.eses ó jose.perez@yahoo.e")
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   return false;
  }

 // Si la funcion no devolvio false entonces el parametro de entrada es una direccion de mail valida
 // Por lo tanto la funcion devuelve true
//  alert("MAIL VALIDO");
  return true;
}
