// ----------------------------------------------------------------------
//           FormCheq.js (c) ChaTo [www.chato.cl] 1998
//           basado en FormChek.js (c) Eric Krock 1997 Netscape Corp.
// ----------------------------------------------------------------------
// Rutinas para verificacion de formularios, basado en FormChek.js
// Parte del curso "TEJEDORES DEL WEB" http://www.TejedoresDelWeb.com/
// ----------------------------------------------------------------------

var defaultEmptyOK = false
var checkNiceness = true;
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü_"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ_"
var others = "?¿#-.,;_ :´'*  $/\*+(!¡)";
var whitespace = " \t\n\r";
var phoneChars = "()-+ _";
var mMessage = "No se permite dejar el campo vacío"
var pPrompt = "Error: ";
var pAlphanumeric = "Ingrese un texto que contenga solo letras y/o numeros";
var pAlphabetic   = "Solo se permiten letras";
var pInteger = "Ingrese un numero entero";
var pNumber = "Solo se permiten números";
var pPhoneNumber = "Ingrese un número de teléfono válido";
var pEmail = "Ingrese una dirección de correo electrónico válida";
var pName = "Ingrese un texto que contenga solo letras, numeros o espacios";
var pNice = "No puede utilizar comillas aqui";
var pDate = "No es una fecha válida";


function validacion(f)
{

	  
	if (!checkField(f.nombre, isAlphanumeric, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.apellido, isAlphanumeric, false)) 
	{
		return (false);
	}

	if (!checkField(f.doc, isNumber, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.fecha_nac, isAlphanumeric, false)) 
	{
		return (false);
	}
			
	if (!checkField(f.telefono, isNumber, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.celular, isNumber, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.dir, isAlphanumeric, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.email, isEmail, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.eps, isAlphanumeric, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.pass1, isAlphanumeric, false)) 
	{
		return (false);
	}
	
	if (!checkField(f.pass2, isAlphanumeric, false)) 
	{
		return (false);
	}
}

function validacion_nuevo(f)
{
		if (!checkField(f.equipo, isAlphanumeric, false)) 
		{
			return (false);
		}
		
		if (!checkField(f.capitan, isAlphanumeric, false)) 
		{
			return (false);
		}
		
		if (!checkField(f.capitan2, isAlphanumeric, false)) 
		{
			return (false);			
		}
		
		if (!checkField(f.doc, isNumber, false)) 
		{
			return (false);			
		}
		
		if (!checkField(f.ciudad, isAlphanumeric, false)) 
		{
			return (false);			
		}
		
		if (!checkField(f.email, isEmail, false)) 
		{				
			return (false);		
		}
	
}



function validacion_nuevo2(f)
{
		if (!checkField(f.equipo2, isAlphanumeric, false)) 
		{
			return (false);
		}
		
		if (!checkField(f.cod2, isNumber, false)) 
		{
			return (false);			
		}
	
}








function makeArray(n) {
   for (var i = 1; i <= n; i++) {
      this[i] = 0
   }
   return this
}

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)
{   var i;
    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;
}


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;
}


function stripCharsNotInBag (s, bag)
{   var i;
    var returnString = "";
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }

    return returnString;
}


function stripWhitespace (s)
{   return stripCharsInBag (s, whitespace)
}

function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}

function stripInitialWhitespace (s)
{   var i = 0;
    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;
    return s.substring (i, s.length);
}

function isLetter (c)
{
    return( ( uppercaseLetters.indexOf( c ) != -1 ) ||
            ( lowercaseLetters.indexOf( c ) != -1 ) )
}

function isDigit (c){
  return ((c >= "0") && (c <= "9"))
}

function isOthers (c)
{
  return( ( others.indexOf( c ) != -1 ))
}


function isLetterOrDigit (c){
  return (isLetter(c) || isDigit(c))
}

function isInteger (s){
  var i;
    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if( i != 0 ) {
            if (!isDigit(c)) return false;
        } else {
            if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}


function isNumber (s)
{   var i;
    var dotAppeared;
    dotAppeared = false;
    if (isEmpty(s))
       if (isNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isNumber.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if( i != 0 ) {
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else
                if (!isDigit(c)) return false;
        } else {
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else
                if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}

function isAlphabetic (s)
{   var i;

    if (isEmpty(s))
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);
    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;
}

function isAlphanumeric (s)
{   var i;

    if (isEmpty(s))
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) || isOthers(c) ) )
        return false;
    }

    return true;
}

function isName (s)
{
    if (isEmpty(s))
       if (isName.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) );
}

function isPhoneNumber (s)
{   var modString;
    if (isEmpty(s))
       if (isPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isPhoneNumber.arguments[1] == true);
    modString = stripCharsInBag( s, phoneChars );
    return (isInteger(modString))
}



function isEmail (s)
{
    if (isEmpty(s))
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
    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;
}

function isNice(s)
{
        var i = 1;
        var sLength = s.length;
        var b = 1;
        while(i<sLength) {
                if( (s.charAt(i) == "\"") || (s.charAt(i) == "'" ) ) b = 0;
                i++;
        }
        return b;
}

