// JavaScript Document
// JavaScript Document

var ajax;
var dadosEnviar = null;
var funTratamento = 0;
var trancado = false;
var arrbtns = new Array();

// Cria o objeto Ajax
try{
    ajax = new XMLHttpRequest();
}catch(ee){
    try{
        ajax = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            ajax = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            ajax = false;
			alert("Seu Browser não suporta esta aplicação. Atualize.");
        }
		
    }
}

// Fila de Requisicoes Ajax e Id do Array fila
var fila=[]
var ifila=0

function requisicaoHTTP(tipo,url,assinc,fun){
	
	//	dadosEnviar = null;	
	// Adiciona na Fila de Requisicoes Ajax
	fila[fila.length] = [tipo,url,assinc,fun];
	if((ifila+1)==fila.length)iniciaRequisicao();

}

function iniciaRequisicao(){	
	ajax.open(fila[ifila][0],fila[ifila][1],fila[ifila][2]);	
	ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
	ajax.setRequestHeader("Content-length", "0");
	if( ! document.all ){ ajax.overrideMimeType("text/XML"); }// MOzzila!
	ajax.send(dadosEnviar);
	ajax.onreadystatechange=function (){
											if( ajax.readyState == 4 ){											
												if( ajax.status == 200 ){
												
												// Variavel que indica que o programa foi usado
												alteracoes = true;
												
												// AQUI - DEFINE QUAL FUNCAO QUE TRATA O RETORNO! - PARAMETRO FUN PASSADO NA CHAMADA 
												switch(fila[ifila][3]){
														
														case 1:
															trata_checa_login();
															break;
																																												
														default: 
															alert('Nenhuma funcao de tratamento foi definida');
															break;													
													}								
														
												}else{
													alert("Problemas na comunicação com o servidor [ Status : " + ajax.status + ' ]');
													aviso(0,'');							
												}
												ifila++;
												if(ifila<fila.length)setTimeout(function(){ iniciaRequisicao() },20);
											}
											
										}


}

// ===========================//

function enviaDados(url,fun){
	// Quando é utilizado para dar submits em forms com muitos campos....
	criaQueryString();
	requisicaoHTTP("POST",url,true,fun);

}



// ============ CRIA STRING DE PARAMETROS PASSADOS PARA A URL A SER ABERTA ===============//
function criaQueryString(){
	
	var arSelected = new Array();
	dadosEnviar = "";
	var param = null;
	var dados = new Array();
	
	var frm = document.forms[0];
	var numElementos = frm.elements.length;
	for( var i = 0; i < numElementos; i++ ){
				
		if((frm[i].type == "checkbox") || (frm[i].type == "radio")){ // Se for check ou radio
				
				if( frm[i].type == "checkbox" ){
					param = frm[i].name + "=" + ((frm[i].checked)?frm[i].value:'0');
					dados.push(param);					
				}else{
						if( frm[i].value != "" && frm[i].checked ) { // Valor diferente de "" e checado...!
							param = frm[i].name + "=" + encodeURIComponent(frm[i].value);
							//alert(frm[i].name + "=" + encodeURIComponent(frm[i].value));
							dados.push(param);												
						}
				}
		
		}else if( (frm[i].nodeName == "SELECT") && ( frm[i].multiple ) ){
			
			
			while (frm[i].selectedIndex != -1) {
				arSelected.push(frm[i].options[frm[i].selectedIndex].value);
				param = frm[i].name + "[]=" + encodeURIComponent(frm[i].options[frm[i].selectedIndex].value);	
				frm[i].options[frm[i].selectedIndex].selected = false; 				
				dados.push(param);
			} 
			
			
		}else{ // Se nao for check nem radio nem select multiplo
				
				param = frm[i].name + "=" + encodeURIComponent(frm[i].value);
				dados.push(param);
				
		
		}
		

	}
	
	var ranNum= Math.floor(Math.random()*10000);
	dados.push('nr=' + ranNum);
	dadosEnviar = dados.join("&");


}

// ============ EXIBE AVISO DURANTE PROCESSAMENTO ===============//
function aviso(hab,msg){
	var objaviso = document.getElementById('aviso');
		if( hab == 1 ){
			trancado = true;
			objaviso.style.display = '';
			objaviso.innerHTML = msg;
		}else{
			trancado = false;
			objaviso.style.display = 'none';
			objaviso.innerHTML = '';
		}
}



