/*****************************************************************************************
'Descripcion:
'		Recibe una cadena y la retorna sin espacios vacíos a la derecha, a la izquierda
'		ó a ámbos lados, según se especifique
'.........................................................................................
'Parametros:
'		varText: Texto al cual se le quieren eliminar los espacios en blanco
'		side: Constante que indica de qué lado se le quieren eliminar los espacios, así:
'			TRIM_LEFT --> Eliminar espacios a la izquierda
'			TRIM_RIGHT --> Eliminar espacios a la derecha
'			TRIM_BOTH --> Eliminar espacios a ambos lados
'.........................................................................................
'Validaciones:
*****************************************************************************************/
var TRIM_LEFT  = 0x0001;
var TRIM_RIGHT = 0x0002;
var TRIM_BOTH  = TRIM_LEFT | TRIM_RIGHT;

function strTrim( varText, side )
	{
	var i = 0;
	var j = varText.length - 1;

	if( side & TRIM_LEFT )
		{
		for( i = 0; i < varText.length; i++ )
			{
			if( varText.substring( i, i+1 ) != " " && varText.substring( i, i+1 ) != "\t")
				{
				break;
				}
			}
		}

	if( side & TRIM_RIGHT )
		{
		for( j = varText.length - 1; j >= 0; j-- )
			{
			if( varText.substring( j, j+1 ) != " " && varText.substring( j, j+1 ) != "\t")
				{
				break;
				}
			}
		}

	if( i <= j )
		return( varText.substring( i, (j+1) ) );
	else
		return("");
}

/*****************************************************************************************
'Descripcion:
'		Funcion para validar que el texto ingresado en un campo texto,
'		corresponda a una dirección válida de correo (e-mail)
'.........................................................................................
'Parametros:
'		Campo:		Control con el valor a validar
'		Mensaje:	Cadena con el nombre descriptivo del control, usada para mostrar
'					un mensaje personalizado.
'.........................................................................................
'Validaciones:
'		- Los caracteres que contiene la cuenta de correo deben estar dentro de la siguiente lista
'			"0123456789abcdefghijlkmnopqrstuvwxyz@.-_"
'		- El primer y último caracter no pueden ser alguno de los caracteres "@.-_"
'		- Los caracteres anterior y posterior a la arroba (@), no pueden ser "@.-_"
'		- La cadena NO puede contener más de una arroba (@)
'		- La cadena debe contener al menos UNA arroba (@)
'		- La cadena NO puede contener espacios vacíos (" ")
'		- Después del último punto, debe haber AL MENOS 2 caracteres
*****************************************************************************************/
function ValidarEmail(Campo, Mensaje)
	{
	var perfect = true;

	with (Campo)
		{
		// Validar que los caracteres que contiene la cuenta de correo
		// esten dentro de los caracteres de la siguiente lista
		var car_validos = "0123456789abcdefghijlkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@.-_"
		var car_otros = "@.-_";

		for (var i=0; i < value.length; i++) {
			var ch = value.substring(i, i+1);
			if (car_validos.indexOf(ch) == -1) perfect = false;
		}

		apos = value.indexOf("@");
		lastpos = value.length-1;

		// Validar primer y ultimo caracter
		var car1 = value.substring(0, 1);
		var car2 = value.substring(lastpos, lastpos+1);
		if ((car_otros.indexOf(car1) != -1) || (car_otros.indexOf(car2) != -1)) perfect = false;

		// Validar anterior y siguiente caracter despues de "@"
		car1 = value.substring(apos-1, apos);
		car2= value.substring(apos+1, apos+2);
		if ((car_otros.indexOf(car1) != -1) || (car_otros.indexOf(car2) != -1)) perfect = false;

		// Buscar si existe otro simbolo "@" en el campo
		var subcadena = value.substring(apos + 1, 100);
		a2pos = subcadena.indexOf("@");
		spacepos = value.indexOf(" ");
		dotpos = value.lastIndexOf(".");

		//if (apos < 1 || a2pos != -1 || dotpos - apos < 2 || lastpos - dotpos > 3 || lastpos - dotpos < 2 || spacepos != -1) {
		if (apos < 1 || a2pos != -1 || lastpos - dotpos < 2 || spacepos != -1) perfect = false;
		}

	if (!perfect) 
		{
		alert('\nEl valor de ' + Mensaje + ' (E-Mail) es inválido.\n\nPor favor corrije la información.');
		Campo.focus();
		return false;
		}

	return true;

}

