// JavaScript Document
if (navigator.appName.indexOf('Microsoft') != -1){   
    clientNavigator = "IE";   
}else{   
    clientNavigator = "Other";   
}

function limpaLabel(campo,textoDefault,pass){
	if (campo.value == textoDefault){
		if (pass == "true"){
			var nome = campo.name;
			var size = campo.size;
			document.getElementById(nome + "Form").innerHTML = "<input type=\"password\" name=\"" + nome + "\" id=\"" + nome + "\" size=\"" + size + "\" class=\"input\" value=\"\" onFocus=\"limpaLabel(this,'" + textoDefault + "','true')\" onBlur=\"carregaLabel(this,'" + textoDefault + "','true')\" onload=\"this.focus();\">";

			setTimeout("document.getElementById('" + nome + "').focus()",250);
		}else{
			campo.value = "";
		}
	}
}


function carregaLabel(campo,textoDefault,pass){
	if (campo.value == ""){
		if (pass == "true"){
			var nome = campo.name;
			var size = campo.size;
			document.getElementById(nome + "Form").innerHTML = "<input type=\"text\" name=\"" + nome + "\" id=\"" + nome + "\" size=\"" + size + "\" class=\"input\" value=\"" + textoDefault + "\" onFocus=\"limpaLabel(this,'" + textoDefault + "','true')\" onBlur=\"carregaLabel(this,'" + textoDefault + "','true')\">";
		}else{
			campo.value = textoDefault;
		}
	}
}


function simulaEnter(evnt,acao){ 
	if (evnt.charCode == undefined){
		var tecla = evnt.keyCode;
	}else{
		var tecla = evnt.charCode;
	}
	
	if (acao == "tab"){
		if (tecla == 13){   
			if (evnt.charCode == undefined){
				evnt.keyCode = 9;
			}else{
				evnt.charCode = 9;
			}
		}      
	}else{
		if (tecla == 13){ 
			document.getElementById(acao).submit();
		}
	}
}


function focusChange(campo) {
	campo.focus();
}


function onFocus(campo){
	window.setInterval(focusChange(campo), 1000);
}


function Obrigatorios(sForm){
	var obrigatorios = eval("sForm._obrigatorios.value");
	var names = eval("sForm._obrigatoriosNames.value");
	var foco = "";
	var msg = "";

	if (obrigatorios != ""){
		obrigatorios = obrigatorios.split(",");
		names = names.split(",");

		for (var i = 0; i < obrigatorios.length; i++){
			if (obrigatorios[0].substring(0,2) != "c-"){
				if (eval("sForm." + obrigatorios[i] + ".value") == ""){
					msg += "- " + names[i] + " é obrigatório e não foi preenchido!\n";
					if (foco == "") eval("foco = sForm." + obrigatorios[i]);
				}
			}else{
				var falha = true;
				
				for (var x = 0; x < eval("sForm.elements.length"); x++){
					if (eval("sForm.elements[" + x + "].name") == obrigatorios[i].substring(2)){
						if (eval("sForm.elements[" + x + "].checked") == true){
							falha = false;
							break;
						}
					}
				}
				
				if (falha){
					msg += "- " + names[i] + " é obrigatório e não foi preenchido!\n";
					if (foco == "") eval("foco = sForm." + obrigatorios[i].substring(2));
				}
			}
		}
		
		if (msg != ""){
			alert("O formulário não pôde ser enviado devido aos seguintes problemas:\n\n" + msg);
			onFocus(foco);
			return false;
		}
	}
	return true;
}


function AbrePopUpFoto(caminho, download, raiz){
	window.open(raiz + 'popupimg.php?caminho=' + caminho + '&download=' + download + '&','Visualizador','toolbar=0, location=0, directories=0, status=1, menubar=0, scrollbars=0, resizable=1, width=10, height=10, top=10, left=10');
}

function somenteNumeros(evnt,permitidos){ 
	/*
	Ação: permitir entrada de apenas números
	Autor: Fabrício Carlos
	Data Criação: 05/04/2011
	Versão: 1.0
	Data Versão: 05/04/2011
	Sintaxe: somenteNumeros(event, [caracteres não numéricos permitidos]) 
	Ex.: onKeyPress="return somenteNumeros(event,',.;');"
	*/
	
	//evnt = usar sempre "event", sem aspas
	//permitidos = caracteres que serão permitidos, usar '' para nenhum além de números
	
	if (evnt.charCode == undefined){
		var tecla = evnt.keyCode;
	}else{
		var tecla = evnt.charCode;
	}
	
	var teste = false;
	if (permitidos != undefined && permitidos != ""){
		if (permitidos.indexOf(String.fromCharCode(tecla)) != -1) teste = true;
	}
	
    if (clientNavigator == "IE"){ 
        if (tecla < 48 || tecla > 57){   
            return teste;   
        }   
    }else{
        if ((tecla < 48 || tecla > 57) && evnt.keyCode == 0){
            return teste;
        }
    }   
}   

