// ---------------------------------------------------------------------- //
//           FormCheq.js (c) ChaTo 1998,1999 [www.chato.cl]
//                           Basado en:
//           FormChek.js (c) Eric Krock (c) 1997 Netscape              
// ---------------------------------------------------------------------- //

// ---------------------------------------------------------------------- //
//                      SINTAXIS DE LAS FUNCIONES                         //
// ---------------------------------------------------------------------- //
//
// FUNCION PARA CHEQUEAR UN CAMPO DE INGRESO:
//
// checkField (theField, theFunction, [, s] [,eok])
//        verifica que el campo de ingreso theField cumpla con la
//        condicion indicada en la funcion theFunction (que puede ser
//        una de las descritas en "FUNCIONES DE VALIDACION" o cualquier
//        otra provista por el usuario). En caso contrario despliega el
//        string "s" (opcional, hay mensajes por default para las
//        funciones de validacion provistas aqui).
//
// FUNCIONES DE VALIDACION:
//
// isInteger (s [,eok])                s representa un entero
// isNumber (s [,eok])                 s es entero o tiene punto decimal
// isAlphabetic (s [,eok])             s tiene solo letras
// isAlphanumeric (s [,eok])           s tiene solo letras y/o numeros
// isPhoneNumber (s [,eok])            s tiene solo numeros, (,),-
// isEmail (s [,eok])                  s es una direccion de e-mail
// isDate	SI ES UNA FECHA!!!!!!!!!!! 
// isBoolean  Solamente debe decir que sea distinto de "Elija"
//
// FUNCIONES INTERNAS:
//
// isWhitespace (s)                    s es vacio o solo son espacios
// isLetter (c)                        c es una letra
// isDigit (c)                         c es un digito
// isLetterOrDigit (c)                 c es letra o digito
//
// FUNCIONES PARA REFORMATEAR DATOS:
//
// stripCharsInBag (s, bag)            quita de s los caracteres en bag
// stripCharsNotInBag (s, bag)         quita de s los caracteres NO en bag
// stripWhitespace (s)                 quita el espacio dentro de s
// stripInitialWhitespace (s)          quita el espacio al principio de s
//
// FUNCIONES PARA PREGUNTARLE AL USUARIO:
//
// statBar (s)                         pone s en la barra de estado
// warnEmpty (theField, s)             indica que theField esta vacio
// warnInvalid (theField, s)           indica que theField es invalido
//


// ---------------------------------------------------------------------- //
//                                VARIABLES                               //
// ---------------------------------------------------------------------- //

// Esta variable indica si está bien dejar las casillas
// en blanco como regla general
var defaultEmptyOK = false

// Esta variable indica si se debe verificar la presencia de comillas
// u otros símbolos extraños en un campo, por omisión no, porque
// siempre crea problemas con las bases de datos o programas CGI
var checkNiceness = true;

// listas de caracteres "àáãâçéêêêíõôóúÀÁÃÂÇÉÊÊÍÓÕÔÓÚ"

//var acentuados = "àãâçêêêõôÀÃÂÇÊÊÕÔ";
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñüãàãâçêêêõô"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑÀÃÂÇÊÊÕÔ"
var whitespace = " \t\n\r¿?!¡.,;:@#$%&()=*/<>|ºª·{}¨-_";

// caracteres admitidos en nos de telefono
var phoneChars = ",./()-+ ";



// ---------------------------------------------------------------------- //
//                     TEXTOS PARA LOS MENSAJES                           //
// ---------------------------------------------------------------------- //

// m abrevia "missing" (faltante)
var mMessage = "Debe ingresar un texto."

// p abrevia "prompt"
var pPrompt = "";
var pAlphanumeric = "Debe ingresar un texto que contenga solo letras y/o numeros.";
var pAlphabetic   = "Debe ingresar un texto que contenga solo letras.";
var pInteger = "Debe ingresar un número entero.";
var pNumber = "Debe ingresar un número.";
var pPhoneNumber = "Debe ingresar números o guiones.";
var pEmail = "Debe ingresar una dirección de correo electrónico válida.";
var pName = "Debe ingresar un texto que contenga solo letras, números, espacios o estos dígitos ¿?!¡.,;:@#$%&()=*/<>|ºª·{}¨-_";
var pNice = "No debe utilizar comillas aqui.";
var pBoolean = "Sebe seleccionar una opción";