/*****************************************************************************************
'Descripcion:
'		Funcion para validar que el texto ingresado en un campo texto,
'		solo con letras
'.........................................................................................
'Parametros:
'		Campo:		Control con el valor a validar
'		Mensaje:	Cadena con el nombre descriptivo del control, usada para mostrar
'					un mensaje personalizado.
'.........................................................................................
'Validaciones:
'		- Los caracteres que contiene la cuenta de correo deben estar dentro de la siguiente lista
'			"0123456789abcdefghijlkmnopqrstuvwxyz@.-_"
'		- El primer y último caracter no pueden ser alguno de los caracteres "@.-_"
'		- Los caracteres anterior y posterior a la arroba (@), no pueden ser "@.-_"
'		- La cadena NO puede contener más de una arroba (@)
'		- La cadena debe contener al menos UNA arroba (@)
'		- La cadena NO puede contener espacios vacíos (" ")
'		- Después del último punto, debe haber AL MENOS 2 caracteres
*****************************************************************************************/
function ValidarLetras(Campo, Mensaje)
	{
	var perfect = true;

	with (Campo)
		{
		// Validar que los caracteres que el campo
		// esten dentro de los caracteres de la siguiente lista
		var car_validos = "áíéóúñabcdefghijlkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "

		for (var i=0; i < value.length; i++) {
			var ch = value.substring(i, i+1);
			if (car_validos.indexOf(ch) == -1) perfect = false;
		}

		apos = value.indexOf("@");
		lastpos = value.length-1;
		
		}

	if (!perfect) 
		{
		alert('\nEl valor del campo ' + Mensaje + ' es inválido.\n\nSolo pueden ir Letras.\n\nPor favor corrije la información.');
		Campo.focus();
		return false;
		}

	return true;

	}
		
/*****************************************************************************************
'Descripcion:
'		Validar que de un conjunto de Radio Buttons que están TODOS bajo el mismo name
'		se escoja al menos uno de ellos
'.........................................................................................
'Parametros:
'		- Nombre bajo el cual están agrupados los checkboxes, enviarlo como una cadena,
'			es decir, entre comillas dobles ""
'		- Nombre del dato o control que se está validando para personalizar el mensaje de error
'.........................................................................................
'Validaciones: 
*****************************************************************************************/
function Validar_Radio(par_nombre_control,par_nom_dato)
	{
	var_band = 0
	eval("var_nro_obj = " + par_nombre_control + ".length;");
	if (var_nro_obj > 0)
		{
		for (g=0; g<var_nro_obj; g++)
			{
			if (eval(par_nombre_control + "[" + g + "].checked"))
				{
				var_band = 1;
				}
			}
		}
	else
		{
		if (eval("document.thisForm." + par_nombre_control + ".checked"))
			{
			var_band = 1;
			}
		}
			
	if (var_band == 0)
		{
		alert("Debes seleccionar " + par_nom_dato + " \n\nPor favor suministra la información");
		return false;
		}
	return true;
	}

/*****************************************************************************************
'Fecha : Octubre 12/2000
'.........................................................................................
'Descripcion:
'		Validar que de un conjunto de checkboxes que están TODOS bajo el mismo name
'		se escoja al menos uno de ellos
'.........................................................................................
'Parametros:
'		- Nombre bajo el cual están agrupados los checkboxes
'		- Nombre del dato o control que se está validando para personalizar el mensaje de error
'.........................................................................................
'Validaciones: 
*****************************************************************************************/
function Validar_Checkboxes(par_nombre_control,par_nom_dato)
	{
	var_band = 0
	eval("var_nro_obj = document.thisForm." + par_nombre_control + ".length;");
	if (var_nro_obj > 0)
		{
		for (g=0; g<var_nro_obj; g++)
			{
			if (eval("document.thisForm." + par_nombre_control + "[" + g + "].checked"))
				{
				var_band = 1;
				}
			}
		}
	else
		{
		if (eval("document.thisForm." + par_nombre_control + ".checked"))
			{
			var_band = 1;
			}
		}
			
	if (var_band == 0)
		{
		alert("Debe seleccionar un " + par_nom_dato + " \n\nPor favor suministre la información");
		return false;
		}
	return true;
	}

