carregacascata=[]
icarregacascata=0

var RequestObject;

  function initRequest(newRequestFunc, noBody) {
        var _newRequest = newRequestFunc;
        var _noBody = noBody;
        var _id = 0;
        return function() {
                this.newRequest = _newRequest;
                this.loadText = function(url, method) {
                        var req = _newRequest();
                        req.open(method || "GET", url, false);
                        if (_noBody)
                                req.send();
                        else
                                req.send(null);
                        return req.responseText;
                }
                this.splitLines = function(text) {
                        try {
                                return text.split(/\r?\n|\r/);
                        } catch(e) {
                                return [];
                        }
                }
                this.loadLines = function(url, method) {
                        return this.splitLines(this.loadText(url, method || "GET"));
                }
                this.loadXML = function(url, method) {
                        var req = _newRequest();
                        req.open(method || "GET", url, false);
                        if (_noBody)
                                req.send();
                        else
                                req.send(null);
                        return req.responseXML;
                }
                this.bind = function(object) {
                        var url = object['url'];
                        if (typeof url == 'undefined')
                                throw "necess?rio URL para fazer bind";
                        var id = _id++;
                        var req = _newRequest();
                        var method = object['method'] || "GET";
                        var headers = object['header'];
                        var send = object['send'];
                        var user = object['username'];
                        var pass = object['password'];
                        var onload = object['onload'];
                        var onerror = object['onerror'];
                        var onprocess = object['onprocess'];
                        var onstatechange = object['onstatechange'];
                        
                        req.onreadystatechange=function() {
                                if (onstatechange)
                                        onstatechange(req, id);
                                switch(req.readyState) {
                                        case 0: // UNINITIALIZED open() não foi chamado ainda
                                                break;
                                        case 1: // LOADING send() não foi chamado ainda
                                        case 2: // LOADED send() foi chamado, disponível getResponseHeader e status
                                        case 3: // INTERACTIVE carregando, responseText tem dados parciais
                                                if (onprocess)
                                                        onprocess(req, id);
                                                break;
                                        case 4: // COMPLETED, todas as operações foram concluidas
                                                if (onprocess)
                                                        onprocess(req, id);
                                                if (req.status == 0 || req.status == 200) {
                                                        if (onload)
                                                                onload(req, id);
                                                } else {
                                                        if (onerror)
                                                                onerror(req, id, req.statusText);
                                                }
                                                break;
                                }
                        }
                        if (user){
                                req.open(method, url, true, user, password);
						}
                        else{
                                req.open(method, url, true);
						}
                        req.setRequestHeader('requestid', id);
                        for(var header in headers) {
								req.setRequestHeader(header, headers[header]);
                        }
							req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
							req.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
							req.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
							req.setRequestHeader("Pragma", "no-cache");
						try {
                                if (send && _noBody) {
										req.send();
                                } else {
										
										req.send(send);
                                }
                        } catch(e) {
                                if (onerror) {
                                        onerror(req, id, e);
                                }
                        }
                }
        }
  }

  if (window.ActiveXObject) {
        var objectNames = [
                        "Msxml2.XMLHTTP.6.0", 
                        "Msxml2.XMLHTTP.5.0", 
                        "Msxml2.XMLHTTP.4.0", 
                        "MSXML2.XMLHTTP.3.0", 
                        "MSXML2.XMLHTTP", 
                        "Microsoft.XMLHTTP"
        ];
        for(var i=0; i < objectNames.length; i++) {
                try {
                        var requestName = objectNames[i];
                        new ActiveXObject(requestName);
                        RequestObject = initRequest(function() { return new ActiveXObject(requestName); }, false);
                } catch(e) {
                }
        }
  }

  if (! RequestObject && window.XMLHttpRequest) {
        try {
                new XMLHttpRequest();
                RequestObject = initRequest(function() { return new XMLHttpRequest(); }, false);
        } catch(e) {
        }
  }

  if (! RequestObject) {
        alert("Seu browser não esta preparado para o ajax");
  }

   var xmlhttp = new RequestObject();
//Fila de conexões
fila=[]
ifila=0

//Carrega via XMLHTTP a url recebida e coloca seu valor
//no objeto com o id recebido
function ajaxHTML(id,url,carregar,mensagem){
if(mensagem == null)mensagem='<div class="carregando"><img src="imagens/geral/carregando.gif"><br /><br />Carregando...</div>';
if(carregar){
//Carregando...
    document.getElementById(id).innerHTML=mensagem
}
		//Adiciona à fila
		fila[fila.length]=[id,url]
		//Se não há conexões pendentes, executa
		if((ifila+1)==fila.length)ajaxRun()
}

//Executa a próxima conexão da fila
function ajaxRun(){
    //Abre a conexão
   xmlhttp.bind({
	 url:fila[ifila][1],
     onload:function(xmlhttp, id) {
       document.getElementById(fila[ifila][0]).innerHTML=unescape(xmlhttp.responseText.replace(/\+/g," "));
       ifila++;
       if(ifila<fila.length)setTimeout("ajaxRun()",20);
	   }
});
    //Função para tratamento do retorno
}
function verificasepodecarregar(){
	if (document.getElementById(carregacascata[icarregacascata][1])==null)
		{
		setTimeout("verificasepodecarregar('"+carregacascata[icarregacascata][0]+"','"+carregacascata[icarregacascata][1]+"')",20)
		}
	else {
		setTimeout(carregacascata[icarregacascata][0],20)
    	icarregacascata++
	    if(icarregacascata<carregacascata.length)setTimeout("verificasepodecarregar()",20)
		
		}
}

