//   Creado por CARLOS BERNAL
//   COLMENA riesgos profesionales
//   21/04/2004

function isEmail(cadena) 
{
   if(cadena.length == 0)
      return false;

   var partes = cadena.split("@");
   if(partes.length != 2)
      return false;
      
   var subCadena;
   subCadena = partes[0].split(".");
 for(var i = 0; i < subCadena.length; i++)
    if(subCadena[i].length == 0 || !isURLString(subCadena[i]))
     return false;
   subCadena = partes[1].split(".");
 if(subCadena.length < 2 || subCadena.length > 4)
    return false;
 for(var i = 0; i < subCadena.length; i++)
      if(subCadena[i].length == 0 || !isURLString(subCadena[i]))
       return false;
 return true;
}

function isLimitedCharsString(cadena)
{
   for(var i = 0; i < cadena.length; i++)
    if(cadena.charAt(i) == ',' || cadena.charAt(i) == ';' ||
     cadena.charAt(i) == '\'' || cadena.charAt(i) == '\"' ||
         cadena.charAt(i) == '-' || cadena.charAt(i) == '/' ||
         cadena.charAt(i) == '\\' || cadena.charAt(i) == '*' ||
         cadena.charAt(i) == ' ' || cadena.charAt(i) == '!' ||
         cadena.charAt(i) == '<' || cadena.charAt(i) == '>')
     return false;
 return true;
}

function isURLString(cadena)
{
   for(var i = 0; i < cadena.length; i++)
      if(!((cadena.charAt(i) >= 'A' && cadena.charAt(i) <= 'Z') ||
         (cadena.charAt(i) >= 'a' && cadena.charAt(i) <= 'z') ||
       (cadena.charAt(i) >= '0' && cadena.charAt(i) <= '9') ||
       (cadena.charAt(i) == '.' || cadena.charAt(i) == '/') ||
           (cadena.charAt(i) == '-' || cadena.charAt(i) == '_')))
       return false;
 return true;
} 

function isAlphanumeric(cadena)
{
   for(var i = 0; i < cadena.length; i++)
      if(!((cadena.charAt(i) >= 'A' && cadena.charAt(i) <= 'Z') ||
     (cadena.charAt(i) >= 'a' && cadena.charAt(i) <= 'z') ||
         (cadena.charAt(i) >= '0' && cadena.charAt(i) <= '9')))
       return false;
 return true;
}

function isAlphanumericExtended(cadena)
{
   for(var i = 0; i < cadena.length; i++)
      if(!((cadena.charAt(i) >= 'A' && cadena.charAt(i) <= 'Z') ||
     (cadena.charAt(i) >= 'a' && cadena.charAt(i) <= 'z') ||
       (cadena.charAt(i) >= '0' && cadena.charAt(i) <= '9') ||
     (cadena.charAt(i) == 'á' || cadena.charAt(i) == 'Á') ||
     (cadena.charAt(i) == 'é' || cadena.charAt(i) == 'É') ||
     (cadena.charAt(i) == 'í' || cadena.charAt(i) == 'Í') ||
     (cadena.charAt(i) == 'ó' || cadena.charAt(i) == 'Ó') ||
           (cadena.charAt(i) == 'ú' || cadena.charAt(i) == 'Ú') ||
           (cadena.charAt(i) == 'à' || cadena.charAt(i) == 'À') ||
           (cadena.charAt(i) == 'è' || cadena.charAt(i) == 'È') ||
           (cadena.charAt(i) == 'ì' || cadena.charAt(i) == 'Ì') ||
           (cadena.charAt(i) == 'ò' || cadena.charAt(i) == 'Ò') ||
           (cadena.charAt(i) == 'ù' || cadena.charAt(i) == 'Ù') ||
           (cadena.charAt(i) == 'â' || cadena.charAt(i) == 'Â') ||
           (cadena.charAt(i) == 'ê' || cadena.charAt(i) == 'Â') ||
           (cadena.charAt(i) == 'î' || cadena.charAt(i) == 'Î') ||
           (cadena.charAt(i) == 'ô' || cadena.charAt(i) == 'Ô') ||
           (cadena.charAt(i) == 'û' || cadena.charAt(i) == 'Û') ||
           (cadena.charAt(i) == 'ä' || cadena.charAt(i) == 'Ä') ||  
           (cadena.charAt(i) == 'ë' || cadena.charAt(i) == 'Ë') ||
           (cadena.charAt(i) == 'ï' || cadena.charAt(i) == 'Ï') ||
           (cadena.charAt(i) == 'ö' || cadena.charAt(i) == 'Ö') ||
           (cadena.charAt(i) == 'ü' || cadena.charAt(i) == 'Ü') ||
           (cadena.charAt(i) == 'ç' || cadena.charAt(i) == 'Ç') ||
           (cadena.charAt(i) == 'ñ' || cadena.charAt(i) == 'Ñ') ||
           (cadena.charAt(i) == '(' || cadena.charAt(i) == ')') ||
           (cadena.charAt(i) == '-' || cadena.charAt(i) == '_') ||
           (cadena.charAt(i) == ' ' || cadena.charAt(i) == ' ')))
         return false;
   return true;
}

