function objXMLHttp(){

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		var objetoXMLHttp = new XMLHttpRequest();
		return objetoXMLHttp;
	} else if (window.ActiveXObject) { // IE

		var versoes = [ "MSXML2.XMLHttp.5.0",
						"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
						"MSXML2.XMLHttp","Microsoft.XMLHttp"
				];

				for (var i = 0; i < versoes.length; i++) {
					try {
						var objetoXMLHttp = new ActiveXObject(versoes[i]);
						return objetoXMLHttp;
					} catch (ex) {
						//nada aqui
					}
				}
	}
			return false;
}

function getDados(objForm) {
    var params = new Array();

    for (var i=0 ; i < objForm.elements.length; i++) {
        var parametro = encodeURIComponent(objForm.elements[i].name);
        parametro += "=";
        parametro += encodeURIComponent(objForm.elements[i].value);
        params.push(parametro);
    }

    return params.join("&");
}

function enviar(formulario, destino, camada, limparDados, telaespera, funcaoJS) {
    var dados = (formulario == null)?"":(formulario.elements == null)?formulario:getDados(formulario);
    var oXMLHttp = objXMLHttp();
    oXMLHttp.open("POST", destino, true);
    oXMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
//    menu('bgespera', 2);

    oXMLHttp.onreadystatechange = function () {
        if (oXMLHttp.readyState == 4) {
            if (oXMLHttp.status == 200) {
                mensagem(camada, oXMLHttp.responseText);
                if (limparDados && formulario.elements != null)
                    setDados(formulario);
				if (funcaoJS != null)
					eval(funcaoJS);
            } else {
                mensagem(camada, "Ocorreu o erro ("+oXMLHttp.status+"): "+ oXMLHttp.statusText);
            }
			if (telaespera != null)
				menu(telaespera, 1);
        } else {
//            loading('bgespera');
            loading(camada);
/*			if (telaespera != null) {
				loading(telaespera);
				menu(telaespera, 2);
			} */
		}
    };
    oXMLHttp.send(dados);
    return false;
}

function mensagem(camada, msg){
	document.getElementById(camada).innerHTML=msg;
}
function setDados(objForm) {
	objForm.reset();
//    for (var i=0 ; i < objForm.elements.length-2; i++)
//        objForm.elements[i].value="";
}

function loading(local){
	mensagem(local, "<font style='font-size: 28px'><img src='/imagens/Carregando.gif'> Aguarde, carregando informações...</font>");
}


// Utilizado para criar o fundo sobre a página (wiewport), body.
function exibirBgBody() {
	// Seleciona a tag body. item(0) por que só existe uma tag body
	var tagBody = gEs('telaespera').item(0);
	// Pega os tamanhos atuais da página, como largura, altura, ...
	var sizesPage = getPageSize();
	// Vamos criar uma tag div
	var bgBody = document.createElement('div');
	// Setar o atributo ID a div criada
	bgBody.setAttribute('id','telaespera');
	// Essa div terá o tamanho exato da página
	bgBody.style.height = arrayPageSize[1] + 'px';
	// Essa div terá a largura exata da página
	bgBody.style.width = arrayPageSize[0] + 'px';
	// Evita criar a div novamente
	if (!gE('telaespera')) {
		tagBody.insertBefore(bgBody, tagBody.firstChild);
	}	
}

// Cria a div denominada como boxCad, a qual conterá o formulário de cadastro
function boxAguarde() {
	// Cria um 'container' que comportará o formulário de cadastro.
	var objBody = gEs('telaespera').item(0);
	var sizesPage = getPageSize();
	var boxCad = document.createElement('div');
	boxCad.setAttribute('id','boxCad');
	var wPage = arrayPageSize[0]; // Largura total da página
	var hPage = arrayPageSize[1]; // tamanho total da página
	boxCad.style.width = '200px'; //(wPage / 4) + 'px'; // metade da largura da página
	boxCad.style.height = '25px'; //(wPage / 4) + 'px'; // metada da altura da página
//	alert("marginTop: "+(hPage / 6) + "px\nmarginLeft: "+(wPage / 6) + "px\n");
	boxCad.style.marginTop = ((hPage-25) / 4) + 'px'; // 1 quarto da largura
	boxCad.style.Left = ((wPage-200) / 6) + 'px'; // 1 quarto da altura
	objBody.insertBefore(boxCad, objBody.lastChild);
	loading('boxCad');
}

