/* ======================

Check for Required fields and Validate entries

 Input fields name must have following format:

 	name_??

 Where:

 BeforeLast char
 	r : required field
 	o : optional field

 Last Char
 	i : integer
 	f : float point
 	d : date (dd/mm/yyyy)
 	D : date (mm/dd/yyyy)
 	R : RIF
 	e : email
 	p : password
 	t : text string
 	h : phone

 Example:
 	name_rt

==========================  */
function checkForm(myform) {

  var len = myform.elements.length;
  var formOK = true;


  for (i=0; i < len && formOK; i++) {
   sufix = myform.elements[i].name.substr(myform.elements[i].name.length-3,3);
   myReg = new RegExp("^_[ro]{1}[ifdDRepth]{1}");

   if(myReg.test(sufix)) formOK = checkField(myform,i,sufix.substr(1,2));

  }

  return formOK;
}

function checkField(myform,i,sufix){
  var formOK = true;
  var code1 = sufix.substr(0,1);
  var code2 = sufix.substr(1,1);

   if ( code1 == "r" && myform.elements[i].value == "") {
        formOK = false;
        alert ("Todos los campos obligatorios deben especificarse");
        myform.elements[i].focus();
   }

   if ( code2 == "d" && myform.elements[i].value != "") {
       if (myform.elements[i].value.length != 10 || !isDate(myform.elements[i].value)) {
         formOK = false;
         alert ("Formato de fecha inválido (dd/mm/aaaa)");
         myform.elements[i].focus();
       }
   }


   if (code2 == "R" && myform.elements[i].value != "") {
       if ( !isRIF(myform.elements[i].value)) {
             formOK = false;
             alert ("RIF inválido, intente de nuevo (solo números y letras)");
             myform.elements[i].focus();

       }
    }

   if (code2 == "p" && myform.elements[i].value != "") {
       if ( myform.elements[i].value != myform.elements[i+1].value) {
             formOK = false;
             alert ("Claves no coinciden");
             myform.elements[i].focus();

       }
    }

   if (code2 == "i" && myform.elements[i].value != "") {
       if ( !isInteger(myform.elements[i].value)) {
             formOK = false;
             alert ("Por favor, indique un número válido");
             myform.elements[i].focus();

       }
    }

   if (code2 == "d" && myform.elements[i].value != "") {
       if ( !isDecimal(myform.elements[i].value)) {
             formOK = false;
             alert ("Por favor, indique un número válido");
             myform.elements[i].focus();

       }
    }

   if (code2 == "e" && myform.elements[i].value != "") {
       if ( !isEmail(myform.elements[i].value)) {
             formOK = false;
             alert ("Por favor, indique un email válido");
             myform.elements[i].focus();

       }
    }

   if (code2 == "h" && myform.elements[i].value != "") {
       if ( !isPhone(myform.elements[i].value)) {
             formOK = false;
             alert ("Por favor, indique un teléfono válido");
             myform.elements[i].focus();

       }
    }


    return formOK;
}

function isDate(mydate) {

  myReg = new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$");

  if (!myReg.test(mydate)) return false;

  if (mydate.substr(0,2) > 31) return false;

  if (mydate.substr(3,2) > 12) return false;

  if (mydate.substr(6,4) < 1900) return false;

  return true;
}


function isInteger(num) {
	myReg = new RegExp("^[0-9]+$");
	return myReg.test(num);
}

function isRIF(rif) {
 myReg = new RegExp("^[jJgGvVee]{1}[0-9]{9}$");
 return myReg.test(rif);
}

function isDecimal(sText) {

   myReg = new RegExp("^[0-9]+[\.]*[0-9]+$");
   return myReg.test(sText);

}

function isEmail(e){
  myReg = /^([a-zA-Z0-9_\.\-])+\@(([_a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

 return myReg.test(e);
}

function isPhone(phn) {
 myReg = new RegExp("^[0-9()\-\.]{7,}$");
 return myReg.test(phn);
}