// JavaScript Document
/*------------------------------------------------------
		Data:			25/03/2005
		Funcionalidade:	Escreve uma mensagem
------------------------------------------------------*/
function mensagem(aMsg, anUrlDestino){
	if (aMsg != ""){
		alert(aMsg);
	}
	if(anUrlDestino != ""){
		switch (anUrlDestino){
			case "-1":
				history.go(-1);
				break;
			default:
				location.href = anUrlDestino;
		}
	}
}

/*------------------------------------------------------
	Data:			25/03/2005
	Funcionalidade:	Recebe uma mensagem de confirmação
------------------------------------------------------*/
function confirmarAcao(aMsg){
	if (confirm(aMsg)){		
		return true;
	}
}

function confirmarExclusao(aMsg, anUrlDestino){
	if (confirmarAcao(aMsg)){
		location.href = anUrlDestino;
	}
}
/*------------------------------------------------------
	Data:			07/09/2005
	Funcionalidade:	Abre um Popup
------------------------------------------------------*/
function abrePopup(anUrl, aTituloPagina, anOpcao){
	window.open(anUrl, aTituloPagina, anOpcao); 
}
/*------------------------------------------------------
	Data:			25/03/2005
	Funcionalidade:	Oculta um bloco específico
------------------------------------------------------*/
function esconderSetor(anObj) {
	if (anObj.style.display == 'none') {
		anObj.style.display = '';
	}
	else {
		anObj.style.display = 'none';
	}
}

/*------------------------------------------------------
	Data:			26/03/2005
	Funcionalidade:	Selecionar todos os checkbox do formulário
------------------------------------------------------*/
function selecionarTodos(aFrm, aChkAll) {
	var actVar = aChkAll.checked;
	for(i=0; i < document.forms[aFrm].length; i++) {
		if (document.forms[aFrm].elements[i].type == "checkbox") {
			document.forms[aFrm].elements[i].checked = actVar;
		}
	}
}

/*------------------------------------------------------
	Data:			26/03/2005
	Funcionalidade:	Verifica se um campo estar vazio trabalhando com a função mensagem
------------------------------------------------------*/
function isVazio(aFrm, anElement, aMsg){
	if (document.forms[aFrm].elements[anElement].value == ""){
		if ( (aMsg != "") && (aMsg != null) ){
			mensagem(aMsg, "");
			document.forms[aFrm].elements[anElement].focus();
		}		
		return true;
	}
	return false;
}

