var ArrConfigAjax = new Array();
/* As 2 variaveis abaixo são para controlar o carregamento das divs */
var ArrCarregados = 0;
var Recarregando = false;
var id_recarregar = "";

function AddDivParaCarregar(nome_div, url, parametros, parametros_de_config, metodo_envio) {
	var RuntecConfigAjax = new Object();
	RuntecConfigAjax.divName = nome_div;	
	RuntecConfigAjax.req = null;
	
	if ((metodo_envio == null) || (metodo_envio == "")) 
		metodo_envio = "GET";	
	RuntecConfigAjax.metodo_envio = metodo_envio;
	
	if (url != "") {
		RuntecConfigAjax.url = url;
	}
	else {
		RuntecConfigAjax.url = "js/ajax_cidades.php";
	}
	RuntecConfigAjax.parametros = parametros;
	RuntecConfigAjax.parametros_de_config = parametros_de_config;
	
	ArrConfigAjax[ArrConfigAjax.length] = RuntecConfigAjax;
	
}

function AjaxCarregaCombos() {
	for (ix=0; ix<ArrConfigAjax.length; ix++) {
		if (getElt(ArrConfigAjax[ix].divName) != null) {
			getElt(ArrConfigAjax[ix].divName).innerHTML = "<img src='js/imagens/lendo.gif' width='10' height='10'> carregando informações...";
		}
		else {
				alert('nao encontrado ' + ArrConfigAjax[ix].divName);
		}
	}
	
	ix = ArrCarregados; 
	if (ix<ArrConfigAjax.length){		
		loadXMLDoc(ArrCarregados);
	}	
}

function AjaxRecarregaCarregaCombo(NomeDaDiv, parametros) {
	Recarregando = true;
	var aux_id = ArrConfigAjax.length;
	for (ix=0; ix<ArrConfigAjax.length; ix++) {
		if (ArrConfigAjax[ix].divName == NomeDaDiv) {
			ArrConfigAjax[ix].parametros = parametros;
			aux_id = ix;
			ix = ArrConfigAjax.length;
		}
	}
	
	ArrCarregados = aux_id;	
	if (aux_id<ArrConfigAjax.length){		
		id_recarregar = aux_id;
		loadXMLDoc(ArrCarregados);
	}	
}

function AjaxLoad( sourceObject, eventName, listener )
{ 
	// Funcao usada para carregar o ajax, atraves do load da pagina
	
	if (window.addEventListener)
		window.addEventListener("load", AjaxCarregaCombos, false)
	else if (window.attachEvent)
		window.attachEvent("onload", AjaxCarregaCombos)
	else if (document.getElementById)
		window.onload=AjaxCarregaCombos
}


function loadXMLDoc(){ 
	var aux_id = 0;
	//for (ix = 0; ix<ArrConfigAjax.length; ix++)
	var ix = ArrCarregados;
	var aux_url = ArrConfigAjax[ix].url + ArrConfigAjax[ix].parametros + ArrConfigAjax[ix].parametros_de_config;
	if ((Recarregando == false) || ((Recarregando == true) && (ArrCarregados == id_recarregar)) )
	{
		ArrConfigAjax[ix].req = null;
		if (window.XMLHttpRequest) { 
			ArrConfigAjax[ix].req = new XMLHttpRequest(); 
			ArrConfigAjax[ix].req.onreadystatechange = processReqChange;
			ArrConfigAjax[ix].req.open(ArrConfigAjax[ix].metodo_envio, aux_url, true);
			aux_id = ix;		
			ArrConfigAjax[aux_id].req.send(null);	
		} else if (window.ActiveXObject) {
			ArrConfigAjax[ix].req = new ActiveXObject("Microsoft.XMLHTTP"); 
			if (ArrConfigAjax[ix].req) { 
				ArrConfigAjax[ix].req.onreadystatechange = processReqChange;
				aux_id = ix;
				ArrConfigAjax[ix].req.open(ArrConfigAjax[ix].metodo_envio, aux_url, true); 
				ArrConfigAjax[aux_id].req.send();
			}
		}
	}
}

function processReqChange(){
	var ix = ArrCarregados;
	if (ix<ArrConfigAjax.length){
		if(ArrConfigAjax[ix].req.readyState == 4){
			if (ArrConfigAjax[ix].req.status == 200) {
				if (getElt(ArrConfigAjax[ix].divName) != null) {
					getElt(ArrConfigAjax[ix].divName).innerHTML = ArrConfigAjax[ix].req.responseText;
				}
				// Após carregar chama funcao para carregar proximos scripts
				ArrCarregados++;
				if (ArrCarregados<ArrConfigAjax.length){
					loadXMLDoc(ArrCarregados);
				}	
			} else { 
				alert("Houve um problema ao obter os dados:\n" + ArrConfigAjax[ix].req.statusText);
			}
		}
	}
}