// ---------------------------------------------------------------------- //
//                FUNCIONES PARA MANEJO DE ARREGLOS                       //
// ---------------------------------------------------------------------- //

// JavaScript 1.0 (Netscape 2.0) no tenia un constructor para arreglos,
// asi que ellos tenian que ser hechos a mano. Desde JavaScript 1.1 
// (Netscape 3.0) en adelante, las funciones de manejo de arreglos no
// son necesarias.

function makeArray(n) {
//*** BUG: If I put this line in, I get two error messages:
//(1) Window.length can't be set by assignment
//(2) daysInMonth has no property indexed by 4
//If I leave it out, the code works fine.
//   this.length = n;
   for (var i = 1; i <= n; i++) {
      this[i] = 0
   } 
   return this
}



// ---------------------------------------------------------------------- //
//                  CODIGO PARA FUNCIONES BASICAS                         //
// ---------------------------------------------------------------------- //


// s es vacio
function isEmpty(s)
{   return ((s == null) || (s.length == 0) || (s == 'dd/mm/aaaa'))
}

// s es vacio o solo caracteres de espacio
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;
}

// Quita todos los caracteres que que estan en "bag" del string "s" 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;
}

// Lo contrario, quitar todos los caracteres que no estan en "bag" de "s"
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;
}

// Quitar todos los espacios en blanco de un string
function stripWhitespace (s)
{   return stripCharsInBag (s, whitespace)
}

// La rutina siguiente es para cubrir un bug en Netscape
// 2.0.2 - seria mejor usar indexOf, pero si se hace
// asi stripInitialWhitespace() no funcionaria

function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}

// Quita todos los espacios que antecedan al string
function stripInitialWhitespace (s)
{   var i = 0;
    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;
    return s.substring (i, s.length);
}

// c es una letra del alfabeto espanol
function isLetter (c)
{
    return( ( uppercaseLetters.indexOf( c ) != -1 ) ||
            ( lowercaseLetters.indexOf( c ) != -1 ) )
}

// c es un digito
function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

// c es letra o digito
function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}



// ---------------------------------------------------------------------- //
//                          NUMEROS                                       //
// ---------------------------------------------------------------------- //

// s es un numero entero (con o sin signo)
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;
}

// s es un numero (entero o flotante, con o sin signo)
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;
}



// ---------------------------------------------------------------------- //
//                        STRINGS SIMPLES                                 //
// ---------------------------------------------------------------------- //

// s tiene solo letras
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;
}


// s tiene solo letras y numeros
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;
}

// s tiene solo letras, numeros o espacios en blanco
function isName (s)
{
    if (isEmpty(s)) 
       if (isName.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);
    
    return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) );
}



// ---------------------------------------------------------------------- //
//                           FONO o EMAIL                                 //
// ---------------------------------------------------------------------- //

// s es numero de telefono valido
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))
}

// s es una direccion de correo valida
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;
}






// ---------------------------------------------------------------------- //
//                  FUNCIONES PARA VALIDAR RUT                            //
// ---------------------------------------------------------------------- //


function isRutDigit (c)
{
	return ((c >= "0") && (c <= "9") || (c=="k") || (c=="K") )
}


function isRut (s)
{
    if (isEmpty(s)) 
       if (isRut.arguments.length == 1) return defaultEmptyOK;
       else return (isRut.arguments[1] == true);
    if (isWhitespace(s)) return false;
    var i = 1;
    var sLength = s.length;

    while ((i < sLength) && (s.charAt(i) != "-") && (isDigit(s.charAt(i))) )
    { i++
    }
    
    
    if ( (s.charAt(i) == "-") && ( (i+1)==(sLength-1) ) && (isRutDigit(s.charAt(i+1)) ) )return true;
    else return false;
}





