// JavaScript Document

<!--
<!--
var oldLink = null;
// code to change the active stylesheet



var defaultEmptyOK = false;
var checkNiceness = true;
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü@-*";
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ@-*";
var whitespace = " \t\n\r";
var validsignals = ".,_-*";
var othervalidsignals = "\%\$\(\)\+*@";
var phoneChars = "()-+ ";

var mMessage = "Error: required information";
var pPrompt = "Error: ";
var pAlphanumeric = "Type only letters and/or numbers";
var pAlphabetic   = "Type only letters";
var pInteger = "Type a Integer number";
var pNumber = "Type a number";
var pPhoneNumber = "Type a phone number";
var pEmail = "Type a valid email address";
var pName = "Type only letters, numbers or blanks";
var pNice = "Can't use quotation marks here";
var pLetter = "Can't use numbers here";


//var mMessage = "Error: información necesaria";
//var pPrompt = "Error: ";
//var pAlphanumeric = "Ingrese solo letras y/o numeros";
//var pAlphabetic   = "Ingrese solo letras";
//var pInteger = "Ingrese un numero entero";
//var pNumber = "Ingrese un numero";
//var pPhoneNumber = "Ingrese un número de teléfono";
//var pEmail = "Ingrese una dirección de correo electrónico válida";
//var pName = "Ingrese solo letras, numeros o espacios";
//var pNice = "No puede utilizar comillas aqui";
//var pLetter = "No puede utilizar números aquí";

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);
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}

function stripCharsInBag (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 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 ) || 
					(       whitespace.indexOf( c ) != -1 ) ||
					(othervalidsignals.indexOf( c ) != -1 ) ||
					(     validsignals.indexOf( c ) != -1 )
				)
}


function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

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++)
    {   
        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) ) )
        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 trim(str)
{
str = str.toString();
while (1)
{
if (str.substring(0, 1) != " ")
{
break;
}
str = str.substring(1, str.length);
}
while (1)
{
if (str.substring(str.length - 1,str.length) != " ")
{
break;
}
str = str.substring(0, str.length - 1);
}
return str;
}


function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}
function valSep(oTxt){
var bOk = false;
var Fecha = trim(oTxt.value);
if ( Fecha.length == 10 )
	{
		bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
		bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
	}
else
	{
		bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(6) == "-"));
		bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(6) == "/"));
	}
return bOk;
}
function finMes(oTxt){
var nRes = 0;	
var Fecha = trim(oTxt.value);
if ( Fecha.length == 10 )
	{
		var nMes = parseInt(oTxt.value.substr(3, 2), 10);		
		switch (nMes){
		case 1: nRes = 31; break;
		case 2: nRes = 29; break;
		case 3: nRes = 31; break;
		case 4: nRes = 30; break;
		case 5: nRes = 31; break;
		case 6: nRes = 30; break;
		case 7: nRes = 31; break;
		case 8: nRes = 31; break;
		case 9: nRes = 30; break;
		case 10: nRes = 31; break;
		case 11: nRes = 30; break;
		case 12: nRes = 31; break;}
	}		
else
	{
		mesLetra = oTxt.value.substr(3, 3);
		switch (mesLetra)
		{
			case "Ene": nRes = 31; break;
			case "Feb": nRes = 29; break;
			case "Mar": nRes = 31; break;
			case "Abr": nRes = 30; break;
			case "May": nRes = 31; break;
			case "Jun": nRes = 30; break;
			case "Jul": nRes = 31; break;
			case "Ago": nRes = 31; break;
			case "Sep": nRes = 30; break;
			case "Oct": nRes = 31; break;
			case "Nov": nRes = 30; break;
			case "Dic": nRes = 31; break;
		}
	}
return nRes;
}
function valDia(oTxt){
var bOk = false;
var nDia  
var Fecha = trim(oTxt.value);
if ( Fecha.length == 10 )
	nDia = parseInt(oTxt.value.substr(0, 2), 10);
else
	{
		nDia = parseInt(oTxt.value.substr(0, 2), 10);
	}
	bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
	x = finMes(oTxt);
return bOk;
}
	
function valMes(oTxt){
var bOk = false;
var Fecha = trim(oTxt.value);
if ( Fecha.length == 10 )
	{
		var nMes = parseInt(oTxt.value.substr(3, 2), 10);
		bOk = bOk || ((nMes >= 1) && (nMes <= 12));
	}
else	
	{
		mesLetra = oTxt.value.substr(3, 3);
		var nRes = 0;
		switch (mesLetra)
		{
			case "Ene": nRes = 1; break;
			case "Feb": nRes = 2; break;
			case "Mar": nRes = 3; break;
			case "Abr": nRes = 4; break;
			case "May": nRes = 5; break;
			case "Jun": nRes = 6; break;
			case "Jul": nRes = 7; break;
			case "Ago": nRes = 8; break;
			case "Sep": nRes = 9; break;
			case "Oct": nRes = 10; break;
			case "Nov": nRes = 11; break;
			case "Dic": nRes = 12; break;
		}
	bOk = bOk || ((nRes >= 1) && (nRes <= 12));
	}
return bOk;
}


function valAno(oTxt)
{
	var bOk = true;
	var Fecha = trim(oTxt.value);
	if ( Fecha.length == 10 )
		{
			var nAno = oTxt.value.substr(6);
			bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
			if (bOk)
			{
				for (var i = 0; i < nAno.length; i++)
				{
					bOk = bOk && esDigito(nAno.charAt(i));
				}
			}
		}
	else
		{
			var nAno = oTxt.value.substr(7);
			bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
			if (bOk)
			{
				for (var i = 0; i < nAno.length; i++)
				{
					bOk = bOk && esDigito(nAno.charAt(i));
				}
			}
		}
	return bOk;
}
function valFecha(oTxt){
var bOk = true;
if (oTxt.value != "")
	{ bOk = bOk && (valAno(oTxt));
	  bOk = bOk && (valMes(oTxt));
		bOk = bOk && (valDia(oTxt));
		bOk = bOk && (valSep(oTxt));
		if (!bOk)
		{ alert("Fecha inválida");
		  oTxt.value = "";
			oTxt.focus();
		}
		else return bOk;
	}
	else
		{ alert("The Field: " + oTxt.name + " is required...");
		  oTxt.value = "";
			oTxt.focus();
		}		
}


function statBar (s)
{   window.status = s
}

function warnEmpty (theField)
{   theField.focus()
    alert("The Field: " + theField.name + " is required ...")
    statBar(mMessage)
    return false
}

function warnInvalid (theField, s)
{   theField.focus()
    theField.select()
    alert(s + " in the field: " + theField.name)
    statBar(pPrompt + s)
    return false
}

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 == isLetter ) msg = pLetter;
				
    }
    
    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 trim(cadena1, cadena2)
{
	for(i=0; i<cadena1.length; )
	{
		if(cadena1.charAt(i)==" ")
			cadena1=cadena1.substring(i+1, cadena1.length);
		else
			break;
	}

	for(i=cadena1.cadena1-1; i>=0; i=cadena1.length-1)
	{
		if(cadena1.charAt(i)==" ")
			cadena1=cadena1.substring(0,i);
		else
			break;
	}
	cadena2 = cadena1;
	return cadena2;
}

