﻿// Info en: http://docs.google.com/View?docid=ajhrgkcd33jh_9gzdzcb
var codificacionCaracteres="utf-8";
var ajaxRotulo="Cargando"; var aint; var astHTML=new Array(".","..","...","&nbsp;...","&nbsp;&nbsp;...","&nbsp;&nbsp;&nbsp;..","&nbsp;&nbsp;&nbsp;&nbsp;.");
var ast=new Array(".","..","..."," ...","  ...","   ..","    ."); XHR=new Array; aCache=new Array; 
function cXHR(){ var oXHR=false; if (window.ActiveXObject){oXHR=new ActiveXObject("Microsoft.XMLHTTP");}else if(window.XMLHttpRequest){oXHR=new XMLHttpRequest();}if(oXHR)return oXHR;else alert("Error: AJAX no funciona en su navegador actualicelo.");}
function fti(form){ if(form){if(!(form.elements))form=$$$(form);var s=""; aP="";
for (i=0;i<form.elements.length;i++){ aP+=s+form.elements[i].name+'='+encodeURI(form.elements[i].value);s="&";}} return aP;}
function $$$(a){if (typeof a=='object') O=a; else O=document.getElementById(a); return O;} 
function scr(t){p1=t.split("<scrip",2);	if (p1[1]){p2=p1[1].split(">",2);p3=p2[1].split("</script>",2); if (p3[0] && p3[0]!=''){eval(p3[0]); t=scr(p1[0]+p3[1]);}} return t; }
function afx(t){if (t){document.title= "("+ajaxRotulo+") - "+document.title;    aint=setInterval("st()",ast.length*200);
if (!($$$("ajax_div_carga"))){var c=document.createElement("div"); c.style.cssText= "position:absolute; top:3px; right:3px; z-index:99; background-color:white; color:#666; font-size:11px; font-weight:bold; border:1px solid #CCC; width:75px; height:14px; filter:alpha(opacity=50); opacity:.50; -moz-border-radius:8px;"; 
c.id="ajax_div_carga"; 	c.innerHTML="&nbsp;"+ajaxRotulo;document.body.appendChild(c); }
else $$$("ajax_div_carga").style.display="block";} else{    document.title=document.title.replace("("+ajaxRotulo+") - ","");
clearInterval(aint); setTimeout(" window.status='';",ast.length*200); setTimeout("",ast.length*200+2000); $$$("ajax_div_carga").style.display="none"; }}

function st(){for (i=0;i< ast.length;i++) setTimeout("window.status='Cargando"+ast[i]+"'; $$$('ajax_div_carga').innerHTML='&nbsp;"+ajaxRotulo+astHTML[i]+"'",200*i)}

function cargando(){carg=false;	for (var i=0; i<XHR.length; i++) {if ((XHR[i]!=null)&&(XHR[i])) carg=true; }return carg;}
ilibs=new Array; var cargados=new Array;

function aji(aU,aF,Vars){var num=cargados.length; if (!(ilibs[aU])){var lib=document.createElement('script'); if (!(cargando())) afx(true);
lib.src=aU; lib.type="text/javascript"; if(Vars!=''){va=String(Vars);vb=va.split(",");var V=vb.join("','");V="'"+V+"'"; }else V='';
document.getElementsByTagName("HTML")[0].getElementsByTagName("HEAD")[0].appendChild(lib); nl=XHR.length;	
if (aF) {XHR[nl]=setInterval("if (cargados.length>"+num+") {eval(\""+aF+"("+V+");\"); clearInterval(XHR["+nl+"]); XHR["+nl+"]=null; cargado=false; if (!(cargando())) afx(false);} " ,100);} else  {XHR[nl]=setInterval("if (cargado) {clearInterval(XHR["+nl+"]);  XHR["+nl+"]=null; cargado=false; if (!(cargando())) afx(false);} " ,500);}
ilibs[aU]=true;}}

function esXML(txt) { a=txt.split(">"); a=a[0].split(" "); a="---"+a.join(""); if ( (a.indexOf("<?xml")>0)||((a.indexOf("<!DOCTYPE")>0)&&(a.indexOf("XHTML")>0))) return true; else return false; }

function esJSON(txt) {if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/. 
test(txt)) return true; else return false;} 

function ajax(aU,aF,Vars,form) { if (!(cargando())) afx(true);
if(form)var aP=fti(form);else var aP=""; if(Vars!=''){va=String(Vars);vb=va.split(",");var V=vb.join("','");V=",'"+V+"'"; }else V='';
aC=aU+aP; if (aCache[aC]) { eval(aF+"(aCache[\""+aC+"\"]"+V+");"); if (!(cargando())) afx(false);} 
else { var n=XHR.length; XHR[n]=cXHR();if (aP!=""){XHR[n].open("POST", aU, true); XHR[n].setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset='+codificacionCaracteres);} else { XHR[n].open("GET", aU, true); aP=null;}
XHR[n].onreadystatechange=function(){if (XHR[n].readyState==4){	
if (XHR[n].status==200){ if (esXML(XHR[n].responseText)) {  eval(aF+"(XHR["+n+"].responseXML"+V+"); aCache[\""+aC+"\"]=XHR["+n+"].responseXML;"); } 
			 else if (esJSON(XHR[n].responseText)) { var objson=eval('('+ XHR[n].responseText + ')'); eval(aF+"(objson"+V+"); aCache['"+aC+"']=objson");  }
			 else { eval(aF+"(scr(XHR["+n+"].responseText)"+V+"); aCache[\""+aC+"\"]=XHR["+n+"].responseText;"); }
			 XHR[n]=null; if (!(cargando())) afx(false); }
else if(XHR[n].status==404){alert("Error: La página llamada con AJAX no existe");}											
else {alert("Error "+XHR[n].status+": "+XHR[n].statusText);}}}
XHR[n].send(aP); setTimeout("if ((XHR["+n+"])&&(XHR["+n+"]!=null)&&(XHR["+n+"].readyState<2)) {XHR["+n+"]=null; if (!(cargando())) afx(false);}",20000)
}}

