// JavaScript Document
// Livraria de Funções Genéricas

/*-------------------------------------------------------------------------*/
// Localiza o elemento alvo pelo ID
/*-------------------------------------------------------------------------*/
function FunGetElement(id){
	theElement = null;
	if (document.getElementById){
		theElement = document.getElementById(id);
	} else if (document.all) {
		theElement = document.all[id];
	} else if (document.layers)	{
		theElement = document.layers[id];
	}
	return theElement;
}

/*-------------------------------------------------------------------------*/
// Cookie - Setagem de Cookie no navegador do usuário
/*-------------------------------------------------------------------------*/
function FunSetCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
	document.cookie = curCookie;
}

/*-------------------------------------------------------------------------*/
// Cookie - Recupera o valor do Cookie solicitado
/*-------------------------------------------------------------------------*/
function FunGetCookie(myName) {
	cName = myName + '=';
	cPosition  = document.cookie.indexOf(cName);	
	if (cPosition != -1 ){
		cIni = cPosition + cName.length;
		cFim   = document.cookie.indexOf(";", cIni);
		if (cFim == -1){
			cFim = document.cookie.length;
		}
		return unescape(document.cookie.substring(cIni, cFim) );
	}
}

/*-------------------------------------------------------------------------*/
// Cookie - Deleta o Cookie
/*-------------------------------------------------------------------------*/
function FunDeleteCookie(name, path, domain) {
	if (FunGetCookie(name)) {
		document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
		history.go(0);
	}
}
/*-------------------------------------------------------------------------*/
// Cookie - Correção de data em navegadores antigos
/*-------------------------------------------------------------------------*/
function FunFixDate(date) {
	var base = new Date(0);
	var skew = base.getTime();
	if (skew > 0){
		date.setTime(date.getTime() - skew);
	}
} 

/*-------------------------------------------------------------------------*/
//Cookie - Seta a nova data de expiração
/*-------------------------------------------------------------------------*/
function FunExpire(){
	var expire = new Date();
	FunFixDate(expire); //correção da data
	expire.setTime(expire.getTime() + 365 * 24 * 60 * 60 * 1000); //acrescenta à data atual + 1 ano
	return expire;
}

/*-------------------------------------------------------------------------*/
// Cookie - Exibe ou Oculta o elemento, altera o ícone do botão conforme
// solicitação do usuário
/*-------------------------------------------------------------------------*/
function FunDisplayUser(myID) {
	var divID = FunGetElement('div_'+myID);
	var imageID = FunGetElement('img_'+myID);
	var trID = FunGetElement('tr_'+myID);

	//Oculta o elemento, altera a imagem
	if(divID.style.display=='') {
        divID.style.display='none';//esconde a DIV
		imageID.src='imgs/display_true.gif';//altera o ícone
		trID.title='Exibir';//altera o ícone
	//exibe o elemento, altera a imagem
	} else {
		divID.style.display='';//exibe a DIV
		imageID.src='imgs/display_false.gif';//altera o ícone
		trID.title='Ocultar';//altera o texto TITLE da barra
	}
	//monta o vetor de elementos a partir dos dados da consulta SQL
	var arrayElements = globalElements.split(',');
	//monta o vetor de preferências
	for(i=0; i<arrayElements.length; i++ ){
		var nextElement = FunGetElement('div_'+arrayElements[i]);
		if(i!=0){
			newViewPrefs = newViewPrefs+','+arrayElements[i]+'/'+nextElement.style.display;
		} else {
			newViewPrefs = arrayElements[i]+'/'+nextElement.style.display;
		}
	}
	//seta a nova preferência de visualização
	FunSetCookie('CViewPrefs', newViewPrefs, FunExpire());
}

