// Esta função instancia o objeto XMLHttpRequest

function openAjax()
{
	var 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;
			}
		}
	}

	return ajax;
}

//Utilizada para determinar o tamanho da pagina

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;
			}

	if(yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	}
	else
	{
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth)
	{
		pageWidth = windowWidth;
	}
	else
	{
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
}

// 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 = gEn('body').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', 'bgBody');
	// 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(!gEi('bgBody'))
	{
		tagBody.insertBefore(bgBody, tagBody.firstChild);
	}
	
	bgBody.onmouseover = function(e) {
		bgBody.onclick = function() {
			removerDivs();
		}
	}
	bgBody.onmouseout = function(e) {
		bgBody.onclick = function() {}
	}
	
}

// Utilizado para criar o efeito de loading

function loading(opt, tagN, imag, larg, txt, cor)
{
	if(cor == null)
	{
		var c = '#000000';
	}
	else
	{
		var c = cor;
	}

	// A tag que receberá a img de loading
	var refer = gEi(tagN);
	// O tamanho da referida tag
	var referHeight = refer.offsetHeight;
	if(opt == true)
	{
		//limpa o conteudo
		refer.innerHTML = '';
		// Dizemos que os elementos dentro dela será alinhado ao centro
		refer.style.textAlign = 'center';
		// Criamos uma imagem, img.
		var img = document.createElement('img');
		// Informamos o caminho da img
		img.setAttribute('src', imag);
		// Setamos um atributo ID na img criada
		img.setAttribute('id', 'loading');
		// Definimos seu tamanho
		img.setAttribute('width', larg);
		// Dizemos que o margin-top será um sexto do tamanho da div
		img.style.marginTop = (referHeight / 6) + 'px';
		// Evita que seja criada duas ou mais img de loading
		if(!gEi('loading'))
		{
			// Insere a img na tag informada na variável refer
			refer.insertBefore(img, refer.firstChild);
		}

		if(!gEi('msg'))
		{
			if(txt != '')
			{
				// Criamos um paragrafo
				var p = document.createElement('p');
				var texto = document.createTextNode(txt);
				p.appendChild(texto);
				p.style.color = c;
				p.setAttribute('id', 'msg');
			//	refer.insertBefore(p, refer.lestChild);
			}
		}
	}
	else
		if(opt == false)
		{
			// Referenciamos a img de login através de seu ID
			var imgLoading = gEi('loading');
			var txtmsg = gEi('msg');
			// Removemos a img de loading
			if(imgLoading)
			{
				imgLoading.parentNode.removeChild(imgLoading);
				if(txtmsg)
				{
					txtmsg.parentNode.removeChild(txtmsg);
				}

				// Dizemos que os elementos dentro dela será alinhado a esquerda
			}

			refer.style.textAlign = 'left';
		}
}

//usada para remover divs

function removeDiv(id)
{
	var Div = gEi(id);
	if(Div)
	{
		Div.parentNode.removeChild(Div);
	}
}

// Cria a div denominada como boxCad, a qual conterá os formulários de cadastro

function boxCad(onde)
{
	var objBody = gEi(onde);
	var sizesPage = getPageSize();
	var boxCad = document.createElement('div');
	boxCad.setAttribute('id', 'boxCad');
	var wPage = arrayPageSize[0];
	var hPage = arrayPageSize[1];
	boxCad.style.height = ((wPage / 2) - (wPage / 6)) + 'px';
	boxCad.style.marginTop = -(wPage / 6) + 'px';
	objBody.insertBefore(boxCad, objBody.lastChild);
	
	boxCad.onclick = function(e) {
		if(!e) var e = window.event;
	
		//e.cancelBubble is supported by IE - this will kill the bubbling process.
		e.cancelBubble = true;
		e.returnValue = false;

		//e.stopPropagation works only in Firefox.
		if (e.stopPropagation) {
			e.stopPropagation();
			/* e.preventDefault(); */
		}
		/* return false; */

	}
}

// ------- Cria a string a ser enviada, formato campo1=valor1&campo2=valor2... -------

