function show(nombreCapa){ document.getElementById(nombreCapa).style.visibility="visible"; } 
function hide(nombreCapa){ document.getElementById(nombreCapa).style.visibility="hidden"; } 

function abrirpopup(nombre,ancho,alto) { dat = 'width=' + ancho + ',height=' + alto + ',left=0,top=0,scrollbars=yes,resize=no'; window.open(nombre,'',dat); }

function confirmar ( mensaje ) { return confirm( mensaje ); }

function ajax(idmain,idloader){this.objAjax=null;this.idmain=idmain;this.idloader=idloader;this.debug=true;this.aborta=true;this.working=false;this.noajax='Su navegador no es compatible para trabajar con esta web.';this.Request=
function(data){var parent=this;data=this.Default(data);this.objAjax.open(data.method,data.url,data.async);if(data.headers)
for(var i=0;i<data.headers.length;i+=2)
this.objAjax.setRequestHeader(data.headers[i],data.headers[i+1])
if(data.async){this.working=true;this.Cargador(true);this.objAjax.onreadystatechange=
function(){if(parent.objAjax.readyState==4){if(parent.aborta){if(data.onComplete)
data.onComplete(parent.objAjax,data);if((parent.objAjax.status==200||parent.objAjax.status==304)&&data.onOK)
data.onOK(parent.objAjax,data);else if(data.onError)
data.onError(parent.objAjax,data);else if(parent.debug)
alert('Error: '+parent.objAjax.status+' '+parent.objAjax.statusText);}
else
parent.aborta=true;parent.Cargador(false);parent.working=false;}
};}
this.objAjax.send(data.param);};this.Actualiza=
function(objAjax,data){switch(data.type){case 1:{if(data.iner==0)
$(data.id).innerHTML=objAjax.responseText+$(data.id).innerHTML;else if(data.iner==1)
$(data.id).innerHTML=$(data.id).innerHTML+objAjax.responseText;else
$(data.id).innerHTML=objAjax.responseText;break;}
case 2:{var objxml=new jxml(objAjax.responseXML);data.id(objxml.Query(data.query),objAjax);break;}
case 3:{if(data.iner==0)
$(data.id).value=objAjax.responseText+$(data.id).value;else if(data.iner==1)
$(data.id).value=$(data.id).value+objAjax.responseText;else
$(data.id).value=objAjax.responseText;break;}
case 4:{var obj=$(data.id);var objxml=new jxml(objAjax.responseXML);var resultado=objxml.Query('SELECT node.value, atrib.value');var total=obj.options.length;if(total > 0)
for(var i=0;i<=total;++i)
obj.remove(obj.options[i])
for(var i=0;i<resultado.length;++i){var newone=new Option(resultado[i][0],resultado[i][1]);try{obj.add(newone,obj.options.length);}
catch(ex){obj.add(newone,obj.options[obj.options.length]);}
}
break;}
case 5:{eval(objAjax.responseText);break;}
}
};this.Link=
function(url,id,iner){this.Request({url:this.Url(url),
id:id,
async:(id)? true:false,
iner:iner,
type:1,
onOK:this.Actualiza
});};this.Form=
function(idform,id,iner){var form=$(idform);this.Request({url:this.Url(form.action),
method:form.method,
id:id,
param:this.DataForm(form),
async:(id)? true:false,
iner:iner,
type:1,
onOK:this.Actualiza
});};this.XML=
function(url,funcion,query){this.Request({url:this.Url(url),
id:funcion,
query:query,
type:2,
onOK:this.Actualiza
});};this.Value=
function(url,id,iner){this.Request({url:this.Url(url),
id:id,
iner:iner,
type:3,
onOK:this.Actualiza
});};this.Select=
function(url,id){this.Request({url:this.Url(url),
id:id,
type:4,
onOK:this.Actualiza
});};this.Run=
function(url){this.Request({url:this.Url(url),
type:5,
onOK:this.Actualiza
});};this.Img=
function(url,id,w,h){var temp=new Image();var parent=this;this.working=true;this.Cargador(true);temp.onload=function(){if(parent.aborta){$(id).src=temp.src;if(w)$(id).width=w;if(h)$(id).height=h;}
parent.Cargador(false);parent.aborta=true;parent.working=false;};temp.onerror=function(){parent.Cargador(false);parent.aborta=true;parent.working=false;if(parent.debug)
alert('Error: 404 Not Found');};temp.src=url;};this.Cancel=
function(){if(this.working){this.Cargador(false);this.aborta=false;this.working=false;this.objAjax.abort();}
else
this.aborta=true;};this.DataForm=
function(obj){var resultado='';this.Add=
function(nombre,valor){resultado+=nombre+'='+valor;if((i+1)< obj.length)
resultado+='&';};for(i=0;i<obj.length;i++){var tipo=obj[i].type;var nombre=obj[i].name;if(tipo=='select-multiple'){var n=0;for(j=0;j<obj[i].options.length;j++)
if(obj[i].options[j].selected)
this.Add(nombre+'['+(n++)+']',obj[i].options[j].value);}
else if(tipo=='radio'||tipo=='checkbox'){if(obj[i].checked)
this.Add(nombre,obj[i].value);}
else
this.Add(nombre,obj[i].value);}
return(resultado);};this.CSS=
function(obj,atributo){if(obj.style[atributo])
return(obj.style[atributo]);else if(obj.currentStyle)
return(obj.currentStyle[atributo]);else if(document.defaultView&&document.defaultView.getComputedStyle)
return document.defaultView.getComputedStyle(obj,"").getPropertyValue(atributo);else
return(null);};this.Default=
function(obj){var argumentos={url:this.homepage,
method:'GET',
async:true
};for(var i in argumentos)
if(obj[i]==null)
obj[i]=argumentos[i];if(obj.method.toUpperCase()=='GET'&&obj.param){obj.url+=(obj.url.indexOf('?')==-1)? '?'+obj.param:'&'+obj.param;obj.param=null;}
else if(obj.method.toUpperCase()=='POST'&&obj.headers==null)
obj.headers=['Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-1'];return(obj);};this.Url=
function(str){var resultado='',obj=str.split('#');if(obj.length > 1){for(var i=1;i<obj.length;++i){resultado+=obj[i];if((i+1)< obj.length)
resultado+='#';}
}
else
resultado=obj[0];return(resultado);};this.Cargador=
function(onoff,id){if(id==null)
id=this.idloader;if(id)
$(id).style.visibility=(onoff)? 'visible':'hidden';};this.Cargador(false);if(typeof XMLHttpRequest!='undefined')
this.objAjax=new XMLHttpRequest();else if(typeof ActiveXObject!='undefined')
this.objAjax=(Number(navigator.appVersion.substr(0,3))>=5)? new ActiveXObject('Msxml2.XMLHTTP'):new ActiveXObject('Microsoft.XMLHTTP');if(this.objAjax==null)
alert(this.noajax);else if(this.idmain&&window.location.hash!=''&&window.location.hash!='#')
this.Link(window.location.href,this.idmain);}
function $(id){return(document.getElementById(id));}




