/************************************************************
			 Página de funçőes de AJAX
			 
Desenvolvido por: DOUGLAS WELLINGTON DOS SANTOS GERALDO

************************************************************/

//***************************************************************

//*************************************************************//
//****** 	FUNÇĂO Q MONTA O OBJETO AJAX **********************//
//*************************************************************//
function Ajax(){

try{
    objeto = new XMLHttpRequest();
}catch(ee){
    try{
        objeto = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            objeto = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            objeto = false;
			alert("Ocorreu um erro ao criar o AJAX!");
        }
    }
}

return objeto;

}

/*******************************************************************

FUNÇĂO Q RECEBE OS CAMPOS DO FORMULÁRIO
		
parâmetros: idForm = formulario		
		
*******************************************************************/
function CamposFormulario(idForm){
	var elementosFormulario = idForm.elements;
	var qtdElementos = elementosFormulario.length;
	var sString = '';
	
	for (i=0;i<qtdElementos;i++){
			var inptElemento = elementosFormulario[i];

			if (inptElemento.name != '')
			{
			    if (sString == ''){
					sString = inptElemento.name+'='+inptElemento.value;
			    }else{
					sString = sString + '&' + inptElemento.name+'='+inptElemento.value
			    }
			}
	}
	return sString;
	
}


/****************************************************************
FUNÇĂO Q CARREGA EXECUTA AS INFORMAÇŐES DO FORM
parâmetros: formulario = formulário que vai ser executado
			idTarget = id da página onde vai exibir o resultado do formulário
Alterada por Alexandre em 28/04
****************************************************************/
function LinkForm(formulario,idTarget){

	var ElementosFormulario = formulario.elements;
	var NomeFormulario = formulario.name;
	var ConfigFormulario = 'forms/'+NomeFormulario+'.xml';
	var xmlhttp = new Ajax();
	xmlhttp.open("GET", ConfigFormulario,true);
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==1){
			//MostraAjax();
			}
		if (xmlhttp.readyState==4){
			if(xmlhttp.status == '200'){
				var sXml = xmlhttp.responseXML;
				var campos = sXml.getElementsByTagName('campos');	
				if (campos.length == 0) {
					ProcessaFormulario(formulario,idTarget) 
				} else {
					for (var i = 0; i < campos.length; i++) {
						var nomeCampo = campos[i].getElementsByTagName('campo')[0].firstChild.nodeValue;
						var msgCampo = campos[i].getElementsByTagName('msg')[0].firstChild.nodeValue;
						var CampoFormulario = eval('formulario.'+nomeCampo);
						if(CampoFormulario.value == ''){
							//alert(msgCampo);
							CampoFormulario.focus();
							return false;
						}
					}
					ProcessaFormulario(formulario,idTarget) 
				}
			}else{
				ProcessaFormulario(formulario,idTarget) 
			}
		}
	}
	xmlhttp.send(null);
	return false;
}



/*************************************************************
Funçăo que processa o formulário caso todas as validações sejam feitas com sucesso
parâmetros: sPagina = link da página a ser carregada
			idTarget = id de onde vai ser mostrada a página
Inlcuída por Alexandre em 28/04/2009
*************************************************************/
function ProcessaFormulario(formulario,idTarget) {
	var LinkPagina 		= formulario.action;
	var Tipo			= formulario.method.toUpperCase();
	var Variaveis		= CamposFormulario(formulario);
	var sEndereco 		= LinkPagina+'?'+Variaveis;
	var xmlhttp = new Ajax();	
	xmlhttp.open(Tipo, sEndereco,true);
	if (Tipo == 'POST'){
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	
	}
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==1){
			if(idTarget != ''){
				document.getElementById(idTarget).innerHTML = '<div id="idCarregaPagina">Carregando...</div>';
			}else{
				MostraAjax()
			}
		}
		if (xmlhttp.readyState==4){
			if (xmlhttp.status == "200"){
				var sXml = xmlhttp.responseText;
				vcResposta =  sXml.split("=")
				eval(vcResposta[1]);
			}else{
				CreateErrorAjax(xmlhttp.responseText,'Endereço: <b>'+sEndereco+'</b>');
			}
			RemoveAjax();	
		}
	}
	if(Tipo == "POST"){
		xmlhttp.send(Variaveis);
	}else{
		xmlhttp.send(null);
	}
}

/*************************************************************

Funçăo que carrega página e exibe

parâmetros: sPagina = link da página a ser carregada
			idTarget = id de onde vai ser mostrada a página

*************************************************************/

function LinkPagina(sPagina,idTarget){
	
var xmlhttp = new Ajax();

sPagina = sPagina.replace(":lib/",UrlLib());

if(sPagina.indexOf('http://')>=0){
	var sEndereco 		= sPagina;
}else{
	var sEndereco		= UrlPagina() + sPagina;
}
xmlhttp.open("GET", sEndereco,true);

xmlhttp.onreadystatechange=function() {
	if (xmlhttp.readyState==1){
			if(idTarget != ''){
				if (typeof(idTarget) == "string") {
					document.getElementById(idTarget).innerHTML = '<div id="idCarregaPagina">Carregando...</div>';
				} else {
					idTarget.innerHTML = '<div id="idCarregaPagina">Carregando...</div>';
				}
				
			}else{
				MostraAjax();
			}
		}
    if (xmlhttp.readyState==4){
		if(xmlhttp.status == '200'){
			if (idTarget != ''){
				var sXml = xmlhttp.responseText;
				if (typeof(idTarget) == "string") {
					var idConteudo = document.getElementById(idTarget);		
				} else {
					var idConteudo = idTarget;		
				}
				idConteudo.innerHTML = sXml;
			}else{
				var sXml = xmlhttp.responseXML;
				
				F_TrataRetorno(sXml);
			}
		}else{
			CreateErrorAjax(xmlhttp.responseText,'Endereço: <b>'+sEndereco+'</b>');
		}
		
		RemoveAjax();
    }
}

xmlhttp.send(null);
	
}