function criaQueryString(nfr)
{
	var s = new String;
	s = '';
	var frm = gEi(nfr);
	var numElementos = frm.elements.length;
	for(var a = 0; a < numElementos; a++)
	{
		if(frm.elements[a].getAttribute("class") != "butbuscar" && frm.elements[a].getAttribute("class") != "but" && frm.elements[a].type != "button" && frm.elements[a].type != "submit" && frm.elements[a].type != "reset" && frm.elements[a].type != "radio" && frm.elements[a].type != "checkbox" && frm.elements[a].value != "")
		{
			if(frm.elements[a].tagName == "select")
			{
				s += frm.elements[a].name + "=" + encodeURIComponent(frm.elements[a].item(frm.elements[a].selectedIndex).value) + "&";
			}
			else
			{
				s += frm.elements[a].name + "=" + encodeURIComponent(frm.elements[a].value) + "&";
			}
		}
		else
		{
			if(frm.elements[a].type == "radio" && frm.elements[a].checked)
			{
				s += frm.elements[a].name + "=" + encodeURIComponent(frm.elements[a].value) + "&";
			}
			else
				if(frm.elements[a].type == "checkbox" && frm.elements[a].checked)
				{
					s += frm.elements[a].name + "=" + encodeURIComponent(frm.elements[a].value) + "&";
				}
		}
	}

	s = s.substr(0, s.length - 1);
	return s;
}

function criaQueryStringSA(nfr)
{
	var s = new String;
	s = '';
	var frm = gEi(nfr);
	var numElementos = frm.elements.length;
	for(var a = 0; a < numElementos; a++)
	{
		if(frm.elements[a].getAttribute("class") != "butbuscar" && frm.elements[a].getAttribute("class") != "but" && frm.elements[a].type != "button" && frm.elements[a].type != "submit" && frm.elements[a].type != "reset" && frm.elements[a].type != "radio" && frm.elements[a].type != "checkbox" && frm.elements[a].value != "")
		{
			if(frm.elements[a].tagName == "select")
			{
				s += frm.elements[a].name + "=" + frm.elements[a].item(frm.elements[a].selectedIndex).value + "&";
			}
			else
			{
				s += frm.elements[a].name + "=" + frm.elements[a].value + "&";
			}
		}
		else
		{
			if(frm.elements[a].type == "radio" && frm.elements[a].checked)
			{
				s += frm.elements[a].name + "=" + frm.elements[a].value + "&";
			}
			else
				if(frm.elements[a].type == "checkbox" && frm.elements[a].checked)
				{
					s += frm.elements[a].name + "=" + frm.elements[a].value + "&";
				}
		}
	}

	s = s.substr(0, s.length - 1);
	return s;
}

// ------- Cria a string a ser enviada, formato campo1.valor1,campo2.valor2 -------

function serializaDados(nfr)
{
	var s = new String;
	s = '';
	var frm = gEi(nfr);
	var numElementos = frm.elements.length;
	for(var a = 0; a < numElementos; a++)
	{
		if(frm.elements[a].getAttribute("class") != "butbuscar" && frm.elements[a].getAttribute("class") != "but" && frm.elements[a].type != "button" && frm.elements[a].type != "submit" && frm.elements[a].type != "reset" && frm.elements[a].type != "radio" && frm.elements[a].type != "checkbox" && frm.elements[a].value != "")
		{
			if(frm.elements[a].tagName == "select")
			{
				s += frm.elements[a].name + "." + encodeURIComponent(frm.elements[a].item(frm.elements[a].selectedIndex).value) + ",";
			}
			else
			{
				s += frm.elements[a].name + "." + encodeURIComponent(frm.elements[a].value) + ",";
			}
		}
		else
		{
			if(frm.elements[a].type == "radio" && frm.elements[a].checked)
			{
				s += frm.elements[a].name + "." + encodeURIComponent(frm.elements[a].value) + ",";
			}
			else
				if(frm.elements[a].type == "checkbox" && frm.elements[a].checked)
				{
					s += frm.elements[a].name + "." + encodeURIComponent(frm.elements[a].value) + ",";
				}
		}
	}

	s = s.substr(0, s.length - 1);
	return s;
}
function getCamposId(nfr)
{
	var s = new String;
	s = '';
	var frm = gEi(nfr);
	var numElementos = frm.elements.length;
	for(var a = 0; a < numElementos; a++)
	{
		if(frm.elements[a].getAttribute("class") != "butbuscar" && frm.elements[a].getAttribute("class") != "but" && frm.elements[a].type != "button" && frm.elements[a].type != "submit" && frm.elements[a].type != "reset" && frm.elements[a].type != "radio" && frm.elements[a].type != "checkbox" && frm.elements[a].value != "")
		{
			if(frm.elements[a].tagName == "select")
			{
				c = frm.elements[a].name;
				if(c)
				{
					eid= c.indexOf("id");
					if(eid > 0)
					{
						s += frm.elements[a].name + "=" + frm.elements[a].value + "&";
					}
				}
 			}
			else
			{
				c =frm.elements[a].name;
				if(c)
				{
					eid= c.indexOf("id");
					if(eid > 0)
					{
						s += frm.elements[a].name + "=" + frm.elements[a].value + "&";
					}
				}
			}
		}
		else
		{
			if(frm.elements[a].type == "radio" && frm.elements[a].checked)
			{
				c =frm.elements[a].name;
				if(c)
				{
					eid= c.indexOf("id");
					if(eid > 0)
					{
						s += frm.elements[a].name + "=" + frm.elements[a].value + "&";
					}
				}
			}
			else
				if(frm.elements[a].type == "checkbox" && frm.elements[a].checked)
				{
					c =frm.elements[a].name;
					if(c)
					{
						eid= c.indexOf("id");
						if(eid > 0)
						{
							s += frm.elements[a].name + "=" + frm.elements[a].value + "&";
						}
					}
				}
		}
	}

	s = s.substr(0, s.length - 1);
	return s;
}

