//LIBRERIA DE FUNCIONES PARA ASOIFA

/** 
  * Funcion: checkField
  * Realizado por: Ernesto Herrera
  * Version Final: 07/02/2007
  * Descripcion:	Validar que el Largo Min y Max de un campo sea el necesario	
  * Y el tipo de Campo sea el necesario:
  * 's'-String,'t'-Telefono,'e'-Email,'a'-Alfanumerico
  * 'cualquier caracter'-Numerico
  * PARAMETROS DE ENTRADA: str(Cadena de Caracteres), lnm(Cant. min. de car.)
  * 					  lnM(Cant. max. de car.), tip(Tipo de Campo)
  * 					  msg(Mensaje a emitir cuando el campo este vacio)
  * SALIDA: true(se cumplen todas las verificaciones),	false
  */
function checkField(ObjF, lnm, lnM, tip, msg, name){
  var str = ObjF.value;
  var sw  = true;
  if (name==undefined) name='';
  if (str.length==0){
	alert(msg);
	sw=false;
  }else{
    if (lnm!=lnM){
		if ((str.length<lnm)&&(lnm!=0)){
		   alert('El largo del campo '+name+' tiene que ser mayor a ' + lnm + ' caracteres.');
		   sw=false;
		}else{
		  if ((str.length>lnM)&&(lnM!=0)){
			alert('El largo del campo '+name+' tiene que ser menor a ' + lnM + ' caracteres.');
		    sw=false;
		  }else
			if (tip!=0)	sw=IsField(str,tip,name,ObjF);
		}
	}else{
		if ((str.length!=lnM)&&(lnm!=0)){
			alert('El largo del campo '+name+' tiene que ser igual a ' + lnM + ' caracteres.');
		    sw=false;
		}else
			if (tip!=0)	sw=IsField(str,tip,name,ObjF);
	}
  }
  if (!sw) PutFocus(ObjF);
  return sw;
}

/**
  * Funcion: IsField
  * Realizado por: Ernesto Herrera
  * Version Final: 07/02/2007
  * Descripcion: Validar el tipo de Campo
  * 's'-String,'t'-Telefono,'e'-Email,'a'-Alfanumerico
  * 'n'-Numerico Entero, 'f'-Numerico Flotante
  * PARAMETROS DE ENTRADA: str(Cadena de Caracteres), tip(Tipo de Campo), name(Nombre del Campo), objC()Objeto del campo
  * SALIDA: true(se cumple la verificacion),	false
  */
function IsField(str,tip,name,ObjF){
	var nbs   = "1234567890";
	var ltr   = "abcdefghijklmnñopqrstuvwxyzÁÉÍÓÚáéíóúABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
	var otrs  = ".,;:#=@¡¿?!#$%&<>()[]{} _+-*//";
	var tp	  = "";
	var strch = "";
	switch (tip){
		case 's'  : tp='Letra'    	 ;strch = ltr + " "			; break;
		case 'n'  : tp='Num\u00e9rico'    ;strch = nbs				; break;
		case 'f'  : tp='Num\u00e9rico'    ;strch = nbs +",."			; break;
		case 't'  : tp='Tel\u00e9fono'    ;strch = nbs + "-/."		; break;
		case 'e'  : tp='Email'       ;strch = nbs + ltr + "_@."	; break;
		case 'a'  : tp='Alfanum\u00e9rico';strch = nbs + ltr + otrs	; break;
		case 'rif': tp='Rif'		 ;strch = nbs + "JGVEWI"	; break;
		case 'ci' : tp='CI'		 	 ;strch = nbs + "VEP"		; break;
		case 'vp' : tp='VP'		 	 ;strch = nbs + "VP"		; break;
		case 'aux': strch = ltr		 ; break;
		default:   return true;
	}
	str 	 = str.toUpperCase();
	var msgL = 'El campo '+name+' tiene que ser de tipo ' + tp + '.'
	for (var x=0;x<str.length;x++){
		if((strch.indexOf(str.substring(x, x+1)))<0){
			if (tip!='aux') alert(msgL);
			return false;
		}
	}
	if(tip=='f'){
		var chkF;
		str = str.replace(/\./g, ",");
		if((str.indexOf(','))>0){
			chkF = str.split(',');
			if (chkF.length>2){
				alert(msgL);return false;
			}else{
				if (chkF.length==2){
					if (isNaN(chkF[0])) {alert(msgL);return false;}
					if (isNaN(chkF[1])) {alert(msgL);return false;}
				}
			}
		}
		ObjF.value = str;
	}
	if(tip=='vp'){
		var strvp = str.substr(2);
		if((str.indexOf('VP'))<0){
			alert(msgL);return false;
		}else{
			if (isNaN(strvp)) {alert(msgL);return false;}
		}
	}
	if(tip=='rif'){
		var strrif = str.substr(1);
		if(((str.indexOf('J'))<0)&&((str.indexOf('G'))<0)&&((str.indexOf('V'))<0)&&((str.indexOf('E'))<0)&&((str.indexOf('W'))<0)&&((str.indexOf('I'))<0)){
			alert(msgL);return false;
		}else{
			if (isNaN(strrif)) {alert(msgL);return false;}
		}
	}
	if(tip=='e'){
		if(((str.indexOf('@'))<0)||((str.indexOf('.'))<0)){
			alert(msgL);return false;
		}
		if(((str.indexOf('@.'))<0)&&((str.indexOf('@'))!=0)&&(IsField(str.substring(0,1),'aux',name,ObjF))){
			var chkE=str.split('@');
			if (chkE.length!=2){
				alert(msgL);return false;
			}else{
				var ax=chkE[0];
				if (ax.length<=3){
					alert(msgL+' El Login del Correo Electrónico tiene que ser mayor de 3 Caracteres.');
					return false;
				}
				ax = chkE[1];
				if (ax.split('.').length<2){ alert(msgL);return false;}
				chkE = ax.split('.');
				if (!isNaN(chkE[1].substr(0,1))){ alert(msgL);return false;}
			}
		}else{
			alert(msgL);return false;
		}
	}
	return true;
}
/** 
  * Funcion: getValueTxt
  * Realizado por: Ernesto Herrera
  * Version Final: 09/02/2007
  * Descripcion: Obtener valor de objetos tipo texto (Ex textobox, div)
  * a partir de su ID.
  * PARAMETROS DE ENTRADA: element(ID)
  * SALIDA: chkTxt (Valor de la caja de Texto, o Error)
  */
