var tList="";
var vTipo="";
var vGnum=0;
var vGval="";
var vGtam="95%"
var jGfunciones="{}";
var vGmodulo="";
var vGcampoi="";
var vGcampof="";

function createREQ() {
try {
     req = new XMLHttpRequest(); /* p.e. Firefox */
     } catch(err1) {
       try {
       req = new ActiveXObject('Msxml2.XMLHTTP'); /* algunas versiones IE */
       } catch (err2) {
         try {
         req = new ActiveXObject("Microsoft.XMLHTTP"); /* algunas versiones IE */
         } catch (err3) {
          req = false;
         }
       }
     }
	  
     return req;
	 
	
}
function requestGET(url, query, req) {
myRand=parseInt(Math.random()*99999999);
if(query == ''){query='no=no';}
req.open("GET",url+'?'+query+'&rand='+myRand,true);
req.send(null);
}
function requestPOST(url, query, req) {
req.open("POST", url,true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(query);
}
function doCallback(callback,item) {
eval(callback + '(item)');
}
//funcion principal (doAjax) los parametros son 
//*****url:Direccion pagina de proceso ejemplo pagina.php
//*****query:Envio de datos por parametros a la pagina si es metodo get se envia cedula=885930
//*****callback:Devolucion de llamada aqui define quien recibe los datos respondido mostrar(texto)
//*****reqtype:Metodo de trabajo get o post Por Defecto es get
//*****getxml: Metodo de envio respuesta reponseText(0) ó responseXML (1) recive 1 y 0 Por defecto es reponseText
//*****contenedor_espera:Div donde muestra una image de cargando si no se quiere utilizar colocar '' 
function doAjax(url,query,callback,reqtype,getxml,contenedor_espera) {
// crea la instancia del objeto XMLHTTPRequest 
var myreq = createREQ();

myreq.onreadystatechange = function() {//function()
if(myreq.readyState == 4) {//1
	if(contenedor_espera != '' ){document.getElementById(contenedor_espera).innerHTML ='';}
	if(myreq.status == 200) {//2
      	var item = myreq.responseText;
    	if(getxml==1) {//3
         item = myreq.responseXML;
    	}//3
      doCallback(callback, item);
    }//2
}//1
  else
     {//4
	   if(contenedor_espera != '' ){document.getElementById(contenedor_espera).innerHTML ='<img src="anim.gif">';}
     }//4
}//function()

	if(reqtype=='post') {//5
		requestPOST(url,query,myreq);			
	}else{
		requestGET(url,query,myreq);
	}//5
	
	
	
}//***************fin de createREQ*****************


//***********************************Funciones de matricez******************
function CrearMatriz(fila,columna){//crea y define una matris nxn
Matriz = new Array (fila);
for (i = 0; i < Matriz.length; ++ i)Matriz [i] = new Array (columna);
return Matriz
}//fin fr crear matriz

function OrdenarMatriz(array,Ncolumna,Columna_Order,TipoOrder){//crea y define una matris nxn   tipo de orden desendente o acendente 0 o 1
ArrayAux1 = new Array (Ncolumna);
ArrayAux2 = new Array (Ncolumna);
for (RowArray=1;RowArray<array.length; RowArray++){
	for (RowArrayAux=1;RowArrayAux<array.length; RowArrayAux++){
	    if(TipoOrder==0){
	  	 if(array[RowArray][Columna_Order] < array[RowArrayAux][Columna_Order]){
			for (ColAux=0;ColAux<Ncolumna; ColAux++){
			ArrayAux1[ColAux]=array[RowArrayAux][ColAux];
			ArrayAux2[ColAux]=array[RowArray][ColAux];
			array[RowArray][ColAux]=ArrayAux1[ColAux];
			array[RowArrayAux][ColAux]=ArrayAux2[ColAux];
			}
		 }
	  	}else{
	   		if(array[RowArray][Columna_Order] > array[RowArrayAux][Columna_Order]){
			for (ColAux=0;ColAux<Ncolumna; ColAux++){
			ArrayAux1[ColAux]=array[RowArrayAux][ColAux];
			ArrayAux2[ColAux]=array[RowArray][ColAux];
			array[RowArray][ColAux]=ArrayAux1[ColAux];
			array[RowArrayAux][ColAux]=ArrayAux2[ColAux];
			}
		 }
	  	}
	}
}
return array;
}//fin fr crear matriz

function VisualTablaArray(array,fila,colunma,titulo,ArrayTotales,ArrayFormatos,heigTable) {//visualiza una matriz nxn en una tabla 
str = "<table class=lightPro height='"+heigTable+"'>";
	var row;
	var col;
	var  cambiocolorTR=0;
	str +='<thead>';
	str +="<th scope=col colspan="+colunma+" ><center>"+titulo+"</center></td></th><tr>";
		for (col=0;col<colunma; ++col){
			str +="<th scope=col>"+array[0][col]+"</th>";
		}
	str +='</tr></thead>';
	str +='<tbody>';
	   for (row=1;row<array.length; row++){
		   if(array[row][0]!=undefined){//quitar datos no definidor
		  if(cambiocolorTR==0){ str += "<tr background='imagen/fondotablatd.jpg'>"; cambiocolorTR=1;}else{ str += "<tr>";cambiocolorTR=0; }
  				for (col=0; col<array[row].length; ++col){
					   str +="<td ><font color=black><strong>";
					if(ArrayFormatos[col]=="M"){//aqui pregunta si el formato es moneda
					 	str +=formatNumber(array[row][col],"$");
					}else{
						if(ArrayFormatos[col]=="P"){
							str +=Math.round(array[row][col]*100)/100+"%";
						}else{str +=array[row][col];}
					}//fin de codificar formatos
			        str +="<strong></font></td>";
				}
		str +="</tr>";
		 }//fin quitar no definidos
		}
str +=  "<tr background='imagen/fondotabla.jpg'>";
         for (colTotal=0;colTotal<ArrayTotales.length; colTotal++){//selecciono las columna que voy a sumar del array total
			if (ArrayTotales[colTotal]==0){//pregunto si esta columna contiene 0 esso quiere decir que es sumada
				for (row=1;row<array.length; row++){//realizo la totalizacion del array datos
			 		ArrayTotales[colTotal]=ArrayTotales[colTotal]+Math.round(array[row][colTotal]);
			    } 
			 }
		}
		
		for (col=0; col<ArrayTotales.length; col++){
			if(ArrayTotales[col]>=0){
			        str +="<td><font color=black><strong>";
					if(ArrayFormatos[col]=="M"){//aqui pregunta si el formato es moneda
					 	str +=formatNumber(ArrayTotales[col],"$");
					}else{
						if(ArrayFormatos[col]=="P"){
						str +=Math.round(ArrayTotales[col]*100)/100+"%";
						}else{str +=ArrayTotales[col];}
					}//fin de codificar formatos
			        str +="<strong></font></td>";
			}else{
				str+="<td></td>";
			}
		}
str +=  "</tr>";
str += "</tbody></table>";

return str;
}//fin de mostrar matriz
//*******************fin de funcion de matrices************************

//*******************funciones herramientas****************************
function Fecha_hoy(formato){//funcion de pedir fecha actual
	var fechaActual = new Date();
	dia = fechaActual.getDate();
	mes = fechaActual.getMonth() +1;
	anno = fechaActual.getFullYear();
	if (dia <10) dia = "0" + dia;
	if (mes <10) mes = "0" + mes;
	if(formato=="yyyy-mm-dd"){
		fechaHoy =anno  + "-" + mes + "-" + dia;
		}
	fechaHoy =anno  + "-" + mes + "-" + dia;
	return fechaHoy;
}//fin de fecha

function mostrar_ocultar_elem(accion,element){//hacer una accion a un elemento 
	if(accion=="mostrar"){
		document.getElementById(element).style.display = '';
		}else{
		document.getElementById(element).style.display='none';
	}
}//fin  hacer una accion a un elemento

function formatNumber(num,prefix){//cambiar a formato maneda
num = Math.round(parseFloat(num)*Math.pow(10,2))/Math.pow(10,2)
prefix = prefix || '';
num += '';
var splitStr = num.split('.');
var splitLeft = splitStr[0];
var splitRight = splitStr.length > 1 ? '.' + splitStr[1] : '.00';
splitRight = splitRight + '00';
splitRight = splitRight.substr(0,3);
var regx = /(\d+)(\d{3})/;
while (regx.test(splitLeft)) {
splitLeft = splitLeft.replace(regx, '$1' + ',' + '$2');
}
return prefix + splitLeft + splitRight;
}
//parametros get
function getGET(){
   var loc = document.location.href;
   var getString = loc.split('?')[1];
   try {
	     var GET = getString.split('&');
   	     var get = {};//this object will be filled with the key-value pairs and returned.
         for(var i = 0, l = GET.length; i < l; i++){
         	var tmp = GET[i].split('=');
         	get[tmp[0]] = unescape(decodeURI(tmp[1]));
         }
	} catch(e) {
    	get="NOPARAM";
	}
   return get;
}
//redireccionar pagina
function redireccionar(pagina){location.href=pagina;} 
//quitar espacio al inicio y al final
function trim(myString)
{
return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
}

//funcion de diferencia en fecha
function daysBetween(date1, date2){
   if (date1.indexOf("-") != -1) { date1 = date1.split("-"); } else if (date1.indexOf("/") != -1) { date1 = date1.split("/"); } else { return 0; }
   if (date2.indexOf("-") != -1) { date2 = date2.split("-"); } else if (date2.indexOf("/") != -1) { date2 = date2.split("/"); } else { return 0; }
   if (parseInt(date1[0], 10) >= 1000) {
       var sDate = new Date(date1[0]+"/"+date1[1]+"/"+date1[2]);
   } else if (parseInt(date1[2], 10) >= 1000) {
       var sDate = new Date(date1[2]+"/"+date1[0]+"/"+date1[1]);
   } else {
       return 0;
   }
   if (parseInt(date2[0], 10) >= 1000) {
       var eDate = new Date(date2[0]+"/"+date2[1]+"/"+date2[2]);
   } else if (parseInt(date2[2], 10) >= 1000) {
       var eDate = new Date(date2[2]+"/"+date2[0]+"/"+date2[1]);
   } else {
       return 0;
   }
   var one_day = 1000*60*60*24;
   var daysApart = Math.ceil((sDate.getTime()-eDate.getTime())/one_day);
   return daysApart;
}
//fin funcion de diferencia en fecha

function decimal(valor, decimal){
	var result=Math.round(valor);
	if(decimal==1){result=Math.round(valor*10)/10;}
	if(decimal==2){result=Math.round(valor*100)/100;}
	if(decimal==3){result=Math.round(valor*1000)/1000;}
	if(decimal==3){result=Math.round(valor*10000)/10000;}
	return result;
}


function decAhex(dec) { 
    dec = parseInt(dec) 
    var hexChars="0123456789ABCDEF" 
    var dig = new Array(10) 
    if (dec >= 1e12 ) { return 'demasiado grande' } 
    for (k=0; k<10; k++) 
    {   dig[k] = dec % 16 
        dec = (dec-dig[k]) / 16 
    } 
    var resul = "" 
    for (k=9; k>-1; k--) 
    {    resul += hexChars.charAt(dig[k]) 
    }     
    return resul 
}  


function myTrim(x) {
  return x.replace(/^\s+|\s+$/gm,'');
}
//fin de  solo numero
//******************fin funciones herramientas*************************