// ---------------------------------------------------------------------- //
//                  VALIDAR COMBO                                         //
// ---------------------------------------------------------------------- //


function isCombo (s) {   

    if (s.selectedIndex == '') return false;
    return false;
    
}
// ---------------------------------------------------------------------- //
//                  VALIDAR COMBO   MARTIN                                //
// ---------------------------------------------------------------------- //


function isBoolean (s) { 

    if (s == 'Elija'){
		return false;
	}else{
    	return true;
	}
}

// ---------------------------------------------------------------------- //
//                  VALIDAR DATE                                        //
// ---------------------------------------------------------------------- //


function isDate (s) {   

   // if (isEmpty(s)) return false;
   // return true;
    if( isFecha(s) == false){
     	return false;
   } else{
	  return true; 
         }
    
}




// ---------------------------------------------------------------------- //
//                  FUNCIONES PARA RECLAMARLE AL USUARIO                  //
// ---------------------------------------------------------------------- //

// pone el string s en la barra de estado
function statBar (s)
{   window.status = s
}

// notificar que el campo theField esta vacio
function warnEmpty (theField)
{   theField.focus()
    alert(mMessage)
    statBar(mMessage)
    return false
}

// notificar que el campo theField es invalido
function warnInvalid (theField, s)
{
	theField.focus()
	if(s != "date"){
		//  theField.select()
		alert(s)
		statBar(pPrompt + s)
	}
	
	return false
}





////
//// EL CORAZON DE TODO: checkField
////

	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 = "date";
	      	if( theFunction == isBoolean ) msg = pBoolean;
	    }
	    
	    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);

	}




////FUNCION Q SE USA PARA LA MASCARA Y EL CONTROL DE LAS FECHAS
String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
 }

 String.prototype.padL = function (nLength, sChar) {
  var sreturn = this;
  while (sreturn.length < nLength) {
   sreturn = String(sChar) + sreturn;
  }
  return sreturn;
 }
             
 function date_onkeydown() {
  if (window.event.srcElement.readOnly) return;
  var key_code = window.event.keyCode;
  //alert(key_code);
  var oElement = window.event.srcElement;
  if (window.event.shiftKey && String.fromCharCode(key_code) == "T") {
        var d = new Date();
       oElement.value = String(d.getMonth() + 1).padL(2, "0") + "/" +
                         String(d.getDate()).padL(2, "0") + "/" +
                        d.getFullYear();
       window.event.returnValue = 0;
    }
    if (!window.event.shiftKey && !window.event.ctrlKey && !window.event.altKey) {
        if ((key_code > 47 && key_code < 58) ||
          (key_code > 95 && key_code < 106)) {
            if (key_code > 95) key_code -= (95-47);
           oElement.value =
               oElement.value.replace(/[dma]/, String.fromCharCode(key_code));
        }
        if (key_code == 8) {
            if (!oElement.value.match(/^[dma0-9]{2}\/[dma0-9]{2}\/[dma0-9]{4}$/))
               oElement.value = "dd/mm/aaaa";
           oElement.value = oElement.value.replace(/([dma\/]*)[0-9]([dma\/]*)$/,
                function ($0, $1, $2) {
                    var idx = oElement.value.search(/([dma\/]*)[0-9]([dma\/]*)$/);
                    if (idx >= 5) {
                        return $1 + "a" + $2;
                    } else if (idx >= 2) {
                        return $1 + "m" + $2;
                    } else {
                       return $1 + "d" + $2;
                    }
                } );
           window.event.returnValue = 0;
        }
    }
    if (key_code != 9) {
   		//isDate(this)
   		event.returnValue = false;
    }
 }