function getConteudo(url, onde)
{
	// Inicia o Ajax, através da variável Ajax
	var ajax = openAjax();
	// A tag bgBody conterá o formulário de cadastro
	var recipiente = gEi(onde);
	// Informamos o método e a página que será requisitada
	ajax.open('GET', url, true);
	ajax.onreadystatechange = function()
	{
		if(ajax.readyState == 1)
		{
			// Cria o efeito de loading
			loading(true, onde, 'imagens/loading.gif', '54', 'Aguarde um momento..', '#800000');
		}	// if->readyState->1
		if(ajax.readyState == 4)
		{
			if(ajax.status == 200)
			{
				// Remove o efeito de loading
				loading(false, onde, '', '', '', '');
				// Pega o conteúdo - HTML - da página requisitada e coloca dentra da div definida na variável recipiente
			    var txt = ajax.responseText;
				txt = txt.replace(/\+/g, " ");
			  	texto = unescape(txt);
				recipiente.innerHTML = texto;
				if(gEi('btnNovoCadastro'))
				{
  				    var but = gEi('btnNovoCadastro');
				    var nform = but.href + "&ajax=1";
				}
				ativarBtnCadastro(nform);
				ativarBtnEditarBtnExcluir();
    		}	// if-status->200
		}	// if->readyState->4
 	};	// ajax->onreadystatechange
	// Envia a requisição
	ajax.send(null);
	// Evita o reload da página
	return false;
}

function strstr (haystack, needle, bool) {
    // Finds first occurrence of a string within another 
    //
    // version: 909.322
    // discuss at: http://phpjs.org/functions/strstr
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strstr('Kevin van Zonneveld', 'van');
    // *     returns 1: 'van Zonneveld' 
    // *     example 2: strstr('Kevin van Zonneveld', 'van', true);
    // *     returns 2: 'Kevin '
    // *     example 3: strstr('name@example.com', '@');
    // *     returns 3: '@example.com'
    // *     example 4: strstr('name@example.com', '@', true);
    // *     returns 4: 'name'
    var pos = 0;
    
    haystack += '';
    pos = haystack.indexOf( needle );
    if (pos == -1) {
       return false;
    } else{
       if (bool){
            return haystack.substr( 0, pos );
       } else{
           return haystack.slice( pos );
       }
    }
}

function ativamenuajax()
{
	if(!gEi("menu"))
		return false;

	var links = document.getElementsByTagName("a");
	for(var i = 0; i < links.length; i++)
	{
		if(links[i].className.match("mp") || links[i].className.match("drop"))
		{
			links[i].onclick = function()
			{
				var ref = this.href;
				var tem= strstr(ref,'?',true);
				if(tem){
					ref =ref + "&ajax=1";
				}else{
				    ref =ref + "?ajax=1";
				}
				getConteudo(ref, "conteudo");
				return false;
			};
		}
	}
}

// Esta função é utilizada para exibir o formulário quando o link/botão Cadastrar novo contato é clicado