function statBar (s)
{   window.status = s
}

function warnEmpty (theField)
{   theField.focus()
    alert(mMessage)
    statBar(mMessage)
    return false
}

function warnInvalid (theField, s)
{   theField.focus()
    theField.select()
    alert(s)
    statBar(pPrompt + s)
    return false
}

function isDate(s) {
    var Tentativa = new Date(s);
    if (s.length < 10) {
       return false;
    }
    return !isNaN(Tentativa)
}


function checkField (theField, theFunction, emptyOK, s)
{
    var msg;
    if (checkField.arguments.length < 3) emptyOK = defaultEmptyOK;
    if (checkField.arguments.length == 4) {
        msg = s;
    } else {
        if( theFunction == isAlphabetic ) msg = pAlphabetic;
        if( theFunction == isAlphanumeric ) msg = pAlphanumeric;
        if( theFunction == isInteger ) msg = pInteger;
        if( theFunction == isNumber ) msg = pNumber;
        if( theFunction == isEmail ) msg = pEmail;
        if( theFunction == isPhoneNumber ) msg = pPhoneNumber;
        if( theFunction == isName ) msg = pName;
        if( theFunction == isDate ) msg = pDate; // por wwff
		
    }

    if ((emptyOK == true) && (isEmpty(theField.value))) return true;

    if ((emptyOK == false) && (isEmpty(theField.value)))
        return warnEmpty(theField);

    if ( checkNiceness && !isNice(theField.value))
        return warnInvalid(theField, pNice);

    if (theFunction(theField.value) == true)
        return true;
    else
        return warnInvalid(theField,msg);

}


function calcular_edad(fecha){
   var hoy = new Date(); //fecha de hoy

   /* la fecha que recibo la descompongo en un array */
   var array_fecha = fecha.split("/");
   var array_fecha = fecha.split("-");

   /* divido la fecha en ano, mes, dia */
   var ano;
   ano = parseInt(array_fecha[2]);

   var mes;
   mes = parseInt(array_fecha[1]);

   var dia
   dia = parseInt(array_fecha[0]);

   /* resto los años de las dos fechas,
      -1 porque no se si ha cumplido años ya este año
   */
   var edad = hoy.getYear() - ano - 1;

   /* si resto los meses y me da menor que 0 entonces no ha cumplido años.
      Si da mayor si ha cumplido. + 1 porque los meses empiezan en 0
   */
   if (hoy.getMonth() + 1 - mes < 0) return edad;
   if (hoy.getMonth() + 1 - mes > 0) return edad+1;

   /* entonces es que eran iguales. miro los dias
      si resto los dias y me da menor que 0 entonces no ha cumplido años.
      Si da mayor o igual si ha cumplido
   */
   if (hoy.getUTCDate() - dia >= 0) return edad + 1;

   return edad;
}

function IsNumeric(valor)
{
var log=valor.length; var sw="S";
for (x=0; x<log; x++)
{ v1=valor.substr(x,1);
v2 = parseInt(v1);
//Compruebo si es un valor numérico
if (isNaN(v2)) { sw= "N";}
}
if (sw=="S") {return true;} else {return false; }
}

var primerslap=false;
var segundoslap=false;
function formateafecha(fecha)
{
var long = fecha.length;
var dia;
var mes;
var ano;

if ((long>=2) && (primerslap==false)) { dia=fecha.substr(0,2);
if ((IsNumeric(dia)==true) && (dia<=31) && (dia!="00")) { fecha=fecha.substr(0,2)+"/"+fecha.substr(3,7); primerslap=true; }
else { fecha=""; primerslap=false;}
}
else
{ dia=fecha.substr(0,1);
if (IsNumeric(dia)==false)
{fecha="";}
if ((long<=2) && (primerslap=true)) {fecha=fecha.substr(0,1); primerslap=false; }
}
if ((long>=5) && (segundoslap==false))
{ mes=fecha.substr(3,2);
if ((IsNumeric(mes)==true) &&(mes<=12) && (mes!="00")) { fecha=fecha.substr(0,5)+"/"+fecha.substr(6,4); segundoslap=true; }
else { fecha=fecha.substr(0,3);; segundoslap=false;}
}
else { if ((long<=5) && (segundoslap=true)) { fecha=fecha.substr(0,4); segundoslap=false; } }
if (long>=7)
{ ano=fecha.substr(6,4);
if (IsNumeric(ano)==false) { fecha=fecha.substr(0,6); }
else { if (long==10){ if ((ano==0) || (ano<1900) || (ano>2100)) { fecha=fecha.substr(0,6); } } }
}

if (long>=10)
{
fecha=fecha.substr(0,10);
dia=fecha.substr(0,2);
mes=fecha.substr(3,2);
ano=fecha.substr(6,4);
// Año no viciesto y es febrero y el dia es mayor a 28
if ( (ano%4 != 0) && (mes ==02) && (dia > 28) ) { fecha=fecha.substr(0,2)+"/"; }
}
return (fecha);
}