function isFecha(src) {
   /// 	dateStr = src.value;
   dateStr = src;
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // Verifica formato
    if (matchArray == null) {
        alert('El formato de la fecha es inválido, debe ser dd/mm/aaaa.');
       // src.focus();
       // src.select();
        return false;
    }
    day = matchArray[1];
    month = matchArray[3];
    year = matchArray[5];

	if(day<1 || day>31){
		alert('El día debe ser un valor entre 1 y 31');
		//src.focus();
		//src.select();
		return false;
	}
	if(month<1 || month>12){
		alert('El mes debe ser un valor entre 1 y 12');
		//src.focus();
		//src.select();
		return false;
	}
	if(year<1900 || year>2050){
		alert('El año se encuentra fuera de rango');
		//src.focus();
		//src.select();
		return false;				
	}

    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        alert('El mes '+month+' no tiene 31 días!')
      //  src.focus();
      //  src.select();
        return false;
    }
    if (month == 2) { // Verifica el año bisiesto
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            alert('Febrero de ' + year + ' no tiene ' + day + ' días!');
          //  src.focus();
          //  src.select();
            return false;
        }
    }

    return true; // La fecha es válida
}

//////////////////////////////////////////////
///  FUNCION DE VENTANA DE CONFIRMACION  ////
/////////////////////////////////////////////

function messageWindow(dir)
{
  if(dir!= ""){
  	window.location.href = dir;
	}
	else{
	alert ("Ocurrio un Error por favor Intente Nuevamente");
	history.go(-1);
		}
	
}

			
			
			
			


//////
////// MODO DE USO	1
//////	
//	<script language="JavaScript" type="text/javascript">
//
//	function VerifyOne () {
//	
//	    if( checkField( document.forms[0].frminstitucionId, isCombo, false, "una Institución." ) &&
//			checkField( document.forms[0].frmnombre, isAlphanumeric, false ) &&
//	        checkField( document.forms[0].frmcomentario, isAlphanumeric, false ) &&
//	        checkField( document.forms[0].frmdescripcion, isAlphanumeric, false ) &&
//	        checkField( document.forms[0].frmprioridad, isNumber, false ) ) 
//	        //alert( "Todo verificado con exito" );	        
//	        return false;
//	    
//	    else return false;
//	    
//	};
//
//</script>





//////
////// MODO DE USO	2 (para los combo)
//////	
//	<script language="JavaScript" type="text/javascript">
//
//	function VerifyOne () {
//
//		if (document.forms[0].frminstitucionId.selectedIndex == '') {
//			alert("Debe seleccionar una Institución.");
//			window.status = "Error: debe seleccionar una Institución.";
//			return false;
//		};
//	
//	    if( checkField( document.forms[0].frminstitucionId, isCombo, false, "una Institución." ) &&
//			checkField( document.forms[0].frmnombre, isAlphanumeric, false ) &&
//	        checkField( document.forms[0].frmcomentario, isAlphanumeric, false ) &&
//	        checkField( document.forms[0].frmdescripcion, isAlphanumeric, false ) &&
//	        checkField( document.forms[0].frmprioridad, isNumber, false ) ) 
//	        //alert( "Todo verificado con exito" );	        
//	        return true;
//	    
//	    else return false;
//	    
//	};
//
//</script>

function mostraTBody(id){
	if (document.getElementById(id).style.display=='') {
		document.getElementById(id).style.display='none';
	} else {
		document.getElementById(id).style.display='';
	}
}