/******************************************************
Funçăo que valida o formulário apartir de um XML
parâmetros: formulario = formulário a ser validado
Alterada por Alexandre em 28/04
Código movido para a função LinkForm
Mantida a função para evitar erros
******************************************************/

/******************************************************
Funçăo que valida o formulário apartir de um XML
Alterada por Diorg Martins em 02/06/2009
sXml diferente de null pois quando era null retornava erro
******************************************************/

function ValidaFormulario(formulario,idTarget) {
}

function getValor(sXml,campo){
	if (campo != ''){
		if(sXml != null){
			return sXml.getElementsByTagName(campo)[0].firstChild.nodeValue;
		}
	}else{
		return sXml.firstChild.nodeValue;
	}
}

function getAtributo(sXml,campo,index){
	if (campo != ''){
		if(sXml != null){
			return sXml.getElementsByTagName(campo)[0].getAttribute(index);
		}
	}else{
		return sXml.getAttribute(index);
	}
}

function F_TrataRetorno(sXml){

 	var dados = sXml.getElementsByTagName("acao");
	
	for(i=0;i<dados.length;i++){
	
	var sAcao = getAtributo(dados[i],'','tipo');
	var sRetorno = getValor(dados[i],'');
		switch (sAcao.toUpperCase()) {
			case 'OK':
				return "Ok";
				break;
			case 'MSG':
				alert(sRetorno);
				break;
			case 'IR' :
				if(getAtributo(dados[i],'','target') == '_blank'){
					
					var mais = '';
					var name = getAtributo(dados[i],'','name');
					var iWidth = getAtributo(dados[i],'','width');
					var iHeight = getAtributo(dados[i],'','height');
					
					if (iWidth != null){
						mais = 'width='+iWidth+',height='+iHeight;
					}
					
					window.open(sRetorno,name,mais);
				}else{
					location.href=sRetorno;
				}
				break;
			case 'ESCREVE' :
					document.write(sRetorno);
				break;
			case 'EXEC' :
					eval(sRetorno);
				break;
			default:
				alert("Năo existe a condiçăo retornada pela página: "+sAcao);
				
		}
		
	}
}

/****************************************************

funçăo que mostra o erro do ajax

****************************************************/
function CreateErrorAjax(sXml,texto){
	alert("Ocorreu um erro na página!\n" + location.href);
	var pagina = window.open();
	pagina.document.write(texto);
	pagina.document.write(sXml);
}

/****************************************************

funçăo que cria o layer do ajax

****************************************************/
function CriaLayerAjax(){

var layer = document.createElement("div");

//layer.style.visibility 	= 'hidden';
//layer.style.position 	= 'absolute';
//layer.style.left		= '0%';
//layer.style.top			= document.body.scrollTop;
//layer.style.width		= 93;
//layer.style.height		= 20;
//layer.style.background	='green';
layer.id 				= 'LayerAjax';
layer.innerHTML 		= '<span>Carregando...</span>';

var objBody = document.getElementsByTagName("body");

	if(objBody != null){
		objBody[0].appendChild(layer);	
	}else{
		alert("Objeto BODY năo encontrado!");
	}

return layer;

}

/*****************************************************

funçăo que mostra o layer do ajax

*****************************************************/
function MostraAjax(){

}

/****************************************************

funçăo que esconde o layer do ajax

****************************************************/
function RemoveAjax(){

}

function FCampo(xml,sNome){
	this.nome 	= sNome
	this.valor 	= getValor(xml,sNome);
	this.size 	= getAtributo(xml,sNome,"size");
	this.type 	= getAtributo(xml,sNome,"type");
}

function CarregaAjax(idTarget){
	var sResultado = '<img src="'+UrlImg()+'clocks.gif">Aguarde carregando...';
	
	var objTarget = document.getElementById(idTarget);
	
	if (objTarget != null){
		objTarget.innerHTML = sResultado;
	}
	
}
//adiciona um evento para criar o layer do ajax dinâmicamente

function MsgCarregando(src){
		if (src.style.visibility != 'visible'){
			src.style.visibility = "visible";
		}
		src.innerHTML = '<img src="'+UrlImg()+'clocks.gif">Aguarde carregando...';
}

function MostarCarregando(){

var objLayer = document.getElementById("LayerAjax");

	if (objLayer != null){
		objLayer.style.visibility = 'visible';
	}
	
}

function FecharCarregando(){

var objLayer = document.getElementById("LayerAjax");

	if (objLayer != null){
		objLayer.style.visibility = 'hidden';
	}

}

function CarregaComboAjax(sSql,obja,sValor)
{
	alert("Funçăo CarregaComboAjax desabilitada!");
}

function getSqlString(cmd)
{
alert("Funçăo getSqlString desabilitada!");
}

// Função usada para atualizar o tamanho da div (mootools)
function reloadAccordion()
{
	var accordion = new Accordion('h3.atStart', 
								  'div.atStart', 
								  {
									  opacity: false,
									  onActive: function(toggler, element)
									  {
										toggler.setStyle('color', '#FFF');
									  },
									  onBackground: function(toggler, element)
									  {
										  toggler.setStyle('color', '#FFF');
									  }
								  }, $('accordion'));
}