function aplicaMascara(pCampo,pMascara,evnt){
	/*
	Ação: Aplicar e validar Máscaras diversas em campos
	Autor: Fabrício Carlos
	Data Criação: 05/04/2011
	Versão: 1.0
	Data Versão: 05/04/2011
	Sintaxe: aplicaMascara(campo a ser mascarado,formato da máscara,event) 
	Ex.: onKeyPress="return aplicaMascara(this,'00/00/0000',event);"
	*/
	
	//pCampo = campos que deve ser mascarado (não usar o value, passar apenas o campo)
	//pMascara = tipo de máscara a ser aplicada: 0 - para simbolizar números, # - qualquer caracter, A - para caracteres alpha, outros caracteres serão validados literalmente, se usar monetario|S|X|Y|0, o campo será validado como monetário. S para casas decimais e N para não usar casas decimais, X é o separador de milhar e Y é o separador de decimal, 0 é o número de dígitos permitidos (após as casas decimais). Ex.: monetario|2|.|,|5
	//evnt = usar sempre "event", sem aspas
	
	if (evnt.charCode == undefined){
		var tecla = evnt.keyCode;
	}else{
		var tecla = evnt.charCode;
	}
	
	var monetario = false;	
	if (pMascara.substring(0,9) == "monetario"){
		monetario = true;
	}
	
	if (!monetario){
		var ini = ((pCampo.value.length == "")?(0):(pCampo.value.length));
		var fim = ((pCampo.value.length == "")?((pMascara.length > 0)?(1):(0)):((pMascara.length > 0)?(pCampo.value.length+1):(0)));
		var proximo = ((pCampo.value.length == "")?((pMascara.length > 1)?(2):("")):((pMascara.length > 1)?(pCampo.value.length+2):("")));
			
		if (pMascara.substring(ini,fim) == "0"){ 
			//somente números
			if (somenteNumeros(evnt) == false){
				return false;
			}
			
		}else if (pMascara.substring(ini,fim) == "A"){
			//caracteres alpha
			var alphaMai = "#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#";
			var alphaMin = "#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#";
			
			if (alphaMai.indexOf(String.fromCharCode(tecla)) == -1 && alphaMin.indexOf(String.fromCharCode(tecla)) == -1){
				return false;
			}
			
		}
		
		if (proximo != ""){
			//faz a aplicação automática de caracteres que devem ser fixos
			if (ini < pMascara.length){
				if (pMascara.substring(fim,proximo) != "#" && pMascara.substring(fim,proximo) != "0" && pMascara.substring(fim,proximo) != "A"){
					pCampo.value += String.fromCharCode(tecla) + pMascara.substring(fim,proximo);
					return false;
				}
			}else{
				return false;
			}
		}
	}else{
		if (somenteNumeros(evnt) == false || evnt.keyCode == 9){
			return false;
		}
		var separa = pMascara.split("|");
		var acerto = ((separa[1] == "S")?(2):(0));
		var tmp = pCampo.value.replace(/\D/g,"");
		var digitos = tmp.length;
		
		if ((digitos - acerto) < separa[4]){
			pCampo.value = pCampo.value.replace(/\D/g,""); //Remove tudo o que não é dígito
			if (separa[1] == "S"){
				pCampo.value = pCampo.value.replace(/(\d{1})$/,separa[3] + "$1"); //Coloca o separador decimal
				pCampo.value = pCampo.value.replace(/(\d+)(\d{3},\d{2})$/g,"$1" + separa[2] + "$2"); //Coloca o separador de milhar
			}else{
				pCampo.value = pCampo.value.replace(/(\d+)(\d{2})$/g,"$1" + separa[2] + "$2"); //Coloca o separador de milhar
			}
			
			var qtdLoop = (pCampo.value.length-3)/3;
			var count = 0;
			
			while (qtdLoop > count){
				count++;
				pCampo.value = pCampo.value.replace(/(\d+)(\d{3}.*)/,"$1" + separa[2] + "$2"); //Coloca o resto dos separadores de milhar
			}
			
			pCampo.value = pCampo.value.replace(/^(0)(\d)/g,"$2"); //Coloca hífen entre o quarto e o quinto dígitos
		}else{
			return false;
		}
	}
}

