/*
// ---------------------------------------------------------------------
// Arquivo de funcoes principais em Javascript
// ---------------------------------------------------------------------
// Arquivo.......: jsc/funcoes.php
// Tipo..........: Script
// Linguagem.....: Javascript
// Autor.........: Luciano Jose Alves
// Data..........: 10-mai-2011
// Alterado por..: Luciano Jose Alves
// Alterado em...: 01-set-2011
// Descricao.....: Funcoes principais em Javascript
// Objetivo......: Disponibilizar diversas funcoes para uso na pagina
// Observacao....: 
// ---------------------------------------------------------------------
*/

/* ---------------------------------------------------------------------
 Variaveis Globais
--------------------------------------------------------------------- */
var xmlHttp
var elementoXML

/* ---------------------------------------------------------------------
 Extrai o trecho de javascript de uma pagina chamada com ajax
 e o executa.
--------------------------------------------------------------------- */
function extraiScript(texto) {
	var ini = 0;
	// loop enquanto achar um script
	while (ini!=-1) {
		// procura uma tag de script
		ini = texto.indexOf('<script', ini);
		// se encontrar
		if (ini >=0) {
			// define o inicio para depois do fechamento dessa tag
			ini = texto.indexOf('>', ini) + 1;
			// procura o final do script
			var fim = texto.indexOf('</script>', ini);
			// extrai apenas o script
			codigo = texto.substring(ini,fim);
			// executa o script
			novo = document.createElement("script")
			novo.text = codigo;
			document.body.appendChild(novo);
		}
	}
}

/* ---------------------------------------------------------------------
 Chama o resultado de um GET via XML 
--------------------------------------------------------------------- */
function callAjax(pagina, valor, elemento)
{
	try {
		try {
			var mensagem='<div align=center style="width: 200px; height: 200px; margin: 150px auto;">';
			mensagem=mensagem+'<img src="img/ldr.gif" alt="----------------"><br><br><b>Carregando dados...</b>';
			mensagem=mensagem+"</div>";
			document.getElementById(elemento).innerHTML=mensagem;
		} catch(e) {
			
		}
		
		xmlHttp=GetXmlHttpObject();
		
		if (xmlHttp==null) {
			alert ("Seu browser nao suporta requisicoes HTTP via xml");
			return;
		}
		
		var url=pagina;
		url=url+"?"+valor;
		url=url+"&sid="+Math.random();
		elementoXML=elemento;
		
		try {
			xmlHttp.onreadystatechange=stateChanged;
			xmlHttp.open("GET",url,true);
			xmlHttp.setRequestHeader('Content-Type','text/xml'); 
			xmlHttp.setRequestHeader('Content-Encoding','ISO-8859-1'); 
			xmlHttp.send(null);
		}
		catch(e) {
			document.getElementById(elementoXML).innerHTML="";
		}
		
	} catch(e) {
		alert('Ocorreu um erro ao chamar o ajax');
	}
}


/* ---------------------------------------------------------------------
 Chama o resultado de um POST via XML 
--------------------------------------------------------------------- */
function callAjaxPOST(pagina, valor, elemento)
{
	try {
		try {
			var mensagem='<div align=center style="width: 200px; height: 200px; margin: 150px auto;">';
			mensagem=mensagem+'<img src="img/ldr.gif" alt="----------------"><br><br><b>Carregando dados...</b>';
			mensagem=mensagem+"</div>";
			document.getElementById(elemento).innerHTML=mensagem;
		} catch(e) {
			
		}

		xmlHttp=GetXmlHttpObject();

		if (xmlHttp==null) {
			alert ("Seu browser nao suporta requisicoes HTTP via xml");
			return;
		}
		
		var url=pagina;
		var dados="";
		dados="consultaXML="+valor;
		dados=dados+"&sid="+Math.random();

		elementoXML=elemento
		
		xmlHttp.open("POST", url, true);
	// ----- Removidos pois nao funcionam em IE e Webkit (Chrome, Safari) -----	
	//	xmlHttp.setRequestHeader('Content-Type','text/xml'); 
	//	xmlHttp.setRequestHeader('Content-Length', dados.length ); 
	// ------------------------------------------------------------------------
	 	xmlHttp.setRequestHeader('Content-Encoding','ISO-8859-1'); 
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
		xmlHttp.onreadystatechange=stateChanged;
		xmlHttp.send(dados);
		
	} catch(e) {
		alert('Ocorreu um erro ao chamar o ajax via POST');
	}
}

/* ---------------------------------------------------------------------
 Retorna os valores caso o estado do chamado tenha mudado
--------------------------------------------------------------------- */
function stateChanged()
{ 
	try {
		// 
		// ----- Removido pois nao funcionam em IE e Webkit (Chrome, Safari) -----	
		// || xmlHttp.readyState=="complete"
		// Trocado por:
		// && xmlHttp.status == 200
		// ------------------------------------------------------------------------		
		if (xmlHttp.readyState==4 && xmlHttp.status == 200) {
			xmlDoc=xmlHttp.responseXML;
			document.getElementById(elementoXML).innerHTML= xmlHttp.responseText;
			extraiScript(xmlHttp.responseText);
		}
	} catch(e) {
		alert('Ocorreu um erro ao conferir o estado do ajax');
	}
}