function jxml(x){this.Query=
function(sql){var dostablas,selec,i,j,k,n=new Array(),resul=new Array(),resuln=0,VER=new RegExp(/^(atrib|node)_(value|node|atrib)(\[([0-9\-]+)\])?$/gi);var NODE_ID,NODE_ROW,NODE_PATH,NODE_LEVEL,NODE_VALUE,NODE_NODE;var ATRIB_ID,ATRIB_ROW,ATRIB_PATH,ATRIB_LEVEL,ATRIB_VALUE,ATRIB_NODE,ATRIB_ATRIB;var VER_NODE_NODE,VER_NODE_VALUE,VER_ATRIB_NODE,VER_ATRIB_VALUE,VER_ATRIB_ATRIB;this.Resul=
function(verono){var retorno,k;if(selec.length > 1){retorno=new Array();for(k=0;k<selec.length;++k)
retorno[k]=(selec[k].match(VER)&&verono)? eval("VER_"+selec[k].toUpperCase()):eval(selec[k].toUpperCase());}
else
retorno=(selec[0].match(VER)&&verono)? eval("VER_"+selec[0].toUpperCase()):eval(selec[0].toUpperCase());return retorno;};dostablas = (sql.match(/(node\..*atrib\.)|(atrib\..*node\.)/gi)) ? true : false;if (!dostablas) nodoatrib = (sql.match(/node\./gi)) ? true : false;sql = sql.replace(/=/g,"==");sql = sql.replace(/>==/g,">=");sql = sql.replace(/<==/g,"<=");sql = sql.replace(/<>/g,"!=");sql = sql.replace(/( | )+/g," ");sql = sql.replace(/\s+and\s+/gi," && ");sql = sql.replace(/\s+or\s+/gi," || ");sql = sql.replace(/(atrib|node)\.(id|row|path|level|value|node|atrib)/gi,"$1_$2");sql = sql.replace(/\(([0-9]{1,2})\)/gi,"[$1-1]");sql = sql.replace(/select (([a-z]+_[a-z]+(\[[0-9\-]+\])? ?,? ?)+) where (.+) limit (-?[0-9]+( ?,? ?-?[0-9]+)?)$/gi,"new Array(true, \"$1\", \"$4\", \"$5\")");sql = sql.replace(/select (([a-z]+_[a-z]+(\[[0-9\-]+\])? ?,? ?)+) limit (-?[0-9]+( ?,? ?-?[0-9]+)?)$/gi,"new Array(false, \"$1\", true, \"$4\")");sql = sql.replace(/select (([a-z]+_[a-z]+(\[[0-9\-]+\])? ?,? ?)+) where (.+)$/gi,"new Array(true, \"$1\", \"$4\", 0)");sql = sql.replace(/select (([a-z]+_[a-z]+(\[[0-9\-]+\])? ?,? ?)+)$/gi,"new Array(false, \"$1\", true, 0)");sql=eval(sql);sql[1] = sql[1].replace(/ |,$/gi,"");selec=sql[1].toUpperCase().split(",");nodoatrib=((dostablas&&this.xml[0].length > this.xml[1].length)||(!dostablas&&nodoatrib))? new Array(0,1):new Array(1,0);for(i=1;i<this.xml[nodoatrib[0]].length;++i){if(sql[0]||dostablas){if(dostablas){for(j=1;j<this.xml[nodoatrib[1]].length;++j){n=(nodoatrib[0]==0)? Array(i,j):Array(j,i);VER_NODE_NODE=this.xml[0][n[0]][2],VER_NODE_VALUE=this.xml[0][n[0]][3],VER_ATRIB_NODE=this.xml[1][n[1]][2],VER_ATRIB_VALUE=this.xml[1][n[1]][3],VER_ATRIB_ATRIB=this.xml[1][n[1]][4];NODE_ID=n[0],NODE_ROW=this.xml[0][n[0]][0],NODE_PATH=this.xml[0][n[0]][1],NODE_LEVEL=NODE_PATH.length,NODE_NODE=VER_NODE_NODE.toUpperCase(),NODE_VALUE=VER_NODE_VALUE.toUpperCase();ATRIB_ID=n[1],ATRIB_ROW=this.xml[1][n[1]][0],ATRIB_PATH=this.xml[1][n[1]][1],ATRIB_LEVEL=ATRIB_PATH.length,ATRIB_NODE=VER_ATRIB_NODE.toUpperCase(),ATRIB_VALUE=new Array(),ATRIB_ATRIB=new Array();for(k=0;k<VER_ATRIB_VALUE.length;++k)
ATRIB_VALUE[k]=VER_ATRIB_VALUE[k].toUpperCase(),ATRIB_ATRIB[k]=VER_ATRIB_ATRIB[k].toUpperCase();if(sql[0])
sql[2]=sql[2].toUpperCase();if(NODE_ROW==ATRIB_ROW&&(eval(sql[2])))
resul[resuln++]=this.Resul(true);}
}
else{if(nodoatrib[0]==0){VER_NODE_NODE=this.xml[0][i][2],VER_NODE_VALUE=this.xml[0][i][3];NODE_ID=i,NODE_ROW=this.xml[0][i][0],NODE_PATH=this.xml[0][i][1],NODE_LEVEL=NODE_PATH.length,NODE_NODE=VER_NODE_NODE.toUpperCase(),NODE_VALUE=VER_NODE_VALUE.toUpperCase();}
else{VER_ATRIB_NODE=this.xml[1][i][2],VER_ATRIB_VALUE=this.xml[1][i][3],VER_ATRIB_ATRIB=this.xml[1][i][4]
ATRIB_ID=i,ATRIB_ROW=this.xml[1][i][0],ATRIB_PATH=this.xml[1][i][1],ATRIB_LEVEL=ATRIB_PATH.length,ATRIB_NODE=VER_ATRIB_NODE.toUpperCase(),ATRIB_VALUE=new Array(),ATRIB_ATRIB=new Array();for(k=0;k<VER_ATRIB_VALUE.length;++k)
ATRIB_VALUE[k]=VER_ATRIB_VALUE[k].toUpperCase(),ATRIB_ATRIB[k]=VER_ATRIB_ATRIB[k].toUpperCase();}
if(eval(sql[2].toUpperCase())){resul[resuln++]=this.Resul(true);}}
}
else{if(nodoatrib[0]==0)
NODE_ID=i,NODE_ROW=this.xml[0][i][0],NODE_PATH=this.xml[0][i][1],NODE_LEVEL=NODE_PATH.length,NODE_NODE=this.xml[0][i][2],NODE_VALUE=this.xml[0][i][3];else
ATRIB_ID=i,ATRIB_ROW=this.xml[1][i][0],ATRIB_PATH=this.xml[1][i][1],ATRIB_LEVEL=ATRIB_PATH.length,ATRIB_NODE=this.xml[1][i][2],ATRIB_VALUE=this.xml[1][i][3],ATRIB_ATRIB=this.xml[1][i][4];resul[resuln++]=this.Resul(false);}
}
return(sql[3]!=0)? eval("resul.slice("+sql[sql.length-1]+")"):resul;};this.Leer=
function(x){var resultado=new Array(new Array(),new Array());var ok=new Array(1,1),total=new Array(),i=new Array();var lvl=0,id=0,xml,lvlUP;var NoEsIE=(navigator.appName=="Microsoft Internet Explorer"&&navigator.userAgent.indexOf("Opera")==-1)? false:true;this.Actualiza=
function(){var k,str="x";for(k=0;k<=lvl;++k)
str+=".childNodes["+i[k]+"]";return eval(str);};this.Atrib=
function(cual){var k,atrib=new Array();for(k=0;k<xml.attributes.length;++k)
atrib[k]=(cual)? xml.attributes[k].value:xml.attributes[k].name;return atrib;};this.Ruta=
function(){var k,ruta=new Array();for(k=1;k<=lvl;++k)
ruta[k-1]=(NoEsIE)?(i[k]+1)/2:i[k]+1;return ruta;};for(i[0]=0,total[0]=20;i[lvl] < total[lvl];++i[lvl]){xml=this.Actualiza();if(xml.nodeType==1){++id;if(xml.attributes.length > 0)
resultado[1][ok[1]++]=new Array(id,this.Ruta(),xml.nodeName,this.Atrib(true),this.Atrib(false));if(xml.childNodes.length > 1||(xml.childNodes.length==1&&xml.firstChild.childNodes.length > 0))
i[++lvl]=-1,total[lvl]=xml.childNodes.length;else if(xml.childNodes.length==1&&xml.childNodes[0].nodeValue!=null)
resultado[0][ok[0]++]=new Array(id,this.Ruta(),xml.nodeName,xml.childNodes[0].nodeValue);}
lvlUP=lvl;for(var j=0;j<lvlUP;++j)
if(total[lvl] <=(i[lvl]+1)&&lvl > 1)
--lvl;}
return resultado;};this.Tables=
function(id){var datos='<table width="100%" border="1" cellpadding="5" cellspacing="0"><tr><td colspan="6" bgcolor="#333333"><h2 style="color:#FFFFFF; padding-left:20px">Node</h2></td></tr><tr><td bgcolor="#AAAAAA"><b>ID</b></td><td bgcolor="#AAAAAA"><b>Row</b></td><td bgcolor="#AAAAAA"><b>Path</b></td><td bgcolor="#AAAAAA"><b>Level</b></td><td bgcolor="#AAAAAA"><b>Node</b></td><td bgcolor="#AAAAAA"><b>Value</b></td></tr>';for(i=1;i<this.xml[0].length;++i)
datos+='<tr><td>'+i+'</td><td>'+this.xml[0][i][0]+'</td><td>'+this.xml[0][i][1]+'</td><td>'+this.xml[0][i][1].length+'</td><td>'+this.xml[0][i][2]+'</td><td>'+this.xml[0][i][3]+'</td></tr>';datos+='</table><br><table width="100%" border="1" cellpadding="5" cellspacing="0"><tr><td colspan="7" bgcolor="#333333"><h2 style="color:#FFFFFF; padding-left:20px">Atrib</h2></td></tr><tr><td bgcolor="#AAAAAA"><b>ID</b></td><td bgcolor="#AAAAAA"><b>Row</b></td><td bgcolor="#AAAAAA"><b>Path</b></td><td bgcolor="#AAAAAA"><b>Level</b></td><td bgcolor="#AAAAAA"><b>Node</b></td><td bgcolor="#AAAAAA"><b>Value</b></td><td bgcolor="#AAAAAA"><b>Atrib</b></td></tr>';for(i=1;i<this.xml[1].length;++i)
datos+='<tr><td>'+i+'</td><td>'+this.xml[1][i][0]+'</td><td>'+this.xml[1][i][1]+'</td><td>'+this.xml[1][i][1].length+'</td><td>'+this.xml[1][i][2]+'</td><td><ol><li>'+this.xml[1][i][3].join('</li><li>')+'</li></ol></td><td><ol><li>'+this.xml[1][i][4].join('</li><li>')+'</li></ol></td></tr>';document.getElementById(id).innerHTML=datos;};this.xml=this.Leer(x);}