/*                                                         */
/*                      SysAjax                            */
/*                                                         */
/*           Básico para utilização de Ajax                */
/*                                                         */
/*          Desenvolvido por Dayan C.Galiazzi              */
/*             <dayan@creditaipu.com.br>                   */
/*                                                         */
/*              Variaveis de uso Geral                     */
/*                                                         */

/***********************************************************************/
/*             Instancia objeto Ajax                                   */
/***********************************************************************/
function ajax_init(){
   var O;
   var msxmlhttp=new Array(
	  'Msxml2.XMLHTTP.5.0',
	  'Msxml2.XMLHTTP.4.0',
	  'Msxml2.XMLHTTP.3.0',
	  'Msxml2.XMLHTTP',
	  'Microsoft.XMLHTTP');
   for(var i=0;i<msxmlhttp.length;i++){
      try{ O=new ActiveXObject(msxmlhttp[i]); }
      catch(e){ O=null; }
   }
   if(!O && typeof XMLHttpRequest!="undefined") O=new XMLHttpRequest();
   if (!O) alert("Seu navegador não possui superta para ajax.");
   else return O;
};

/***********************************************************************/
/*                  Requisicoes em ajax                                */
/***********************************************************************/
function Ajax(url,d){
    this.Method="GET";
    this.Url=url;
    this.Dados=d;    
    if(arguments[2]=='f') this.ass=false; else this.ass=true;
	var self=this;

	this.Load=function(){		
		var ajax=ajax_init();
		if(ajax){
			try{		
				showAjax();		
				ajax.onreadystatechange=function(){					
					if(ajax.readyState!=4) return; 
					if(ajax.status==200||!ajax.status){		
						hiddenAjax();									
						self.RespXML=ajax.responseXML;
						self.RespText=ajax.responseText;
						if(self.OnOk) self.OnOk();
					}
					else if(self.OnErro){
						hiddenAjax();
						self.OnErro();
					}
					ajax.onreadystatechange=function(){};
					ajax=null;
				};
				ajax.open(this.Method,this.Url,this.ass);
				if(this.Method=="POST")
					ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
				ajax.send(((this.Method=="POST")?this.Dados:null));
				if(!this.ass&&F_IE){					
					self.RespXML=ajax.responseXML;
					self.RespText=ajax.responseText;
					if(ajax.status==200) if(self.OnOk) self.OnOk();
					else if(self.OnErro) self.OnErro();
					ajax=null;
				}
		 	}
	     	catch(e){ alert(e); };
      	}
      	else this.OnErro("N&ccedil;o foi possivel instanciar o objeto Ajax.");
	}
};

/***********************************************************************/
/*                  Abre uma página com ajax                           */
/***********************************************************************/
AjaxOpenPage=new Array();
function AjanAjaxOpenPage(url,id,nScript){
   showAjax();
   for(var i=0;;i++)
        if(!AjaxOpenPage[i]){var idx=i;break; }
   AjaxOpenPage[idx]=new Ajax(url);
   AjaxOpenPage[idx].idx=idx;
   AjaxOpenPage[idx].OnOk=function(){
   	  hiddenAjax();	
      $(id).innerHTML=AjaxOpenPage[idx].RespText;
      ParseJs($(id));
      evaluateCss($(id));
      delete AjaxOpenPage[AjaxOpenPage.idx];
   }
   AjaxOpenPage[idx].Load();
};

/***********************************************************************/
/*                    Codifica a string                                */
/***********************************************************************/
function url_encode(str){
   var hex_chars="0123456789ABCDEF";
   var noEncode=/^([a-zA-Z0-9\_\-\.])$/;
   var n,strCode,hex1,hex2,strEncode="";
   for(n=0;n<str.length;n++){
      if(noEncode.test(str.charAt(n))) strEncode+=str.charAt(n);
      else{
         strCode=str.charCodeAt(n);
         hex1=hex_chars.charAt(Math.floor(strCode / 16));
         hex2=hex_chars.charAt(strCode % 16);
         strEncode+="%"+(hex1+hex2);
      }
   }
   return strEncode;
};

/***********************************************************************/
/*                    Decodifica a string                              */
/***********************************************************************/
function url_decode(str){
   var n,strCode,strDecode="";
   for(n=0;n<str.length;n++){
      if(str.charAt(n)=="%"){
         strCode=str.charAt(n+1)+str.charAt(n+2);
         strDecode+=String.fromCharCode(parseInt(strCode,16));
         n+=2;
      }
      else strDecode+=str.charAt(n);
   }
   return strDecode;
};

/***********************************************************************/
/*    Cria o estatus padrao do sistema na abertura de aplicacoes       */
/***********************************************************************/
function criaAjax(){			
   	var txt="Recebendo dados...";
   	var img="../imagens/loading.gif";
   	var d=createElm("div");
	d.style.position="absolute";
	d.style.zIndex=9999;
	d.id="CntEstatusAjax";
   	document.body.appendChild(d);
   	d.style.backgroundColor="#AFB3B5";
   	d.style.width=220;
   	d.style.height=30;
   	d.style.right=5;
   	d.innerHTML="<table rows='1' cols='2' width='100%' border=0><tr><td valign=middle width=10%><img src='"+img+"'></td><td valign=middle><font color=000000 face='arial' size=3>"+txt+"</font></td></tr></table>";
	return d;
};

function showAjax(){			
	var est=$('CntEstatusAjax');
	if(!est) est=criaAjax();	
   	est.style.top=170+document.body.scrollTop;
   	est.style.display='block';
};

function hiddenAjax(){
	var est=$('CntEstatusAjax');
   	est.style.display='none';
};