/** Cria a a qual conterá o conteúdo do popup:
  * - caso a variável eHPagina seja true, quer dizer que o valor da
  * variável conteúdo é uma página que deverá ser averta. Usar a  funcao enviar.
  *
  * - caso a variável eHPagina seja false, quer dizer que o valor da
  * variável conteúdo é HTML que deverá ser mostrado. Usar a funcao mensagem.
**/
function caixaPopUp(camada, conteudo, eHPagina, largura, altura) { 
	exibirBgBody();
	// Cria um 'container' que comportará o formulário de cadastro.
	var objBody = gEs('body').item(0);
	var sizesPage = getPageSize();
	var boxCad = document.createElement('div');
	boxCad.setAttribute('id',camada);
	var wPage = arrayPageSize[0]; // Largura total da página
	var hPage = arrayPageSize[1]; // tamanho total da página
	boxCad.style.width = largura+'px'; //(wPage / 4) + 'px'; // metade da largura da página
	boxCad.style.height = altura+'px'; //(wPage / 4) + 'px'; // metada da altura da página
//	alert("marginTop: "+(hPage / 6) + "px\nmarginLeft: "+(wPage / 6) + "px\n");
	boxCad.style.marginTop = ((hPage-altura) / 4) + 'px'; // 1 quarto da largura
	boxCad.style.Left = ((wPage-largura) / 6) + 'px'; // 1 quarto da altura
	objBody.insertBefore(boxCad, objBody.lastChild);
	if (eHPagina)
		enviar(null, conteudo, camada, false, "POST");
	else
		mensagem(camada, texto);
	return;
}

function RemoveCaixaPopUp(camada) {
	var bgBody = gE('telaespera');
	var boxCad = gE(camada);
	bgBody.parentNode.removeChild(bgBody);
	if (boxCad) {
		boxCad.parentNode.removeChild(boxCad);
	}
}

// Esta função elimina da página o fundo criado sobre o body e o boxCad;
function removerDivs() {
	var bgBody = gE('telaespera');
	var boxCad = gE('boxCad');
	bgBody.parentNode.removeChild(bgBody);
	if (boxCad) { // Por que ao clicar X (para deletar um registro) cria-se somente o encobridor e não o boxCad	
		boxCad.parentNode.removeChild(boxCad);
	}
}

/* Funções de terceiros */
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 

}

// Utilizado para evitar de digitar: document.getElementById toda hora, tornando o processo mais prático
function gE(ID) {
	return (document.all)?document.all[ID]:document.getElementById(ID);
}

// Utilizado para evitar de digitar: document.getElementsByTagName toda hora, tornando o processo mais prático
function gEs(tag) {
	return document.getElementsByTagName(tag);
}
var arrayPageSize =  null;

sAgent = navigator.userAgent;
bIsMac = sAgent.indexOf("Mac") > -1;
bIsIE = sAgent.indexOf("MSIE") > -1;
bIsIE5 = sAgent.indexOf("IE 5")  > -1;
bIsIE5 = sAgent.indexOf("IE 6")  > -1;
bIsNav = sAgent.indexOf("Mozilla") > -1 && !bIsIE;

function menu(objAbasNome, action){
        //action = 1 -> Esconder
	//action = 2 -> Mover
	
	if (document.all) {
		obja = document.all[objAbasNome]; 
                //objac = document.all[objAbasCabNome]; 
	}
	if (document.getElementById) {
		obja = document.getElementById(objAbasNome);
                //objac = document.getElementById(objAbasCabNome);		
	}

        if(action==1){            
            obja.style.visibility = "hidden";
            //obja.style.visibility = "visible";

            //obja.style.background="#DAE3E8";
            //objac.style.background="#B2C6D1";
        }else{
            obja.style.visibility = "visible";
            //objac.style.background="#DAE3E8";
        }
        //objAbas = obja;
        //objAbasCab = objac;

}