/*-------------------------------------------------------------------------*/
// Cookie - Exibe ou Oculta o elemento, altera o ícone do botão conforme
// preferência do usuário
/*-------------------------------------------------------------------------*/
function FunDisplayPrefs(myViews) {
	var arrayViews = myViews.split(',');
	for(i=0 ; i<arrayViews.length; i++ ){
		//separa o ID e o status do elemento
		var configs = arrayViews[i].split('/');
		var divID = FunGetElement('div_'+configs[0]);
		var imageID = FunGetElement('img_'+configs[0]);
		var trID = FunGetElement('tr_'+configs[0]);
		var divValue = configs[1];
		if(divID){
			//define o ícone a ser exibido
			if(divValue=='none') {
				divID.style.display='none';//esconde a DIV
				imageID.src='imgs/display_true.gif';//altera o ícone
				trID.title='Exibir';//altera o ícone
			} else {
				divID.style.display='';//exibe a DIV
				imageID.src='imgs/display_false.gif';//altera o ícone
				trID.title='Ocultar';//altera o texto TITLE da barra
			}
		}
	}
}

/*-------------------------------------------------------------------------*/
// Formata a data para DDMMYYYY
/*-------------------------------------------------------------------------*/
function FunDDMMYYYY(myField){
	myDate = myField.value;
	lenDate = myDate.length;
	
	if(myDate.indexOf("/")==-1){
		if(lenDate>8){
			alert("Formato incorreto!\nDigite no formato DD/MM/AAAA(sem barras)");
			myField.focus();
			myField.select();
			return false;
		}
		if(lenDate<=0){
			myField.value = myDate;
		}
		if((lenDate>0)&&(lenDate<=1)){
			myField.value = myDate.substr(0,0) + '/' + myDate.substr(0,lenDate);
		}
		if((lenDate>=2)&&(lenDate<=8)){
			myField.value = myDate.substr(0,2) + '/' + myDate.substr(2,2) + '/' + myDate.substr(4,8);
		}
	}
	return true; 
}

/*-------------------------------------------------------------------------*/
// Formata para maiúsculas
/*-------------------------------------------------------------------------*/
function FunUpperCase(myField){
	myField.value = myField.value.toUpperCase(); 
}

/*-------------------------------------------------------------------------*/
// Formata para minúsculas
/*-------------------------------------------------------------------------*/
function FunLowerCase(myField){
	myField.value = myField.value.toLowerCase();
}

/*-------------------------------------------------------------------------*/
// Valida e-mail
/*-------------------------------------------------------------------------*/
function FunValidEmail(myForm){
	var myEmail = myForm.email.value;
	var filter = /^.+@.+\..{2,3}$/;
	if(!filter.test(myEmail)){
		alert("Informe um e-mail válido!")
    myForm.email.focus();
		myForm.email.select();
    return false;
	}
	return true;
}

/*-------------------------------------------------------------------------*/
// Valida Tecla ao Pressionar
/*-------------------------------------------------------------------------*/
function FunValidKeyPress(myID,myChars,event){
	var myElement = FunGetElement(myID);//seta o elemento do formulário
	var keyPress;
	var myKeyCode;
	//define a captura de tecla conforme o navegador
	if(navigator.appName.indexOf("Netscape")!= -1){
		myKeyCode = event.which;
	} else {
		myKeyCode = event.keyCode;
	}
	keyPress = String.fromCharCode(myKeyCode);//captura o caracter pelo seu código numérico
	if(!myChars.test(keyPress)){//realiza a verificação de expressão regulamentar
		return false;
	} else {
		return true;
	}
}

/*-------------------------------------------------------------------------*/
// Valida caracters ao sair do field
/*-------------------------------------------------------------------------*/
function FunValidKeyBlur(myID,myChars,myLength,numberMin,numberMax){
	var myElement = FunGetElement(myID);//seta o elemento do formulário
	if(myElement.value!=""){
		var myValue = myElement.value;//carrega o valor do elemento
		if(!myChars.test(myValue)){//realiza a verificação de expressão regulamentar
			alert("O campo contém formato inválido de caracteres!");
    	myElement.focus();
			myElement.select();
			return false;
		}
		return FunValidLength(myID,myLength,numberMin,numberMax);//valida o comprimento do campo
	}
}