function getValueTxt(element){
  var chkTxt = document.getElementById(element);
  if (chkTxt==null)
	chkTxt = 'No existe ningún objeto con el Id especificado. (' + element + ').';
  else{
	  chkTxt = document.getElementById(element).value;
	  if (chkTxt==null){
		chkTxt = document.getElementById(element).innerHTML;
		if (chkTxt==null){
			chkTxt = 'El objeto con el Id (' + element + ') no tiene las propiedades de .innerHTML, ni de .value.';
		}
	  }
  }
  return (chkTxt);
}
/**
  * Funcion: putDiv
  * Realizado por: Ernesto Herrera
  * Version Final: 09/02/2007
  * Descripcion: Guardar en un objeto DIV el Código Html generado.
  * PARAMETROS DE ENTRADA: element(ID DIV), cod (Código a embeber)
  */
function putDiv(element,cod){
  if (cod==undefined) cod='';
  if (isIdElement(element))
	 if ((document.getElementById(element).innerHTML)!=null)
		document.getElementById(element).innerHTML=cod;
}

/**
  * Funcion: String.trim, ltrim, rtrim.
  * Realizado por: Ernesto Herrera.
  * Version Final: 14/01/2008.
  * Descripcion: Uso de los metodos rtrim, ltrim y trim para los Objetos de tipo String.
  */
String.prototype.rtrim = function() {return this.replace(/\s*$/g,"");}
String.prototype.ltrim = function() {return this.replace(/^\s*/g,"");}
String.prototype.trim  = function() {return this.ltrim().rtrim();}

/**
  * Funcion: addLoadEvent.
  * Realizado por: Ernesto Herrera.
  * Version Final: 14/01/2008.
  * Descripcion: Llamar una Funcion(func)  en el Evento OnLoad de una pagina.
  */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  }
  else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/**
  * Funcion: setIdFocus
  * Realizado por: Ernesto Herrera
  * Version Final: 14/03/2007
  * Descripcion: Poner en Focus un objeto.
  * PARAMETROS DE ENTRADA: element(ID DEL OBJETO)
  */
function setIdFocus(element){
	if (isIdElement(element)) document.getElementById(element).focus();
}

/**
  * Funcion: isIdElement
  * Realizado por: Ernesto Herrera
  * Version Final: 14/03/2007
  * Descripcion: Determina si es ID del Objeto es valido
  * PARAMETROS DE ENTRADA: element(ID DEL OBJETO)
  */
function isIdElement(IdElement){
	var sw=false;
	if ((document.getElementById(IdElement))!=null)	sw=true;
	return sw;
}

/**
  * Funcion: show(visible),hide(invisible),toggle(si es visible lo coloca invisible, etc..)
  * Realizado por: Ernesto Herrera.
  * Version Final: 14/01/2008.
  * Descripcion: Mostrar u Ocultar Objetos
  */
function show(element)   {element.style.display = "none";}
function hide(element)   {element.style.display = "block";}
function toogle(element) {
	if(element.style.display == "" || element.style.display == "block") {
		element.style.display = "none";
	} else {
		element.style.display = "block";
	}
}
/**
  * Funcion: getVal
  * Realizado por: Ernesto Herrera.
  * Version Final: 27/02/2008.
  * Descripcion: Obtener Valor
  */
function getVal(element){
  var chkTxt = document.getElementById(element);
  if (chkTxt==null)
	chkTxt = eval('document.form.'+element);
  if (chkTxt==null)
	chkTxt = 'No existe ningún objeto con el Id especificado. (' + element + ').';
  else{
	  chkTxt = document.getElementById(element).value;
	  if (chkTxt==null){
		chkTxt = document.getElementById(element).innerHTML;
		if (chkTxt==null){
			chkTxt = 'El objeto con el Id (' + element + ') no tiene las propiedades de .innerHTML, ni de .value.';
		}
	  }
  }
  return (chkTxt);
}

/**
  * Funcion: checkDate
  * Realizado por: Ernesto Herrera.
  * Version Final: 14/01/2008.
  * Descripcion: Validar Fecha.
  */
function checkDate(obj_date,msg){
	var bl=true;
	var fecha = obj_date.value;
	fecha = fecha.trim();
	if (fecha.length!=10) bl=false;
	if (!bl) alert(msg);
	return bl;
}

/**
  * Funcion: getId
  * Realizado por: Ernesto Herrera.
  * Version Final: 14/01/2008.
  * Descripcion: Obtener Objeto mediante su Id.
  */