/*****************************************************************************************
'Fecha : Mayo 28/2001
'.........................................................................................
'Descripcion:
'		Validar los campos obligatorios del conjunto de campos que componen las direcciones
'		en los diferentes formularios de los 3 portales
'.........................................................................................
'Parametros:
'		- par_tipo_calle : Control (List Box) que contiene el tipo de calle
'		- par_num_calle : Control (text box) que contiene el número de la calle
'		- par_num_uno : Control (text box) que contiene el primer número de la nomenclatura
'		- par_num_dos : Control (text box) que contiene el segundo número de la nomenclatura
'		- par_nom_dato : Nombre del dato que se está validando, para personalizar el mensaje de error
'.........................................................................................
'Validaciones: 
'		- Ninguno de los primeros cuatro parámetros puede ser vacío
*****************************************************************************************/
function Validar_Direccion(par_tipo_calle, par_num_calle, par_num_uno, par_num_dos, par_nom_dato)
	{
	var_tipo_calle = par_tipo_calle.selectedIndex;
	var_num_calle = strTrim(par_num_calle.value,TRIM_BOTH);
	var_num_uno = strTrim(par_num_uno.value,TRIM_BOTH);
	var_num_dos = strTrim(par_num_dos.value,TRIM_BOTH);
	
	//Validar el Tipo de Calle
	if (var_tipo_calle == 0)
		{
		alert("Por favor ingresa la " + par_nom_dato + " Completa");
		par_tipo_calle.focus();
		return false;
		}
		
	//Validar el Número de la Calle
	if (var_num_calle == "")
		{
		alert("Por favor ingresa la " + par_nom_dato + " Completa");
		par_num_calle.focus();
		return false;
		}
	validar_num_calle = isNumeric(var_num_calle);
	if (!validar_num_calle)
		{
		alert("El valor del Número de la Calle debe contener sólo números\n\nPor favor corrije la información");
		par_num_calle.focus();
		return false;
		}
	
	//Validar el Primer número de la nomenclatura
	if (var_num_uno == "")
		{
		alert("Por favor ingresa la " + par_nom_dato + " Completa");
		par_num_uno.focus();
		return false;
		}
	validar_num_uno = isNumeric(var_num_uno);
	if (!validar_num_uno)
		{
		alert("El valor del primer Número de la nomenclatura debe contener sólo números\n\nPor favor corrije la información");
		par_num_uno.focus();
		return false;
		}
		
	//Validar el Segundo número de la nomenclatura
	if (var_num_dos == "")
		{
		alert("Por favor ingresa la " + par_nom_dato + " Completa");
		par_num_dos.focus();
		return false;
		}
	validar_num_dos = isNumeric(var_num_dos);
	if (!validar_num_dos)
		{
		alert("El valor del segundo Número de la nomenclatura debe contener sólo números\n\nPor favor corrije la información");
		par_num_dos.focus();
		return false;
		}
	
	return true;
	
	}

/*****************************************************************************************
'Fecha : Febrero 15/2000
'.........................................................................................
'Descripcion:
'		Valida una fecha que viene descompuesta en Año, Mes y Dia
'		Retorna "true" ó "false" según sea el caso
'.........................................................................................
'Parametros:
'		Todos los parámetros son convertidos a enteros, dentro de la función, antes de 
'		proceder a validarlos
'		Anno: Año a validar 
'		Mes: Mes a validar 
'		Dia: Dia a validar 
'		Dato: Nombre del Dato que se está validando, para personalizar los mensajes
'.........................................................................................
'Validaciones:
'		Valida fechas de años bisiestos (de Febrero) y, que el dia sea valido dentro del
'		mes elegido
*****************************************************************************************/
function ValidarFecha(Anno, Mes, Dia, Dato) 
	{

	var intAnno = parseInt(Anno);
	var intMes = parseInt(Mes);
	var intDia = parseInt(Dia);

	// Validar que los valores no sean igual a cero
	if ((Anno == 0) || (Mes == 0) || (Dia == 0)) 
		{
		alert('Debes elegir los valores para el mes, el día y el año de ' + Dato);
		return false;
		}

	// Validar que, en un año NO bisiesto, el número de días del mes de Febrero no sea mayor que 28
	if (((intAnno % 4) != 0) && (intMes == 2) && (intDia > 28)) 
		{
		alert('El mes de Febrero no puede contener más de 28 días.\n\nPor favor, corrije la información de ' + Dato);
		return false;
		}

	// Validar que, en un año bisiesto, el número de días del mes de Febrero no sea mayor que 29
	if (((intAnno % 4) == 0) && (intMes == 2) && (intDia > 29)) 
		{
		alert('El mes de Febrero no puede contener más de 29 días.\n\n Por favor, corrije la información de ' + Dato);
		return false;
		}

	// Validar que el dia sea válido para el mes elegido, no mayor que 30
	if ( ((intMes == 4) || (intMes == 6) || (intMes == 9) || (intMes == 11)) && (intDia > 30) ) 
		{
		alert('El mes seleccionado sólo contiene 30 días.\n\nPor favor, corrije la información de ' + Dato);
		return false;
		}

	return true;
	}