/*-------------------------------------------------------------------------*/
// Valida comprimento de caracters do field
/*-------------------------------------------------------------------------*/
function FunValidLength(myID,myLength,numberMin,numberMax){
	var myElement = FunGetElement(myID);
	var myValue = myElement.value;
	var msgMin = "";
	var msgMax = "";
	var msgAnd = "";
	if(!myLength.test(myValue)){
		if(numberMin!=0){
			msgMin = " no mínimo " + numberMin;
		}
		if(numberMax!=0){
			msgMax = " no máximo " + numberMax;
		}
		if(numberMin!=0 && numberMax!=0){
			msgAnd = " e";
		}
		alert("O campo deve conter" + msgMin + msgAnd + msgMax + " caracteres!")
		myElement.focus();
		myElement.select();
		return false;
	} else {
		return true;
	}
}

/*-------------------------------------------------------------------------*/
// Função de seleção múltipla de Checkbox
/*-------------------------------------------------------------------------*/
function FunSelectAll(myID,formID) {
	var myElement = FunGetElement(myID);//seta o elemento do formulário
	var myForm = FunGetElement(formID);//seta o formulário
	//looping de checagem dos elementos
	for(var i=0;i<myForm.elements.length;i++){
		var targetElement = myForm.elements[i];//seta o elemento pelo índice
		if(myElement.checked){
			targetElement.checked = true;//seleciona o elemento
		}else{
			targetElement.checked = false;//deseleciona o elemento
		}
	}
}

/*-------------------------------------------------------------------------*/
// Função de deleção múltipla de registros por Checkbox
/*-------------------------------------------------------------------------*/
function FunCheckBoxDel(formID,myAction,myTarget) {
	var myForm = FunGetElement(formID);//seta o formulário
	var myLenght = 0;
	var myList = myForm.listDel.length ? myForm.listDel : [myForm.listDel];
	for(i=0; i<myList.length; i++) {
		if(myList[i].checked){
			myLenght++;
		}
	}
	if(myLenght==0){
		alert('Nenhum registro a ser deletado!');
		return false;
	} else {
		if(myLenght==1){
			sAdd = "o registro selecionado?";
		}else{
			sAdd = "os " + myLenght + " registros selecionados?";
		}
		return FunSubmitForm(formID,myAction,myTarget,'Deseja realmente deletar ' + sAdd);
	}
}

/*-------------------------------------------------------------------------*/
// Função de submição de formulário
/*-------------------------------------------------------------------------*/
function FunSubmitForm(formID,myAction,myTarget,myMsg){
	var myForm = FunGetElement(formID);//seta o formulário
	//submição com confirmação
	if(myMsg){
		if(confirm(myMsg)){
			myForm.action=myAction; target=myTarget; myForm.method='post'; myForm.submit();
		}
	//submição sem confirmação
	}else{
		myForm.action=myAction; target=myTarget; myForm.method='post'; myForm.submit();
	}
}

/*-------------------------------------------------------------------------*/
// Abre uma janela pop-up
/*-------------------------------------------------------------------------*/
function FunWinOpen(winNumber,pageName,winName,myOptions){
	switch (winNumber){
		case 1:
			myWin1 = window.open(pageName,winName,myOptions);
			myWin1.document.open();
		break;
		case 2:
			myWin2 = window.open(pageName,winName,myOptions);
			myWin2.document.open();
		break;
		case 3:
			myWin3 = window.open(pageName,winName,myOptions);
			myWin3.document.open();
		break
		case 4:
			myWin4 = window.open(pageName,winName,myOptions);
			myWin4.document.open();
		break;
		case 5:
			myWin5 = window.open(pageName,winName,myOptions);
			myWin5.document.open();
		break;
	}
}

/*-------------------------------------------------------------------------*/
// Fecha uma janela pop-up
/*-------------------------------------------------------------------------*/
function FunWinClose(winNumber){
		switch (winNumber){
			case 1:
				myWin1.window.close();
			break;
			case 2:
				myWin2.window.close();
			break;
			case 3:
				myWin3.window.close();
			break
			case 4:
				myWin4.window.close();
			break;
			case 5:
				myWin5.window.close();
			break;
		}
}

/*-------------------------------------------------------------------------*/
// Escreve em uma janela pop-up
/*-------------------------------------------------------------------------*/
function FunWinWrite(winNumber,myCode){
		switch (winNumber){
			case 1:
				myWin1.document.write(myCode);
			break;
			case 2:
				myWin2.document.write(myCode);
			break;
			case 3:
				myWin3.document.write(myCode);
			break
			case 4:
				myWin4.document.write(myCode);
			break;
			case 5:
				myWin5.document.write(myCode);
			break;
		}
}

