//----------------------------------------------------------
// Version 1/09/2005
//----------------------------------------------------------

// FORM INPUT VALIDATION RUTINES

digits = "1234567890";
float_chars= digits+".+-eE";
int_chars= digits + "+-";
phone_chars = digits + "()- ";
zip_chars = digits+"-";
email_chars = ".@"; 
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
lowAlpha = "abcdefghijklmnopqrstuvwxyz";

function intCheck(val,mens)
{
   var message="Ingrese un numero valido";
   if (mens!=null) message=mens;
   var i = 0;
   for (i = 0; i < val.length; i++) 
   {
	c = val.charAt(i);
	if (digits.indexOf(c) == -1) return message;
   }
   return null;
}

function validatePrompt(Ctrl,PromptStr)
{
     Ctrl.focus();
     Ctrl.select();
     alert(PromptStr);
}

function notEmptyCheck(val,mens)
{
   var message="DATO INVÁLIDO: Ingrese un valor";

   if (mens!=null) message=mens;
   if (val.length==0) return message;
   
	var spcFlg = false;

	for (var i = 0; i < val.length; i++) {
		if (val.charAt(i) != ' ') {
			spcFlg = true;
		}
	}

	if (!spcFlg) {
		return message;
	}

   return null;
}

function integerCheck(val,mens) {
   var i=0, start=0;
   var message="DATO INVÁLIDO: Ingrese un valor numérico";

   if (mens!=null) message=mens;
   if (val.length==0) return null;
   if (val.length>0 && (val.charAt(0)=="+" || val.charAt(0)=="-")) 
      start=1;

   for (i=start; i<val.length; i++)
      if ("0123456789".indexOf(val.charAt(i))==-1)
         return message;

   return null;
}

function realCheck(val,mens,decimales)
{
   var i=0, j=0, start=0;
   var pref, suf, message="DATO INVÁLIDO: Ingrese un valor numérico (NNNNNN,NN)";

   if (decimales == null) decimales = 2;
   if (mens!=null) message=mens;
   if (val.length==0) return null;
   i=val.indexOf(",");

//   if (i==-1)
//   {
//	i=val.indexOf(".");
	if(i==-1)
	{
		if (integerCheck(val,mens)!=null)
			return message;
		else
			return null;
	}
//   }
   if (i==0) return message;
   if (i==(val.length-1)) return message;
   if (i<(val.length-decimales-1)) return message;

   if (val.length>0 && (val.charAt(0)=="+" || val.charAt(0)=="-")) 
      start=1;

   pref=val.substring(start,i);
   suf=val.substring(i+1,val.length);

   if (i>0)
      for (j=0; j<pref.length; j++)
         if ("0123456789.".indexOf(pref.charAt(j))==-1)
            return message;

   for (j=0; j<suf.length; j++)
      if ("0123456789".indexOf(suf.charAt(j))==-1)
         return message;

   return null;
}

function gt0Check(val,mens)
{
   var message="DATO INVÁLIDO: Ingrese un número mayor que cero";

   if (mens!=null) message=mens;
   if (parseFloatSpanish(val)<=0) return message;
   return null;
}

function ge0Check(val,mens) {
   var message="DATO INVÁLIDO: Ingrese un número mayor o igual que cero";

   if (mens!=null) message=mens;
   if (parseFloatSpanish(val)<0) return message;
   return null;
}

function lt0Check(val,mens) {
   var message="DATO INVÁLIDO: Ingrese un número menor que cero";

   if (mens!=null) message=mens;
   if (0<=parseFloatSpanish(val)) return message;
   return null;
}

function le0Check(val,mens) {
   var message="DATO INVÁLIDO: Ingrese un número menor o igual que cero";

   if (mens!=null) message=mens;
   if (0<parseFloatSpanish(val)) return message;
   return null;
}


	function dateCheck(val,mens) {
	   
	   var i=0, j=0;
	   var day, month, year, message="DATO INVÁLIDO: Ingrese una fecha (DD/MM/AAAA)";
	   var dm = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
	   
	   if (mens!=null) message=mens;
	   
	   i=val.indexOf("/");
	   
	   if (i==-1 || i==0) return message;

	   j=val.lastIndexOf("/");
	   
	   if (i==j || j==val.length) return message;

	   day=val.substring(0,i);
	   month=val.substring(i+1,j);
	   year=val.substring(j+1,val.length);

	   if (day.length==0) return message;
	   for (i=0; i<day.length; i++)
	      if ("0123456789".indexOf(day.charAt(i))==-1)
	         return message;
	   j=parseInt(day, 10);
	   if (!(1<=j && j<=31)) return message;

	   if (month.length==0) return message;
	   for (i=0; i<month.length; i++)
	      if ("0123456789".indexOf(month.charAt(i))==-1)
	         return message;
	   j=parseInt(month, 10);
	   if (!(1<=j && j<=12)) return message;

	   if (year.length!=4) return message;
	   for (i=0; i<year.length; i++)
	      if ("0123456789".indexOf(year.charAt(i))==-1)
	         return message;
	   if (!(0<parseInt(year, 10)))  return message;

		if (Math.round(year / 4) != year / 4) {
			dm[1] = 28
		}
		else {
			dm[1] = 29
		}
		
		if (day > dm[month - 1]) {
			return message;
		}

	   return null;
	}