function validarData(campo){
	/*
	Ação: validar campo de data
	Autor: Fabrício Carlos
	Data Criação: 05/04/2011
	Versão: 1.0
	Data Versão: 05/04/2011
	Sintaxe: validarData(input text)  
	Ex.: onBlur="validarData(this)"
	*/
	
	if (campo.value != ""){
		var tmp = campo.value;
		var hora = "";
		var msgErro = "";
		
		if (tmp.length > 10){
			tmp2 = tmp.split(" ");
			var tmp = tmp2[0];
			hora = tmp2[1];
		}
		
		var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
		if (tmp.match(expReg)){
			var dia = tmp.substring(0,2)*1;
			var mes = tmp.substring(3,5)*1;
			var ano = tmp.substring(6,10)*1;
			if((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia > 30){
				msgErro = "Dia incorreto! O mês especificado contém no máximo 30 dias.";

			} else{
				if(ano%4 != 0 && mes == 2 && dia > 28){
					msgErro = "Data incorreta! O mês especificado contém no máximo 28 dias.";
	
				} else{
					if(ano%4==0 && mes==2 && dia>29){
						msgErro = "Data incorreta!! O mês especificado contém no máximo 29 dias.";
					}
				}
			}
		} else {
			msgErro = "Formato inválido de data.";
		}

		if (hora != "" && msgErro == ""){
			hora2 = hora.split(":");

			if (hora2[0] > 23 || hora2[0] < 0){
				msgErro = "Formato de hora inválida";
				
			}else if (hora2[1] > 59 || hora2[1] < 0){
				msgErro = "Formato de hora inválida";
				
			}
		}
		
		if (msgErro != ""){
			alert(msgErro);
			try {
				setTimeout("document.forms[0]."+campo.name+".focus();"+
                	"document.forms[0]."+campo.name+".select();",1);
			}catch(e) {}
			
			campo.focus();
			campo.select();
			return false;
		}
	}
}

function validarCPF(campo){
	if (campo.value != ""){
		var msgErro = "";
		var i;
		s = limpa_string(campo.value);
		var c = s.substr(0,9);
		var dv = s.substr(9,2);
		var d1 = 0;
		
		for (i = 0; i < 9; i++){
			d1 += c.charAt(i)*(10-i);
		}
		
		if (d1 == 0){
			msgErro = "CPF inválido!";
		}
		
		d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(0) != d1){
			msgErro = "CPF inválido!";
		}
	
		d1 *= 2;
		for (i = 0; i < 9; i++)
		{
			d1 += c.charAt(i)*(11-i);
		}
		d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(1) != d1){
			msgErro = "CPF inválido!";
		}
	
		if (msgErro != ""){
			alert(msgErro);
			try {
				setTimeout("document.forms[0]."+campo.name+".focus();"+
					"document.forms[0]."+campo.name+".select();",1);
			}catch(e) {}
			
			campo.focus();
			campo.select();
			return false;
		}
	}
}

function validarCNPJ(campo){
	if (campo.value != ""){
		var msgErro = "";
		var i;
		s = limpa_string(campo.value);
		var c = s.substr(0,12);
		var dv = s.substr(12,2);
		var d1 = 0;
		for (i = 0; i < 12; i++)
		{
			d1 += c.charAt(11-i)*(2+(i % 8));
		}
			if (d1 == 0) msgErro = "CNPJ inválido!";
			d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(0) != d1)
		{
			msgErro = "CNPJ inválido!";
		}
	
		d1 *= 2;
		for (i = 0; i < 12; i++)
		{
			d1 += c.charAt(11-i)*(2+((i+1) % 8));
		}
		d1 = 11 - (d1 % 11);
		if (d1 > 9) d1 = 0;
		if (dv.charAt(1) != d1)
		{
			msgErro = "CNPJ inválido!";
		}
		
		if (msgErro != ""){
			alert(msgErro);
			try {
				setTimeout("document.forms[0]."+campo.name+".focus();"+
					"document.forms[0]."+campo.name+".select();",1);
			}catch(e) {}
			
			campo.focus();
			campo.select();
			return false;
		}
	}
}

function validarEmail(campo){
	if (campo.value != ""){
		var msgErro = "";
		
		if (campo.value.indexOf('@', 0) == -1 || campo.value.indexOf('.', 0) == -1) { 
			msgErro = "Email inválido!";
		}
		
		if (msgErro != ""){
			alert(msgErro);
			try {
				setTimeout("document.forms[0]."+campo.name+".focus();"+
					"document.forms[0]."+campo.name+".select();",1);
			}catch(e) {}
			
			campo.focus();
			campo.select();
			return false;
		}
	}
}
