// JavaScript Document
function objAjax11()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false; 
	try 
	{ 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// Creacion del objet AJAX para IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}

function ajaxObject(){

	this.idLoading = 1;
	this.xLoadString = 'Cargando Datos...';
	this.xloadWheel  = 'ajax-loader-1.gif';
	this.xloadClass  = 'defaultLoading';
	
	this.errores = new Array();
	
	this.ultimaAreaAbierta = null;
	
	this.areaBanners = new Array();
	this.idAreaBanner = new Array();
	this.lastRandomRequest = new Array();
	
	this.objAjax = function(){
		//req = false;
		// branch for native XMLHttpRequest object
		if(window.XMLHttpRequest && !(window.ActiveXObject)) {
			try {
				xmlhttp = new XMLHttpRequest();
			} catch(e) {
				xmlhttp = false;
			}
		// branch for IE/Windows ActiveX version
		} else if(window.ActiveXObject) {
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {
					xmlhttp = false;
				}
			}
		}
		/*if(req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send("");
		}*/
		return xmlhttp;
	}
	
	this.ajax_build_submit = function(objForm, url, _divId){
			//if(!_divId) var _divId = "_ajax_operacion";
			var loading = true;
			var xString = "";
			var submitDisabledElements = false;
			if (arguments.length > 1 && arguments[1] == true)
				submitDisabledElements = true;
			var prefix = "";
			if(arguments.length > 2)
				prefix = arguments[2];
			var z=0;
			this.tdRefresh = new Array();

			var first = true;
			
			if (objForm)
			{
				var formElements = objForm.elements;
				for( var i=0; i < formElements.length; i++)
				{
					if (!formElements[i].name)
						continue;
					if (formElements[i].type && (formElements[i].type == 'radio' || formElements[i].type == 'checkbox') && formElements[i].checked == false)
						formElements[i].value = 0; 
						//continue;
					if (formElements[i].disabled && formElements[i].disabled == true && submitDisabledElements == false)
						continue;
					var name = formElements[i].name;
					if (name)
					{
						if (formElements[i].title)
							this.validarCampo(formElements[i]); // Validar Formulario
						
						if (first != true)
						xString += '&';
						if(formElements[i].type=='select-multiple')
						{
							for (var j = 0; j < formElements[i].length; j++)
							{
								if (formElements[i].options[j].selected == true)
									xString += name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";
							}
						}
						//else if(formElements[i].type=='checkbox'){
							
						//}
						else
						{
							//alert(z);
							//if (formElements[i].title){ alert(formElements[i].value); this.tdRefresh[z] = formElements[i].value; }
							if (formElements[i].name == "_rowId") this._rowId = formElements[i].value;
							xString += name+"="+encodeURIComponent(formElements[i].value);
							//z++;
						}
						first = false;
					} 
				}
			}
		
		if (this.errores.length>0){
			this.stopRequest(); return false;
		} else
			this.ajax_submit(xString, url, _divId, loading);
		
		return false;

	}
	
	this.ajax_submit = function(xString, url, _divId, loading){
		// _r = objeto XMLHttpRequest
		var _r = this.objAjax();				
		_r.open("POST", url, true);	
		
		var objId = this.e(_divId);
		
		_r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		_r.onreadystatechange = function () { ajax.handleResponse(_r,objId,loading); }
		_r.send(xString);
	}
	
	this.handleResponse = function(_r,objId,loading){
		
			if (_r.readyState==1 && loading) {
				objId.innerHTML = ajax.loadingTypes(loading);
			}		
			
			if (_r.readyState == 4) {
					
				objId.innerHTML = _r.responseText;
				
				//-- Ejecutar scripts luego de cargar Ajax
				var scs = _r.responseText.extractScript();   
				objId.innerHTML = _r.responseText.stripScript();  
				scs.evalScript();
				//-->
			}
	}

	this.ajax_get_submit = function(_divId, url, loading){
				
		var rand = Math.random();
		
		if (url){
			var append = url.indexOf("?");
			if(append == -1) url = url+"?rand="+rand;
			else url = url+"&rand="+rand;
		}

		var objId = this.e(_divId);

		var _r = this.objAjax();				
		_r.onreadystatechange = function(){ ajax.handleResponse(_r,objId,loading); }
		_r.open("GET", url, true);	
		_r.send(null);
	}

	this.ajax_cargar_div = function(_divId, _regId, url, loading, hide, _rowId, _cerrarElemento){
		if (_cerrarElemento){ this.cerrarElemento(_divId); }
		this.mostrar(_divId, _regId);
		this.ajax_get_submit(_divId, url, loading);
	}	

	this.loadingTypes = function(xType){
			//var xWidth  = (screen.width/2)-100;
			//var xHeight = (screen.height/2)-100;
			//LeftPosition=(screen.width)?(screen.width-800)/2:100; 
			switch(xType){
				case '2':
					var loadingString = '<div id="ajaxLoading02"> Cargando Contenido...</div>';
						break;
				default:
					var loadingString = '<div id="ajaxLoading01"></div>';
			}
	
		return loadingString;
	}

	/* evalscript, luego de llamar ajax, ejecutar los javascripts que contenga el archivo */
		
	var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
		//var tagScript = '/&lt;script&gt;([\s\S]*?)<\/script>/gi';
		/**
		* Eval script fragment
		* @return String
		*/
		
		String.prototype.evalScript = function()
		{
				return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
		};
		
		/**
		* strip script fragment
		* @return String
		*/
		
		String.prototype.stripScript = function()
		{
				return this.replace(new RegExp(tagScript, 'img'), '');
		};
		
		/**
		* extract script fragment
		* @return String
		*/
		
		String.prototype.extractScript = function()
		{
				var matchAll = new RegExp(tagScript, 'img');
				return (this.match(matchAll) || []);
		};
		
		/**
		* Eval scripts
		* @return String
		*/		
		
		Array.prototype.evalScript = function(extracted)
		{
				var s=this.map(function(sr){
										
						 var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
	
						try{
						  if (!sc)
							  return;      
						   if (window.execScript){
							   //alert(sc);
						   	   window.execScript( sc.replace(/^<!--/,"").replace(/-->$/, ""));
						   }else if(window.jQuery && jQuery.browser.safari){ // safari detection in jQuery
							   window.setTimeout( sc, 0 );
						   }else{
							   
							   window.setTimeout( sc, 0 );
						   }
						}catch(e){
							alert(e.message)
						}
				});
				return true;
		};

		/**
		* Map array elements
		* @param {Function} fun
		* @return Function
		*/
		
		Array.prototype.map = function(fun)
		{
				if(typeof fun!=="function"){return false;}
				var i = 0, l = this.length;
				for(i=0;i<l;i++)
				{
						fun(this[i]);
				}
				return true;
		};
		

	/* -- fin evalscript */
	
	this.ajax_actualizar = function(){
		return true;		
	}

	
	this.e = function(_divId){
		if (!_divId)
			return null;
			
		var returnObj = document.getElementById(_divId);
		if (!returnObj && document.all) {
			returnObj = document.all[_divId];
		}
		
		return returnObj;
	}		
	
	this.mostrar = function(_divId, _regId){
		var v_div = this.e(_divId);		
		
		if(!v_div) return false;
			if (v_div.style.display == 'none') 
				v_div.style.display = '';
		
		/*if (_regId)
			document.location.hash = "#"+_regId;
		*/
	}
	
	this.ocultar = function(_divId){
		var v_div = this.e(_divId);
		if (v_div){
			if (v_div.innerHTML) v_div.innerHTML = "";
			else if (v_div.value) v_div.value = "";
			
			v_div.style.display = "none";
		} else 
			return false;
	}
	
	this.cerrarElemento = function(_divId){		
		v_div = this.e(this.ultimaAreaAbierta);
		
		if (v_div){
			if (v_div.innerHTML) v_div.innerHTML = "";
			else if (v_div.value) v_div.value = "";
			
			v_div.style.display = 'none';
		}
		
		this.ultimaAreaAbierta = _divId;
		
	}
		
	this.ajax_get_submit_iframe = function(_divId, url, loading){
		
		var rand = Math.random();
		var iframe = "";
		
		if (url){
			var append = url.indexOf("?");
			if(append == -1) url = url+"?rand="+rand;
			else url = url+"&rand="+rand;
		}
		_r = this.objAjax();				
		_r.open("GET", url, true);	
		_r.onreadystatechange = function(){ 
			if (loading){
				if (_r.readyState==1) {
					document.getElementById(_divId).innerHTML = this.loadingString;
				}
			}
			if (_r.readyState==4) {
				iframe += '<div align="right" class="_transparentTituloEditor"><a href="javascript:void(0);" onclick="ajax.ocultar(\'_editorTextoContenido\')">Cerrar Ventana [x]</a></div>';
				iframe += '<iframe allowtransparency="1" frameborder="0" scrolling="no" class="_iframeEditor" src='+url+'></iframe>';
				document.getElementById(_divId).innerHTML = iframe;					
				
				var scs = _r.responseText.extractScript();   
				_divId.innerHTML = _r.responseText.stripScript();  
				scs.evalScript();      												
			} 
		}
		_r.send(null);
	}
	
	/* Funciones Generales */
	
	this.show_hide = function(_divId){
		if (document.getElementById(_divId)){		
			v_div = document.getElementById(_divId);
			if (v_div.style.display == 'none') 
				v_div.style.display = '';
			else
				v_div.style.display = 'none';
		}
	}

	this.show_hide_float = function(_divId, width, height){

		if (this.e(_divId)){		
			v_div = this.e(_divId);
			if (v_div.style.display == 'none') 
				v_div.style.display = '';
			else
				v_div.style.display = 'none';
		
			if(width) { var left = (screen.width/2) - width/2; v_div.style.left = left+'px'; }
			if(height) { var top = (screen.height/2) - height/2; v_div.style.top = top+'px'; }
		
		}
	}

	this.ajax_eliminar = function(_divId, url, msj) {	
		if (confirm(msj)) {
			var loading = true;
			this.ajax_get_submit(_divId, url, loading);
		} return false;
	}
	
	this.validarCampo = function(myObj){
		
		/* 
			typeVal Values 
			0: default
			1: chequear Entero
			3: chequear Email Valido
			4: chequear Fecha
		*/

		var req; var type; var objLen; var typeVal; var myVal;
		
		var args = myObj.title.split(',');
		
		if (args[1] == "req") req = true; else req = false;
		
		myVal 	= myObj.value;		
		type 	= myObj.type;
		typeVal = args[0];
		myTitle = args[2];
				
		switch(type){
			
			case 'text' || 'password' || 'hidden': 
				
				if (req&&myObj.value.length==0){this.addError(myTitle);return;}
			
				if (myObj.value.length>0){
					switch(typeVal){
						case '1':
							if( !(parseInt(myVal).toString() == myVal) || myVal<1)this.addError(myTitle);
						break;
						case '3':
							var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myVal))this.addError(myTitle);
						break;
						case '4':
							 var dd = this.isDate(myVal, myTitle); 
						break;
						case '6':
							var myObjCompare = this.e(args[1]);
							if(myVal!=myObjCompare.value){this.addError(myTitle)}					
						break;
						case '7':
							var myObjCompare = this.e(args[1]);
							if(!myObjCompare.value&&!myVal)return;
							else if(myVal<myObjCompare.value){this.addError(myTitle)}
						break;
					}
				}
			break;
			
			case 'textarea': if (req&&myObj.value.length==0){this.addError(myTitle);return;}
			break;
			
			case 'select-one': if (req&&myObj.value==0){this.addError(myTitle);}
			break;
			
		}
		
	}

	/**
	 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	 */
	// Declaring valid date character, minimum year and maximum year
	this.dtCh= "/";
	this.minYear=1900;
	this.maxYear=2100;

	this.isInteger = function(s){
		var i;
		for (i = 0; i < s.length; i++){   
			// Check that current character is number.
			var c = s.charAt(i);
			if (((c < "0") || (c > "9"))) return false;
		}
		// All characters are numbers.
		return true;
	}

	this.stripCharsInBag = function(s, bag){
		var i;
		var returnString = "";
		// Search through string's characters one by one.
		// If character is not in bag, append to returnString.
		for (i = 0; i < s.length; i++){   
			var c = s.charAt(i);
			if (bag.indexOf(c) == -1) returnString += c;
		}
		return returnString;
	}

	this.daysInFebruary = function(year){
		// February has 29 days in any year evenly divisible by four,
		// EXCEPT for centurial years which are not also divisible by 400.
		return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}

	this.DaysArray = function(n) {
		var arrTemp = new Array();
		for (var i = 1; i <= n; i++) {
			arrTemp[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {arrTemp[i] = 30}
			if (i==2) {arrTemp[i] = 29}
	   } 
	   return arrTemp;
	}

	this.isDate = function(dtStr, myTitle){
		var daysInMonth = this.DaysArray(12)
		var pos1=dtStr.indexOf(this.dtCh)
		var pos2=dtStr.indexOf(this.dtCh,pos1+1)
		/*
		var strMonth=dtStr.substring(0,pos1)
		var strDay=dtStr.substring(pos1+1,pos2)
		*/
		var strDay=dtStr.substring(0,pos1)
		var strMonth=dtStr.substring(pos1+1,pos2)
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
		if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
		if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
		for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		month=parseInt(strMonth)
		day=parseInt(strDay)
		year=parseInt(strYr)
		
		
		
		if (pos1==-1 || pos2==-1){
			this.addError(myTitle + ": El formato de la fecha debe ser : dd/mm/aaaa")
			return false
		}
		if (strMonth.length<1 || month<1 || month>12){
			this.addError(myTitle + ": Ingresar un mes válido")
			return false
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>this.daysInFebruary(year)) || day > daysInMonth[month]){
			this.addError(myTitle + ": Ingresar un día válido")
			return false
		}
		if (strYear.length != 4 || year==0 || year<this.minYear || year>this.maxYear){
			this.addError(myTitle + ": Ingresar un año de 4 dígitos válido entre "+this.minYear+" y "+this.maxYear)
			return false
		}
		if (dtStr.indexOf(this.dtCh,pos2+1)!=-1 || this.isInteger(this.stripCharsInBag(dtStr, this.dtCh))==false){
			this.addError(myTitle + ": Ingresar una fecha válida")
			return false
		}
	
	//return;
	}
	
	this.addError = function(title){
		
		var l = this.errores.length;
		this.errores[l] = title;
		
	}
	
	this.stopRequest = function(){
		
		var l = this.errores.length;
		var z = 0;
		var xStringErrores = "Error: Favor revisar el formulario y corregir los siguientes errores: \n\n";

		if (l>0){
			
			for(z=0;z<l;z++){
				xStringErrores += "* "+this.errores[z]+"\n";
			}
		}
		
		alert(xStringErrores);
		this.errores = new Array();
	}
	
	this.addArea = function(id,url,timeout,autostart){
		var x = this.areaBanners.length;
		this.areaBanners[x] = new Array();
		this.areaBanners[x]['0_id'] = id;
		this.areaBanners[x]['0_timeout'] = timeout;
		this.areaBanners[x]['0_url'] = url;
		this.areaBanners[x]['0_auto_start'] = autostart;
	}
	
	this.startAutoRequest = function(){

		if(this.areaBanners.length<1) return false;

		var k = this.areaBanners.length;
		var x = 0;
		var tmpData = Array(); tmpData['0_id'] = '';

		for(x=0;x<k;x++){
			tmpData = this.areaBanners[x];
			
			if(tmpData['0_auto_start']){
				
				if(tmpData['0_timeout']>0)
					this.idAreaBanner[tmpData['0_id']] = setInterval("ajax.ajax_get_submit('"+tmpData['0_id']+"','"+tmpData['0_url']+"','"+this.idLoading+"')",tmpData['0_timeout']);
				if(x==0){ this.lastRandomRequest[0] = tmpData['0_id']; }
				
				this.ajax_get_submit(tmpData['0_id'],tmpData['0_url'],this.idLoading);
			}
		}
		/*
		a = setInterval("sendRequest('"+id1+"')",1000);
		b = setInterval("sendRequest('"+id2+"')",5000);
		c = setInterval("sendRequest('"+id3+"')",10000);
		*/
	}	
	
	this.stopAutoRequest = function(id_area){
		clearInterval(this.idAreaBanner[id_area]);
		this.idAreaBanner[id_area] = null;
	}
	
	this.toggleRequest = function(id_area){
				
		if(this.lastRandomRequest[0]) clearInterval(this.lastRandomRequest[0]);
		
		this.stopAutoRequest(id_area);
		
		var tmpData = this.areaBanners[id_area];

		this.idAreaBanner[id_area] = setInterval("ajax.ajax_get_submit('"+tmpData['0_id']+"','"+tmpData['0_url']+"','"+this.idLoading+"')",tmpData['0_timeout']);
	}

	/* Funciones Especiales */
	
	/* Transdoc.com.gt */
	
	this.ultimoDivPaisesAbierto = 'lista-general-paises-default';

	this.mostrar_div_paises = function(_divId, _cerrarElemento){
		if (_cerrarElemento){ this.cerrarDivPaises(_divId); }
		var _regId = false;
		this.mostrar(_divId, _regId);
	}	

	this.jumpMenu = function(selObj,restore){ //v3.0
	  //eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
	  var divStr = 'lista-general-paises-'+selObj.options[selObj.selectedIndex].value;
	  this.mostrar_div_paises(divStr, true);
	  //if (restore) selObj.selectedIndex=0;
	}
	
	this.setUltimoPais = function(p_id){
		this.ultimoDivPaisesAbierto = 'lista-general-paises-'+p_id;
	}

	this.cerrarDivPaises = function(_divId){
		v_div = this.e(this.ultimoDivPaisesAbierto);
		
		if (v_div){
			v_div.style.display = 'none';
		}
		
		this.ultimoDivPaisesAbierto = _divId;
		
	}

	/* Fin funciones especiales Transdoc.com.gt */

	this.checkAll = function(chk) {
		for(i=0;ele=chk.form.elements[i];i++)
		if(ele.type=='checkbox')
		  ele.checked=chk.checked;
	} 
	
	this.changeStyleButton = function(Obj,bk){
		Obj.style.backgroundPosition = bk;
	}
	
	this.MMCopy = function(HolderId, Element)
	{
		var mmax = 13;

		var ccopy = this.e(Element);
		var nid = Math.floor(Math.random()*1000000)
		var np = document.createElement('p'); np.setAttribute("id", nid); np.setAttribute("class", "noWrap");
		np.innerHTML = ccopy.innerHTML
		var hhold = this.e(HolderId); 
		
		var x1 = hhold.childNodes.length;
	
		if(x1 < 10)
		{
		
			var nspan = document.createElement('span');
			nspan.innerHTML = '<a href="javascript:void(0);" onclick="ajax.MMDelete(\''+HolderId+'\',\''+nid+'\')">[x] </a>';
			np.appendChild(nspan);
			
			hhold.appendChild(np);
		
		}
	}
	
	this.MMDelete = function(HolderId, Element)
	{
		var ddel  = this.e(Element);
		var hhold = this.e(HolderId); hhold.removeChild(ddel);
	}

	this.keepAlive = function(imgName) 
	{
	 myImg = this.e(imgName);
	 if (myImg) myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
	}
	
	this.intervalKeepAlive = function()
	{
		window.setInterval("ajax.keepAlive('kaimg__')", 100000);
	}

}
var ajax = new ajaxObject();

