function objAJAX() {
	
	if ( window.XMLHttpRequest ) {
		var ajax = new XMLHttpRequest();
		return ajax;
	} else if ( window.ActiveXObject ) {
		var versoesIE = [
				"MSXML2.XMLHttp.6.0",
				"MSXML2.XMLHttp.5.0", 
				"MSXML2.XMLHttp.4.0",
				"MSXML2.XMLHttp.3.0",
				"MSXML2.XMLHttp",
				"Microsoft.XMLHttp"
		];
		
		for ( i = 0; i < versoesIE.length; i++ ) {
			try {
				var ajax = new ActiveXObject(versoesIE[i]);
				return ajax;
			} catch (ex) {
				
			}
		}
	}
	return false;
}


function objXML() {
	
	var versoesIE = [
					"MSXML2.DOMDocument.6.0",
					"MSXML2.DOMDocument.5.0", 
					"MSXML2.DOMDocument.4.0",
					"MSXML2.DOMDocument.3.0",
					"MSXML2.DOMDocument",
					"Microsoft.XmlDom"
	];
			
	for ( i = 0; i < versoesIE.length; i++ ) {
		try {
			var xml = new ActiveXObject(versoesIE[i]);
			return xml;
		} catch (erro) {
			
		}
	}
		
	throw new Error("O MSXML não está instalado em seu browser!");
}

function carregaXML(arquivo_xml) {
	if ( window.ActiveXObject ) {
		var documentoXML = objXML();
		documentoXML.async=false;
	} else {
		var documentoXML = document.implementation.createDocument("", "", null);
	}
	
	documentoXML.load(arquivo_xml);
}

