/************************************************************
			 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 arrRadios = new Array();
	var arrValueRadios = new Array();
	
	var sString = '';
	
	try
	{
		rteFormHandler();
	}
	catch(e)
	{
	}
	
	for (i=0;i<qtdElementos;i++){
			var inptElemento = elementosFormulario[i];
			
			
			if (inptElemento.name != '')
			{
				if(inptElemento.type == "radio")
				{
				    if (inptElemento.checked){
						if (sString == ''){
							sString = inptElemento.name+'='+escape(inptElemento.value);
					    }else{
							sString = sString + '&' + inptElemento.name+'='+escape(inptElemento.value);
				    	}
				    }
					
				}
				else if (inptElemento.type == "checkbox")
				{
					if (sString == ''){
						sString = inptElemento.name+'='+(inptElemento.checked?escape(inptElemento.value):"");
				    }else{
						sString = sString + '&' + inptElemento.name+'='+(inptElemento.checked?escape(inptElemento.value):"");
			    	}
			    	
				}
				else if(inptElemento.type != "file")
				{							
					if (sString == ''){
						sString = inptElemento.name+'='+escape(inptElemento.value);
				    }else{
						sString = sString + '&' + inptElemento.name+'='+escape(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

****************************************************************/
function LinkForm(formulario,idTarget){

var xmlhttp = new Ajax();

var LinkPagina 		= formulario.action;
var Tipo			= formulario.method.toUpperCase();

var Variaveis		= CamposFormulario(formulario);

LinkPagina = LinkPagina.replace(":lib/",UrlLib());

	if(LinkPagina.indexOf('http://') == 0){
		if (Tipo == 'POST'){
			var sEndereco 		= LinkPagina;
		}else{
			var sEndereco 		= LinkPagina+'?'+Variaveis;
		}
	}else{
		if (Tipo == "POST"){
			var sEndereco		= UrlPagina() + LinkPagina;
		}else{
			var sEndereco		= UrlPagina() + LinkPagina+'?'+Variaveis;
		}
	}

	if (ValidaFormulario(formulario) == true){

	MostraAjax();

		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{
					
				}
				
			}
			if (xmlhttp.readyState==4){
				if (xmlhttp.status == "200"){
					var sXml = xmlhttp.responseText;					
					if (idTarget != ''){
						var idConteudo = document.getElementById(idTarget);		
						idConteudo.innerHTML = sXml;
					}else{
						var sXml = xmlhttp.responseXML;	
						F_TrataRetorno(sXml);
					}	
				}else{
					CreateErrorAjax(xmlhttp.responseText,'Endereço: <b>'+sEndereco+'</b>');
				}
			RemoveAjax();	
			}
		}
		if(Tipo == "POST"){
			xmlhttp.send(Variaveis);
		}else{
			xmlhttp.send(null);
		}
	}

return false;

}

/*************************************************************

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();

var args = LinkPagina.arguments;
var OnLoad = null;

if(args.length > 2)
{
	OnLoad = args[2];
}

sPagina = sPagina.replace(":lib/",UrlLib());

	if(sPagina.indexOf('http://')>=0){
		var sEndereco 		= sPagina;
	}else{
		var sEndereco		= UrlPagina() + sPagina;
	}

xmlhttp.open("GET", sEndereco,true);
MostraAjax();
xmlhttp.onreadystatechange=function() {
	if (xmlhttp.readyState==1){
			if(idTarget != ''){
				document.getElementById(idTarget).innerHTML = '<div id="idCarregaPagina">Carregando...</div>';
			}else{
				
			}
		}
    if (xmlhttp.readyState==4){
		if(xmlhttp.status == '200'){
			
			if (idTarget != ''){
				var sXml = xmlhttp.responseText;
				var idConteudo = document.getElementById(idTarget);		
				idConteudo.innerHTML = sXml;
			}else{
				var sXml = xmlhttp.responseXML;
				F_TrataRetorno(sXml);
			}
			
			if(OnLoad != null)
				OnLoad();
			
		}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

******************************************************/
function ValidaFormulario(formulario){

	var ElementosFormulario = formulario.elements;
	var NomeFormulario = formulario.name;
	
	var bRetorno = true;
	
	for(var i=0;i<ElementosFormulario.length;i++)
	{	
		if(ElementosFormulario[i].parentNode.className.indexOf("obrigatorio") >= 0 && ElementosFormulario[i].parentNode.tagName == "SPAN")
		{
			if(ElementosFormulario[i].value == "")
			{
				alert("Campo " + ElementosFormulario[i].title + " é obrigatório!");
				ElementosFormulario[i].focus();
				bRetorno = false;
				break;
			}
		}
	}
	
	return bRetorno;
	
	/*
	var ConfigFormulario = 'forms/'+NomeFormulario+'.xml';
	var bResultado = true;

	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) {
					bResultado = true;
				}
				
				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();
						bResultado = false;
						break;
						}
				}
			}else{
				bResultado = true;
				}
			
		}
	

	
	}

xmlhttp.send(null);
*/
return bResultado;
	
}

function getValor(sXml,campo){
	if (campo != ''){
		return sXml.getElementsByTagName(campo)[0].firstChild.nodeValue;
	}else{
		return sXml.firstChild.nodeValue;
	}
}

function getAtributo(sXml,campo,index){
	if (campo != ''){
		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 		= '<font color="#ffffff">Carregando...</font>';

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(){
var obj = document.getElementById("waiting");

	if (obj == null){
		obj = CriaLayerAjax();
	}
		obj.style.top = document.body.scrollTop;
		ShowLayer(obj);

}

/****************************************************

função que esconde o layer do ajax

****************************************************/
function RemoveAjax(){
	var obj = document.getElementById("waiting");
	if (obj != null){
		HideLayer(obj);
	}
}

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()+'padrao/siga/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="../adm/scripts/'+UrlImg()+'padrao/siga/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(idtarget,datasource,valor)
{
	
	var objSel = document.getElementById(idtarget);
	
	objSel.innerHTML = "";
	
	var objOptionSel = document.createElement('option');
	objOptionSel.appendChild(document.createTextNode("Selecione"));
	objOptionSel.value = "";
	
	objSel.appendChild(objOptionSel);
	
	var xmlhttp = new Ajax();

	xmlhttp.open("GET", datasource,true);
	xmlhttp.onreadystatechange=function() {
	
		if (xmlhttp.readyState==1){
			MostraAjax();
			}
	
		if (xmlhttp.readyState==4){
			if(xmlhttp.status == '200'){

				var sXml = xmlhttp.responseXML;
				
				var itens = sXml.getElementsByTagName('item');
				
				for (var i = 0; i < itens.length; i++) {					
					var objOption = document.createElement('option');
					objOption.appendChild(document.createTextNode(getValor(itens[i],"text")));
					objOption.value = getValor(itens[i],"value");
					objSel.appendChild(objOption);
				}
	
			}
			
			RemoveAjax();
			
		}
		
	}

xmlhttp.send(null);
}

function getSqlString(cmd)
{
alert("Função getSqlString desabilitada!");
}


