//************************************************************
// Funcion que permite saber si una variable existe dentro de la forma
//************************************************************

function js_ExisteElemento(forma,elemento)
{ for (var i = 0; i < forma.length; i++) {
       if (forma.elements[i].name == elemento) {
          return 1; }
 } return 0;
}
//

//************************************************************
// Verifica si es una cadena está vacía.
//************************************************************

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

//************************************************************
// Verifica si es una cadena contiene sólo espacios en blanco,
// tabuladores, o retornos de linea)
//************************************************************
function isWhitespace (s)
   
{   var i;
     var whitespace = " \t\n\r";
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        // si el caracter en que estoy no aparece en whitespace,
        // entonces retornar falso
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
} 

//************************************************************
// Quita todos los caracteres que que estan en "bag" de la cadena
//  "s".
//************************************************************
function stripCharsInBag (s, bag)
{   var i;
    var returnString = "";

    // Buscar por el string, si el caracter no esta en "bag", 
    // agregarlo a returnString
    
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}

//************************************************************
// Quita espacios en blanco
//************************************************************

function trim(cadena)
{ cadenaE="";
  for (i=0;i<cadena.length;i++)
  {     letra=cadena.substring(i,i+1);
    if (letra!=' ') { cadenaE=cadenaE + letra; }
  } 
  return(cadenaE);
}

//************************************************************
// Verifica si es un caracter es una letra.
//************************************************************
function isLetter (c)
{

var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü.,"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
    return( ( uppercaseLetters.indexOf( c ) != -1 ) ||
            ( lowercaseLetters.indexOf( c ) != -1 ) )
}

//************************************************************
// Verifica si un caracter es un número 
//************************************************************
function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

//************************************************************
// Verifica si una cadena contiene sólo letras o números
//************************************************************
function isAlphanumeric (s)
{   var i;

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    return true;
}

//************************************************************
// Verifica si una cadena contiene  solo números
//************************************************************
function EsNumero(s)
{   var i;

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (! (isDigit(c) ) )
        return false;
    }

    return true;
}

//************************************************************
// Verifica si una cadena es un número real
//************************************************************

function EsReal(numero)
 {
   Decimal=false
   numerostr="" + numero
   for (var i=0; i < numerostr.length; i++) {
   var caracter=numerostr.charAt(i)
   if (caracter== "." && !Decimal) {
      Decimal=true
      continue
   }

   if (caracter==",")
   {
	continue
   }

   if (caracter < "0" || caracter > "9") {
       return false
   }
 }
 
 if (numero>9999999999999.99)
 {
 	return false
 }
 return true

}

//************************************************************
// Verifica si una cadena contiene sólo letras.
//************************************************************

function isAlphabetic (s)
{   var i;
   
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is letter.
        var c = s.charAt(i);
        
        if (!isLetter(c))
             return false;
    }
    return true;
}

//************************************************************
// Verifica si es una cadena es un nombre válido: tiene sólo letras, 
// números o espacios en blanco.
//************************************************************
function EsNombre (s)
{
    
     var whitespace = " \t\n\r";
     variable=stripCharsInBag( s, whitespace )
    
     return( isAlphabetic(variable) );
}


//************************************************************
// Verifica si es una cadena es una dirección de correo válida
//************************************************************
function EsEmail (s)
{   
    if (isWhitespace(s)) return false;
    
    var i = 1;
    var sLength = s.length;
    
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }
    
   if ((i >= sLength) || (s.charAt(i) != "@"))  return false;
    else i += 2;

    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

//************************************************************
// Verifica si una cadena es una dirección (ubicación) válida
//************************************************************
function EsDireccion (s)
{   var i;

     var whitespace = " \t\n\r";
     s=stripCharsInBag( s, whitespace )

    for (i = 0; i < s.length; i++)
    {  
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) || (c==".") ) )
        return false;
    }

    return true;
}


 function fnumero(numero)
     { for (var i = 0; i < numero.length; i++)
         { var carac = numero.substring(i,i+1)
         if (carac < "0" || carac > "9")
          { 
             return false;
          }
         }
     return true;
     }
//************************************************************
// Verifica si una cadena es un número de teléfono válido
//************************************************************
function EsTelefono (s)
{ 
     var modString;
    var phoneChars = "()-+ ";
    
    modString = stripCharsInBag( s, phoneChars );
    
      if (modString.length < 6 ) 
    { return false;    }
    variable =  fnumero(modString)
    
    return variable;
}

//************************************************************
// Verifica si una cadena es una fecha válida. 
//************************************************************
function valida_fecha(dia,mes,ano)
{

	dia=trim(dia)
	mes=trim(mes)
	ano=trim(ano)
	
	if (! EsNumero(dia)) 	return false;
	if (! EsNumero(mes)) 	return false;
	if (! EsNumero(ano)) 	return false;
	
	 
	if(dia.substring(0,1)=='0')
	{
		dia=dia.substring(1,2)
	}
	
	if(mes.substring(0,1)=='0')
	{
		mes=mes.substring(1,2)
	}
	
	 
	if (mes < 1 || mes > 12)
	   return false;
	if (dia < 1 || dia > 31)
	   return false;
	if (ano < 1754 || ano > 9999)
	   return false;


	if(mes==2 && dia>29)   	//valida Febrero
	   return false;
	
	if ((ano%4)!=0 && dia ==29 && (mes==2)) // año bisiesto
	{
		return false;		
	}	

	if ((mes==4||mes==6||mes==9||mes==11)& dia>30) //Meses de 30 dias.
		return false;
	return true;
 }