/*
var ajax;
var dadosEnviar;
var funTratamento = 0;

function requisicaoHTTP(tipo,url,assinc,fun){

	funTratamento = fun;
	
	//	alert(url);
	if( window.XMLHttpRequest){ // Mozzila
		ajax = new XMLHttpRequest();
	}else if( window.ActiveXObject){ // IE
		ajax = new ActiveXObject("Msxml2.XMLHTTP");
		
		if( ! ajax ){ ajax = new ActiveXObject("Microsoft.XMLHTTP");	}
		
	}
	
	if(ajax){ // Iniciou com Sucesso!
		iniciaRequisicao(tipo,url,assinc);
	}else{
		alert("Seu Browser não suporta esta aplicação. Atualize.");
		aviso(0,'');
	}
	
}

function iniciaRequisicao(tipo,url,bool){	
	
	ajax.onreadystatechange=trataResposta;
	ajax.open(tipo,url,bool);
	ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
	ajax.setRequestHeader("Content-length", "0");
	if( ! document.all ){ ajax.overrideMimeType("text/XML"); }// MOzzila!
	ajax.send(dadosEnviar);
	
}

function enviaDados(url,fun){

	criaQueryString();
	requisicaoHTTP("POST",url,true,fun);
	
}


function criaQueryString(){

	dadosEnviar = "";
	var param = null;
	var dados = new Array();
	
	var frm = document.forms[0];
	var numElementos = frm.elements.length;
	for( var i = 0; i < numElementos; i++ ){
				
		if((frm[i].type == "checkbox") || (frm[i].type == "radio")){ // Se for check ou radio
				
				if( (frm[i].value != "") && (frm[i].checked) ){ // Valor diferente de "" e checado...!
					param = frm[i].name + "=" + encodeURIComponent(frm[i].value);
					dados.push(param);												
				}
				
		}else{ // Se nao for check nem radio
				
				param = frm[i].name + "=" + encodeURIComponent(frm[i].value);
				dados.push(param);												
		}

	}
	
	var ranNum= Math.floor(Math.random()*10000);
	dados.push('numRandom=' + ranNum);
	dadosEnviar = dados.join("&");
	



}


function trataResposta(){

	if( ajax.readyState == 4 ){
		
		if( ajax.status == 200 ){
			
			
			// AQUI - DEFINE QUAL FUNCAO QUE TRATA O RETORNO! - PARAMETRO FUN PASSADO 
			
			switch(funTratamento){
				case 1: 
					fun_trata_include_apropriacao(); 
					break;
					
				case 2:
					func_trata_include_simples();
					break;

				case 3:
					func_trata_efetua_login();
					break;

				case 4:
					func_trata_get_permissoes();
					break;
					
				case 5:
					trata_func_logoff();
					break;			

				case 10:				
					func_trata_get_unidade();
					break;

				case 11:				
					func_trata_get_disciplina();
					break;

				case 12:				
					func_trata_get_supervisor();
					break;

				case 13:				
					func_trata_get_encarregado();
					break;

				case 14:				
					func_trata_get_funcionario();
					break;

				case 15:				
					func_trata_get_ccu();
					break;

				case 16:				
					func_trata_cad_get_funcionario();
					break;

				case 17:				
					func_trata_get_nome_funcionario();
					break;

				case 20:				
					func_trata_submit_ccu();
					break;

				case 21:				
					func_trata_submit_encarregado();
					break;

				case 22:				
					func_trata_submit_supervisor();
					break;

				case 23:				
					func_trata_submit_unidade();
					break;

				case 24:				
					func_trata_submit_usuario();
					break;

				
				case 30:
					func_trata_include_consulta_rapida();
					break;


				case 40:
					fun_trata_submit_apropriacao();
					break;
					
				case 50:
					fun_trata_remove_ultima_apropriacao();
					break;

				case 60:
					fun_trata_getDados();
					break;
					
				case 70:
					fun_trata_include_rel();
					break;


				default: 
					trataDados(); 
					break;
				
			}
			
		
		}else{
			
			alert("Problemas na comunicação com o servidor [ Status : " + ajax.status + ' ]');
			aviso(0,'');
			
		}
		
	}
	
}



function aviso(hab,msg){
	var objaviso = document.getElementById('aviso');
		if( hab == 1 ){
			objaviso.style.display = '';
			objaviso.innerHTML = msg;
		}else{
			objaviso.style.display = 'none';
			objaviso.innerHTML = '';
		}
}

*/