function enviaDadosAJAX(nome_formulario, acao) {
	
	var formulario = document.getElementById(nome_formulario);
	var ajax = objAJAX();
	var metodo = formulario.getAttribute('method');
	var pagina  = formulario.getAttribute('action');
	var dados = pegaDados(formulario);
	
	if ( metodo == "GET" ) {
		
		ajax.open("GET", pagina+"?"+dados, true);
	
		ajax.onreadystatechange = function() {
			if ( ajax.readyState == 4 ) {
				if ( ajax.status == 200 ) {
					
					limpaFormulario(nome_formulario);
					
					escondeDIV('div_espera');
											
					if ( acao == "mostrarDIV" ) {
						mostraDIV(ajax.responseText);
					}
										
					if ( acao == "trocarPagina" ) {
						var paginaForm = document.getElementById('paginaForm').getAttribute('value');
						
						if ( ajax.responseText == "ok" ) {
							location.replace(paginaForm);
						} else { 
							mostraDIV(ajax.responseText);
						}
					}
								
				} else {
					alert(ajax.statusText);
				}
			} else {
				expandeDIV('div_clara');
				mostraDIV('div_clara');
				clareiaDIV();				
				setInterval('clareiaDIV()', 100);
				mostraDIV('div_espera');
			}
		}
		
		ajax.send(null);
		
	} else {
		
		ajax.open("POST", pagina, true);
		ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				
		ajax.onreadystatechange = function() {
			if ( ajax.readyState == 4 ) {
				if ( ajax.status == 200 ) {
					
					limpaFormulario(nome_formulario);
					
					escondeDIV('div_espera');
											
					if ( acao == "mostrarDIV" ) {
						//alert(ajax.responseText);
						
						var elementos_input = formulario.getElementsByTagName("input");
						
						for ( i = 0; i < elementos_input.length; i++ ) {
							if ( (elementos_input[i].getAttribute("type") == "hidden") ) {
								
								if ( elementos_input[i].getAttribute("id") == "escondeDIV" ) {
									var div = elementos_input[i].getAttribute("value");
									escondeDIV(div);
								}
							}
						}
						
						mostraDIV(ajax.responseText);
					}
										
					if ( acao == "trocarPagina" ) {
						var paginaForm = document.getElementById('paginaForm').getAttribute('value');
						
						if ( ajax.responseText == "ok" ) {
							location.replace(paginaForm);
						} else { 
							mostraDIV(ajax.responseText);
						}
					}
					
					if ( acao == "inserirConteudo" ) {
						
						var elementos_input = formulario.getElementsByTagName("input");
						
						for ( i = 0; i < elementos_input.length; i++ ) {
							if ( (elementos_input[i].getAttribute("type") == "hidden") ) {
								if ( elementos_input[i].getAttribute("id") == "divDestino" ) {
									var divDestino = document.getElementById(elementos_input[i].getAttribute("value"));
								}
								
								if ( elementos_input[i].getAttribute("id") == "mostraDIV" ) {
									var div = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "divEspecial" ) {
									var divEspecial = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "divErro" ) {
									var divErro = elementos_input[i].getAttribute("value");
								}
							}
						}			
						
						if ( ajax.responseText == "divEspecial" ) {
							mostraDIV(divEspecial);
						} else if ( ajax.responseText == "divErro" ) {
							mostraDIV(divErro);
						} else {
							divDestino.innerHTML = ajax.responseText;
							mostraDIV(div);
						}
					}
					
					if ( acao == "proximoPasso" ) {
						var elementos_input = formulario.getElementsByTagName("input");
						
						for ( i = 0; i < elementos_input.length; i++ ) {
							if ( (elementos_input[i].getAttribute("type") == "hidden") ) {
								
								if ( elementos_input[i].getAttribute("id") == "divERRO" ) {
									var divERRO = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "divERRO2" ) {
									var divERRO2 = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "divErroSistema" ) {
									var divErroSistema = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "divEspecial" ) {
									var divEspecial = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "divAtual" ) {
									var divAtual = elementos_input[i].getAttribute("value");
								}
							}
						}			
						
						
						if ( ajax.responseText == "divERRO" ) {
							mostraDIV(divERRO);
						} else if ( ajax.responseText == "divERRO2" ) {
							mostraDIV(divERRO2);
						} else if ( ajax.responseText == "divErroSistema" ) {
							mostraDIV(divErroSistema)
						} else if ( ajax.responseText == "divEspecial" ) {
							escondeDIV(divAtual)
							mostraDIV(divEspecial);
						} else {
							for ( i = 0; i < elementos_input.length; i++ ) {
								if ( (elementos_input[i].getAttribute("type") == "hidden") ) {
									
									if ( elementos_input[i].getAttribute("id") == "passo" ) {
										var passoAtual = parseInt(elementos_input[i].getAttribute("value"));
										var proximoPasso = passoAtual + 1;
										
										var divPasso = document.getElementById("div_texto_passo");
									
										if ( passoAtual < 5 ) {
											elementos_input[i].setAttribute("value", proximoPasso);
											divPasso.innerHTML = "Passo nº "+proximoPasso;
										}
									}
								}
							} 
						 	
							limpaFormulario(nome_formulario);
						}
					}
					
					if ( acao == "inserirElementoFilho" ) {
						var elementos_input = formulario.getElementsByTagName("input");
						
						for ( i = 0; i < elementos_input.length; i++ ) {
							if ( (elementos_input[i].getAttribute("type") == "hidden") ) {
								
								if ( elementos_input[i].getAttribute("id") == "elementoPai" ) {
									var elemento_pai = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "tipoFilho" ) {
									var tipoFilho = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "valorFilho" ) {
									var valorFilho = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "nomeFilho" ) {
									var nomeFilho = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "mostrarDIV" ) {
									var mostrarDIV = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "insereConteudo" ) {
									var insereConteudo = elementos_input[i].getAttribute("value");
								}
							}
						}
						
						insereElementoFilho(elemento_pai, tipoFilho, nomeFilho, valorFilho, null, null, 'sim');
						
						var quebra_linha = document.createElement("br");
						document.getElementById(nomeFilho).appendChild(quebra_linha);
						
						if ( insereConteudo != "" ) {
							document.getElementById(insereConteudo).innerHTML = ajax.responseText;	
						}
						
						if ( mostrarDIV != "" ) {
							mostraDIV(mostrarDIV);
						}
					}
					
					if ( acao == "removerElemento" ) {
						var elementos_input = formulario.getElementsByTagName("input");
						
						for ( i = 0; i < elementos_input.length; i++ ) {
							if ( (elementos_input[i].getAttribute("type") == "hidden") ) {
								
								if ( elementos_input[i].getAttribute("id") == "elementoPai" ) {
									var elemento_pai = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "elementoFilho" ) {
									var elemento_filho = elementos_input[i].getAttribute("value");
								}
							}
						}
						
						removeElementoFilho(elemento_pai, elemento_filho);
						mostraDIV(ajax.responseText);
						
					}
					
					if ( acao == "mostrarImagem" ) {
						
						var elementos_input = formulario.getElementsByTagName("input");
						
						for ( i = 0; i < elementos_input.length; i++ ) {
							if ( elementos_input[i].getAttribute("type") == "hidden" ) {
								if ( elementos_input[i].getAttribute("id") == "imagem" ) {
									var caminho_imagem = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "formulario" ) {
									var nome_formulario_destino = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "id" ) {
									var id = elementos_input[i].getAttribute("value");
								}
								
								if ( elementos_input[i].getAttribute("id") == "divImagemAnterior" ) {
									var nome_div_imagem_anterior = elementos_input[i].getAttribute("value");
									var div_imagem_anterior = document.getElementById(elementos_input[i].getAttribute("value"));
								}
								
							}
						}
						
						
						limpaElemento(nome_div_imagem_anterior, "img");
												
						var imagem = document.createElement("img");
						imagem.setAttribute("src", caminho_imagem);
						
						div_imagem_anterior.appendChild(imagem);
						
						var elemento_id = document.createElement("input");
						elemento_id.setAttribute("id", "id");
						elemento_id.setAttribute("name", "id");
						elemento_id.setAttribute("type", "hidden");
						elemento_id.setAttribute("value", id);
						
						var formulario_destino = document.getElementById(nome_formulario_destino);
											
						formulario_destino.appendChild(elemento_id);
							
						mostraDIV(ajax.responseText);
					}
				
				} else {
					alert(ajax.statusText);
				}
			} else {
				
				if ( acao != "montarSELECT" ) {
					expandeDIV('div_clara');
					mostraDIV('div_clara');
					clareiaDIV();				
					setInterval('clareiaDIV()', 100);
					mostraDIV('div_espera');
				}
				
			}
		};
		
		ajax.send(dados);
		return false;
	}
}


