/*******************************************************
 * MODULO: 	valida.js
 * DESCRIPCION:	Funciones de validacion
 * AUTOR: 	Ruben Suarez Alvarez.
 *******************************************************/

//***********************
// Constantes para los tipos de validación
//***********************
var OBLIGA  	= 1;
var NUMERO  	= 2;
var MENOR   	= 4;
var MAYOR   	= 8;
var RANGO   	= 16;
var FORMATO 	= 32;
var POSITIVO 	= 64;
var EMAIL       = 128;


//***********************
// Validación básica de campos.
//***********************
function ValidarCampo(Nombre, Valor, TipoValida, ValorInf, ValorSup) {
  if (TipoValida & OBLIGA) {
    if (Valor == "") {
      window.alert("El Campo " + Nombre + " es Obligatorio");
      return false;
    }
  }

  if (TipoValida & NUMERO) {
    if (isNaN(Valor)) {
      window.alert("El Campo " + Nombre + " debe ser Numérico");			
	  return false;
    }
  }

  if (TipoValida & MENOR) {
    if (Valor >= ValorInf)  {
      window.alert("El Campo " + Nombre + " debe ser Menor que " + ValorInf);			
      return false;
    }
  }

  if (TipoValida & MAYOR) {
    if (Valor <= ValorInf) {
      window.alert("El Campo " + Nombre + "  debe ser Mayor que " + ValorInf);			
      return false;
    }
  }

  if (TipoValida & RANGO) {
    if (Valor < ValorInf ||	Valor > ValorSup ) {
      window.alert("El Campo " + Nombre + " debe ser Mayor que " + ValorInf + " y Menor que " + ValorSup);			
      return false;
    }
  }

  if (TipoValida & POSITIVO) {
    if (Valor < 0) {
      window.alert("El Campo " + Nombre + " debe ser Positivo");			
      return false;
    }
  }

  if (TipoValida & EMAIL) {
    arroba = Valor.indexOf("@");
    if (arroba == -1) {
      alert("El Campo '" + Nombre + "' no es una direccion de correo valida");
      return false;
    }
    Valor = Valor.split("@");
    if (Valor.length != 2) {
      alert("El Campo '" + Nombre + "' no es una direccion de correo valida");
	  return false;
	}
	Valor = Valor[1].split(".");
	if (Valor.length < 2) {
      alert("El campo '" + Nombre + "' no es una direccion de correo valida");
	  return false;
	}
  }
  
  return true;
}

//***********************
// Valicacion de fechas.
//***********************
function ValidarFecha(Nombre, fFecha, TipoValida) {
  if (TipoValida & OBLIGA) {
    if (fFecha == "") {
	  window.alert("El Campo " + Nombre + " es Obligatorio");
	  return false;
	}
  }

  if (TipoValida & FORMATO) {	
    var fFechaAux = fFecha.split("/");
	var fDia = Number(fFechaAux[0]);
	var fMes = Number(fFechaAux[1]);
	var fAno = Number(fFechaAux[2]);		

    // Validacion del formato de la fecha
    if (isNaN(fDia) || isNaN(fMes) ||isNaN(fAno)) {
      window.alert(Nombre + " Incorrecta. Formato: DD/MM/AAAA");
      return false;
    }

    if (fAno < 100|| fMes > 12 || fDia> 31) {
      window.alert(Nombre + " Incorrecta. Formato: DD/MM/AAAA");
      return false;
    }

    if ((fMes == 4 || fMes == 6 || fMes == 9 || fMes == 11) && fDia > 30)	{
      window.alert(Nombre + " Incorrecta");
      return false;
    }

    // Validacion de años bisiestos, max dias, max meses ...
    if (fMes == 2 && fDia > 29) {
	  window.alert(Nombre + " Incorrecta");
      return false;
   }

    if ((fAno%4 || (fAno%100 && !(fAno%400))) && fDia > 28 && fMes==2) {
      window.alert(Nombre + " Incorrecta. El año no es Bisiesto");
      return false;
    }
  }
  return true;
}