function getId(element){
	if (document.getElementById(element)!=null)
		return document.getElementById(element);
	/*else
		alert ('El objeto con el Id especificado. (' + element + ') no existe.');
	*/
}

/**
  * Funcion: getIntVal
  * Realizado por: Ernesto Herrera.
  * Version Final: 12/02/2008.
  * Descripcion: Obtener valor (numero entero).
  */
function getIntVal(num){
	var intOut;
	if (num==undefined){
		intOut=0;
	}else{
		if (isNaN(num)||(num=='')){
			intOut=0;
		}else{
			intOut=parseInt(num);
		}
	}
	return intOut;
}

/**
  * Funcion: splitThis
  * Realizado por: Ernesto Herrera.
  * Version Final: 12/02/2008.
  * Descripcion: Obtener Codigo Principal de una cadena.
  */
function splitThis(str,chr,num){
	if (chr==undefined) chr=' - ';
	if (num==undefined) num=0;
	if (chr=='') 		chr=' - ';
	str    = str.toString();
	var strOut = '';
	var V01 = str.split(chr);
	//try{
		if (num==0)
			strOut = V01[num];
		else{
			for (var x=1;x<V01.length;x++){
				if (x==V01.length-1)
					strOut += V01[x];
				else
					strOut += V01[x]+chr;
			}
		}
	//}catch(err1){/*strOut  = '';*/}
	return strOut;
}
function splitThis1(str){
	str = str.trim();
	return splitThis(str,' - ',1);
}

/**
  * Funcion: mkCmb
  * Realizado por: Ernesto Herrera.
  * Version Final: 13/02/2008.
  * Descripcion: Crear combo para una consulta en especial.
  */
function mkCmb(lform,pageTo,xtra,opc_val){
	var para_valu = getIntVal(splitThis(getId(xtra).value));
	//alert(xtra+'--'+para_valu);return false;
	//if ((para_valu!=param2)&&(para_valu!='')){//Solo si se selecciona una opcion diferente
	if (para_valu!=0){
		lform.op.value = opc_val;
		lform.action = pageTo;
		lform.submit();
	}
}

/**
  * Funcion que tiene que llamar dentro de procesar.asp una vez que redireccione a la misma.
  */
function goToProc(lform,val){
	lform.opc_sav.value = val;
	go2Page('procesar.asp');
}

/**
  * Funcion que tiene que crear un PopUp con la expresion Cargando... para luego mostar documento de Excel.
  */
function show_popup(){
	var p=window.createPopup();
	var pbody=p.document.body;
	pbody.style.backgroundColor='white';
	pbody.style.border='solid black 1px';
	pbody.innerHTML='Cargando...';
	p.show(150,150,200,50,document.body);
	//alert('show_popup:\n'+url);
	OpenAndSeeExcel(url);
}

/** CREAR POPUP ESTE FUNCIONA PARA TODOS LOS NAVEGADORES IR DESARROLLANDO**/
function show_popupWin(title,w,h){
	vWinpop        = window.open("", title, "width="+w+",height="+h+",status=no,resizable=no,top="+(screen.width-w)/2 +",left="+ (screen.height-h)/2);
	vWinpop.opener = self;
	vWinpop.focus();
}

/**
  * Funcion: getkey
  * Version Final: 14/01/2008.
  * Descripcion: Obtener Tecla Pulsada, ya sea en F,IE u O.
  */
function getkey(e){
	if (window.event)
		return window.event.keyCode;
	else if (e)
		return e.which;
	else
		return null;
} 

function restringirNumeros(e, caracteresPermitidos){
	var key, keychar;
	key = getkey(e);
	if (key == null) return true;
	// get character
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	caracteresPermitidos = caracteresPermitidos.toLowerCase();

	// chequea si el caracter es un caracter permitido
	if (caracteresPermitidos.indexOf(keychar) != -1)
	return true;

	// control keys
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
	return true;

	// else return false
	return false;
}

function restringirFormatoEntero(e){
	return restringirNumeros(e, '0123456789');
}

function restringirLetras(e){
	return restringirNumeros(e, 'abcdefghijklmnñopqrstuvwxyz ');
}

function restringirFloat(e){
	return restringirNumeros(e, '0123456789,');
}

function restringirCedula(e){
	return restringirNumeros(e, '0123456789VJvjXxRrCcPpFfIiGgEeMm');
}

function restringirCedula_num(e){
	return restringirNumeros(e, '0123456789');
}

function solofecha(e){
	return restringirNumeros(e, '0123456789/');
}

function restringirTel(e){
	return restringirNumeros(e, '0123456789.,-');
}

function restringirVP(e){
	return restringirNumeros(e, '0123456789VPvp');
}

function restringiralfa(e){
	return restringirNumeros(e, '0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ');
}

/**
  *   Funcion: Cargando__
  *   Realizado por: Ernesto Herrera
  *   Version Final: 10/04/2008
  *   Descripcion: Crear efecto, [Cargando.| Cargando..| Cargando...]
  */
function Cargando__(Kant){
	//INI-Variables Globales
	xDTxt	= 0;
	xDI1	= '<font color="#000066" size="3"><b>';
	xDF1	= '.</b></font>';
	xDI2	= '<font color="#000066" size="3"><b>';
	xDF2	= '..</b></font>';
	xDI3	= '<font color="#000066" size="3"><b>';
	xDF3	= '...</b></font>';
	NmFrm	= 'charg';
	//FIN-Variables Globales
	TokenCronometer(100000000000000000000000);
}