function ativarBtnCadastro(nform)
{
	// Se não houver o botão/link aborta a função
	if(!gEi('btnNovoCadastro'))
		return false;

	// Ao clicar no botão será realizada uma ação
	gEi('btnNovoCadastro').onclick = function()
	{
		// Executa a função que cria o fundo sobre página
		exibirBgBody();
		// Cria um div - definida como boxCad - que armazenará o formulário de cadastro
		boxCad('bgBody');
		// Inicia o Ajax, através da variável Ajax
		var ajax = openAjax();
		// A tag bgBody conterá o formulário de cadastro
		var recipiente = gEi('boxCad');
		// Informamos o método e a página que será requisitada
		ajax.open('GET', nform, true);
		// bla
		ajax.onreadystatechange = function()
		{
			if(ajax.readyState == 1)
			{
				// Cria o efeito de loading
				loading(true, 'boxCad', 'imagens/loading.gif', '32', 'Aguarde o carregamento do formulário..', '#ffffff');
			}	// if->readyState->1
			if(ajax.readyState == 4)
			{
				if(ajax.status == 200)
				{
					// Remove o efeito de loading
					loading(false, 'boxCad', '', '', '', '');
					// Pega o conteúdo - HTML - da página requisitada: formulario.php?ajax=true e coloca dentra da div definida na variável recipiente
					var txt = ajax.responseText;
					txt = txt.replace(/\+/g, " ");
					texto = unescape(txt);
					recipiente.innerHTML = texto;
					// Chama a função que trabalha sobre os botões de Ok e Cancelar
					btnOkBtnCancelar();
        			// Seta o focus no campo nome do cadastro
					//focusNome();
				}	// if-status->200
			}	// if->readyState->4
		};	// ajax->onreadystatechange
		// Envia a requisição
		ajax.send(null);
		// Evita o reload da página
		return false;
	};
}

// Funções que será vinculadas ao botão Ok e Cancelar do formulário

function btnOkBtnCancelar()
{
	// Se não houver os botões aborta a função
	if(!gEi('btnOk'))
		return false;

	if(!gEi('btnCancelar'))
		return false;

	gEi('btnOk').onclick = function()
	{
        // Valida os dados informado, a função retornará false se houver erro, e true se estiver tudo ok.
		var form = gEi('frmcad');
		var validacao = valid(form);
		var camposid= getCamposId('frmcad');
		var dados =criaQueryString('frmcad') + "&ajax=1";
		var dataPost = form.action + "?" + criaQueryString('frmcad') + "&ajax=1";
        var action = form.action + "?ajax=1";
		if(camposid !== '')
		{
			dados += "&" + camposid;
			dataPost += "&" + camposid;
			action += "&" + camposid;
		}	

		if(validacao == true)
		{
			var ajax = openAjax();
			ajax.open('POST',form.action, true);
			ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		//ajax.setRequestHeader("Content-length", dados.length);
    		ajax.send(dados);
			ajax.onreadystatechange = function()
			{
				if(ajax.readyState == 4)
				{
					if(ajax.status == 200)
					{
 						// Atualiza o relatório
						getConteudo(action, 'conteudo');
					}	// status ->200
				}	// readyState->4
			};	// ajax->onreadystatechange
			removerDivs();
		}	// validacao == true
		// Evita que o form seja enviado e dê o reload na página
		return false;
	};

	gEi('btnCancelar').onclick = function()
	{
		// Elimina o fundo criado para o body e a div - boxCad - que contém o formulário de cadastro.
		removerDivs();
		// Cancela a função do botão de 'limpar' os dados preenchidos.
		return false;
	};
}

// Esta função elimina da página o fundo criado sobre o body e o boxCad;