function isAlphabetic(cadena)
{
   for(var i = 0; i < cadena.length; i++)
      if(!((cadena.charAt(i) >= 'A' && cadena.charAt(i) <= 'Z') ||
           (cadena.charAt(i) >= 'a' && cadena.charAt(i) <= 'z')))
         return false;
   return true;
}

function isAlphabeticExtended(cadena)
{
   for(var i = 0; i < cadena.length; i++)
      if(!((cadena.charAt(i) >= 'A' && cadena.charAt(i) <= 'Z') ||
           (cadena.charAt(i) >= 'a' && cadena.charAt(i) <= 'z') ||
           (cadena.charAt(i) == 'á' || cadena.charAt(i) == 'Á') ||
           (cadena.charAt(i) == 'é' || cadena.charAt(i) == 'É') ||
           (cadena.charAt(i) == 'í' || cadena.charAt(i) == 'Í') ||
           (cadena.charAt(i) == 'ó' || cadena.charAt(i) == 'Ó') ||
           (cadena.charAt(i) == 'ú' || cadena.charAt(i) == 'Ú') ||
           (cadena.charAt(i) == 'à' || cadena.charAt(i) == 'À') ||
           (cadena.charAt(i) == 'è' || cadena.charAt(i) == 'È') ||
           (cadena.charAt(i) == 'ì' || cadena.charAt(i) == 'Ì') ||
           (cadena.charAt(i) == 'ò' || cadena.charAt(i) == 'Ò') ||
           (cadena.charAt(i) == 'ù' || cadena.charAt(i) == 'Ù') ||
           (cadena.charAt(i) == 'â' || cadena.charAt(i) == 'Â') ||
           (cadena.charAt(i) == 'ê' || cadena.charAt(i) == 'Â') ||
           (cadena.charAt(i) == 'î' || cadena.charAt(i) == 'Î') ||
           (cadena.charAt(i) == 'ô' || cadena.charAt(i) == 'Ô') ||
           (cadena.charAt(i) == 'û' || cadena.charAt(i) == 'Û') ||
           (cadena.charAt(i) == 'ä' || cadena.charAt(i) == 'Ä') ||  
           (cadena.charAt(i) == 'ë' || cadena.charAt(i) == 'Ë') ||
           (cadena.charAt(i) == 'ï' || cadena.charAt(i) == 'Ï') ||
           (cadena.charAt(i) == 'ö' || cadena.charAt(i) == 'Ö') ||
           (cadena.charAt(i) == 'ü' || cadena.charAt(i) == 'Ü') ||
           (cadena.charAt(i) == 'ç' || cadena.charAt(i) == 'Ç') ||
           (cadena.charAt(i) == 'ñ' || cadena.charAt(i) == 'Ñ') ||
           (cadena.charAt(i) == '(' || cadena.charAt(i) == ')') ||
           (cadena.charAt(i) == '-' || cadena.charAt(i) == '_') ||
           (cadena.charAt(i) == ' ' || cadena.charAt(i) == ' ')))
         return false;
   return true;
}