function stAba(menu,conteudo)
	{
		this.menu = menu;
		this.conteudo = conteudo;
	}

	var arAbas = new Array();
	arAbas[0] = new stAba('link_1','dia_1');
	arAbas[1] = new stAba('link_2','dia_2');
	arAbas[2] = new stAba('link_3','dia_3');
	arAbas[3] = new stAba('link_4','dia_4');
	arAbas[4] = new stAba('link_5','dia_5');
	arAbas[5] = new stAba('link_6','dia_6');
	arAbas[6] = new stAba('link_7','dia_7');
	arAbas[7] = new stAba('link_8','dia_8');
	arAbas[8] = new stAba('link_9','dia_9');
	arAbas[9] = new stAba('link_10','dia_10');
	arAbas[10] = new stAba('link_11','dia_11');
	arAbas[11] = new stAba('link_12','dia_12');
	arAbas[12] = new stAba('link_13','dia_13');
	arAbas[13] = new stAba('link_14','dia_14');
	arAbas[14] = new stAba('link_15','dia_15');
	arAbas[15] = new stAba('link_16','dia_16');
	arAbas[16] = new stAba('link_17','dia_17');
	arAbas[17] = new stAba('link_18','dia_18');
	arAbas[18] = new stAba('link_19','dia_19');
	arAbas[19] = new stAba('link_20','dia_20');
	arAbas[20] = new stAba('link_21','dia_21');
	arAbas[21] = new stAba('link_22','dia_22');
	arAbas[22] = new stAba('link_23','dia_23');
	arAbas[23] = new stAba('link_24','dia_24');
	arAbas[24] = new stAba('link_25','dia_25');
	arAbas[25] = new stAba('link_26','dia_26');
	arAbas[26] = new stAba('link_27','dia_27');
	arAbas[27] = new stAba('link_28','dia_28');
	arAbas[28] = new stAba('link_29','dia_29');
	arAbas[29] = new stAba('link_30','dia_30');
	arAbas[30] = new stAba('link_31','dia_31');

function AlternarAbas(menu,conteudo)
	{
		for (i=0;i<arAbas.length;i++)
		{
			if(document.getElementById(arAbas[i].conteudo))
				document.getElementById(arAbas[i].conteudo).style.display = 'none';
		}
		c = document.getElementById(conteudo)
		c.style.display = '';
	}

