
// JavaScript Document

function alert1(x) { alert(acentos(x)) }

function confirm1(x) { confirm(acentos(x)) }

function acentos(x) {
	// version 040623
	// Spanish - Español
	// Portuguese - Portugués - Português
	// Italian - Italiano
	// French - Francés - Français
	// Also accepts and converts single and double quotation marks, square and angle brackets
	// and miscelaneous symbols.
	// Also accepts and converts html entities for all the above.
//	if (navigator.appVersion.toLowerCase().indexOf("windows") != -1) {return x}
	x = x.replace(/¡/g,"\xA1");	x = x.replace(/&iexcl;/g,"\xA1")
	x = x.replace(/¿/g,"\xBF");	x = x.replace(/&iquest;/g,"\xBF")
	x = x.replace(/À/g,"\xC0");	x = x.replace(/&Agrave;/g,"\xC0")
	x = x.replace(/à/g,"\xE0");	x = x.replace(/&agrave;/g,"\xE0")
	x = x.replace(/Á/g,"\xC1");	x = x.replace(/&Aacute;/g,"\xC1")
	x = x.replace(/á/g,"\xE1");	x = x.replace(/&aacute;/g,"\xE1")
	x = x.replace(/Â/g,"\xC2");	x = x.replace(/&Acirc;/g,"\xC2")
	x = x.replace(/â/g,"\xE2");	x = x.replace(/&acirc;/g,"\xE2")
	x = x.replace(/Ã/g,"\xC3");	x = x.replace(/&Atilde;/g,"\xC3")
	x = x.replace(/ã/g,"\xE3");	x = x.replace(/&atilde;/g,"\xE3")
	x = x.replace(/Ä/g,"\xC4");	x = x.replace(/&Auml;/g,"\xC4")
	x = x.replace(/ä/g,"\xE4");	x = x.replace(/&auml;/g,"\xE4")
	x = x.replace(/Å/g,"\xC5");	x = x.replace(/&Aring;/g,"\xC5")
	x = x.replace(/å/g,"\xE5");	x = x.replace(/&aring;/g,"\xE5")
	x = x.replace(/Æ/g,"\xC6");	x = x.replace(/&AElig;/g,"\xC6")
	x = x.replace(/æ/g,"\xE6");	x = x.replace(/&aelig;/g,"\xE6")
	x = x.replace(/Ç/g,"\xC7");	x = x.replace(/&Ccedil;/g,"\xC7")
	x = x.replace(/ç/g,"\xE7");	x = x.replace(/&ccedil;/g,"\xE7")
	x = x.replace(/È/g,"\xC8");	x = x.replace(/&Egrave;/g,"\xC8")
	x = x.replace(/è/g,"\xE8");	x = x.replace(/&egrave;/g,"\xE8")
	x = x.replace(/É/g,"\xC9");	x = x.replace(/&Eacute;/g,"\xC9")
	x = x.replace(/é/g,"\xE9");	x = x.replace(/&eacute;/g,"\xE9")
	x = x.replace(/Ê/g,"\xCA");	x = x.replace(/&Ecirc;/g,"\xCA")
	x = x.replace(/ê/g,"\xEA");	x = x.replace(/&ecirc;/g,"\xEA")
	x = x.replace(/Ë/g,"\xCB");	x = x.replace(/&Euml;/g,"\xCB")
	x = x.replace(/ë/g,"\xEB");	x = x.replace(/&euml;/g,"\xEB")
	x = x.replace(/Ì/g,"\xCC");	x = x.replace(/&Igrave;/g,"\xCC")
	x = x.replace(/ì/g,"\xEC");	x = x.replace(/&igrave;/g,"\xEC")
	x = x.replace(/Í/g,"\xCD");	x = x.replace(/&Iacute;/g,"\xCD")
	x = x.replace(/í/g,"\xED");	x = x.replace(/&iacute;/g,"\xED")
	x = x.replace(/Î/g,"\xCE");	x = x.replace(/&Icirc;/g,"\xCE")
	x = x.replace(/î/g,"\xEE");	x = x.replace(/&icirc;/g,"\xEE")
	x = x.replace(/Ï/g,"\xCF");	x = x.replace(/&Iuml;/g,"\xCF")
	x = x.replace(/ï/g,"\xEF");	x = x.replace(/&iuml;/g,"\xEF")
	x = x.replace(/Ñ/g,"\xD1");	x = x.replace(/&Ntilde;/g,"\xD1")
	x = x.replace(/ñ/g,"\xF1");	x = x.replace(/&ntilde;/g,"\xF1")
	x = x.replace(/Ò/g,"\xD2");	x = x.replace(/&Ograve;/g,"\xD2")
	x = x.replace(/ò/g,"\xF2");	x = x.replace(/&ograve;/g,"\xF2")
	x = x.replace(/Ó/g,"\xD3");	x = x.replace(/&Oacute;/g,"\xD3")
	x = x.replace(/ó/g,"\xF3");	x = x.replace(/&oacute;/g,"\xF3")
	x = x.replace(/Ô/g,"\xD4");	x = x.replace(/&Ocirc;/g,"\xD4")
	x = x.replace(/ô/g,"\xF4");	x = x.replace(/&ocirc;/g,"\xF4")
	x = x.replace(/Õ/g,"\xD5");	x = x.replace(/&Otilde;/g,"\xD5")
	x = x.replace(/õ/g,"\xF5");	x = x.replace(/&otilde;/g,"\xF5")
	x = x.replace(/Ö/g,"\xD6");	x = x.replace(/&Ouml;/g,"\xD6")
	x = x.replace(/ö/g,"\xF6");	x = x.replace(/&ouml;/g,"\xF6")
	x = x.replace(/Ø/g,"\xD8");	x = x.replace(/&Oslash;/g,"\xD8")
	x = x.replace(/ø/g,"\xF8");	x = x.replace(/&oslash;/g,"\xF8")
	x = x.replace(/Ù/g,"\xD9");	x = x.replace(/&Ugrave;/g,"\xD9")
	x = x.replace(/ù/g,"\xF9");	x = x.replace(/&ugrave;/g,"\xF9")
	x = x.replace(/Ú/g,"\xDA");	x = x.replace(/&Uacute;/g,"\xDA")
	x = x.replace(/ú/g,"\xFA");	x = x.replace(/&uacute;/g,"\xFA")
	x = x.replace(/Û/g,"\xDB");	x = x.replace(/&Ucirc;/g,"\xDB")
	x = x.replace(/û/g,"\xFB");	x = x.replace(/&ucirc;/g,"\xFB")
	x = x.replace(/Ü/g,"\xDC");	x = x.replace(/&Uuml;/g,"\xDC")
	x = x.replace(/ü/g,"\xFC");	x = x.replace(/&uuml;/g,"\xFC")
	
	x = x.replace(/\"/g,"\x22")
	x = x.replace(/\'/g,"\x27")
	x = x.replace(/\</g,"\x3C")
	x = x.replace(/\>/g,"\x3E")
	x = x.replace(/\[/g,"\x5B")
	x = x.replace(/\]/g,"\x5D")

	x = x.replace(/¢/g,"\xA2");	x = x.replace(/&cent;/g,"\xA2") 
	x = x.replace(/£/g,"\xA3");	x = x.replace(/&pound;/g,"\xA3")
	x = x.replace(/€/g,"\u20AC");	x = x.replace(/&euro;/g,"\u20AC") 
	x = x.replace(/©/g,"\xA9");	x = x.replace(/&copy;/g,"\xA9") 
	x = x.replace(/®/g,"\xAE");	x = x.replace(/&reg;/g,"\xAE") 
	x = x.replace(/ª/g,"\xAA");	x = x.replace(/&ordf;/g,"\xAA") 
	x = x.replace(/º/g,"\xBA");	x = x.replace(/&ordm;/g,"\xBA") 
	x = x.replace(/°/g,"\xB0");	x = x.replace(/&deg;/g,"\xB0") 
	x = x.replace(/±/g,"\xB1");	x = x.replace(/&plusmn;/g,"\xB1")
	x = x.replace(/×/g,"\xD7");	x = x.replace(/&times;/g,"\xD7") 
	
		
	return x
}

function Browser() {
	var ua, s, i;
	this.isIE    = false;
	this.isNS    = false;
	this.version = null;
	ua = navigator.userAgent;
	s = "MSIE";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isIE = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
	s = "Netscape6/";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
// Exploradores con motor Gecko
	s = "Gecko";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = 6.1;
		return;
	}
//Opera se utiliza el mismo modelo que internet explorer (investigando)
	s = "Opera";
	if ((i = ua.indexOf(s)) == 0) {
		this.isIE = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
}
var browser = new Browser();


function tooltip(event,id){
	if (browser.isIE) {
		document.getElementById(id).attachEvent("onmouseover", toolShow);
		document.getElementById(id).attachEvent("onmouseout",   toolHide);
		document.getElementById(id).attachEvent("onmousemove",   toolFollow);
		window.event.cancelBubble = true;
		window.event.returnValue = false;
		document.getElementById(event.srcElement.getAttribute('name')).style.zIndex = 999;
	}
	if (browser.isNS) {
		document.getElementById(id).addEventListener("mouseover", toolShow, true);
		document.getElementById(id).addEventListener("mouseout",   toolHide, true);
		document.getElementById(id).addEventListener("mousemove",   toolFollow, true);
		event.preventDefault();
		document.getElementById(event.target.getAttribute('name')).style.zIndex = 999;
	}
	//document.getElementById(id).style.zIndex+1;
}


// el nombre del objeto de donde sale el tooltip debe ser el ID de lo que se quiere que sea tooltip
function toolFollow (event) {
	if (browser.isIE) {
		x = window.event.clientX
		y = window.event.clientY
		document.getElementById(window.event.srcElement.getAttribute('name')).style.left = x+10+"px";
	    document.getElementById(window.event.srcElement.getAttribute('name')).style.top = y+10+"px";
	}
	if (browser.isNS) {
		x = event.clientX + window.scrollX;
		y = event.clientY + window.scrollY;
		document.getElementById(event.target.getAttribute('name')).style.left = x+10+"px";
	    document.getElementById(event.target.getAttribute('name')).style.top = y+10+"px";
	}
	
}

function toolShow(event) { 

if (browser.isIE) {
		x = window.event.clientX
		y = window.event.clientY
		document.getElementById(window.event.srcElement.getAttribute('name')).style.left = x+10+"px";
	    document.getElementById(window.event.srcElement.getAttribute('name')).style.top = y+10+"px";
	}
	if (browser.isNS) {
		x = event.clientX + window.scrollX;
		y = event.clientY + window.scrollY;
		document.getElementById(event.target.getAttribute('name')).style.left = x+10+"px";
	    document.getElementById(event.target.getAttribute('name')).style.top = y+10+"px";
	}
		
	if (browser.isIE) {
		document.getElementById(window.event.srcElement.getAttribute('name')).style.display = 'block';
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	if (browser.isNS) {
		document.getElementById(event.target.getAttribute('name')).style.display = 'block';
		event.preventDefault();
	}
}

function toolHide(event) {
	
	if (browser.isIE) {
		document.getElementById(window.event.srcElement.getAttribute('name')).style.display = 'none';
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	if (browser.isNS) {
		document.getElementById(event.target.getAttribute('name')).style.display = 'none';
		event.preventDefault();
	}
}


function IsNumeric(Field, fName, fReq)
// Verifica que una cadena solamente contenga caracteres num?icos
//PARAM1 Field: El elemento a validar
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
//PARAM3 fReq: Se usa para indicar si un campo es requerido o no
//@autor: 

{
	var sText=Field.value;
	if(fReq&&sText.length==0) {
		alert1("El campo " + fName + " es requerido");
		Field.focus();
		return false;
	} else {
		if ((sText.length>0) && (sText.search(/^[-]?[0-9]+$/)==-1)){
			 alert1("El campo " + fName + " sólo puede contener caracteres numéricos");
			 Field.focus();
			 return false;
		}
		return true;
	}
}

function IsDecimal(Field, fName, fReq)
// Verifica que una cadena solamente contenga caracteres num?icos
//PARAM1 Field: El element  a validar
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
//PARAM3 fReq: Se usa para indicar si un campo es requerido o no
//@autor: 
{
	var sText = Field.value;
	if(fReq&&sText.length==0) {
		alert1("El campo " + fName + " es requerido");
		Field.focus();
		return false;
	} else {
		sText=sText.replace(/,/,'.');	
		if(sText.search(/^[-]?([1-9]{1}[0-9]{0,}((\.)[0-9]+)?|0(\.[0-9]+)?|\.[0-9]{1,})$/)==-1){
			 alert1("El campo " + fName + " sólo puede contener caracteres numéricos con decimales");
			 Field.focus();
			 return false;
		}
		return true;
	}
}

function $even_rte(FieldControl,fName){
//Verifica que un campo de tipo Rich Text Box tenga un valor distinto de ""
//FieldControl: El nombre del campo HTML
//fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
//@autor: 
	//alert(FieldControl+fName);
	if ((document.frames[FieldControl].getValue()=='') ||  (document.frames[FieldControl].getValue()=='<P>&nbsp;</P>')){
		alert1("El campo "+fName+" es requerido");
		FieldControl.focus();
		return false;
	}else{
		return true;
	}
}

function IsAlpha(FieldControl, fName, fReq)
// Verifica que una cadena solamente contenga caracteres alfabeticos
//PARAM1 sText: El texto a validar
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
//PARAM3 fReq: Se usa para indicar si un campo es requerido o no
//@autor: 
{
	if(fReq&&FieldControl.value.length==0) {
		alert1("El campo " + fName + " es requerido");
		FieldControl.focus();
		return false;
	} else {
		var ValidChars = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ\u00e1\u00e9\u00ed\u00f3\u00fa\u00c1\u00c9\u00cd\u00d3\u00da\u00f1\u00d1\u00e4\u00eb\u00ef\u00f6\u00fc\u00c4\u00cb\u00cf\u00d6\u00dc";
		for (i=0;i<FieldControl.value.length;i++) { 
		  if (ValidChars.indexOf(FieldControl.value.charAt(i)) == -1) {
			 alert1("El campo " + fName + " sólo puede contener caracteres alfabéticos");
			 FieldControl.focus();
			 return false;
		  }
		}
		return true;
	}
}

function IsAlphaNumeric(FieldControl, fName, fReq)
// Verifica que una cadena solamente contenga caracteres alfabeticos
//PARAM1 sText: El texto a validar
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
//PARAM3 fReq: Se usa para indicar si un campo es requerido o no
//@autor: 
{
	//alert(FieldControl.value);
	if(fReq&&FieldControl.value.length==0) {
		alert1("El campo " + fName + " es requerido");
		FieldControl.focus();
		return false;
	} else {
		var ValidChars = " .,_0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ\u00e1\u00e9\u00ed\u00f3\u00fa\u00c1\u00c9\u00cd\u00d3\u00da\u00f1\u00d1\u00e4\u00eb\u00ef\u00f6\u00fc\u00c4\u00cb\u00cf\u00d6\u00dc";
		for (i=0;i<FieldControl.value.length;i++) {
		  if (ValidChars.indexOf(FieldControl.value.charAt(i)) == -1) {
			 // alert1("char: "+FieldControl.value.charAt(i));
			 alert1("El campo " + fName + " sólo puede contener caracteres alfanuméricos");
			 FieldControl.focus();
			 return false;
		  }
		}
		return true;
	}
}

function isMailAddress(Field, fName, fReq) 
// Verifica que una cadena sea una direcci? de correo electr?ico v?ida
//PARAM1 sText: El texto a validar
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
//PARAM3 fReq: Se usa para indicar si un campo es requerido o no
//@autor: 
{
	var sText = Field.value;
	if(fReq&&sText.length==0) {
	   alert1("El campo " + fName + " es requerido");
	   Field.focus();
	   return false;
	} else {
		if  ((sText.length>0) && (sText.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)) {
			alert1("El campo " + fName + " no contiene una dirección de correo electrónico válida");
			Field.focus();
			return false;
		}
	}
	return true;
}

function isMailAddressText(Field, fName, fReq) 
// Verifica que una cadena sea una direcci? de correo electr?ico v?ida
//PARAM1 sText: El texto a validar
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
//PARAM3 fReq: Se usa para indicar si un campo es requerido o no
//@autor: 
{
	var sText = Field;
	if(fReq&&sText.length==0) {
	   alert1("El campo " + fName + " es requerido");
	   return false;
	} else {
		if  ((sText.length>0) && (sText.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)) {
			alert1("El campo " + fName + " no contiene una dirección de correo electrónico válida");
			return false;
		}
	}
	return true;
}
//----------------- QUITAR ESPACIOS EN BLANCO ---------------------------
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
function trim(s) 
{
	var temp="";
  	for (var i=0; i<s.length; i++)
    {
	 	if (s.substring(i,i+1) == ' ')
			var o=0;	     
		else
		  temp = temp+s.substring(i,i+1);	 
	}
  	return temp;
}

function isRequiredEditor(Field, fName) 
// Verifica que un campo (cualquiera que sea tipo Radio, Text, Select, etc) tenga algn valor distinto de ""
//PARAM1 Field: El nombre del campo del editor
//PARAM2 fName: El nombre del campo a validar. Este parametro se utiliza para mostrar el mensaje de error
//@autor:
{
	var editor = FCKeditorAPI.GetInstance(Field) ;
    var texto = editor.EditorDocument.body.innerHTML.trim();
	texto = texto.replace(/<br>/g,'');
	texto = texto.replace(/<p>/g,'');
	texto = texto.replace(/<\/p>/g,'');
	texto = texto.replace(/&nbsp;/g,'');
	if (texto.trim()=='')	{
			alert1("El campo " + fName + " es requerido");
			Field.focus();
			return false;
	} else return true;
}


function isRequired(FieldControl, fName)
// Verifica que un campo (cualquiera que sea tipo Radio, Text, Select, etc) tenga algn valor distinto de ""
//PARAM1 FieldControl: El nombre del campo HTML
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
 
{	
	//alert (FieldControl);
	//alert (FieldControl.type);
	switch (FieldControl.type) {
		
		case "radio": 
						//alert("len: "+FieldControl.length);
						for(i=0;i<FieldControl.length;i++) {
							if(FieldControl[i].checked) return true;
						}
						alert1("El campo " + fName + " es requerido");
						FieldControl.focus();
						return false;
						break;
		case "text":
		
		case "password":
		
		case "textarea":
		
		case "file":
						if (FieldControl.value.length==0 || !trim(FieldControl.value)) {
							alert1("El campo " + fName + " es requerido");	
							FieldControl.value="";
							FieldControl.focus();
							return false;
						} 	
						break;
		case "hidden":
						if (FieldControl.value.length==0) {
							alert1("El campo " + fName + " es requerido");	
							return false;
						}
						break;
		case "select-one":
		case "select-multiple":
						if (FieldControl.selectedIndex==-1 || FieldControl.selectedIndex=="") {
							alert1("El campo " + fName + " es requerido");	
							FieldControl.focus();
							return false;
						}
						break;
	}
	return true;
}

function isRequiredRadio(FieldName, fName)
// Verifica que un campo (que sea tipo Radio) tenga algn valor distinto de ""
//PARAM1 FieldControl: El  nombre del campo radio
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
 
{	
	//tomamos todos los elementos de ese nombre
	elementos = document.getElementsByName(FieldName);
	//alert (elementos.length);
	for(i=0;i<elementos.length;i++) {
		if(elementos[i].checked) return true;
	}
		alert1("El campo " + fName + " es requerido");
		document.getElementById(FieldName).focus();
		return false;
}

function isRequiredCheck(FieldName, fName)
// Verifica que un campo (que sea tipo check) tenga algn valor chequeado
//PARAM1 FieldControl: El  nombre del campo radio
//PARAM2 fName: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error
 
{	
	//tomamos todos los elementos de ese nombre
	elementos = document.getElementsByName(FieldName);
	//alert (elementos.length);
	for(i=0;i<elementos.length;i++) {
		if(elementos[i].checked) return true;
	}
		alert1("El campo " + fName + " es requerido");
		document.getElementById(FieldName).focus();
		return false;
}

function checkPassword(pass, repass, fName) {
	sText = pass.value;
	sText2 = repass.value;
	if(sText.length==0) {
		alert1("El campo " + fName + " es requerido");
		pass.focus();
		return false;
	} else if (sText2.length==0) {
		alert1("Debe introducir la confirmación del password"); 
		repass.focus();
		return false;
	} else if (sText!=sText2) {
		alert1("La contraseña y la confirmación no coinciden");
		repass.focus();
		return false;
	}
	return true;
}

// Fecha:	Junio de 2004
// Funcion Desplegar. Mens
function desplegar(id,titulo,iconOff, iconOn) {
// Parametros: 	id:	 	id del element en el documento html
//				titulo:	titulo del item
//				iconOff: icono a utilizar cuando no esta desplegada la informacion pueden ser rutas de imagenes
//				iconOn:	 icono a utilizar cuando este desplegada la informacion
					
   // Busqueda del elemento
   obj=document.getElementById(id);
   // Chequea el despliegue
   visible=(obj.style.display!="none");
   text = "";
   if (visible) { 	
   	obj.style.display="none"; 	text = iconOff +" "+ titulo;      
   } else {  
   	obj.style.display="block";    text = iconOn +" "+ titulo;
   }
  // Reescribe el context del <a></a>
  document.getElementById("x" + id).innerHTML = text;
  
// Ejemplo de uso
// <tr>
//	<td><a id="x3" href="#" onClick="desplegar('3','T?ulo','<img src=\'images\\pic_ico_flech_entrar.gif\' border=\'0\'>','<img src=\'images\\pic_ico_flech_up.gif\' border=\'0\'>')"><img src="images\pic_ico_flech_entrar.gif" border="0"> T&iacute;tulo</a></td>
//	</tr>
// <tr id="3" style="display:none"> -- Importante esta sentencia --
//		<td>
//				<table>
//					<tr><td>Link 1</td></tr>
//					<tr><td>Link 2</td></tr>
//					<tr><td>Link 3</td></tr>
//				</table>
//		</td>
//	</tr>
}// function desplegar

// Fecha:	Junio de 2004
// Funcion Element. Registro

function Element(codPadre,codHijo,nombreHijo){
	this.codPadre = codPadre;
	this.codHijo = codHijo;
	this.nombreHijo = nombreHijo;
}//function Element


// Fecha:	Abril de 2009
// Funcion buscaEnArreglo

function buscaEnArreglo(lista,element){
// definicion: Busca si el elemento 'element' se encuentra dentro del arreglo simple 'lista'.
// devuelve true o false, según el caso

	for(i=0;i<=lista.length;i++){
		if (lista[i]==element){
			return true;
		}
	}
	return false;
}


// Fecha:	Junio de 2004
// Funcion onLoadCombo. Selects

function onLoadCombo(cmbOrigen, cmbDestino, aInfo){
// Precondicion: 	cmbOrigen guarda alguna relacion con cmbDestino esta se tienen en el 
//					arreglo aInfo con la informacion de carga para el cmbDestino
//Parametros:		cmbOrigen - Select con la informacion de Origen al cambiar cambia la informacion del
//					cmbDestino - Select
//					aInfo:	arreglo de registrod de la forma Element definida anteriormente					

var i = 0;
var j = 0;

	cmbDestino.length = aInfo.length;
	cmbDestino.options[j] = new Option ('Seleccione.', '-1');
	cmbDestino.options[j].selected=true;
	
	//cmbDestino.options[j].selected=true;
	idToFind = cmbOrigen.options[cmbOrigen.selectedIndex].value;
	while(i<aInfo.length){
		if(idToFind==aInfo[i].codPadre){
			j++; cmbDestino.options[j] = new Option (aInfo[i].nombreHijo, aInfo[i].codHijo);
		}
	i++;
	}	
	cmbDestino.length = j+1;
	

}//function onLoadCombo

// Fecha:	Junio de 2004
// Funcion redimensionarCombo. Selects
function redimensionarCombo(cmb){
//Redimensiona los selects que se cargan de modo dinamico
//Parametros: cmb:	Select a redimensionar
	cmb.length = 1;
	cmb.options[0] = new Option ('Seleccione.', -1);
	
}//function redimensionarCombo


function confirmar_eliminar(texto){
// Envia un alert al usuario indicandole que se va a eliminar una informaci?
// PARAM1 text indica en el mensaje que es lo que se va a eliminar ejemplo: Usuario(s)
// Version :	1.0
// Fecha: 19/08/2004		
	return(confirm1(texto));
}

function validar_password(fPassword1,fPassword2,Nombre1,Nombre2,Caracteres){
// Verifica que una cadena solamente contenga una cantidad de caracteres especifica
// PARAM1 fPassword1: El texto a validar (STRING)
// PARAM2 fPassword2: El texto a validar (STRING)
// PARAM3 Nombre1: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error (STRING)
// PARAM4 Nombre2: El nombre del campo a validar. Este par?etro se utiliza para mostrar el mensaje de error (STRING)
// PARAM5 Caracteres: Cantidad de Caracteres (STRING)
// Version :	1.0
// Fecha: 19/08/2004
// @autor: 
	if (fPassword1.length < Caracteres){
		alert1("El campo "+Nombre1+" debe ser mayor o igual a "+Caracteres);
		fPassword1.focus();
		return false;
	}
	if (fPassword1!=fPassword2){
		alert1("El campo "+Nombre1+" y "+Nombre2+" deben ser iguales");
		fPassword1.focus();
		return false;
	}
	return true;
}

function validar_fechas(date_one,date_two,mensaje){
// Verifica Entre dos Timestamps, uno inicial sea menor a uno final
// PARAM1 $date_one (TIMESTAMP)
// PARAM2 $date_two (TIMESTAMP)
// PARAM3 $mensaje  (STRING)
// Version :	1.0
// Fecha: 19/08/2004
// @autor:    
    anoi=parseInt(date_one.substr(0,4),10);
	anof=parseInt(date_two.substr(0,4),10);
	
	mesi=parseInt(date_one.substr(4,2),10);
	mesf=parseInt(date_two.substr(4,2),10);
	
	diai=parseInt(date_one.substr(6,2),10);
	diaf=parseInt(date_two.substr(6,2),10);

	if (mesi<10){ mesi="0"+mesi; }
	if (mesf<10){ mesf="0"+mesf; }
	if (diai<10){ diai="0"+diai; }
	if (diaf<10){ diaf="0"+diaf; }
	vari=String(anoi)+String(mesi)+String(diai);
	varf=String(anof)+String(mesf)+String(diaf);
   	if (parseInt(vari)>parseInt(varf)){	 
		alert1(mensaje);
		return false;
	}else{
		return true;//true
	}	
}

function FechaValida(date,mensaje) {
// Verifica un Timestamps que sea una fecha valida ejem: 31-02-2004
// PARAM1 $date (TIMESTAMP)
// PARAM3 $mensaje  (STRING)
// Version :	1.0
// Fecha: 26/08/2004
// @autor: 
	
  var fecha=parseInt(date,10)
	
	if ((isNaN(fecha))||(date.length<6)){  
	
		alert1(mensaje);
	 	return false;
	} else { 

  
	aaaa = parseInt(date.substr(0,4),10);
	mm   = parseInt(date.substr(4,2),10);
	dd   = parseInt(date.substr(6,2),10);	
	var feb = 29;
	if((parseInt(aaaa)%4)!=0) feb=28; 
		
	var meses = new Array(31,feb,31,30,31,30,31,31,30,31,30,31); 

	if(parseInt(dd) > meses[parseInt(mm)-1]){
	  
		alert1(mensaje);
	 	return false;
	}else{
		return true;			
	}
	}
}//function FechaValida


function validaFecha(fecha,oblig) {
// Validauna fecha de formato: dd/mm/aaaa 
// PARAM1 $fecha(elemento contentor de la fecha fecha texto en formato dd/mm/aaaa)
// Version :	1.0
// Fecha: 04/03/08
// @autor: FGM
	
  
    //alert(fecha);
	if (oblig){
		if ((fecha.length<10 || fecha.length>10)){  
			alert1("Introduzca una fecha válida (dd/mm/aaaa)");
			return false;
		} else if (fecha.length>0 && fecha.length==10){ 
			aaaa = parseInt(fecha.substr(6,4),10);
			mm   = parseInt(fecha.substr(3,2),10);
			dd   = parseInt(fecha.substr(0,2),10);	
			var feb = 29;
			if((parseInt(aaaa)%4)!=0) feb=28; 
			var meses = new Array(31,feb,31,30,31,30,31,31,30,31,30,31); 
			if((parseInt(dd) > meses[parseInt(mm)-1]) || (parseInt(mm)>12)){
				alert1("Introduzca una fecha válida (dd/mm/aaaa)");
				return false;
			} else {
				return true;			
			}
		} else if (fecha.length>0 && fecha.length!=10){
			alert1("Introduzca una fecha válida (dd/mm/aaaa)");
			return false;
		} else {
			return true;
		}
	} else if (fecha.length>0){
		if (fecha.length!=10){
			alert1("Introduzca una fecha válida (dd/mm/aaaa)");
			return false;
		} else if (fecha.length==10){ 
			aaaa = parseInt(fecha.substr(6,4),10);
			mm   = parseInt(fecha.substr(3,2),10);
			dd   = parseInt(fecha.substr(0,2),10);	
			var feb = 29;
			if((parseInt(aaaa)%4)!=0) feb=28; 
			var meses = new Array(31,feb,31,30,31,30,31,31,30,31,30,31); 
			if((parseInt(dd) > meses[parseInt(mm)-1]) || (parseInt(mm)>12)){
				alert1("Introduzca una fecha válida (dd/mm/aaaa)");
				return false;
			} else {
				return true;			
			}
		}
	} else {
		return true;
	}
}//function ValidaFecha

function validaHora(hora,oblig) {
// Valida una hora de formato: 00:00:00
// PARAM1 hora (elemento contentor de la hora texto en formato 00:00:00)
// Version :	1.0
// Fecha: 04/03/08
// @autor: FGM
  
	if (oblig && (hora.length!=8)){  
		alert1("Introduzca una hora válida (00:00:00)");
		return false;
	} else if (hora.length>0 && (hora.length==8)){
		hh = parseInt(hora.substr(0,2),10);
		mi = parseInt(hora.substr(3,2),10);
		ss = parseInt(hora.substr(6,2),10);
		if (isNaN(hh) || isNaN(mi) || isNaN(ss) || hh>23 || mi>59 || ss>59){
			alert1("Introduzca una hora válida (00:00:00)");
			return false;
		} else {
			return true;			
		}
	} else if (hora.length>0){
		alert1("Introduzca una hora válida (00:00:00)");
		return false;
	} else {
		return true;
	}
}//function validaHora


function validaFechaHora(fecha,oblig) {
// Validauna fecha de formato: dd/mm/aaaa 00:00:00
// PARAM1 $fecha(elemento contentor de la fecha fecha texto en formato dd/mm/aaaa 00:00:00)
// Version :	1.0
// Fecha: 04/03/08
// @autor: FGM
  
  	//alert ('entre a funcion');
	if (oblig && (fecha.length<19 || fecha.length>19)){  
		alert1("Introduzca una fecha-hora válida (dd/mm/aaaa 00:00:00)");
		return false;
	} else if (fecha.length>0 && (fecha.length==10 || fecha.length==19)){
		aaaa = parseInt(fecha.substr(6,4),10);
		mm   = parseInt(fecha.substr(3,2),10);
		dd   = parseInt(fecha.substr(0,2),10);
		if (fecha.length==19){
			hh = parseInt(fecha.substr(11,2),10);
			mi = parseInt(fecha.substr(14,2),10);
			ss = parseInt(fecha.substr(17,2),10);
		} else {
			hh = 0;
			mi = 0;
			ss = 0;
		}
		var feb = 29;
		if((parseInt(aaaa)%4)!=0) feb=28; 
		var meses = new Array(31,feb,31,30,31,30,31,31,30,31,30,31); 
		if(isNaN(dd) || isNaN(mm) || isNaN(aaaa) || (parseInt(dd) > meses[parseInt(mm)-1]) || (parseInt(mm)>12)){
	  		alert1("Introduzca una fecha-hora válida (dd/mm/aaaa 00:00:00)");
			return false;
		} else if (isNaN(hh) || isNaN(mi) || isNaN(ss) || hh>23 || mi>59 || ss>59){
			alert1("Introduzca una fecha-hora válida (dd/mm/aaaa 00:00:00)");
			return false;
		} else {
			return true;			
		}
	} else if (fecha.length>0 && (fecha.length<10 || fecha.length>19)){
		alert1("Introduzca una fecha-hora válida (dd/mm/aaaa 00:00:00)");
		return false;
	} else {
		return true;
	}
}//function validaFECHAHORA

function formatoFechaBD(date) {
// Cambia una fecha de formato: dd/mm/aaaa al formato fecha: aaaa-mm-dd
// PARAM1 $date (fecha texto en formato dd/mm/aaaa)
// Version :	1.0
// Fecha: 04/03/08
// @autor: FGM
	
  	if (date.length<10 || date.length>10){  
		return false;
	} else { 
		aaaa = date.substr(6,4);
		mm   = date.substr(3,2);
		dd   = date.substr(0,2);	
		nvafecha= aaaa+'-'+mm+'-'+dd;
 		return nvafecha;
	}
}//function formatoFechaBD

function formatoFechaHora(date) {
// Cambia una fecha de formato: aaaa-mm-dd 00:00:00  al formato: dd/mm/aaaa 00:00:00
// PARAM1 $date (fecha texto en formato aaaa-mm-dd 00:00:00)
// Version :	1.0
// Fecha: 04/03/08
// @autor: FGM
	alert1("len"+date.length);
  	if (date.length<19 || date.length>19){  
		return "fecha inválida";
	} else { 
		aaaa = date.substr(0,4);
		mm   = date.substr(5,2);
		dd   = date.substr(8,2);
		hora = date.substr(11,8);
		nvafecha= dd+'/'+mm+'/'+aaaa+" "+hora;
 		return nvafecha;
	}
}//function formatoFechaHora

function formatoFechaHoraBD(date) {
// Cambia una fecha de formato: dd/mm/aaaa 00:00:00 al formato:  aaaa-mm-dd 00:00:00
// PARAM1 $date (fecha texto en formato dd/mm/aaaa 00:00:00)
// Version :	1.0
// Fecha: 04/03/08
// @autor: FGM
	alert1("len"+date.length);
  	if (date.length<19 || date.length>19){  
		return "fecha inválida";
	} else { 
		aaaa = date.substr(6,4);
		mm   = date.substr(3,2);
		dd   = date.substr(0,2);
		hora = date.substr(11,8);
		nvafecha= aaaa+'-'+mm+'-'+dd+" "+hora;
 		return nvafecha;
	}
}//function formatoFechaHoraBD

function changeDate(parte,valor, destino){
// Construye el valor de la fecha en formato yyyymmddhhmmss
// Param: parte = parte de la fecha a tratar
// Param: valor = valor asignado a esa parte de la fecha
// Param destino = campo ocultop donde se almacena la fecha con el formato
// Autor :  

switch(parte.toUpperCase()){
	
	case "YYYY" :    
				destino.value = valor.value + destino.value.substring(4);	
		  	break;    
		  
	case "MM" :    
		  		destino.value = destino.value.substring(0,4) + valor.value + destino.value.substring(6);		
		  	break;    

	case "DD" :    
		  		destino.value = destino.value.substring(0,6) + valor.value + destino.value.substring(8);		
			break;    
	
	case "HH" :    
				destino.value = destino.value.substring(0,8) + valor.value + destino.value.substring(10);
		  	break;    
		  
	case "MIN" :  
				destino.value = destino.value.substring(0,10) + valor.value + destino.value.substring(12);  
		  break;    

	case "SS" :    
				destino.value = destino.value.substring(0,12) + valor.value ;
		  break;    

	
}//fswitch

}//function changeDate

function disableAll(form){
	var n=document.forms[form].elements.length;
	var elem=document.forms[form].elements;
	for(i=0;i<n;i++){
		if(elem[i].type!="button" && elem[i].type!="submit" && elem[i].name!='_coment_edit')
			elem[i].disabled=true;
	}
}

function disableAll_2(form){
	var n=document.forms[form].elements.length;
	var elem=document.forms[form].elements;
	for(i=0;i<n;i++){
		elem[i].disabled=true;
	}
}

function makeTime(fhora,fminutos,fhorario,fhidden){
	var hora=fhora[fhora.selectedIndex].value;
	var minutos=fminutos[fminutos.selectedIndex].value;
	var horario=fhorario[fhorario.selectedIndex].value;
	
	if(horario>0) hora=parseInt(hora)+12;
	if(hora<10) hora="0"+hora;
	if(minutos<10) minutos="0"+minutos;
	
	fhidden.value=hora+minutos+"00";
	return true;
}

function makeDate(ffecha,fname,req,faux){
	faux.value=ffecha.value;
	var validate=true;
	if(req) validate=isRequired(ffecha,fname);
	
	if(validate){
		var fecha=ffecha.value;
		//quitar los /
		if(fecha!="" && fecha.indexOf('/')>=0){
			while(fecha!=fecha.replace('/','')) fecha=fecha.replace('/','');
			var dia=fecha.substring(0,2);
			var mes=fecha.substring(2,4);
			var agno=fecha.substring(4);
		
			ffecha.value=agno+mes+dia;
		}
		return true;
	}
	return false;
}

function makeDateTime(ffecha,fname,fhora,fminutos,fhorario,req,faux){
	faux.value=ffecha.value;
	var validate=true;
	if(req) validate=isRequired(ffecha,fname);
	
	if(validate){
		var fecha=ffecha.value;
		//quitar los /
		if(fecha!="" && fecha.indexOf('/')>=0){
			while(fecha!=fecha.replace('/','')) fecha=fecha.replace('/','');
			var dia=fecha.substring(0,2);
			var mes=fecha.substring(2,4);
			var agno=fecha.substring(4);
		
			ffecha.value=agno+mes+dia;
		}
		
		var hora=fhora[fhora.selectedIndex].value;
		var minutos=fminutos[fminutos.selectedIndex].value;
		var horario=fhorario[fhorario.selectedIndex].value;
		
		if(horario>0) hora=parseInt(hora)+12;
		if(hora<10) hora="0"+hora;
		if(minutos<10) minutos="0"+minutos;
		
		ffecha.value+=hora+minutos+"00";
		return true;
	}
	return false;
}

function rollBack(a,b){
	a.value=b.value;
	return false;
}
// ajax functions
function createRequest(){
	var http_request=false;
	if(window.XMLHttpRequest){ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	}else if(window.ActiveXObject){ // IE
		try{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){}
		}
	}
	return http_request;
}

function makeRequest(url,function_handler,type,xx) {
	var http_request = createRequest();
	
	if (!http_request) {
		alert1('Falla :( No es posible crear una instancia XMLHTTP');
		return false;
	}
	http_request.onreadystatechange = function (){
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				var doc = null;
				
				if(type == 'xml')doc = http_request.responseXML;
				else doc = http_request.responseText;
				
				function_handler(doc,xx);
			}else{
				alert1('Hubo problemas con la petición-Error: '+http_request.status);
			}
		}
	}
	http_request.open('GET', url, true);
	http_request.send(null);
}