function isInteger(cadena)
{
   if(cadena.length == 0)
    return false;
 if(isNaN(cadena) || cadena.indexOf(".") != -1)
    return false;
   return true;
}

function isNumeric(cadena)
{
   if(cadena.length == 0)
    return false;
 if(isNaN(cadena))
    return false;
 return true;
}

function isNatural(cadena) //entero positivo
{
   if(!isInteger(cadena))
    return false;
 if(cadena.charAt(0) == '-')
    return false;
 return true;
}

function isDate(cadena) //en el formato mm/dd/yyyy
{
   if(cadena.length == 0)
  return false;
  
   var subCadena;
   subCadena = cadena.split("/");
 if(subCadena.length != 3)
    return false;
      
 var mes = parseInt(subCadena[0]);
 var dia = parseInt(subCadena[1]);
 var anho = parseInt(subCadena[2]);
 
   if(anho < 1)
    return false;

   if(mes < 1 || mes > 12)
    return false;      
      
 var dias = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   if(dia < 1 || dia > dias[mes - 1])
    return false;
      
 if(mes == 2 && dia == 29)
 {
    if(anho % 4 != 0)
     return false;
    if(anho % 100 == 0 && anho % 400 != 0)
     return false;
 }

 return true;
}

function isLatinDate(cadena) //en el formato dd/mm/yyyy
{
   if(cadena.length == 0)
  return false;
  
   var subCadena;
   subCadena = cadena.split("/");
 if(subCadena.length != 3)
    return false;
      
 var dia = parseInt(subCadena[0]);
 var mes = parseInt(subCadena[1]);
 var anho = parseInt(subCadena[2]);
 
   if(anho < 1)
    return false;

   if(mes < 1 || mes > 12)
    return false;      
      
 var dias = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   if(dia < 1 || dia > dias[mes - 1])
    return false;
      
 if(mes == 2 && dia == 29)
 {
    if(anho % 4 != 0)
     return false;
    if(anho % 100 == 0 && anho % 400 != 0)
     return false;
 }

 return true;
}

function isBackwardDate(cadena) //yyyy-mm-dd
{
   if(cadena.length == 0)
  return false;
  
   var subCadena;
   subCadena = cadena.split("-");
 if(subCadena.length != 3)
    return false;
      
 var anho = parseInt(subCadena[0]);
 var mes = parseInt(subCadena[1]);
 var dia = parseInt(subCadena[2]);
 
   if(anho < 1)
    return false;

   if(mes < 1 || mes > 12)
    return false;      
      
 var dias = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   if(dia < 1 || dia > dias[mes - 1])
    return false;
      
 if(mes == 2 && dia == 29)
 {
    if(anho % 4 != 0)
     return false;
    if(anho % 100 == 0 && anho % 400 != 0)
     return false;
 }

 return true;
}

//redirecciona el navegador a a página indicada
//(generalmente el inicio del proceso) si la etapa
//marcada en el cookie no corresponde con el esperada
function verificarEtapa(etapa, pagina)
{
   if(getCookie("prgs") != etapa)
    location.href = pagina;
}

//buscar el valor del cookie indicado
function getCookie(name) 
{
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}  

//Remover los espacios en blanco al inicio y al final de una cadena
String.prototype.trim = function()
{
   var x = this;
   x = x.replace(/^\s*(.*)/, "$1");
   x = x.replace(/(.*?)\s*$/, "$1");
   return x;
}