function filtroBusqueda(){

	/* Funciones Filtro de Busqueda (FB) */

	//this.seccionesFB  = new Array('FB01-AD','FB02-Salario','FB03-Puesto','FB04-Edad');
	this.classBotones = new Array('filtro-btn-seleccionado','filtro-btn-normal');
	this.ultimoBtnSeleccionado = 'FB-btn-Areas';
	this.ultimaSeccionAbierta  = 'FB01-AD';
	
	this.showHideSeccionesFB = function(Obj,_divId){
		for(x=0;x<this.seccionesFB.length;x++){
			if(this.seccionesFB[x]==_divId)
				this.mostrar(Obj,this.seccionesFB[x])
			else
				this.ocultar(Obj,this.seccionesFB[x])
			
		}
	}

	this.mostrar = function(Btn,_divId){
		var obj_div = ajax.e(_divId);
		if(obj_div){
			if (obj_div.id == this.ultimaSeccionAbierta&&Btn.id == this.ultimoBtnSeleccionado) return false;
			obj_div.style.display = '';
			Btn.className = this.classBotones[0];
			this.changeState(Btn,_divId);
			
		} else
			return false;
	}
	
	this.changeState = function(Btn,_divId){
		this.ocultar(this.ultimoBtnSeleccionado,this.ultimaSeccionAbierta);
		this.ultimoBtnSeleccionado = Btn.id;
		this.ultimaSeccionAbierta = _divId;
	}
	
	this.ocultar = function(Btn,_divId){
		var obj_div = ajax.e(_divId);
		var obj_btn = ajax.e(Btn);
		
		if (obj_btn&&obj_div){
			obj_div.style.display = "none";
			obj_btn.className = this.classBotones[1];
		} else 
			return false;
	}
		

}

var fb = new filtroBusqueda();