/**
  *   Funcion: TokenCronometer
  *   Realizado por: Ernesto Herrera
  *   Version Final: 30/06/2007
  *   Descripcion:  Cronómetro en segundos, va descontando de 1 en 1.
  *    Parametros de Entrada: 1 (Cantidad de segundos) Ej: TokenCronometer(10);
  */
function TokenCronometer(num,TimeTop){
	var miliSeg  = 1000;
	if (TimeTop != undefined){
		TimeTop *=  miliSeg;
		if (num < TimeTop){
			num += miliSeg;
			Segs = setTimeout("TokenCronometer("+num+","+TimeTop/miliSeg+");",miliSeg);
			putCronometerText(NmFrm,(((TimeTop-num)/miliSeg)+1),false);
		}else
			putCronometerText(NmFrm,0,true);
	}else
		TokenCronometer(0,--num);
}

/**
  *   Funcion: putCronometerText
  *   Realizado por: Ernesto Herrera
  *   Version Final: 30/06/2007
  *   Descripcion:  Escribir el tiempo que ha recorrido el cronometro
  */
function putCronometerText(frmNm,strSecs,flag){
	if (flag==false)
		putDiv(frmNm,'<div align="center">'+chngDinamicText('Cargando')+'</div>');
	else
		clearTimeout(Segs);
}

/**
  *   Funcion: chngDinamicText
  *   Realizado por: Ernesto Herrera
  *   Version Final: 30/06/2007
  *   Descripcion: Cambiar Texto dinamicamente, ya sea color o por ejemplo el efecto, [Cargando.| Cargando..| Cargando...]
  */
function chngDinamicText(strW){
	xDTxt++;
	var strStyle;
	if (xDTxt==1)  strStyle = xDI1+strW+xDF1;
	if (xDTxt==2)  strStyle = xDI2+strW+xDF2;
	if (xDTxt>2){
		strStyle = xDI3+strW+xDF3;
		xDTxt	 = 0;
	}
	return strStyle;
}

function getBtnNam(num){
	var strOut;
	switch(num){
		case 1: strOut='cmd_modu'; break;
		case 2: strOut='cmd_subm'; break;
		case 3: strOut='cmd_preg'; break;
		case 4: strOut='cmd_temp'; break;
	}
}

function mkCmd(nm,vl,xtra,img){
	if (xtra==undefined) 	xtra='';
	var strOut = '';
		strOut = '<input type="button" class="BUTTON" name="'+nm+'" value="'+vl+'" '+xtra+' >';
	return strOut;
}

/**
   *Descripcion: Crear caja de texto (Codigo Html)
   *Parametros  de Entrada:
   * .- nm = Nombre
   * .- vl = Value
   * .- cl = Class
   * .- onK= onKeyPress
   */
function mkTxt(nm,vl,cl,onK,xtra){
	var strOut = '';
	if (xtra==undefined) xtra='';
	if (vl==undefined)
		vl='';
	else
		vl=' value="'+vl+'" ';
	if (cl==undefined)
		cl='';
	else
		cl=' class="'+cl+'" ';
	if (onK==undefined)
		onK='';
	else
		onK=' onKeyPress="'+onK+'" ';
	strOut = '<input type="text" id="'+nm+'" name="'+nm+'"' +vl+onK+xtra+' autocomplete="off">';
	return strOut;
}

function closeReload(){
	opener.location.reload();
	opener.focus();
	window.close();
}

function closeandReload(){
	//opener.location.reload();
	opener.focus();
	window.close();
}

function closeandGo(){
	opener.location.href='reportes_excel.asp';
	closeandReload();
}

function abrir(url,params,ancho,alto,goCenter,scrollbars){
	var modo;
	var moveTo = '';
	if (goCenter==undefined) goCenter=false;
	if ((ancho==0)&&(alto==0))
		modo = 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=yes,resizable=yes,fullscreen=yes';
	else{
		if (scrollbars==undefined)
			scrollbars = 'no';
		modo = 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars='+scrollbars+',resizable=no,width='+ancho+',height='+alto;
	}
	if (goCenter)
		moveTo = ',top='+(screen.width - ancho)/2 + ',left=' + (screen.height-alto)/2;
	newWin2  = window.open(PATH+'/php/'+url+'?'+params,'',modo+moveTo);
	newWin2.focus();
}

function openVent(foc){
	if (foc==undefined) foc = true; 
	getId('fnd1').style.visibility  = 'hidden';
	getId('fnd2').style.visibility  = 'hidden';
	getId('fnd3').style.visibility  = 'visible';
	getId('vent').style.visibility  = 'visible';
	if (foc)
		document.form.cmdAceptar.focus();
}

function closeVent(BL){
	getId('fnd1').style.visibility  = 'hidden';
	getId('fnd2').style.visibility  = 'hidden';
	getId('fnd3').style.visibility  = 'hidden';
	getId('vent').style.visibility  = 'hidden';
	//document.form.cmdAceptar.blur();
	closeAll(BL);
}

function MAXTXT(){
	return 500;
}

function checkChk(check,errMsj){
	var x  = 0;
	var sw = false;
	while ((x<check.length)&&(!sw)){
		if (check[x].checked) sw=true;
		x++;
	}
	if (!sw) alert(errMsj);
	return sw;
}

function checkChkandField(check,input,errMsj1,f_min,f_max,f_tip,errMsj2,chkCheks){
	var x  = 0;
	if (chkCheks)
		if (!checkChk(check,errMsj1)) return false;
	while (x<check.length){
		if (check[x].checked){
			if (!checkField(input[x],f_min,f_max,f_tip,errMsj2)) return false;
		}
		x++;
	}
	return true;
}

