/****************************************************************************************************
Página: js_ajax.js
Descrição: Contém biblioteca de funções para trabalhar com o ajax
Autor: SZAMOT Software
****************************************************************************************************/

////////////////////////////////////////////////////////////////////////////////////////////////////
//Função que valida a possibilidade de execução de AJAX no browser. Caso positivo retorna um objeto
// XMLHttp
////////////////////////////////////////////////////////////////////////////////////////////////////
function ValidarAjax(){
	
	try{
		 ajax = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e){
		try{
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(ex){
			try{
				ajax = new XMLHttpRequest();
			}
			catch(exc){
				ajax = null;
			}
		}
	}
	
	return ajax;
	
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//Função para executar uma chamada http com base em uma página e parametos
////////////////////////////////////////////////////////////////////////////////////////////////////
function Ajax_RetornarHttp(ajax,pagina,params){
	
	ajax.open("POST",pagina,true);
	ajax.setRequestHeader("Content-Type"," application/x-www-form-urlencoded");
	
	ajax.onreadystatechange = function(){
		if(ajax.readyState==1){
			//alert('carregando');
		}
		if(ajax.readyState==4){
			return ajax.responseXml;
		}else{
			return null;
		}
	}
	
	ajax.send(params);
	
}

////////////////////////////////////////////////////////////////////////////////////////////////////
//Função para preencher um combo através de ajax. Utiliza a função de construção do objeto XMLHTTP
// e usa a função de preenchimento de combo através do xml
////////////////////////////////////////////////////////////////////////////////////////////////////
function Ajax_PreencherCombo(form,combopai,combofilho,pagina,params,padraofilho,msg_carregando,msg_selecione){
	
	var ajax = ValidarAjax();
	if(ajax!=null){
		
		var pai   = eval(form +"."+ combopai);
		var filho = eval(form +"."+ combofilho);
		
		filho.options.length = 0;
		
		var carregando = document.createElement("option");
		carregando.setAttribute("id","opcoes");
		carregando.value = "";
		carregando.text  = msg_carregando;
		
		ajax.open("POST",pagina,true);
	 ajax.setRequestHeader("Content-Type"," application/x-www-form-urlencoded");
	
	 ajax.onreadystatechange = function(){
		 if(ajax.readyState==1){				
				filho.options.add(carregando);			 
		 }
		 if(ajax.readyState==4){			 
				XML_PreencherCombo(ajax.responseXML,"option",filho,"value","title",msg_selecione,padraofilho);
		 }else{
			 filho.options[0].text = msg_selecione;
		 }
	 }	
	 ajax.send(params +'='+ pai.value);						
		
	}
	 	
}

////////////////////////////////////////////////////////////////////////////////////////////////////
//Função para preencher um combo com opções de xml
////////////////////////////////////////////////////////////////////////////////////////////////////
function XML_PreencherCombo(ajax,node,combo,codigo,descricao,msg_selecione,padrao){
	
	var arrXML = ajax.getElementsByTagName(node);
	if(arrXML.length > 0){
		
		combo.options[0].text = msg_selecione;
		
		for(i=0;i < arrXML.length;i++){
			
			var childnode      = arrXML[i];
			var codigo_node    = childnode.getElementsByTagName(codigo)[0].firstChild.nodeValue;
			var descricao_node = childnode.getElementsByTagName(descricao)[0].firstChild.nodeValue;
			
			var novo = document.createElement("option");
		 novo.setAttribute("id","opcoes");
		 novo.value = codigo_node;
		 novo.text  = descricao_node;
			if(codigo_node == padrao){				
				novo.selected = true;
			}
			
			combo.options.add(novo);
		}
		
	}
	
}


////////////////////////////////////////////////////////////////////////////////////////////////////
//Função para criar uma estrutura de linhas contendo radio ou checkbox e seus labels
////////////////////////////////////////////////////////////////////////////////////////////////////
function Ajax_PreencherTabelaRadios(table_id,pagina,params,radio_name,tipo,java){
	
	var ajax = ValidarAjax();
	if(ajax!=null){
		
		var tabela = eval("document.getElementById('"+ table_id +"')");						
						
		ajax.open("POST",pagina,true);
	 ajax.setRequestHeader("Content-Type"," application/x-www-form-urlencoded");
	
	 ajax.onreadystatechange = function(){
		 if(ajax.readyState==1){							 
				DOM_Table_ExcluirLinhas(table_id);
		 }
		 if(ajax.readyState==4){			 			 
				XML_PreencherTabelaRadios(ajax.responseXML,"field",table_id,"codigo","titulo",radio_name,tipo,java);				
		 }else{
				DOM_Table_ExcluirLinhas(table_id);
		 }
	 }	
	 ajax.send(params);						
		
	}
	 	
}

function XML_PreencherTabelaRadios(ajax,node,table_id,codigo,titulo,radio_name,tipo,java){
	
	var arrXML = ajax.getElementsByTagName(node);	
	if(arrXML.length > 0){
									
		for(i=0;i < arrXML.length;i++){
			
			var childnode   = arrXML[i];
			var codigo_node = eval("childnode.getElementsByTagName('"+ codigo +"')[0].firstChild.nodeValue");
			var titulo_node = eval("childnode.getElementsByTagName('"+ titulo +"')[0].firstChild.nodeValue");						
			
			var radio_html  = "<input type='"+ tipo +"' name='"+ radio_name +"' value='"+ codigo_node +"' onclick='"+ java +"' /> "+ titulo_node;
						
   var linha = DOM_Table_InserirLinha(table_id);			
			DOM_Table_InserirColuna(linha,0,"&nbsp;");			
			DOM_Table_InserirColuna(linha,1,radio_html);			
			
		}				
		
	}
	
}

