/*******************************************************************************
 * Rutinas para validación formularios                                         *
 *******************************************************************************
 * function IsEmpty( s )                                                       *
 * function Required( objField, strFieldName )                                 *
 * function IsText( objField, MaxLength, MinLength, strFieldName )             *
 * function IsNumber( objField, iMin, iMax, iNumDec, strFieldName )            *
 * function ConfirmarOperacion( Operacion )                                    *
 ******************************************************************************/


//retorna verdadero si está vacio
//--------------------------------
function IsEmpty( s )
{   return ((s == null) || (s.length == 0))
}


//mira si tiene información y sino la solitica 
//--------------------------------------------
function Required( objField, strFieldName )
{   
   var strTest = new String(objField.value);
   var bResult = true;
   var cant = 0;

   // Is s empty?
   if (IsEmpty(strTest)) 
      bResult = false;

   // Search through string's characters one by one
   // until we find a non-whitespace character.
   // When we do, return false; if we don't, return true.

   var i;
   for (i = 0; i < strTest.length; i++)
      if (strTest.charAt(i) == " ") 
         cant = cant + 1
         
   if (strTest.length == cant)
      bResult = false;
   else
      bResult = true;

   if (!bResult)
   {
      alert("Por favor llene el campo " + strFieldName + ".")
      objField.focus();
   }

   return bResult;
}


//determina si solo tiene caracteres texto
//----------------------------------------
function IsText( objField, MaxLength, MinLength, strFieldName )
{
   // Todas las letras del español
   var checkOK = "ABCDEFGHIJKLMNñÑOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁÉÍÓÚáéóúüñÑ0123456789-/#$%&?.,()=@áíóúé ";
   var strTest = objField.value;
   var strAlert = "Por favor entre solo letras, números y/o espacios en el campo " + strFieldName + ".";
   var bResult = true;
   
   for (i = 0;  i < strTest.length;  i++)
   {
      ch = strTest.charAt(i);
      for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
         break;
      if (j == checkOK.length)
      {
         bResult = false;
         break;
      }
   }

   if (strTest.length > MaxLength) 
   {
      strAlert = "El campo " + strFieldName + " no puede tener más de " + MaxLength + " caracteres.";
      bResult = false;
   }

   if (strTest.length < MinLength) 
   {
      strAlert = "El campo " + strFieldName + " no puede tener menos de " + MinLength + " caracteres.";
      bResult = false;
   }

   if (!bResult)
   {
      alert(strAlert);
      objField.focus();
      objField.select();
   }

   return bResult;
}


//mira si es numérico en el rango y con los decimales especificados
//-----------------------------------------------------------------
function IsNumber( objField, iMin, iMax, iNumDec, strFieldName )
{
   var strIni;           // cadena inicial
   var strTest;          // cadena convertida sin puntos y cambiando la coma
   var strAlert;         // cadena para el mensaje inicial 
   var bResult = true;   // control del resultado
   var i = 0;            // variable de ciclo

   if (objField != "")
      strIni = new String(objField.value);
   else
      strIni = new String(strFieldName);

   strTest = new String();

   // elimina los puntos y cambia la coma por punto
   for (i = 0; i < strIni.length; i++) {
      c = strIni.charAt(i);
      if (c != '.') {
         if (c == ',') 
            strTest = strTest + '.';
         else
            strTest = strTest + c;
    }
  }             

   // verifica que no tenga caracteres diferentes a número
   for (i = 0; i < strTest.length; i++) {
      c = strTest.charAt(i);
      if (bResult && c != '.' && c != '-'  && (c < '0' || c > '9' )) {      
         strAlert = "El campo " + strFieldName + " es numérico. No escriba caracteres diferentes a números.";
         bResult = false;
         break;
      }
   }
   
   // verifica el número de decimales 
   iDot = strTest.indexOf(".");
   if (iDot > 0) {
      if (iNumDec > 0) {
         if (bResult && (iDot < (strTest.length - iNumDec - 1) || iDot == strTest.length -1 )) {
            strAlert = "El campo " + strFieldName + " sólo puede tener " + iNumDec + " dígitos decimales.";
            bResult = false;
         }
         else
            iTest = parseFloat(strTest);
      }
      else {
         strAlert = "El campo " + strFieldName + " no acepta decimales.";
         bResult = false;
      }
   }
   else
      iTest=parseInt(strTest);

   // verifica que el número esté dentro del rango
   if (bResult && ((iTest < iMin) || (iTest > iMax))) {
      strAlert = "El numero escrito en el campo " + strFieldName + " debe estar entre " + iMin + " y " + iMax;
      bResult = false;
   }

   // si el objeto está vacío no muestra el mensaje
   if (!bResult && objField != "") {
      alert(strAlert);
      objField.focus();
      objField.select();
   }

   return bResult;
}