function checkFields(input,f_min,f_max,f_tip,errMsj){
	var x  = 0;
	var sw = false;
	while ((x<input.length)&&(!sw)){
		if (input[x].value.trim()!='') sw = true;
		x++;
	}
	if (!sw) alert(errMsj);
	return sw;
}

function checkSel(sele,errMsj){
	var x  = 0;
	var sw = false;
	if (sele.value!='') 
	  if(getSelectValue(sele).toString()!="-1") 
		sw=true;
	if (!sw)
		errMsg(sele,errMsj);
	return sw;
}

function evalRdBtn(objRdBn,err_msj){
	var chkRd = getHowMany(objRdBn,false,true);
	if (!chkRd) alert(err_msj);
	return chkRd;
}

function getHowMany(check,str1,str2){
	var howStr = str1;
	var howInt = 0;
	for (var x=0;x<check.length;x++)
		if (check[x].checked) howInt++;
	if (howInt>0) howStr = str2;
	return howStr;
}

function try2GetVal(obj){
	var strOut
	try{
		strOut  = obj.value;
	}catch(err1){
		strOut  = '';
	}
	return strOut;
}

function cerrarCaso(codi_caso){
	var url 	= 'editCerrarCaso.asp';
	var params 	= 'codi_caso='+codi_caso;
	abrir(url,params,700,300);
}

function editEmpl(codi_empl){
	var url 	= 'editEmpl.asp';
	var params 	= 'codi_empl='+codi_empl;
	abrir(url,params,400,150,true);
}
	
function checkSomeIn(val,vals,msg,opc){
	if (opc==undefined) opc=false;
	var blSw 	= false;
	var x		= 0;
	var what	= '';
	while((x<vals.length)&&(!blSw)){
		if (vals[x]==val) blSw=true;
		x++;
	}
	if(!blSw){
		if(!opc)
			what = 'Seleccione';
		else
			what = 'Escriba';
		alert(what+' Correctamente el '+msg+'.');
	}
	return blSw;
}

function wr2Report(pagAct,pagTam,obJSON){
	if (obJSON!=''){
		var x   = reporte.length-1;
		var A1  = obJSON.split(';_|;_||;_|');
		var LEN	= A1.length-1
		for (var z=0;z<LEN;z++){
			var V1	= new Array();
			var A2	= A1[z].split(';_|');
			for(var y=0;y<A2.length;y++){
				V1[y] = A2[y]; 
			}
			reporte[++x] = V1;
		}
	}
}

function wr2ExcelSheet(pagAct,pagTam,obJSON){
	if (obJSON!=''){
		//putDiv('img','<span class="style1">Guardando Cambios.</span>');
		var A1  = obJSON.split(';_|;_||;_|');
		var LEN	= A1.length-1
		for (var z=0;z<LEN;z++){
			var V1	= new Array();
			var A2	= A1[z].split(';_|');
			++XREP;
			for(var y=0;y<A2.length;y++){
				oSheet.Cells(XREP,y+1) = mjR(A2[y]);
			}
		}
		//putDiv('img','<img src="./../images/cargando.gif">');
	}
}

/**
   * Exportar a Excel Reporte Generado
   */
function exportar(obJSON,opc){
	//var pagTot = 10;
	++pagAct;
	var strUrl = url + '&pagTam='+pagTam+'&pagAct='+pagAct;
	if (pagAct<=pagTot+1){
		putPORC((pagAct-1)*pagTam,rcrd_count);
		wr2Report(pagAct-1,pagTam,obJSON);
		//wr2ExcelSheet(pagAct-1,pagTam,obJSON);
		WS2EXCEL(strUrl,opc);
	}
	if (pagAct==pagTot+1){
		putDiv('imagen','<span class="style1">Finalizando...</span>');
		//alert('Creando archivo de Excel.\n     Presione aceptar.');
		setTimeout(exportEnd(),1000);
	}
}

function exportEnd(){
	exportToExcel(TOT,'REPORTE POR SOLICITUDES');
	//putTotalonSheet(TOT,XREP+1);
	closeVent(0);
	return false;
}

function putCancelByUsu(){
	try{
		oSheet.Cells(XREP+1,1) = 'EXPORTAR REPORTE A EXCEL. CANCELADO POR USUARIO.';
		oBook.Close(false);
		oExcel.Quit();
	}catch(err1){/*HANDLE ERROR*/}
}

function putPORC(num,tot){
	var codINI = '<span class="style1">';
	var codFIN = '</span>';
	if (tot!=undefined){
		var res=(num*100)/tot;
		res	= (parseInt(res));//-10;
		if (res<0) 		res = 0;
		if (res>99) 	res = 99;
		putDiv('porc',codINI+res+'%<br>Registros: '+rcrd_count+codFIN);
	}else
		return codINI+num+'%<br>Registros: '+rcrd_count+codFIN;
}

function editFile(fileName) {
	if (fileName!='') {
		var WshShell = new ActiveXObject('WScript.Shell'); 
		WshShell.run ('notepad.exe ' +fileName, '1'); 
	}else{ 
		window.alert('Unable to determine the path for file.'); 
	} 
}

function exportToExcel(TOT,TITREP){
	if (!exportMsExcel(TITREP)) return false;
	for (var x=1;x<=reporte.length;x++){
		for (var y=0;y<TIT.length;y++){
			oSheet.Cells(x+1,y+1) = mjR(reporte[x-1][y]);
		}
	}
	x++;
	putTotalonSheet(TOT,x);
}