/* ---------------------------------------------------------------------
 Retorna a requisicao HTTP via XML
--------------------------------------------------------------------- */
function GetXmlHttpObject()
{
	var objXMLHttp=null
	try {
		if (window.XMLHttpRequest) {
			objXMLHttp=new XMLHttpRequest();
		}	else {
			if (window.ActiveXObject) {
				objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	} catch(e) {
		alert('Ocorreu um erro ao pegar o objeto do ajax');
	}
	return objXMLHttp;
}

/* ---------------------------------------------------------------------
 Funcao que oculta ou mostra os submenus de um item de menu com <li>
--------------------------------------------------------------------- */
function abreFechaMenu(elemento) {
	try {
		objetosUL=document.getElementsByTagName('ul');
		$("#sub_"+elemento).slideToggle("fast");
		for(i=0; i < objetosUL.length; i++) {
			if(objetosUL[i].id.indexOf('sub_mn')==0 && objetosUL[i].id!="sub_"+elemento) {
				$("#"+objetosUL[i].id).slideUp("fast");
			}
		}
	} catch(e) {
		alert(e);
	}
}

/* ---------------------------------------------------------------------
 Funcao que oculta ou mostra as noticias da pagina de noticias
--------------------------------------------------------------------- */
function abreFechaNoticias(elemento) {
	objetosUL=document.getElementsByTagName('div');
	$("#sub_"+elemento).slideToggle("fast");
	for(i=0; i < objetosUL.length; i++) {
		if(objetosUL[i].id.indexOf('sub_nt')==0 && objetosUL[i].id!="sub_"+elemento) {
				$("#"+objetosUL[i].id).slideUp("fast");
		}
	}
}

// ----------------------------------------------------------
// Retorna uma string separada por virgulas com os valores 
// dos checkboxes selecionados
// ----------------------------------------------------------
function listaRadioValorTag(elemento) {
	lista="";
	radioObj = document.getElementsByTagName(elemento);
	if (radioObj.length == null) {
		if (radioObj.checked) {
			return '';
		}
	} else {
		for (var i = 0; i < radioObj.length; i++) {
			if (radioObj[i].checked) {
				lista=lista+radioObj[i].value+',';
			}
		}
		if (lista.lastIndexOf(',')==lista.length-1) {
			return lista.substring(0,lista.lastIndexOf(','));
		}
	}
}

/* ---------------------------------------------------------------------
 Funcao que risca um texto de uma linha de uma tabela para mostrar
 que ja foi marcado
--------------------------------------------------------------------- */
function risca(elemento) {
	idElemento=elemento.id;
	objeto=document.getElementById(idElemento);
	if (objeto.checked) {
		document.getElementById('tx'+idElemento).style.textDecoration="line-through";
	} else {
		document.getElementById('tx'+idElemento).style.textDecoration="none";
	}
}

/* ---------------------------------------------------------------------
 Funcao que preenche os dados da ficha de filiacao para exemplo e
 testes de desenvolvimento
--------------------------------------------------------------------- */
function preenche() {
	
	// Dados Pessoais 
	document.getElementById('edNome').value='Pedro Alvares Cabral';
	document.getElementById('edDataNasc').value='28/12/1945';
	document.getElementById('edPis').value='12345678901';
	document.getElementById('edIdentidade').value='3.577.888 SSP/SP';
	document.getElementById('edCPF').value='055.777.999-88';
	document.getElementById('edEndereco').value='Rua das Flores, 1313, Bloco A Apto 8007';
	document.getElementById('edBairro').value='Jardim das Flores';
	document.getElementById('edCidade').value='Florianópolis';
	document.getElementById('edUF').value='SC';
	document.getElementById('edCEP').value='88100-000';
	document.getElementById('edTelefone').value='(48) 5555-5555';
	document.getElementById('edCelular').value='(48) 4444-4444';
	document.getElementById('edEMail').value='cabral@portugal.com.br';
	document.getElementById('edNaturalidade').value='Florianópolis';
	document.getElementById('edEstadoCivil').value='Casado';
	document.getElementById('edFiliacaoPai').value='Don João Sexto da Nóbrega';
	document.getElementById('edFiliacaoMae').value='Dona Maria Auxiliadora das Dores';

	// Dados Profissionais
	document.getElementById('edTrLocal').value='Companhia de Barcos e Caravelas LTDA ME';
	document.getElementById('edTrTelefone').value='(48) 7777-7777';
	document.getElementById('edTrCargo').value='Velejador';
	document.getElementById('edTrFuncao').value='Timoneiro';
	document.getElementById('edTrDataAdm').value='22/04/1960';
	document.getElementById('edTrEndereco').value='Avenida das Aguas do Mar, 5000, Doca 22-A';
	document.getElementById('edTrBairro').value='Centro';
	document.getElementById('edTrCidade').value='Florianópolis';
	document.getElementById('edTrUF').value='SC';
	document.getElementById('edTrCEP').value='88000-000';
	document.getElementById('edTrCTPS').value='121233-20';
	document.getElementById('edTrEMail').value='cabral@caravelas.com.br';
	
}

/* ---------------------------------------------------------------------
 Funcao que valida o campo informado verificando se o mesmo 
 nao esta vazio
--------------------------------------------------------------------- */
function validaCampo(idCampo, nome) {
	if (document.getElementById(idCampo).value == "") {
		document.getElementById(idCampo).focus();
		alert('O campo '+nome+' deve ser preenchido!');
		return false;
	}
	return true;
}

//--------------------------------------------------------
// Envia os dados do formulario de contato
//--------------------------------------------------------
function enviaMensagem(formulario, nome, email, assunto, texto, setor) {
 // if (validaCampo(nome, 'Nome') && validaCampo(email, 'eMail') && validaCampo(assunto, 'Assunto') && validaCampo(texto, 'Mensagem')) {
//		callAjaxPOST('cnt/enviaEmailContato.php','&','sp01');
 // }
}

