﻿var isIE = /*@cc_on!@*/false; //vendo se é o IE
//var loadstatustext="<div align='center'><img src='images/loading_ajax.gif'/><br>&nbsp;&nbsp;&nbsp;Carregando...</div>"
var loadstatustext="<div align='center'><img src='images/loading_ajax.gif'/>&nbsp;<font face='Verdana' size='1'>Carregando...</font></div>"
var loadstatuserror="<div align='center'>Ocorreu um erro...</div>"

function Ajax(){
         var page_request=false;
         try {
          /*Para navegadores distintos a internet explorer*/
          page_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
          try {
                   /*Para explorer*/
                   page_request = new ActiveXObject("Microsoft.XMLHTTP");
                   }
                   catch (E) {
                   page_request = false;
          }
         }

         if (!page_request && typeof XMLHttpRequest!='undefined') {
          page_request = new XMLHttpRequest();
         }
         return page_request;
}
                   

function FAjax (url,containerid,valores,metodo,form,target)
{
          var query='';
          var ajax=Ajax();
          
          if (target){
                    var container= parent.document.getElementById(containerid);
          }
          else {
                    var container= document.getElementById(containerid);
          }
          
          if(form){    
          		query = getFieldsForm(form); 
          		valores=valores+'&'+query;
          }          
      

/*Método POST*/
if(metodo.toUpperCase()=='POST'){
         ajax.open ('POST', url, true);
         ajax.onreadystatechange = function() {
         if (ajax.readyState==1) {
                          container.innerHTML=loadstatustext;                  
         }
         else if (ajax.readyState==4){
                   if(ajax.status==200)
                   {                   
                        container.innerHTML=ajax.responseText;
                        getScripts(ajax.responseText); 
                        if(isIE){ getStyles(ajax.responseText) }                                           

                   }
                   else if(ajax.status==404)
                                             {

                            container.innerHTML = "Arquivo não encontrado";
                                             }
                           else
                                             {
                            container.innerHTML = loadstatuserror;
                                             }
                                    }
                  }
         ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         ajax.send(encodeURI(valores));
         return;
}
/*Método GET*/
if (metodo.toUpperCase()=='GET'){

         ajax.open ('GET', url, true);
         ajax.onreadystatechange = function() {
         if (ajax.readyState==1) {
                      container.innerHTML=loadstatustext;
         }
         else if (ajax.readyState==4){
                   if(ajax.status==200){
                        container.innerHTML=ajax.responseText;
                        getScripts(ajax.responseText); 
                        if(isIE){ getStyles(ajax.responseText) }                                             
                   }
                   else if(ajax.status==404)
                                             {

                            container.innerHTML = "Arquivo não encontrado";
                                             }
                                             else
                                             {
                            container.innerHTML = loadstatuserror;
                                             }
                                    }
                  }
         ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         ajax.send(null);
         return
}
} 

function getFieldsForm(fform){ //pega campos do formulário e retorna a querystring correspondente
/* Autor: José Cláudio Medeiros de Lima (pequenas alterações by Micox - 28/12/07)
* url: http://forum.ievolutionweb.com/index.php?showtopic=18264
* Versão: 1.5 - 28/12/2007 - Creative Commons */
    var buff = [];
    for (var i=0; i< fform.length;i++)  {
        var campo = fform.elements[i];
        
        if((campo.type=="checkbox" || campo.type=="radio")){
            if(campo.checked==true && campo.name){
                buff.push(campo.name + "=" + encodeURI(campo.value));
            }
        }else if(campo.name){ //campos que não tenham name não vão.
            buff.push(campo.name + "=" + encodeURI(campo.value));
        }
    }
    return buff.join("&");
}


function getScripts(texto){ //extrai javascripts do texto e executa no documento
//Author: SkyWalker.TO do imasters/forum (pequenas alterações by Micox)
    var ini = 0;
    // loop enquanto achar um script
    while (ini!=-1){
        ini = texto.indexOf('<script', ini);
        if (ini >=0){
            ini = texto.indexOf('>', ini) + 1;
            // procura o final do script
            var fim = texto.indexOf("<\/script>", ini);
            codigo = texto.substring(ini,fim);
            // executa o script - alterado by Micox.
            var novo = document.createElement("script")
            novo.text = codigo; novo.type = 'text/javascript';
			document.body.appendChild(novo);
        }
    }
}

function getStyles(texto){
	//Parse styles on IE. Ver. 1.0 - 25/03/08 - by Micox - elmicox.blogspot.com
    var ini = 0;
    while (ini!=-1){
        ini = texto.indexOf('<style', ini);
        if (ini >=0){
            ini = texto.indexOf('>', ini) + 1;
            var fim = texto.indexOf("<\/style>", ini);
            codigo = texto.substring(ini,fim);
            // executa o style 
			var rules = codigo.split('}')
			var rule, selector, style;
			for(var i=0; i<rules.length-1 ; i++){
				rule = rules[i].split('{')
				selector = rule[0].trim()
				style = rule[1].trim()	
				document.styleSheets[document.styleSheets.length-1].addRule(selector,style)
			}
        }
    }
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,'');
}