function validateEmail(addr,man,db) {
if (addr == '' && man) {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
if (addr == '') return true;
var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
for (i=0; i<invalidChars.length; i++) {
   if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
      if (db) alert('Ingrese un e-mail válido.');
      return false;
   }
}
for (i=0; i<addr.length; i++) {
   if (addr.charCodeAt(i)>127) {
      if (db) alert("Ingrese un e-mail válido.");
      return false;
   }
}

var atPos = addr.indexOf('@',0);
if (atPos == -1) {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
if (atPos == 0) {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
if (addr.indexOf('@', atPos + 1) > - 1) {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
if (addr.indexOf('.', atPos) == -1) {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
if (addr.indexOf('@.',0) != -1) {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
if (addr.indexOf('.@',0) != -1){
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
if (addr.indexOf('..',0) != -1) {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
var suffix = addr.substring(addr.lastIndexOf('.')+1);
if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') {
   if (db) alert('Ingrese un e-mail válido.');
   return false;
}
return true;
}


///////////////////////////
// Version con FLASH 2007
///////////////////////////

// BANNER OBJECT
function Banner(objName){
	this.obj = objName;
	this.aNodes = [];
	this.currentBanner = 0;
	
};

// ADD NEW BANNER
Banner.prototype.add = function(bannerType, bannerPath, bannerDuration, height, width, hyperlink) {
	this.aNodes[this.aNodes.length] = new Node(this.obj +"_"+ this.aNodes.length, bannerType, bannerPath, bannerDuration, height, width, hyperlink);
};

// OPEN WINDOWS
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

// Node object
//function Node(name, bannerType, bannerPath, bannerDuration, height, width, hyperlink) {
function Node(name, bannerType, bannerPath, bannerDuration, hyperlink) {
	this.name = name;
	this.bannerType = bannerType;
	this.bannerPath = bannerPath;
	this.bannerDuration = bannerDuration;
	//this.height = height
	//this.width = width;
	this.hyperlink= hyperlink;
//	alert (name +"|" + bannerType +"|" + bannerPath +"|" + bannerDuration +"|" + height +"|" + width + "|" + hyperlink);
};

// Outputs the banner to the page
Banner.prototype.toString = function() {
	var str = ""
	for (var iCtr=0; iCtr < this.aNodes.length; iCtr++){
		str = str + '<span name="'+this.aNodes[iCtr].name+'" '
		str = str + 'id="'+this.aNodes[iCtr].name+'" ';
		str = str + 'class="m_banner_hide" ';
		str = str + 'bgcolor="#FFFCDA" ';	// CHANGE BANNER COLOR HERE
		str = str + 'align="center" ';
		str = str + 'valign="top" >\n';
		if (this.aNodes[iCtr].hyperlink != ""){
			str = str + '<a href="'+this.aNodes[iCtr].hyperlink+'">';
			//str = str + "<a href=\"#"+this.obj+"a\" onClick=\"MM_openBrWindow('"+this.aNodes[iCtr].hyperlink+"','','status=no,scrollbars=no,width=640,height=480')\">";
			
		}
			
		if ( this.aNodes[iCtr].bannerType == "FLASH" ){
			str = str + '<script type="text/javascript">'
			str = str + 'AC_FL_RunContent( "codebase",'
			str = str +	'"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"'
			str = str +	',"width","160'
			str = str +'","height","100'
			str = str +'","src","imagens/swf/topo","quality","_best","pluginspage"'
			str = str +',"http://www.macromedia.com/go/getflashplayer","movie","'
			str = str + (this.aNodes[iCtr].bannerPath).substring(0, (this.aNodes[iCtr].bannerPath.length - 4)) + '" )'
			str = str +'</script>'
			str = str + '<noscript><OBJECT '
			str = str + 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
			str = str + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" '
			str = str + 'WIDTH="160" '
			str = str + 'HEIGHT="100" '
			//str = str + 'WIDTH="'+this.aNodes[iCtr].width+'" '
			//str = str + 'HEIGHT="'+this.aNodes[iCtr].height+'" '
			str = str + 'id="bnr_'+this.aNodes[iCtr].name+'" '
			str = str + 'ALIGN="" '
			str = str + 'VIEWASTEXT>'
			str = str + '>'
			str = str + '<PARAM NAME=movie VALUE="'+ this.aNodes[iCtr].bannerPath + '">'
			str = str + '<PARAM NAME=quality VALUE=high>'
			str = str + '<PARAM NAME=bgcolor VALUE=#FFFCDA>'
			str = str + '<EMBED ';
			str = str + 'src="'+this.aNodes[iCtr].bannerPath+'" '
			str = str + 'quality=high '
			str = str + 'bgcolor=#FFFCDA '
			str = str + 'WIDTH="160" '
			str = str + 'HEIGHT="100" '
//			str = str + 'WIDTH="'+this.aNodes[iCtr].width+'" '
//			str = str + 'HEIGHT="'+this.aNodes[iCtr].height+'" '
			str = str + 'NAME="bnr_'+this.aNodes[iCtr].name+'" '
			str = str + 'ALIGN="center" '
			str = str + 'TYPE="application/x-shockwave-flash" '
			str = str + 'PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">'
			str = str + '</EMBED>'
			str = str + '</OBJECT></noscript>'
			/*
			str = str + '<OBJECT '
			str = str + 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
			str = str + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" '
			str = str + 'WIDTH="150" '
			str = str + 'HEIGHT="70" '
//			str = str + 'HEIGHT="'+this.aNodes[iCtr].height+'" '
			str = str + 'id="bnr_'+this.aNodes[iCtr].name+'" '
			str = str + 'ALIGN="" '
			str = str + 'VIEWASTEXT>'
			str = str + '<PARAM NAME=movie VALUE="'+ this.aNodes[iCtr].bannerPath + '">'
			str = str + '<PARAM NAME=quality VALUE=high>'
			str = str + '<PARAM NAME=bgcolor VALUE=#FFFFFF>'
			str = str + '<EMBED ';
			str = str + 'src="'+this.aNodes[iCtr].bannerPath+'" '
			str = str + 'quality=high '
			str = str + 'bgcolor=#FFFFFF '
			str = str + 'WIDTH="150" '
			str = str + 'HEIGHT="70" '
//			str = str + 'HEIGHT="'+this.aNodes[iCtr].height+'" '
			str = str + 'NAME="bnr_'+this.aNodes[iCtr].name+'" '
			str = str + 'ALIGN="center" '
			str = str + 'TYPE="application/x-shockwave-flash" '
			str = str + 'PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">'
			str = str + '</EMBED>'
			str = str + '</OBJECT>'
			*/
		}else if ( this.aNodes[iCtr].bannerType == "IMAGE" ){
			str = str + '<img src="'+this.aNodes[iCtr].bannerPath+'" ';
			str = str + 'border="0">';
//	str = str + 'border="0" ';
		//	str = str + 'height="'+this.aNodes[iCtr].height+'" ';
		//	str = str + 'width="'+this.aNodes[iCtr].width+'">';
		}

		if (this.aNodes[iCtr].hyperlink != ""){
			str = str + '</a>';
		}

		str += '</span>';
	}
	return str;
};

// START THE BANNER ROTATION
Banner.prototype.start = function(){
	this.changeBanner();
	var thisBannerObj = this.obj;
	// CURRENT BANNER IS ALREADY INCREMENTED IN cahngeBanner() FUNCTION
	setTimeout(thisBannerObj+".start()", this.aNodes[this.currentBanner].bannerDuration * 1000);
}

// CHANGE BANNER
Banner.prototype.changeBanner = function(){
	var thisBanner;
	var prevBanner = -1;
	if (this.currentBanner < this.aNodes.length ){
		thisBanner = this.currentBanner;
		if (this.aNodes.length > 1){
			if ( thisBanner > 0 ){
				prevBanner = thisBanner - 1;
			}else{
				prevBanner = this.aNodes.length-1;
			}
		}
		if (this.currentBanner < this.aNodes.length - 1){
			this.currentBanner = this.currentBanner + 1;

		}else{
			this.currentBanner = 0;
		}
	}
	

	if (prevBanner >= 0){
		document.getElementById(this.aNodes[prevBanner].name).className = "m_banner_hide";
	}
	document.getElementById(this.aNodes[thisBanner].name).className = "m_banner_show";
}

////////AC CONTENT
//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

function val(dia,mes,year){
			
			
			if(!isNaN(dia) && !isNaN(mes) && !isNaN(year)){
				if(mes > 0 && mes < 13){
					if( mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12){
						if(dia > 0 && dia < 32){
							return true;
						}else {
							alert("El dia ingresado no es correcto");
							return false;
						}	
					}else if(mes == 2){
						if(year%4 == 0){
							if(dia > 0 && dia < 30){
								return true;
							}else {
								alert("El dia ingresado no es correcto");
								return false;
							}	
						}else{
							if(dia > 0 && dia < 29){
								return true;
							}else {
								alert("El dia ingresado no es correcto");
								return false;
							}	
						}
					}else {
						if(dia > 0 && dia < 31){
							return true;
						}else {
							alert("El dia ingresado no es correcto");
							return false;
						}	
					}
				}else {
					alert("El mes ingresado no es correcto");
					return false;
				}
			}else {
				alert("La fecha ingresada no es correcta (dd-mm-aaaa)");
				return false;
			}
}

function validateTime(enteredTime) {// Checks if time is in HH:MM format.
	var pattern = /^\d{1,2}:\d{2}$/;		 
	var matchArray1 = enteredTime.value.match(pattern);	 
	var matchArray = enteredTime.value.split(":"); 		 
	if (matchArray1 == null) 	 {                 	 	
		alert("Ingrese la hora con el siguiente formato (HH:MM).");		
		enteredTime.value = "";	 	
		return false;                  	 
	}            	
 	hour = matchArray[0]; 	 minute = matchArray[1];         	 
 	if (hour < 0  || hour > 25) 	 {                 	 	
 		alert("Ingrese la hora en formato 24 horas");	 	
 		enteredTime.value = "";	 	
 		return false;                		 
	}	 
 	if (minute<0 || minute > 59) 	 {                  	 	
 		alert ("Ingrese los minutos de  0 a 59.");  		
 		enteredTime.value = "";		
 		return false;                 	 
	}        
   	 return true;
}
  
function validateMail(mail) {
	var pattern = /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/;	
	
			
	var matchArray1 = mail.value.match(pattern);	 
		 
	if (matchArray1 == null) 	 {                 	 	
		alert("Ingrese un direccion de Email correcta");		
		return false;                  	 
	}            	
 	 
   	 return true;
}
