/*
PARAMETROS

mainObjValue = 	eh o value do listbox principal.
				Ex.: listbox de estados, idestado=10.

subObjName =	eh o tag id (no html) que nomeia a listbox e sera chamada.
				ex.: < ... id="cidades" name= listCidades"...>.

subObjValue = 	eh o valor da sub-listbox.
				Ex.: listbox de cidades, idcidade=32.
				Ao informar esse valor a lista retornara com o
				id informado <selected> na lista.
*/




function Dados(mainObjValue,subObjName,subObjValue) {
	
	subObjName_GLOBAL = subObjName;
	subObjValue_GLOBAL = subObjValue;

	
	if(document.getElementById("idEstado").value == ""){
		document.getElementById("id_cidade_temp").value = ""
		document.getElementById("idEstado").selectedIndex = 0;
	}
	
	if(document.getElementById("idEstado").value == "29"){
		document.getElementById("linhaIdCidade").style.display="none";
		document.getElementById("id_cidade_temp").value = ""
	}
	else{
		document.getElementById("linhaIdCidade").style.display="";
	}
	
	
	//verifica se o browser tem suporte a ajax
	try {
		ajax = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e) {
		try {
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(ex) {
			try {
				ajax = new XMLHttpRequest();
			}
			catch(exc) {
				alert("Esse browser não tem recursos para uso do Ajax");
				ajax = null;
			}
		}
	}

	//se tiver suporte ajax
	if(ajax) {

		ajax.open("GET", "/includes/ajax/city.php?field_id="+mainObjValue, true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

		ajax.onreadystatechange = function() {
			//enquanto estiver processando...emite a msg de carregando
			if(ajax.readyState == 1) {
					//Limpa a listbox atual
					clearlistbox(document.getElementById(subObjName_GLOBAL));
					
					// Adiciona novo elemento na listbox
					addOption(document.getElementById(subObjName_GLOBAL),"... Carregando!", "");
			}
			//apos ser processado - chama funcao processXML que vai varrer os dados
			if(ajax.readyState == 4 ) {
				if(ajax.responseXML) {
					processXML(ajax.responseXML);
				}
				else {
					//caso nao seja um arquivo XML ou aconteca um erro emite a mensagem abaixo
					
					//Limpa a listbox atual
					clearlistbox(document.getElementById(subObjName_GLOBAL));
					
					// Adiciona novo elemento na listbox
					addOption(document.getElementById(subObjName_GLOBAL),"Houve um erro ao carregar a lista!", "");
				}
			}
		}
		ajax.send(null);
	}
}




function processXML(obj) {
	//pega a tag cidade do XML
	var dataArray   = obj.getElementsByTagName("cidade");

	//total de elementos contidos na tag cidade
	if(dataArray.length > 0) {

		//Limpa a listbox atual
		clearlistbox(document.getElementById(subObjName_GLOBAL));

		// Adiciona novo elemento na listbox
		addOption(document.getElementById(subObjName_GLOBAL),"--Selecione uma das opções abaixo--", "");

		//percorre o arquivo XML para extrair os dados
		for(var i = 0 ; i < dataArray.length ; i++) {

			var item = dataArray[i];
			//conteudo dos campos no arquivo XML
			var codigo    =  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
			var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;

			// Adiciona novo elemento na listbox
			addOption(document.getElementById(subObjName_GLOBAL),descricao,codigo);

			//Marca como selecionado
			if(codigo == subObjValue_GLOBAL) {
				document.getElementById(subObjName_GLOBAL).options[i+1].selected = true
			}
		}
	}

	else {
		//caso o XML volte sem elementos, printa a mensagem abaixo
		
		//Limpa a listbox atual
		clearlistbox(document.getElementById(subObjName_GLOBAL));
		
		// Adiciona novo elemento na listbox
		addOption(document.getElementById(subObjName_GLOBAL),"--Primeiro selecione o estado--", "");
	}
}




function clearlistbox(lb){
	for (var i=lb.options.length-1; i>=0; i--){
		lb.options[i] = null;
	}
	lb.selectedIndex = -1;
}




function addOption(selectbox,text,value) {
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}