/*-------------------------------------------------------------------------*/
// Validação de número máximo de caracters
/*-------------------------------------------------------------------------*/
function FunCharMax(myField,myDisplay,myMax,myEvent){
	var myDisplay = FunGetElement(myDisplay);
	if(myEvent=="onKeyPress"){
		myDisplay.value = myField.value.length+1;
	} else {
		myDisplay.value = myField.value.length;
	}
	if(myDisplay.value >= myMax){
		alert("O limite de caracteres é de "+myMax+"!");
		myField.focus();
	}
}

/*-------------------------------------------------------------------------*/
// Controle de campos Drop-Dow-List
/*-------------------------------------------------------------------------*/
function FunValidDrop(myMsg,mySelect,myDefault,formID,myAction,myTarget) {
	mySel = FunGetElement(mySelect);
	myDef = FunGetElement(myDefault);
	myForm = FunGetElement(formID);
	if(mySel.value==""){
		myDef.selected = true;
		return false;
	} else {
		if(mySel.value==myDef.value){
			alert(myMsg);
			return false;
		}
	}
	if(myAction){
		myForm.action=myAction+mySel.value; target=myTarget; myForm.method='post'; myForm.submit();
	}
}

/*-------------------------------------------------------------------------*/
// Função de mudança de cor de fundo
/*-------------------------------------------------------------------------*/
function FunAltBG(elementID,myColor){
	
	var myName = FunGetElement(elementID);
	
	if(!myName){
		return;
	}
	
	if(!myName.style.backgroundColorFix){
		if(myColor==null){
			myName.style.backgroundColor = "";
		}else{
			myName.style.backgroundColor = myColor;
		}
	}
}

/*-------------------------------------------------------------------------*/
// Função de escrita de texto em elemento
/*-------------------------------------------------------------------------*/
function FunAltText(elementID,myText){
	
	var myName = FunGetElement(elementID);

	if(!myName){
		return;
	}
		
	if(myText){
		myName.innerHTML = myText;
	}
	
}

/*-------------------------------------------------------------------------*/
// Altera o tamanho da fonte
/*-------------------------------------------------------------------------*/
function fontSize(op,num,myID,sizeMin,sizeMax){
	
	var myElement = FunGetElement(myID);
	
	if(op=='dim'){
		if(atualFontSize!=sizeMin){
			atualFontSize = atualFontSize-num;
			myElement.className = "textFont"+(atualFontSize);
		}
	} else {
		if(atualFontSize!=sizeMax){
			atualFontSize = atualFontSize+num;
			myElement.className = "textFont"+(atualFontSize);
		}
	}
}

/*-------------------------------------------------------------------------*/
// Valida o formulário de Login - login.asp
/*-------------------------------------------------------------------------*/
function FunValidLogin(myForm) {
	if(myForm.login.value==""){
		alert("Informe o login!");
		myForm.login.focus();
		return false;
	}
	if(myForm.senha.value==""){
		alert("Informe a senha!");
		myForm.senha.focus();
		return false;
	}
	return true;
}

/*-------------------------------------------------------------------------*/
// Valida o formulário de lembrete de senha - login.asp
/*-------------------------------------------------------------------------*/
function FunValidLembrete(myForm) {
	if(myForm.email.value=="" || myForm.email.value=="Enviar para meu e-mail"){
		alert("Informe o e-mail de seu cadastro!");
		myForm.email.focus();
		return false;
	}
	if(!FunValidEmail(myForm)){
		return false;
	}
	return true;
}

/*-------------------------------------------------------------------------*/
// Script para alterar o tamanho da letra
/*-------------------------------------------------------------------------*/
function tamanhoLetra(tamanho) {
	//document.body.style.fontSize = tamanho+"px";
	tds = document.getElementsByTagName('td');
	for(i=0;i<tds.length;i++){
		tds[i].style.fontSize = tamanho+'px';
	}
	
	spans = document.getElementsByTagName('span');
	for(i=0;i<spans.length;i++){
		spans[i].style.fontSize = tamanho+'px';
	}
}