/*****************************************************************************************
'Fecha : Mayo 28/2001
'.........................................................................................
'Descripcion:
'		Verifica que una cadena contenga únicamente caracteres numéricos.
'		Retorna "true" ó "false" según sea el caso
'.........................................................................................
'Parametros:
'		- str : Cadena que se quiere evaluar
'.........................................................................................
'Validaciones: 
'		- Ninguno de los caracteres que componen la cadena debe ser diferente de los
'		  caracteres de la lista "0123456789"
*****************************************************************************************/
function isNumeric(str)
	{
	for (var i=0; i < str.length; i++) 
		{
		var ch = str.substring(i, i+1);
		if(ch < "0" || ch > "9") 
			{
			return false;
			}
		}

		return true;
	}
/*****************************************************************************************
'Fecha : Mayo 28/2001
'.........................................................................................
'Descripcion:
'		Verifica que una cadena contenga únicamente caracteres numéricos.
'		Retorna "true" ó "false" según sea el caso
'.........................................................................................
'Parametros:
'		- q : Cadena que se quiere evaluar
'.........................................................................................
'Validaciones: 
'		- Ninguno de los caracteres que componen la cadena debe ser diferente de los
'		  caracteres de la lista "0123456789"
*****************************************************************************************/
function isInteger(q)
 {
	var test = "true"
	inputStr = q.toString()
	for (var i = 0; i < inputStr.length; i++)
		{
			var oneChar = inputStr.charAt(i)			
			if (oneChar < "0" || oneChar > "9")
		     {
				test = "false"
			 }
		}
	return (test)
 }

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function P7_hideDiv(evt) { //v1.2 by PVII
 var b,relT,mT=false; 
 if(document.layers){b=evt.target;if(b.p7aHide){
  b.visibility="hidden";}else{routeEvent(evt);}
 }else if(document.all&&!window.opera){b=event.srcElement;
  while(b!=null){if(b.tagName=="DIV" && b.p7ahD){mT=true;break;}b=b.parentElement;}
  if(!b.contains(event.toElement)){b.style.visibility="hidden";}
 }else if(document.getElementById){b=evt.currentTarget;relT=evt.relatedTarget;
  while(relT!=null){if(b==relT){mT=true;break;}
  relT=relT.parentNode;}if(!mT){b.style.visibility="hidden";}}
}

function P7_autoHide() { //v1.2 by PVII
 var i,g,args=P7_autoHide.arguments;
 for(i=0;i<args.length;i++){if((g=MM_findObj(args[i]))!=null){
  g.p7aHide=true;if(document.layers){
  g.captureEvents(Event.MOUSEOUT);}g.onmouseout=P7_hideDiv;g.p7ahD=true;}}
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function esVacia(cadena){
   if(cadena.length==0){
        return true;
   }
}
function esCadenaEnBlanco(cadena){
   var i;
   for(i=0;i<cadena.length;i++){
       if(cadena[i]=='\n'||cadena[i]=='\t'||cadena[i]==' '){}
       else{
          return false;
       }
   }
   return true;
}

function validarBuscar()
{
	var palabra = document.frmbuscador.txtpalabra.value;
	if (esVacia(palabra)||esCadenaEnBlanco(palabra))
	{
		alert ("Debe ingresar alguna palabra o frase para poder realizar la búsqueda");
		document.frmbuscador.txtpalabra.focus();
		return false;
	}
	return true;
}
function validarLogin()
{
	var usuario = document.formaClave.txtusuario.value;
	var clave = document.formaClave.txtclave.value;
	if (esVacia(usuario)||esCadenaEnBlanco(usuario))
	{
		alert ("Debe ingresar su usuario");
		document.formaClave.txtusuario.focus();
		return false;
	}
	if (esVacia(clave)||esCadenaEnBlanco(clave))
	{
		alert ("Debe ingresar su clave");
		document.formaClave.txtclave.focus();
		return false;
	}
	return true;
}

function val_inscrito() {

	dato = document.frminscribir.txtemail.value;
	if (strTrim(dato,TRIM_BOTH) == '') {
		alert("Debe ingresar su e-mail");
		document.frminscribir.txtemail.focus();
		return false;
	}

	return true;
}

function validar_opine()
{
	var numRespuestas = document.frmopine.numRespuestas.value;
	var selecciono = false;
	for (var i=0; i < numRespuestas;i++)
	{
		var radio = document.frmopine.voto[i];
		if (radio.checked)
		{
			selecciono = true;
			i = numRespuestas;
		}
	}
	if (selecciono)
	{
		return true;
	}
	else
	{
		alert ("Seleccione una respuesta");
		return false;
	}
}

var Open = ""
var Closed = ""
function showhide(what,what2){
	if (what.style.display=='none'){
		what.style.display='';
		what2.src=Open.src
	}
	else{
		what.style.display='none'
		what2.src=Closed.src
	}
}