function putTotalonSheet(TOT,x){
	if (TOT) oSheet.Cells(x,1) 	= 'Total: ' + rcrd_count;
	seeExcel();
}

function exportMsExcel(nam){
	/*
	Entrar a opciones de internet, seguridad y en intranet colocar baja.
	Validar que los controles active funcionen y el script correra sin ningun problema.
	*/
	try{
		oExcel	= new ActiveXObject('Excel.Application');
	}catch(err1){
		alert('Para poder ver el Reporte en Excel tiene que hacer lo siguiente:\nIr a: Herramientas -> Opciones de Internet -> Seguridad -> Intranet -> Baja(seleccionar) y activar Controles Active en Nivel Personalizado.\nLuego reiniciar Internet Explorer.\n\nCuando se le muestre el Mensaje:\nUn control ActiveX de esta p\u00e1gina podr\u00eda no ser seguro al interactuar con otras partes de la p\u00e1gina.\u00BFDesea permitir esta interacci\u00f3n?\nPresione Si.');
		closeVent(0);
		return false;
	}
	oBook	= oExcel.Workbooks.Add;
	oSheet	= oBook.Worksheets(1);
	if (nam==undefined) nam='REPORTE';
	oSheet.Name = nam;
	for (var y=0;y<TIT.length;y++){
		oSheet.Cells(1,y+1) = mjR(TIT[y]);
	}
	return true;
}

function seeExcel(){
	oExcel.Visible 		= true;
	oExcel.UserControl 	= true;//Devolver el control de Excel al usuario.
}

function goBack(num){
 if (num==undefined)
  window.history.back();
 else
  window.history.back(num);
}

function goIni(){
	 document.location.href = 'welcome.asp';
}

function salir(){
  document.location.href = '../default.asp';
}

function NEG(val){
  return '<b>'+val+'</b>';
}

/**
   *  INI - PROTOTYPE 
   */
function putStyle(num,lbl){
	$('prdt'+num).className = 'lbl'+lbl;
}

/**
   *  FIN - PROTOTYPE
   */

function WS2EXCEL(query,xtra){
//wsTecni.php?opc=6&tip=3&fech_cas1=01-06-2008&fech_cas2=30-06-2008&codi_soli=4472&codi_prod=-1&codi_empl=&soli_stat=-1&cuot_xtra=0&codi_rrhh=&zent_cost=&codi_unid=&repo_opci=1&pagTam=20&pagAct=1
	doAjax(sUrl,encodeURI('opc=6&tip=3&'+query+'&sgzn='+randomCosa()),'exportar','post',3,xtra);
}

function WS2Tr(query,xtra){
	//document.write(encodeURI('tip=5&'+query+'&sgzn='+randomCosa()));
	doAjax(sUrl,encodeURI('tip=5&'+query+'&sgzn='+randomCosa()),'putCodeHtml5','post',0,xtra);
}

function WS2Json(query,xtra){
	doAjax(sUrl,encodeURI('tip=1&'+query+'&sgzn='+randomCosa()),'putVals','post',2,xtra);
}

function WS2Html(query,xtra){
	doAjax(sUrl,encodeURI('tip=2&'+query+'&sgzn='+randomCosa()),'putCodeHtml','post',0,xtra);
}

function WS2Tbl(query,xtra){
	doAjax(sUrl,encodeURI('tip=4&'+query+'&sgzn='+randomCosa()),'putCodeTable','post',0,xtra);
}

function putDesplComb(){
	var obj = actCMB(document.getElementById('zent_cost'),cost);
}

function putCssByRES(){
	if ((screen.width==800)&&(screen.height==600)) 
		try{
			$('otrRes').className = 'w800600';
		}catch(err1){}
}

function randomCosa(){
	var fecha = new Date();
	var fecha = fecha.toString()
	fecha = fecha.replace(/\ /g,"-");
	fecha = fecha.replace(/\_/g,"-");
	return fecha;
}

function formDate(sDate){
	sDate = sDate.split('-');
	return (sDate[2] + '/' + sDate[1] + '/' + sDate[0]);
}

function getRadioSel(obj){
	var sel = '';
	var x   = 0;
	var sw  = false;
	while ((x<obj.length)&&(!sw)){
		if (obj[x].checked) {
			sel = obj[x].value;
			sw  = true;
		}
		x++;
	}
	return sel;
}

function getSelectValue(sLct){
	/*var x 	= 0;
	var st  = x;
	while((x<sLct.length)&&(st=='')){
		if (sLct[x].selected) st=sLct[x].value;
		x++;
	}*/
	return sLct.options[sLct.selectedIndex].value;
}

function mjR(strCadena){
	strCadena = strCadena.replace(/\\u00e1/g, "á");
	strCadena = strCadena.replace(/\\u00e9/g, "é");
	strCadena = strCadena.replace(/\\u00ed/g, "í");
	strCadena = strCadena.replace(/\\u00f3/g, "ó");
	strCadena = strCadena.replace(/\\u00fa/g, "ú");
	strCadena = strCadena.replace(/\\u00f1/g, "ñ");
	strCadena = strCadena.replace(/\\u00c1/g, "Á");
	strCadena = strCadena.replace(/\\u00c9/g, "É");
	strCadena = strCadena.replace(/\\u00cd/g, "Í");
	strCadena = strCadena.replace(/\\u00d3/g, "Ó");
	strCadena = strCadena.replace(/\\u00da/g, "Ú");
	strCadena = strCadena.replace(/\\u00d1/g, "Ñ");
	strCadena = strCadena.replace(/\\u00bf/g, "¿");
	strCadena = strCadena.replace(/\\u00a1/g, "¡");
	return strCadena;
}

