var objAjax;
var dadosFormulario = '';
var PATH_IMG_LOADER = "<img src=\'"+caminho+"site/central/imgs/ajaxLoader.gif\' align=\'absmiddle\' /> ";
var MSG_LOADER_DEFAULT = PATH_IMG_LOADER + "processando...";

//cria o objeto ajax e faz a requisição HTTP
function _getHttpRequest(){
	var objAjax;
	try{
		objAjax = new XMLHttpRequest();// Mozilla, Safari,...
	}catch(ee){// IE
		try{
			objAjax = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				objAjax = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(E){
				objAjax = false;//navegador não possui suporte a ajax
			}
		}
	}

	return objAjax;
}


//função responsável por abrir uma conexão e trocar dados com servidor
function _comunicateServer(method, urlDestino, idLabelResposta, msgLoader, onlyNavigate){
	if(idLabelResposta != ''){
		var content = document.getElementById(idLabelResposta);
		if(msgLoader == "default"){
			msgLoader = MSG_LOADER_DEFAULT;
		}else{
			msgLoader = PATH_IMG_LOADER + msgLoader;
		}
		content.innerHTML = msgLoader;
	}

	objAjax = _getHttpRequest();

	//Abre a url utilizando o metodo e envia os dados
	objAjax.open(method.toUpperCase(), urlDestino, true);
	objAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	objAjax.send(dadosFormulario);

	//Executada quando o navegador obtiver o código
	objAjax.onreadystatechange = function(){
		if (objAjax.readyState == 4){
			switch (objAjax.status){
				case 200:
					if(onlyNavigate == "onlyNavigate"){//se tem apenas a tarefa de navegar para outra página, chama a função exibirHTML
						exibirHTML(idLabelResposta, objAjax.responseText);
					}else{//senão, trata a resposta do servidor
						//tratarRespostaServer(idLabelResposta);
						exibirHTML(idLabelResposta, objAjax.responseText);
					}
				break;

				case 404:
					content.innerHTML = "<b>ERROR:</b> Página de destino não encontrada.<br />"+urlDestino;
				break;

				default:
					content.innerHTML = "Problema na comunicação com o objeto XMLHttpRequest.";
				break;
			}
		}
	}

	
}



//função para criar a string a ser enviada com dados texto do formulário, formato campo1=valor1&campo2=valor2...
function _montarQueryString(aFrm){
	dadosFormulario = '';
	var frm = document.forms[aFrm];
	var numElementos =  frm.elements.length;
	for(var i = 0; i < numElementos; i++){
		if(i < numElementos-1){
			dadosFormulario += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
		} else {
			dadosFormulario += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
		}
	}
}



//função para enviar e receber dados do servidor
function sendLoadData(aFrm, method, urlDestino, idLabelResposta, msgLoader, onlyNavigate){
	if(aFrm != ''){
		_montarQueryString(aFrm);
	}
	_comunicateServer(method, urlDestino, idLabelResposta, msgLoader, onlyNavigate);
}



//função para exibir o conteúdo HTML (textHTML) no elemento idLabelResposta
function exibirHTML(idLabelResposta, textHTML){
	var labelResposta = document.getElementById(idLabelResposta);
	labelResposta.innerHTML = textHTML;//escreve o conteúdo textHTML
}