function enviaValorAJAX(nome_formulario, acao, url, elemento_destino) {
	
	var formulario = document.getElementById(nome_formulario);
	var ajax = objAJAX();
	var metodo = formulario.getAttribute('method');
	var pagina  = formulario.getAttribute('action');
	
	if ( metodo == "GET" ) {
		
		ajax.open("GET", pagina+"?"+url, true);
	
		ajax.onreadystatechange = function() {
			
			if ( ajax.readyState == 4 ) {
				if ( ajax.status == 200 ) {
					
					if ( acao == "montarSELECT" ) {
						alert(responseXML);
						//montarSELECT(responseXML);
					}
					
				} else {
					alert(ajax.statusText);
				}
			} 
		};
		
		ajax.send(null);
		
	} else {
		
		ajax.open("POST", pagina, true);
		ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				
		ajax.onreadystatechange = function() {
			
			if ( ajax.readyState == 4 ) {
				if ( ajax.status == 200 ) {
					if ( acao == "montarSELECT" ) {
						//alert(ajax.responseText);
						document.getElementById(elemento_destino).length = 0;
						document.getElementById(elemento_destino).innerHTML = ajax.responseText;
					}
					
					if ( acao == "inserirConteudo" ) {
						formulario.getElementById('div').innerHTML = ajax.responseText;
						mostraDIV(elemento_destino);
					}
					
				} else {
					alert(ajax.statusText);
				}
			} else {
				if ( acao == "montarSELECT" ) {
					document.getElementById(select_destino).length = 0;  
					document.getElementById(select_destino).options[0] = new Option("Aguarde....","");  
				}
				
				if ( acao == "mostrarDIV" ) {
					expandeDIV('div_clara');
					mostraDIV('div_clara');
					clareiaDIV();				
					setInterval('clareiaDIV()', 100);
					mostraDIV('div_espera');
				}
			}
		};

		ajax.send(url);
		return false;
	}
}


function montarSELECT(dadosXML) {
	 
	var arrOptions = dadosXML.getElementsByTagName("opcao");
	var selectDestino = dadosXML.getElementsByTagName("select_destino")[0].firstChild.nodeValue;
	
	alert(arrOptions.length);
	
	//total de elementos contidos na tag cidade
	if ( arrOptions.length > 0 ) {

		document.getElementById(selectDestino).innerHTML = "--Selecione uma das opções abaixo--";		
		
		//percorre o arquivo XML para extrair os dados
		for ( var i = 0 ; i < arrOptions.length ; i++ ) {
			valor = arrOptions[i].childNodes[0].firstChild.nodeValue;
			descricao  = arrOptions[i].childNodes[1].firstChild.nodeValue;
			
			//cria um novo option dinamicamente  
			var novo = document.createElement("option");
			
			//atribui um ID a esse elemento
			novo.setAttribute("id", "opcao");
			
			//atribui um valor
			novo.value = valor;

			//atribui um texto
			novo.text  = descricao;

			//finalmente adiciona o novo elemento
			document.getElementById(selectdestino).options.add(novo);
		}
	} 	
}