/*------------------------------------------------------
	Data:			26/03/2005
	Funcionalidade:	Verifica se um e-mail é válido
------------------------------------------------------*/
function validaEmail(aFrm, anElement){
        var strElement	= document.forms[aFrm].elements[anElement].value;
        var strInvalid	= /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
        var strValid	= /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
		if (!strInvalid.test(strElement) && strValid.test(strElement)) {
       		return true;
        }else{
	        alert("Por favor, preencha um e-mail válido!");
			document.forms[aFrm].elements[anElement].focus();
	        return false;
		}
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Verifica um formato de arquivo
------------------------------------------------------*/
function validarFormatoArquivo(aFrm, anElem){
	sarquivo = document.forms[aFrm].elements[anElem].value;
	sextencao = sarquivo.split("."); //metodo para separar as palavras jogando no vetor
	if ((sextencao[sextencao.length-1] != "jpg") && (sextencao[sextencao.length-1] != "JPG") && (sextencao[sextencao.length-1] != "jpeg") && (sextencao[sextencao.length-1] != "JPEG")){
		if (sextencao[sextencao.length-1] != ''){
			return true;
		}else{
			return false;
		}
	}
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Compara a data atual com uma data passada como parâmetro
	Retorno:		1 se aCampodata > data atual
					0 se aCampodata = data atual
					-1 se aCampodata < data atual
------------------------------------------------------*/
function comparaDataAtual(aFrm, aCampoData){
	var dataAtual, diaAtual, mesAtual, anoAtual, dia, mes, ano, operacao;

	dataAtual = new Date();//instanciando o objeto data
	diaAtual  = dataAtual.getDate();//pegando o dia atual
	mesAtual  = dataAtual.getMonth()+1;//pegando o mês atual e somando 1, pois o mês de janeiro é representado por 0
	anoAtual  = dataAtual.getFullYear();//pegando o ano atual

	fieldData = document.forms[aFrm].elements[aCampoData].value;
	data	  = fieldData.split("/");
	dia = data[0];
	mes = data[1];
	ano = data[2];
	if (ano > anoAtual){//data maior que dataAtual
		operacao = 1;
	}else{
		if (ano < anoAtual){//data menor que dataAtual
			operacao = -1;
		}else{//ano = anoAtual
			if (mes > mesAtual){//data maior que dataAtual
				operacao = 1;
			}else{
				if (mes < mesAtual){//data menor que dataAtual
					operacao = -1;
				}else{//mes = mesAtual
					if (dia > diaAtual){//data maior que dataAtual
						operacao = 1;
					}else{
						if (dia < diaAtual){//data menor que dataAtual
							operacao = -1;
						}else{//data igual a dataAtual
							operacao = 0;
						}
					}
				}
			}
		}
	}
	return (operacao);
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Compara duas datas passadas como parâmetro
	Retorno:		1 se aCampodata1 > aCampodata2
					0 se aCampodata1 = aCampodata2
					-1 se aCampodata1 < aCampodata2
------------------------------------------------------*/
function comparaDatas(aFrm, aCampoData1, aCampoData2){
	var dia1, mes1, ano1, dia2, mes2, ano2, operacao;

	fieldData = document.forms[aFrm].elements[aCampoData1].value;
	data	  = fieldData.split("/");
	dia1 = data[0];
	mes1 = data[1];
	ano1 = data[2];

	fieldData = document.forms[aFrm].elements[aCampoData2].value;
	data	  = fieldData.split("/");
	dia2 = data[0];
	mes2 = data[1];
	ano2 = data[2];

	if (ano1 > ano2){//data1 maior que data2
		operacao = 1;
	}else{
		if (ano1 < ano2){//data1 menor que data2
			operacao = -1;
		}else{//ano1 = ano2
			if (mes1 > mes2){//data1 maior que data2
				operacao = 1;
			}else{
				if (mes1 < mes2){//data1 menor que data2
					operacao = -1;
				}else{//mes1 = mes2
					if (dia1 > dia2){//data1 maior que data2
						operacao = 1;
					}else{
						if (dia1 < dia2){//data1 menor que data2
							operacao = -1;
						}else{//data1 igual a data2
							operacao = 0;
						}
					}
				}
			}
		}
	}
	return (operacao);
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Valida se a data passada como parâmetro é válida
------------------------------------------------------*/
function validaData(aFrm, aCampoDia, aCampoMes, aCampoAno){
	var dia, mes, ano;

	dia = document.forms[aFrm].elements[aCampoDia].value;
	mes = document.forms[aFrm].elements[aCampoMes].value;
	ano = document.forms[aFrm].elements[aCampoAno].value;

	for (i=0; i < document.forms[aFrm].elements[aCampoDia].value.length; i++){
		if (isNaN(document.forms[aFrm].elements[aCampoDia].value.charAt(i))){
			document.forms[aFrm].elements[aCampoDia].value = "";
			return false;
		}
	}
	if (i < 2){ return false;}

	for (i=0; i < document.forms[aFrm].elements[aCampoMes].value.length; i++){
		if (isNaN(document.forms[aFrm].elements[aCampoMes].value.charAt(i))){
			document.forms[aFrm].elements[aCampoMes].value = "";
			return false;
		}
	}
	if (i < 2){ return false;}

	for (i=0; i < document.forms[aFrm].elements[aCampoAno].value.length; i++){
		if (isNaN(document.forms[aFrm].elements[aCampoAno].value.charAt(i))){
			document.forms[aFrm].elements[aCampoAno].value = "";
			return false;
		}
	}
	if (i < 4){ return false;}

	if (ano==0){
		document.forms[aFrm].elements[aCampoAno].value = "";
		return false;
	}

	if ((mes > 12) || (mes==0)){
		document.forms[aFrm].elements[aCampoMes].value = "";
		return false;
	}

	if (mes==2){
		if ( ((ano%4 != 0)||(ano%100==0 && ano%400!=0)) && dia > 28 || dia > 29 ){
			document.forms[aFrm].elements[aCampoMes].value = "";
			return false;
		}
	}else{
		if (dia > 31){
			document.forms[aFrm].elements[aCampoDia].value = "";
			return false;
		}else{
			if ((dia==31)&&((mes==4)||(mes==6)||(mes==9)||(mes==11))){
				document.forms[aFrm].elements[aCampoDia].value = "";
				return false;
			}
		}
	}
	return true;
}

/*------------------------------------------------------
	Data:			06/07/2005
	Funcionalidade:	Verifica se a data em um combo é válida
------------------------------------------------------*/
function validaDataCombo(aFrm, aCampoDia, aCampoMes, aCampoAno)
{
	var dia, mes, ano;

	dia = document.forms[aFrm].elements[aCampoDia].value;
	mes = document.forms[aFrm].elements[aCampoMes].value;
	ano = document.forms[aFrm].elements[aCampoAno].value;

	if (mes==2){
		if ( ((ano%4 != 0)||(ano%100==0 && ano%400!=0)) && dia > 28 || dia > 29 ){
			return false;
		}
	}else{
		if ((dia==31)&&((mes==4)||(mes==6)||(mes==9)||(mes==11))){
			document.forms[aFrm].elements[aCampoDia].value = "";
			return false;
		}		
	}
	return true;
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Muda o background do elemento com focus
------------------------------------------------------*/
function onFocus(aFrm, aCampo){
	document.forms[aFrm].elements[aCampo.name].style.background = "#FFFFFF";
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Muda o background do elemento quando perde o focus
------------------------------------------------------*/
function onBlur(aFrm, aCampo){
	document.forms[aFrm].elements[aCampo.name].style.background = "#EAF5FD";
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Dá o focus no próximo elemento do formulário
------------------------------------------------------*/
function goNextField(aFrm, aCampoAtual, aCampoAtualMaxLenght, aProximoCampo){
	if (document.forms[aFrm].elements[aCampoAtual.name].value.length == aCampoAtualMaxLenght){
		document.forms[aFrm].elements[aProximoCampo].focus();
		document.forms[aFrm].elements[aProximoCampo].select();
	}
}

function multSelect(aFrm, aNomeSelect, aNomeHidden) {
	var prim=0;
	var opcoes="";

	for (i=0 ; i<document.forms[aFrm].elements[aNomeSelect].length; i++) {
	   if (document.forms[aFrm].elements[aNomeSelect].options[i].selected) {
	      if (prim==0){
		     prim = 1;
			 opcoes += (document.forms[aFrm].elements[aNomeSelect].options[i].value);
		  }else{
	         opcoes += (","+document.forms[aFrm].elements[aNomeSelect].options[i].value);
	      }
	   }
	}

   document.forms[aFrm].elements[aNomeHidden].value = opcoes;
}

function colorirSelecao(aLinha, aAcao, aFrm, aCampo){
	if (document.forms[aFrm].elements[aCampo].checked == false){
		switch (aAcao){
			case 'out':
				aLinha.style.background = 'transparent';
				break;
			case 'over':
				aLinha.style.background = '#DAEFFF';
				break;
		}
	}else{
		aLinha.style.background = '#BDD8EC';
	}
}

/*------------------------------------------------------
	Data:			02/05/2005
	Funcionalidade:	Checa se algum checkbox foi selecionado na LST
------------------------------------------------------*/
function checaSelecao(aFrm){
	var cont = 0;
	for(i=0; i < document.forms[aFrm].length; i++) {
		if (document.forms[aFrm].elements[i].checked) {
			cont++;
			break;
		}
	}
	if (cont){
		if (confirmarAcao('Tem certeza que deseja excluir?')){
			document.forms[aFrm].submit();
		}
	}else{
		mensagem('Selecione pelo menos um registro.',"");
	}
}

/*------------------------------------------------------
	Data:			02/05/2005
	Funcionalidade:	Não permite digitar caracters diferentes de 0123456789
	Obs.:			Não funciona no Mozilla Firefox
------------------------------------------------------*/
function onlyNumber(aTecla){
     chars = "0123456789";
     e = String.fromCharCode(window.event.keyCode);
     if(chars.indexOf(e) == -1) {
     	window.event.keyCode = 0;
     }
}

/*------------------------------------------------------
	Data:			02/05/2005
	Funcionalidade:	Não permite digitar caracters diferentes de 0123456789
	Obs.:			Funciona no Mozilla Firefox
------------------------------------------------------*/
function onlyNumberMozilla(aCampo){
    chars = "0123456789";
	e = aCampo.value.substring(aCampo.value.length - 1, aCampo.value.length);
    if(chars.indexOf(e) == -1) {
    	aCampo.value = aCampo.value.substring(0, aCampo.value.length - 1);
    }
}

// Funções especiais para um elemento Textarea
/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Mostra o número de caracteres restantes
------------------------------------------------------*/
function mostrarContador(aFrm, aCampo, aTamanho){
	document.forms[aFrm].lengthChar.value = aTamanho - (aCampo.value.length);
	divContador.style.visibility = 'visible';
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Esconde o número de caracteres restantes
------------------------------------------------------*/
function esconderContador(){
	divContador.style.visibility = 'hidden';
	return;
}

/*------------------------------------------------------
	Data:			20/09/2005
	Funcionalidade:	Calcula o limite de caracteres de um Textarea
------------------------------------------------------*/
function maxLengthTextarea(aFrm, aCampo, aTamanho, anEvento){
	if((anEvento.which == 0) || (anEvento.which == 8)){
		return true;
	}
 
    strLength = aCampo.value.length;
 
	if(strLength >= aTamanho){
		var tecla = event.keyCode;
	
		if ((tecla != 8) && (tecla != 46) && (tecla != 37)){
			return false;
		}
		contadorTextarea(aFrm, aCampo, aTamanho);
	} 
}
 
function contadorTextarea(aFrm, aCampo, aTamanho){
	var charQtd = 0;
	charQtd = aTamanho - (aCampo.value.length);
	if(charQtd < 0){
		aCampo.value = aCampo.value.substring(0, aCampo.value.length + charQtd);
		charQtd = 0;
	}
	document.forms[aFrm].lengthChar.value = charQtd;
}  

// Funções especiais para a tela PermissaoLst
/*------------------------------------------------------
	Data:			02/05/2005
	Funcionalidade:	Checa se algum checkbox foi selecionado
------------------------------------------------------*/
function selecionarItem(aCheckbox) { 
	var indice = elementPosition(aCheckbox.form, aCheckbox);
	var actVar = aCheckbox.checked;
	var form   = aCheckbox.form;

	if (form.elements[aCheckbox.name].name.indexOf("chkCadastrar") != -1) {
		if(!form.elements[indice-1].checked && !form.elements[indice+1].checked && !form.elements[indice+2].checked && !form.elements[indice+3].checked && !form.elements[indice+4].checked){
			form.elements[indice-1].checked = actVar;
		}
	}
	if (form.elements[aCheckbox.name].name.indexOf("chkConsultar") != -1) {
		if(!form.elements[indice-2].checked && !form.elements[indice-1].checked && !form.elements[indice+1].checked && !form.elements[indice+2].checked && !form.elements[indice+3].checked){
			form.elements[indice-2].checked = actVar;
		}
	}
	if (form.elements[aCheckbox.name].name.indexOf("chkEditar") != -1) {
		if(!form.elements[indice-3].checked && !form.elements[indice-1].checked && !form.elements[indice-2].checked && !form.elements[indice+1].checked && !form.elements[indice+2].checked){
			form.elements[indice-3].checked = actVar;
		}
	}
	if (form.elements[aCheckbox.name].name.indexOf("chkExcluir") != -1) {
		if(!form.elements[indice-4].checked && !form.elements[indice-1].checked && !form.elements[indice-2].checked && !form.elements[indice-3].checked && !form.elements[indice+1].checked){
			form.elements[indice-4].checked = actVar;
		}
	}
	if (form.elements[aCheckbox.name].name.indexOf("chkImprimir") != -1) {
		if(!form.elements[indice-5].checked && !form.elements[indice-4].checked && !form.elements[indice-3].checked && !form.elements[indice-2].checked && !form.elements[indice-1].checked){
			form.elements[indice-5].checked = actVar;
		}
	}
}

/*------------------------------------------------------
	Data:			02/05/2005
	Funcionalidade:	Seleciona os cinco checkbox de uma linha
------------------------------------------------------*/
function selecionarLinha(aCheckbox) { 
	var indice = elementPosition(aCheckbox.form, aCheckbox);
	var actVar = aCheckbox.checked ;
	var form   = aCheckbox.form;
	if (indice != -1) {
		form.elements[indice+1].checked = actVar;
		form.elements[indice+2].checked = actVar;
		form.elements[indice+3].checked = actVar;
		form.elements[indice+4].checked = actVar;
		form.elements[indice+5].checked = actVar;
	}
}

/*------------------------------------------------------
	Data:			02/05/2005
	Funcionalidade:	Retorna a posição do checkbox no formulário com o nome passado como parâmetro
------------------------------------------------------*/
function elementPosition (aForm, anObj){
	for(var i=0; i<aForm.length; i++){
		if(aForm.elements[i].name == anObj.name){
			return i;
		}
	}
	return (-1);
}