function exeLocal(opc){
	var objF = document.form;
	switch(opc){
		case 1: //Pataki
				var query = 'opc='+opc+'&pata_titu='+splitThis1(lform.cmb_pataki.value);
				WS2Html(query);
				break;
		default:
	}
}

function img_load(){//Funcion de imagen cargando...
	return '<div align="center"><img src="'+PATH+'/images/cargando.gif"></div>';
}

function putTheDesc(prod,xtra){
	if (xtra==1){
		putDiv('desc1','<font size="1" align="left">'+prod[1].dire_cent+'</font>');
	}
}
  
function TD(vl1,vl2,cl){
	var codeH = '<tr>';
	codeH += '<td>'+vl1+'</td>';
	codeH += '<td>'+vl2+'</td></tr>';
	return codeH;
}

function go2Page(page){
	lform.action = page;
	lform.submit();
}

function Imprimir(){
	$('PiePag').className = 'noprint';
	window.focus();
	print();
}

function errMsg(frmObj,strText){
	alert(strText);
	PutFocus(frmObj);
	return false;
}

function write(strText){
	document.write(strText);
}

function putValWithMone(precio){
	return (mone + ' ' + precio);
}

function cargarDespCmb(codi_empl){
	WS2Html('opc=3&codi_empl='+codi_empl);
}

function eraseWhenBlank(e){
	return WhatKey(e);
}

function WhatKey(e){
	var key;
	key = getkey(e);
	//if (key == null) 
	//alert(key);
	if (!(key==9 || key==13))
		putDiv('desc1','&nbsp;');
	return true;
}

function doSub(){
	document.form.submit();
}

function putStyle(num,lbl){
	$('prdt'+num).className = 'lbl'+lbl;
}

function PutFocus(ObjF){
	try{ObjF.focus();}catch(err){}
}

function Rico_Acordion(height){
Rico.loadModule('Accordion','Corner');
Rico.onLoad( function() {
  var options={panelHeight:height, hoverClass: 'panelHover', selectedClass: 'panelSelected', border: '#669966', color:'#669966'};
  r_Acordion = new Rico.TabbedPanel( $$('div.panelheader'), $$('div.panelContent'), options);
});
}

function setTab(intTab){
	if (intTab==undefined)
		intTab = 0;
	r_Acordion.openByIndex(intTab);
	//for(val1 in r_Acordion){alert(val1);}//Ver 	Atributos del Objeto
}

function getTab(){
	return r_Acordion.selected.id;
}

//titles contents options hoverSet selected selectionSet initContent transition initialize reset select add remove removeAll openByIndex contentOf 
function Rico_LoadAll(){
	lform = document.form;
	roundCorners = Rico.Corner.round.bind(Rico.Corner);
	try{roundCorners('i_top', {border: '#CCff33', corners:'top'});}catch(err1){/*HANDLE ERROR*/}
	try{roundCorners('i_mid');}catch(err1){/*HANDLE ERROR*/}
	try{roundCorners('i_bot');}catch(err1){/*HANDLE ERROR*/}
	try{roundCorners('i_pop');}catch(err1){/*HANDLE ERROR*/}
	try{roundCorners('i_pop_bot', {corners:'bottom'}	);}catch(err1){/*HANDLE ERROR*/}
	try{
		putLeftCorn();
	}catch(err1){/*HANDLE ERROR*/}
	try{
		putRightCorn();
	}catch(err1){/*HANDLE ERROR*/}
	try{
		roundCorners('sub_mnu', {border: '#FFFF66'});
	}catch(err1){/*HANDLE ERROR*/}
	try{
		$('frm_border0').className="frm_border0";
		roundCorners('frm_border0', {border: '#669966', color:"#669966"});
	}catch(err1){/*HANDLE ERROR*/}
	try{
		$('frm_border1').className="frm_border0";
		roundCorners('frm_border1', {border: '#669966'});
	}catch(err1){/*HANDLE ERROR*/}
	try{
		$('frm_border2').className="frm_border2";
		roundCorners('frm_border2', {border: '#669966'});
	}catch(err1){/*HANDLE ERROR*/}
	try{
		roundCorners('i_Title');
		roundCorners('menuLetra')
	}catch(err1){/*HANDLE ERROR*/}
	try{
		PutF();	
	}catch(err1){/*HANDLE ERROR*/}
}

/** INI I_VENT */
/** CREAR POR PAGINA putCont, bl_dis_All, closeAll **/
function popupWin(){
	putCont();
	bl_dis_All(true);
	openVent(false);
	location.href = '#PopPupWin2';
}
/** FIN I_VENT */

function eliminarElemento(id){
	if (isIdElement(id)){
		var hijo = document.getElementById(id);
		padre = hijo.parentNode;
		padre.removeChild(hijo);
	}
}

function clearTBL_RESMSG(){
	putDiv('TBL_msg','<br>');
}

function go_calendar(yearPl,name,val){
	var p_month;
	var p_year;
	try{
		var V   = val.split("/");
		p_month = --V[1];
		p_year  = V[2];
	}catch(err1){/*Handler Error*/}
	if (isNaN(p_month)||isNaN(p_year))
		show_calendar(yearPl,name);
	else
		show_calendar(yearPl,name,p_month,p_year);
}