/*
function dateCheck(val,mens) {
   var i=0, j=0;
   var day, month, year, message="DATO INVÁLIDO: Ingrese una fecha (DD/MM/AAAA)";
   
   if (mens!=null) message=mens;
   i=val.indexOf("/");
   if (i==-1 || i==0) return message;

   j=val.lastIndexOf("/");
   if (i==j || j==val.length) return message;

   day=val.substring(0,i);
   month=val.substring(i+1,j);
   year=val.substring(j+1,val.length);

   if (day.length==0) return message;
   for (i=0; i<day.length; i++)
      if ("0123456789".indexOf(day.charAt(i))==-1)
         return message;
   j=parseInt(day, 10);
   if (!(1<=j && j<=31)) return message;

   if (month.length==0) return message;
   for (i=0; i<month.length; i++)
      if ("0123456789".indexOf(month.charAt(i))==-1)
         return message;
   j=parseInt(month, 10);
   if (!(1<=j && j<=12)) return message;

   if (year.length!=4) return message;
   for (i=0; i<year.length; i++)
      if ("0123456789".indexOf(year.charAt(i))==-1)
         return message;
   if (!(0<parseInt(year, 10)))  return message;

   return null;
}
*/


function gtDate(val1,val2,mens) {
   var i=0, j=0;
   var day1, day2;
   var month1, month2;
   var year1, year2;
   var message="FECHAS INVÁLIDAS: Ingrese una fecha de inicio menor a la fecha de finalización";

   if (mens!=null) message=mens;

   i=val1.indexOf("/");
   if (i==-1 || i==0) return message;

   j=val1.lastIndexOf("/");
   if (i==j || j==val1.length) return message;

   day1=val1.substring(0,i);
   month1=val1.substring(i+1,j);
   year1=val1.substring(j+1,val1.length);

   i=val2.indexOf("/");
   if (i==-1 || i==0) return message;

   j=val2.lastIndexOf("/");
   if (i==j || j==val2.length) return message;

   day2=val2.substring(0,i);
   month2=val2.substring(i+1,j);
   year2=val2.substring(j+1,val2.length);

   // compare year, month & day
   if (parseInt(year1, 10)>parseInt(year2, 10))  return message;
   if (parseInt(year1, 10)==parseInt(year2, 10)) { 
      if (parseInt(month1, 10)>parseInt(month2, 10))  return message;
      if (parseInt(month1, 10)==parseInt(month2, 10)) { 
         if (parseInt(day1, 10)>parseInt(day2, 10))  return message;
      }
   }

   return null;
}

function patternMatchCheck(val,mask,mens) {
   var message="DATO INVÁLIDO: Ingrese un valor de la forma '" + mask + "'";
   var i=0, m=null, c=null;

   if (mens!=null) message=mens;
   // Chequeo longitud
   if (val.length!=mask.length) return message;

   // Comparo caracteres uno a uno
   for (i=0; i<val.length; i++) {
      m=mask.charAt(i);
      c=val.charAt(i);
      if (m=="?") continue;
      if (m=="N") {
         if ("0123456789".indexOf(c)==-1) return message;
      } else if (m=="A") {
         if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(c)==-1) return message;
      } else if (m!=c) return message;
   }

   return null;
}

function parseFloatSpanish(val)
{
   var i=val.indexOf(",");
   var pentera="";
   var pdecimal="";
   var retval=val;

   if (!(i==-1 || i==0)) {
      pentera=val.substring(0,i);
      pdecimal=val.substring(i+1,val.length);
      retval=pentera + '.' + pdecimal;
   }

   return parseFloat(retval);
}

function checkEmail(val)
{
  var message1="Dirección de E-mail inválida, falta la arroba (@).";
  var message2="Dirección de E-mail inválida, debe haber puntos despues de la arroba (@).";
  var message3="Dirección de E-mail inválida.";
  var strAntesArroba="";
  var strdespuesArroba="";

  if(val.indexOf("@")==-1)
     return message1;
  else
  {
      strAntesArroba=val.substring(0,val.indexOf("@"));
      //alert(strAntesArroba)
      strDespuesArroba=val.substring(val.indexOf("@")+1,val.length);
      //alert(strDespuesArroba)
      if (strAntesArroba.lenght<=0)
          return message3
      else if (strDespuesArroba.indexOf(".")==-1)
          return message2
  }
  return null
}
function TelephoneCheck(val,mens)
{
   var message="'DATO INVÁLIDO: Número de Teléfono no válido.";

   var numTel;

   if (mens!=null) message=mens;

   numTel = val.substring(0,val.length);

   for(i=0;i<numTel.length;i++){
   	if(phone_chars.indexOf(numTel.charAt(i))==-1)
	   return message;
   }

   return null;
}

function CheckEmail(val,mens)
{
  var message="DATO INVÁLIDO: Ingrese una Dirección de E-mail correcta.";
  var strAntesArroba="";
  var strdespuesArroba="";

  if(val.indexOf("@")==-1)
     return message;
  else
  {
      strAntesArroba=val.substring(0,val.indexOf("@"));
      //alert(strAntesArroba)
      strDespuesArroba=val.substring(val.indexOf("@")+1,val.length);
      //alert(strDespuesArroba)
      if (strAntesArroba.lenght<=0)
          return message
      else if (strDespuesArroba.indexOf(".")==-1)
          return message
  }
  return null
}

function checkValidChars(iVar) {

	var valChar = ' abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789_.,;';

	if (iVar) {
		for (var i = 0; i < iVar.length; i++) {
			if (valChar.indexOf(iVar.charAt(i)) == -1) {
				return false;
			}
		}
	}
	else {
		return false;
	}
   
   return true;

}