function prepareForm(formID){
var form = document.forms[formID];
var arg = "";
for(i=0; i < form.elements.length; i++ ){
if(form.elements[i].type == 'text'){
    if (arg != ""){
        arg += "&" + form.elements[i].name + "=" +
        escape(form.elements[i].value);}
    else{
        arg = form.elements[i].name + "=" +
        escape(form.elements[i].value);}
} else if(form.elements[i].type == 'radio' &&
form.elements[i].checked == true ){
    if (arg != ""){
        arg += "&" + form.elements[i].name + "=" +
        escape(form.elements[i].value);}
    else{
        arg = form.elements[i].name + "=" +
        escape(form.elements[i].value);}
} else if(form.elements[i].type == 'checkbox' &&
form.elements[i].checked == true ){
    if (arg != ""){
        arg += "&" + form.elements[i].name + "=" +
        escape(form.elements[i].value);}
    else{
        arg = form.elements[i].name + "=" +
        escape(form.elements[i].value);}
} else if(form.elements[i].type == 'password' ){
    if (arg != ""){
        arg += "&" + form.elements[i].name + "=" +
        escape(form.elements[i].value);}
    else{
        arg = form.elements[i].name + "=" +
        escape(form.elements[i].value);}
} else if(form.elements[i].type == 'hidden' ){
    if (arg != ""){
        arg += "&" + form.elements[i].name + "=" +
        escape(form.elements[i].value);}
    else{
        arg = form.elements[i].name + "=" +
        escape(form.elements[i].value);}
} else if(form.elements[i].type == 'textarea' ){
    if (arg != ""){
        arg += "&" + form.elements[i].name + "=" +
        escape(form.elements[i].value);}
    else{
        arg = form.elements[i].name + "=" +
        escape(form.elements[i].value);}
} else if(form.elements[i].type == 'select-one' ){
    if (arg != ""){
        arg += "&" + form.elements[i].name + "=" +
        escape(form.elements[i].value);}
    else{
        arg = form.elements[i].name + "=" +
        escape(form.elements[i].value);}
}
}
return arg;
}

function ajaxEnvia(Form,Metodo,Pagina,Elemento,valor,naocarregar,flush){
//Abre a conexão
	if (valor)
		{
			valores = Form
		}
		else
		{
			valores = prepareForm(Form)
		};
	if(Metodo == "GET")Pagina=Pagina
   if (naocarregar){
	if (flush){
		xmlhttp.bind({
		headers:document.head,
		method:Metodo,	 
		url:Pagina,
		send:valores,
		onprocess:function(xmlhttp, id){document.getElementById(Elemento).innerHTML=unescape(xmlhttp.responseText.replace(/\+/g," "));
		}
		});
	}else{
		xmlhttp.bind({
		headers:document.head,
		method:Metodo,	 
		url:Pagina,
		send:valores,
		onload:function(xmlhttp, id){document.getElementById(Elemento).innerHTML=unescape(xmlhttp.responseText.replace(/\+/g," "));
		}
		});
	}
	   
   }else{
    document.getElementById(Elemento).innerHTML="<div class='carregando'><img src='imagens/geral/carregando.gif'><br />Enviando dados...</div>"
	xmlhttp.bind({
     headers:document.head,
	 method:Metodo,	 
	 url:Pagina,
	 send:valores,
	 onload:function(xmlhttp, id){
        document.getElementById(Elemento).innerHTML=unescape(xmlhttp.responseText.replace(/\+/g," "));
	 }
    });
   } 
    //Função para tratamento do retorno
}
    //Função q valida CPF
function validacpf(numcpf)
{
	x = 0;
	soma = 0;
	dig1 = 0;
	dig2 = 0;
	texto = "";
	numcpf1="";
	len = numcpf.length; x = len -1;
	// var numcpf = "12345678909";
	for (var i=0; i <= len - 3; i++) {
		y = numcpf.substring(i,i+1);
		soma = soma + ( y * x);
		x = x - 1;
		texto = texto + y;
	}
	dig1 = 11 - (soma % 11);
	if (dig1 == 10) dig1=0 ;
	if (dig1 == 11) dig1=0 ;
	numcpf1 = numcpf.substring(0,len - 2) + dig1 ;
	x = 11; soma=0;
	for (var i=0; i <= len - 2; i++) {
		soma = soma + (numcpf1.substring(i,i+1) * x);
		x = x - 1;
	}
	dig2= 11 - (soma % 11);
	if (dig2 == 10) dig2=0;
	if (dig2 == 11) dig2=0;
	//alert ("Digito Verificador : " + dig1 + "" + dig2);
	if ((dig1 + "" + dig2) == numcpf.substring(len,len-2)) {
		return true;
	}
	alert ("Numero do CPF invalido !!!");
	return false;
}