function edad(strFecha){
	var ed;
	var fch = new Date(strFecha);
	var hoy = new Date();
	var ed  = parseInt((hoy - fch)/365/24/60/60/1000);
	if (isNaN(ed)||ed<0)
		ed  = 0;
	return ed;
}

/**
  * Funcion: Activity
  * Realizado por: Ernesto Herrera
  * Version Final: 19/06/2007
  * Descripcion: Validar que haya actividad en el site, si pasan intTime min sin actividad muestra mensaje y redirecciona al inicio
  */
function Activity(ir_a,intTime){
	var strNmMin = "minutos.";
	if (intTime==1) strNmMin = "minuto.";
	alert("Su sesi\u00f3n ha caducado por no tener actividad pruebas en "+intTime+" "+strNmMin);
	document.location.replace(ir_a);
}

/**
  * Funcion: putSessionTime
  * Realizado por: Ernesto Herrera
  * Version Final: 19/06/2007
  * Descripcion: Poner tiempo de session de la pagina, si no se le pasa ningun valor de Tiempo por defecto 20.
  */
function putSessionTime(ScriptTimeMin,ScriptRedirect){
	if (ScriptRedirect==undefined) ScriptRedirect = 'index.html';
	if (ScriptTimeMin==undefined)  ScriptTimeMin  = 20;
	var MiliSeg		= ScriptTimeMin * 60000;
	Session_Time   	= setTimeout('Activity("'+ScriptRedirect+'",'+ScriptTimeMin+');',(MiliSeg));//60000 20 
}

function newsfadeMsg(){
	var msgLen = arMessage.length;
    if(elIdx == MAX || (!loopPrepend && (msgIdx == msgLen))){
        if(elIdx != MAX)msgIdx = 0;
        elIdx = 0;
        setTimeout('newsfadeMsg()', nextSetDelay);
    }else{
        if(msgIdx == msgLen)msgIdx = 0;
        if(elIdx == 0){
            for(var i=0;i<MAX;i++){setOpacity(document.getElementById('NewsItem'+i), 0);}
        }
        fadeStep = 50;
        NewsItem = document.getElementById('NewsItem' + elIdx);
        NewsItem.innerHTML = arMessage[msgIdx];
        fadeStep = 0;
        elIdx++;
        msgIdx++;
        newsfadeIn();
    }
}

function newsfadeIn() {
    if(fadeStep > fadeSteps){
        newsfadeMsg();
        return;
    }
    setOpacity(NewsItem, (fadeStep/fadeSteps));
    fadeStep++;
    window.setTimeout("newsfadeIn()", fadeDelay);
}

function setOpacity( el, opacity){
    if(el.style.opacity != undefined){
        el.style.opacity = opacity;
    }else if( el.style.MozOpacity != undefined){
        el.style.MozOpacity = opacity;
    }else if ( el.style.filter != undefined){
        el.style.filter="alpha(opacity=" + Math.round(opacity * 100) + ")";
    }
}

function cargando(id){
	putDiv(id,'<div align="center"><img src="/images/cargando.gif"></div>');
}

/**
  * Funcion: checkDate
  * Realizado por: Ernesto Herrera.
  * Version Final: 14/01/2008.
  * Descripcion: Validar Fecha.
  */
function checkDate(obj_date,msg){
	var fecha 	= obj_date.value;
	fecha 		= fecha.trim();
	if (fecha==''){
		alert('Seleccione la '+msg);
		return false;
	}
	if (!/^\d{2}\/\d{2}\/\d{4}$/.test(fecha)){
		alert(msg+" incorrecta, debe escribirse (dd/mm/aaaa).");
		return false;
	}
	var dia  = getIntVal(fecha.substring(0,2),10);
	var mes  = getIntVal(fecha.substring(3,5),10);
	var anio = getIntVal(fecha.substring(6),10);
	var numDias;
	if (dia==0 && mes==0 && anio==0){
		alert(msg+" incorrecta, debe escribirse (dd/mm/aaaa)");
		return false;
	}
    /*switch(mes){
          case 1: case 3: case 5: case 7: case 8: case 10: case 12:
              numDias = 31;
              break;
          case 4: case 6: case 9: case 11:
              numDias = 30;
              break;
          case 2:
              if (anioBisiesto(anio)){ numDias=29 }else{ numDias=28};
              break;
          default:
			  alert(msg+" incorrecta. Mes incorrecto, debe estar entre el 1 y el 12.");
              return false;
     }
	 if ((dia>numDias)||(dia==0)){
		alert(msg+" incorrecta. Dia incorrecto, debe estar entre el 1 y el "+numDias+".");
		return false;
	 }*/
	 return true;
}
   
function anioBisiesto(anio){
	if ((anio%100!=0)&&((anio%4==0)||(anio%400==0)))
		return true;
	else
		return false;
}

function try2DO(lf,x,tip,xtr){
	switch (tip){
		case 'ENADIS':
			try{
				lf[x].disabled = xtr;
			}catch(err1){
				lf.disabled = xtr;
			}
		break;
		case 'GETVAL':
			try{
				return lf[x].value;
			}catch(err1){
				return lf.value;
			}
		break;
		case 'PUTVAL':
			try{
				lf[x].value = xtr;
			}catch(err1){
				lf.value = xtr;
			}
		break;
		default:   return true;
	}
}

function FirstUpper(strval){
	return strval.substr(0, 1).toUpperCase() + strval.substr(1);
}