function removerDivs()
{
	var bgBody = gEi('bgBody');
	var boxCad = gEi('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ção que ativa o botão de edição e exclusão dos contatos

function ativarBtnEditarBtnExcluir()
{
	// Seleciona todas as tags a, os links.
	var linksBtn = gEn('a');
	// Faz um loop por todos (links)
	for(var x = 0; x < linksBtn.length; x++)
	{
		// Cada link em si
		var linkBtn = linksBtn[x];
		if(linkBtn.className.match("btnEditar") || linkBtn.className.match("btnOpcional"))
		{
			linkBtn.onclick = function()
			{
				//pego a href
				var ref = this.href + "&ajax=1";
				// Executa a função que cria o fundo sobre página
				exibirBgBody();
				// Cria um div - definida como boxCad - que armazenará o formulário de cadastro
				boxCad('bgBody');
				// Inicia o Ajax, através da variável Ajax
				var ajax = openAjax();
				// A tag bgBody conterá o formulário de cadastro
				var recipiente = gEi('boxCad');
				// Informamos o método e a página que será requisitada
				ajax.open('GET', ref, true);
				// bla
				ajax.onreadystatechange = function()
				{
					if(ajax.readyState == 1)
					{
						// Cria o efeito de loading
						loading(true, 'boxCad', 'imagens/loading.gif', '32', 'Aguarde o carregamento do formulário..', '#ffffff');
					}	// if->readyState->1
					if(ajax.readyState == 4)
					{
						if(ajax.status == 200)
						{
							// Remove o efeito de loading
							loading(true, 'boxCad', '', '', '', '');
							// Pega o conteúdo - HTML - da página requisitada: formulario.php?ajax=true e coloca dentra da div definida na variável recipiente
                                var txt = ajax.responseText;
				                txt = txt.replace(/\+/g, " ");
				                txt = unescape(txt);
                                recipiente.innerHTML = txt;
							// Chama a função que trabalha sobre os botões de Ok e Cancelar
							btnOkBtnCancelar();
						}	// if-status->200
					}	// if->readyState->4
				};	// ajax->onreadystatechange
				// Envia a requisição
				ajax.send(null);
				// Evita o reload da página
				return false;
			};	// linkBtn.onclick
		}	// if->btnEditar
		// Verifico se o link será para exclusão de registro
		if(linkBtn.className.match("btnExcluir"))
		{
			linkBtn.onclick = function()
			{
				// Confirma a exclusão antes de executá-la.
				var confirma = confirm('Você realmente deseja excluir?');
				// Se realmente quiser excluir
				if(confirma == true)
				{
					// Inicia o Ajax, através da variável Ajax
					var ajax = openAjax();
					var ref = this.href + "&ajax=1";
					var ref1= ref.split("?",2);
					// Informamos o método e a página que será requisitada
					ajax.open('GET', ref, true);
					ref=ref1[0]+ "?ajax=1";
					// bla
					ajax.onreadystatechange = function()
					{
						if(ajax.readyState == 4)
						{
							if(ajax.status == 200)
							{
								// Atualiza a tabela de raltório, agora sem o registro excluído
								getConteudo(ref, 'conteudo');
							}	// if-status->200
						}	// if->readyState->4
					};	// ajax->onreadystatechange
					// Envia a requisição
					ajax.send(null);
				}	// if->confirma->true
				// Evita o reload da página
				return false;
			};	// linkBtn.onclick
		}	// if->btnExcluir
		// Verifico se o link será para uma outra função simples
		if(linkBtn.className.match("btnSimples"))
		{
			linkBtn.onclick = function()
			{
					// Inicia o Ajax, através da variável Ajax
					var ajax = openAjax();
					var ref = this.href + "&ajax=1";
                    var ref1= ref.split("?",2);
					// Informamos o método e a página que será requisitada
					ajax.open('GET', ref, true);
					ref=ref1[0]+ "?ajax=1";
					ajax.onreadystatechange = function()
					{
						if(ajax.readyState == 4)
						{
							if(ajax.status == 200)
							{
								// Atualiza a tabela de raltório, agora sem o registro excluído
								getConteudo(ref, 'conteudo');
							}	// if-status->200
						}	// if->readyState->4
					};	// ajax->onreadystatechange
					// Envia a requisição
					ajax.send(null);
				// Evita o reload da página
				return false;
			};	// linkBtn.onclick
		}	// if->btnSimples
		
		// Verifico se o link será para uma outra função tipo menu principal interno
		if(linkBtn.className.match("mpi"))
		{
			linkBtn.onclick = function()
			{
			   	var ref = this.href + "&ajax=1";
				getConteudo(ref, "conteudo");
				return false;
			};
        }
		// Verifico se o link será para abrir uma janela
		if(linkBtn.className.match("btnAbreJanela"))
		{
			linkBtn.onclick = function()
			{
				var ref = this.href;
				var w = this.getAttribute('w');
				var h = this.getAttribute('h');
				abrejanela(ref,h,w);
				// Evita o reload da página
				return false;
			};	// btnAbreJanela.onclick
		}	// if->btnAbreJanela
		
 	}	// for
}

function autofitIframe(id)
{
if (!window.opera && !document.mimeType && document.all && document.getElementById)
{
parent.document.getElementById(id).style.height=this.document.body.offsetHeight+"px";
}
else if(document.getElementById)
{
parent.document.getElementById(id).style.height=this.document.body.scrollHeight+"px";
}
}
function loadFunctions()
{
	ativamenuajax();
}

window.onload = loadFunctions;

