/*
-----------------------------------------------------------------------------
Nome da Função: SomenteNumero(evento)
Objetivo: Permitir apenas caracteres numéricos.
Parâmetros:
		evento -> tecla digitada (event).
Chamada: OnKeyPress="return SomenteNumero(event)"
-----------------------------------------------------------------------------
*/

function SomenteNumero(teclapres)
{
// codigo ASCII da tecla pressionada
	switch (getNavegador())	{
		case 'IE':
			codtecla = teclapres.keyCode;
			break;
		case 'FIREFOX':
			codtecla = teclapres.which;
			break;
	}

	//alert(codtecla);
	if (!(((codtecla >= 48) && (codtecla <= 57)) || ((codtecla >= 48) && (codtecla <= 57)) || (codtecla == 0) || (codtecla == 8) || (codtecla == 9) || (codtecla == 13)))
		return false;
}

//Função para obter o navegador utilizado
function getNavegador()
{
	agent = navigator.userAgent;
	IE5 = (agent.indexOf("MSIE 5") > -1)?true:false;
	IE6 = (agent.indexOf("MSIE 6") > -1)?true:false;
	IE7 = (agent.indexOf("MSIE 7") > -1)?true:false;
	FIREFOX  = (agent.indexOf("Firefox/1.0")> -1)?true:false;
	FIREFOX2 = (agent.indexOf("Firefox/2.0")> -1)?true:false;

	if ((IE5) || (IE6)|| (IE7))
		return "IE";
	else
		if ((FIREFOX) || (FIREFOX2))
			return "FIREFOX";
}

/*
-----------------------------------------------------------------------------
Nome da Função: SomenteDecimal(evento)
Objetivo: Permitir apenas caracteres numéricos e vírgula.
Parâmetros:
		evento -> tecla digitada (event).
Chamada: OnKeyPress="return SomenteDecimal(event)"
-----------------------------------------------------------------------------
*/

function SomenteDecimal(teclapres)
{
// codigo ASCII da tecla pressionada
	switch (getNavegador())	{
		case 'IE':
			codtecla = teclapres.keyCode;
			break;
		case 'FIREFOX':
			codtecla = teclapres.which;
			break;
	}
	if (!(((codtecla >= 48) && (codtecla <= 57)) || (codtecla == 8) || (codtecla == 9) || (codtecla == 0)|| (codtecla == 13) || (codtecla == 44)))
	{
		return false;
	}
}

/*
-----------------------------------------------------------------------------
Nome da Função: SaltaCampo(campo,formulario)
Objetivo: Pular para o próximo campo TEXTO, SE HOUVER, após preenchimento.
Parâmetros:
		campo -> campo a ser analisado (this)
		formulario -> formulario onde está o campo.
Chamada: OnKeyUp="SaltaCampo(this,formulario)"
-----------------------------------------------------------------------------
*/

function SaltaCampo(campo,formulario)
{
	nome = campo.name;
	if (campo.value.length == campo.maxLength)
	{
		tam = formulario.length;
		for (i=0; i < tam; i++)
		{
			if (formulario.elements[i].name == nome)
			{
				if (i < tam-1)
					if ((formulario.elements[i+1].type == 'text') || (formulario.elements[i+1].type == 'password'))
					{
						formulario[i+1].focus();
					}
			}
		}
		return false
	}
	return true;
}
/*
-----------------------------------------------------------------------------
Função: VerificaData(campo)
Objetivo: Faz a validação da data digitada.
Parâmetros:
		campo -> campo a ser validado.
Chamada: OnBlur="VerificaData(this)"
-----------------------------------------------------------------------------
*/

function VerificaData(campo)
{
	msg = ''
	bissexto = false
	tam = campo.value.length;
	if (tam == 0)
		return false;
	if ((tam < 10) && (tam > 0))
		msg = 'Data Inválida! O ano deve ter 4 dígitos!';
	if (tam == 10)
	{
		partes = campo.value.split("/");
		dia = partes[0];
		mes = partes[1];
		ano = partes[2];		
		if (!((dia >= 01)&&(dia <= 31)))
			msg = 'Dia Inválido!';
		else
		{
			if (!((mes >= 01)&&(mes <= 12)))
				msg = 'Mês Inválido!';
			else
			{
				if (((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0))
				    bissexto = true;
     			if (mes == 02)
				{
					if  ((dia > 28)  && (!bissexto))
						msg = 'O mês correspondente possui no máximo 28 dias!';
					if ((dia > 29)  && (bissexto))
						msg = 'O mês correspondente possui no máximo 29 dias!';
				}		
     			if (!((mes == "01") || (mes == "03") || (mes == "05") || (mes == "07") || (mes == "08") || (mes == "10") || (mes == "12")) && (dia == "31"))
					msg = 'O mês correspondente possui apenas 30 dias!';
			}
		}
	}
	if (msg != '')
	{
		alert(msg);
		campo.value = '';
		campo.focus();
		return false;
	}
	else
		return true;
}

/*
-----------------------------------------------------------------------------
Função: FormataMoeda(numero)
Objetivo: Formata um valor moeda. Usada na soma dos campos do DUA.
Parâmetros:
		numero -> número a ser formatado.
Chamada: NumFormatado = FormataMoeda(NumNaoFormatado)
-----------------------------------------------------------------------------
*/

function FormataMoeda(numero)
{
	posv = numero.indexOf(","); //posicao da virgula
	tamint = posv; //tamanho da parte inteira
	strint = numero.substr(0,tamint);
	strdec = numero.substr(tamint,numero.length);
	numformatado = '';
	if (tamint > 3)
	{
		qpt = tamint/3;
		qpt = qpt.toString();
		qpt = Number(qpt.substr(0,1));
		if ((tamint % 3) == 0)
			qpt = qpt - 1;
		ini = 0;
		fim = tamint - qpt*3;
		q = 0;
		numold = strint;
		while(q != qpt)
		{	
			numformatado += numold.substr(ini, fim) + '.'
			numold = numold.substr(fim,numold.length);
			fim = 3;
			q += 1;
		}
		numformatado += numold.substr(0,3);
		numformatado += strdec;
	}
	else
		numformatado = numero;

	return numformatado;
}

/*
-----------------------------------------------------------------------------
Função: RoundTo(numero,pow)
Objetivo: Arrendonda um valor numérico.
Parâmetros:
		numero -> número a ser arredondado.
		pow -> casas decimais.
Chamada: NumArredondado = RoundTo(NumNaoArredondado,2)
-----------------------------------------------------------------------------
*/

function RoundTo(numero,pow)
{ 
  if( isNaN( numero ) )
  { 
    numero = 0; 
  } 

  numero *= Math.pow(10,pow); 
  numero = (Math.round(numero)/Math.pow(10,pow))+ "" ; 
  if(numero.indexOf(".") == -1) 
    numero += "." ; 
  while(numero.length - numero.indexOf(".") - 1 < pow) 
    numero += "0" ; 

  return numero; 
} 

/*
-----------------------------------------------------------------------------
Função: IniciaNumero(numero)
Objetivo: Inicializar valores numéricos. String -> Número.
Parâmetros:
		numero -> String / Número a ser inicializado.
Chamada: NumSemPontosEVirgulas = IniciaNumero(Numero)
-----------------------------------------------------------------------------
*/

function IniciaNumero(numero)
{
	//se vazio, entao é ZERO.
	if (numero == '')
	{
		numero = 0;
	}
	//senão, troca vírgula por ponto para calcular.
	else
	{
		numero = numero.replace("R$","");		
		numero = numero.replace(".","");
		numero = numero.replace(".","");	
		numero = numero.replace(",",".");
		numero = Number(numero);
	}
	return numero;
}

/*
-----------------------------------------------------------------------------
Função: Mascara(campo, tipo)
Objetivo: Aplica Máscara a um campo. 
Parâmetros:
		campo -> campo a ser aplicado a máscara.
		tipo -> tipo de máscara(data, telefone, cpf..)
Chamada: OnKeyUp="Mascara(this,'tipodemascara')"
-----------------------------------------------------------------------------
*/

function Mascara(campo, tipo)
{
    var valorAtual = campo.value;        
    var valorNumerico = '';
    var nIndexModelo = 0;
    var nIndexString = 0;
    var valorFinal = '';
    var adicionarValor = true;
    
	switch(tipo)
	{
		case 'telefone':
			Modelo = '(##)####-####'
			break;
		case 'telefoneSimples':
			Modelo = '####-####'
			break;
		case 'data':
			Modelo = '##/##/####'
			break;
		case 'dataSQL':
			Modelo = '####-##-##'
			break;
		case 'data_MesAno':
			Modelo = '##/####'
			break;
		case 'referencia':
			Modelo = '##/####'
			break;
		case 'CPF':
			Modelo = '###.###.###-##'
			break;
		case 'CNPJ':
			Modelo = '###.###.##/####-##'
			break;
		case 'CRC':
			Modelo = '######/##'
			break;	
	    case 'CRC_COMPLETO':
			Modelo = '##-######/#'
			break;	
		case 'CEP':
			Modelo = '#####-###'
			break;
		case 'placa':
			Modelo = '###-####'
			break;
		case 'di':
			Modelo = '##/#######-#'
			break;
		case 'diSit':
			Modelo = '##/######-#'
			break;
		case 'patrimonio':
			Modelo = '##-#####'
			break;	
		case 'DHP':
			Modelo = '##/####/########'
			break;	
		case 'hora':
			Modelo = '##:##'
			break;
		}
     
    // limpa a string valor atual para verificar 
    // se todos os caracteres são números
    for (i=0;i<Modelo.length;i++){
      if (Modelo.substr(i,1) != '#'){
        valorAtual = valorAtual.replace(Modelo.substr(i,1),'');
    }}
        valorAtual = valorAtual.toUpperCase();
     
    // aplica a máscara ao campo informado usando
    // o modelo de máscara informado no script
    for (i=0;i<Modelo.length;i++){
      
      if (Modelo.substr(i,1) == '#'){
        if (valorAtual.substr(nIndexModelo,1) != ''){
          valorFinal = valorFinal + valorAtual.substr(nIndexModelo,1);
          nIndexModelo++;nIndexString++;
        } 
          else {
            adicionarValor = false;
      }}
        
        else {
          if (adicionarValor && valorAtual.substr(nIndexModelo,1) != ''){
          valorFinal = valorFinal + Modelo.substr(nIndexString,1)
          nIndexString++;
        }}
     }
     campo.value = valorFinal 
  }

/*
-----------------------------------------------------------------------------
Nome da Função: FormataValor(this,2,event)
Objetivo: Formatar e validar campos de valores Moeda
Parâmetros:
		campo -> campo a ser formatado (this).
		tammax -> quantos numeros devem ser digitados para a virgula ficar na
					posicao certa.
		teclapress -> codtecla pressionada pelo usuário (event)
Validacoes:
		1 - Não deixa digitar numero negativo;
Chamada:
	onKeyUp="FormataValor(this,2,event)"
-----------------------------------------------------------------------------
*/
function FormataValor(campo,tammax,teclapres) {
	var codtecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ",", "" );
	tam = vr.length;
	if (tam < tammax && codtecla != 8){ tam = vr.length + 1 ; }
	
	if ( codtecla == 8 || codtecla >= 48 && codtecla <= 57 || codtecla >= 96 && codtecla <= 105 ){
		if ( tam <= 2 ){ 
	 		campo.value = vr ; }
	 	if ( (tam > 2) && (tam <= 17) ){
	 		campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 6) && (tam <= 8) ){
	 		campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 9) && (tam <= 11) ){
	 		campo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 12) && (tam <= 14) ){
	 		campo.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 15) && (tam <= 17) ){
	 		campo.value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;}
	}
}

/*
-----------------------------------------------------------------------------
Nome da Função: Apaga(campo)
Objetivo: Apaga o conteúdo do campo.
Parâmetros:
		campo -> campo a ser apagado (this).
Chamada: onClick="Apaga(this)"
-----------------------------------------------------------------------------
*/
function Apaga(campo)
{
	campo.value = ''
}

/*
-----------------------------------------------------------------------------
Nome da Função: Seleciona(campo)
Objetivo: Seleciona o conteúdo do campo.
Parâmetros:
		campo -> campo a ser apagado (this).
Chamada: onClick="Seleciona(this)"
-----------------------------------------------------------------------------
*/
function Seleciona(campo)
{
	campo.select();
}

/*
-----------------------------------------------------------------------------
Nome da Função: SomenteHexa(event)
Parâmetros:
		teclapres -> codtecla pressionada pelo usuário (event)

Objetivo: Permitir somente caracteres hexadecimais
Validacoes:
		1 - Permite somente caracteres hexadecimais(0-9)(A-F).
Chamada: onKeyPress="return SomenteHexa(event)"
-----------------------------------------------------------------------------
*/

function SomenteHexa(teclapres)
{
// codigo ASCII da tecla pressionada
	switch (getNavegador())	{
		case 'IE':
			codtecla = teclapres.keyCode;
			break;
		case 'FIREFOX':
			codtecla = teclapres.which;
			break;
	}
	
	if (((codtecla >= 48) && (codtecla <= 57)) || (codtecla == 8) || (codtecla == 9) || (codtecla == 0) || (codtecla == 13) || ((codtecla >= 65) && (codtecla <= 70)) || ((codtecla >= 97) && (codtecla <= 102)))
	{
		return true;
	}
	return false;
}

/*
-----------------------------------------------------------------------------
Nome da Função: ValidaFormulario(formulario)
Objetivo: Valida o preenchimento dos campos do formulário.
Parâmetros:
Chamada: Botão de Envio - onClick="return ValidaFormulario()"
-----------------------------------------------------------------------------
*/
function ValidaFormulario(formulario)
{
	msg = '';
	qt_campos =	formulario.length;

	for (i=0;i<qt_campos;i++)
	{
		if (formulario.elements[i].id == 'O')
		{
			if (formulario.elements[i].value == '')
			{
				titulo = formulario.elements[i].title;
				msg += 'O Campo '+ titulo +' deve ser preenchido! \n';
			}
		}
	}
	if (msg != '')
	{
		msg = 'Os seguintes erros ocorreram: \n'+ msg;
		alert(msg);
		return false;
	}
	else
	{
		if (formulario.onsubmit == '')
		{
			formulario.submit();
			document.getElementById("btnOK").disabled = true;
		}
		else
			return true;
	}
}

/*
-----------------------------------------------------------------------------
Nome da Função: SomenteAlfaNumerico(teclapres)
Objetivo: Permitir apenas caracteres numéricos e letras maiusculas e minusculas.
Parâmetros:
		teclapres -> tecla digitada (event).
Chamada: OnKeyPress="return SomenteAlfaNumerico(event)"
-----------------------------------------------------------------------------
*/

function SomenteAlfaNumerico(teclapres)
{
// codigo ASCII da tecla pressionada
	switch (getNavegador())	{
		case 'IE':
			codtecla = teclapres.keyCode;
			break;
		case 'FIREFOX':
			codtecla = teclapres.which;
			break;
	}

	if (!(((codtecla >= 97) && (codtecla <= 122)) || ((codtecla >= 65) && (codtecla <= 90)) || ((codtecla >= 48) && (codtecla <= 57)) || (codtecla == 8) || (codtecla == 9) || (codtecla == 0) || (codtecla == 13)))
	{
		alert('Caracter inválido! Esse campo permite apenas números ou letras.');
		return false;
		
	}
}

//data e hora

function DataAtual()
{
	var hoje = new Date();
	var ano = hoje.getYear();
	if (ano < 2000) 
		ano = 1900 + ano;
	var mes = hoje.getMonth() + 1;
	var dia = hoje.getDay() + 1;
	var num_dia = ((hoje.getDate()<6) ? "0" : "")+ hoje.getDate();
	if(dia==1)  dia_semana = "Domingo";
	if(dia==2)  dia_semana = "Segunda-Feira";
	if(dia==3)  dia_semana = "Terça-Feira";
	if(dia==4)  dia_semana = "Quarta-Feira";
	if(dia==5)  dia_semana = "Quinta-Feira";
	if(dia==6)  dia_semana = "Sexta-Feira";
	if(dia==7)  dia_semana = "Sábado";

	if(mes==1)  mes_extenso = "Janeiro";
	if(mes==2)  mes_extenso = "Fevereiro";
	if(mes==3)  mes_extenso = "Março";
	if(mes==4)  mes_extenso = "Abril";
	if(mes==5)  mes_extenso = "Maio";
	if(mes==6)  mes_extenso = "Junho";
	if(mes==7)  mes_extenso = "Julho";
	if(mes==8)  mes_extenso = "Agosto";
	if(mes==9)  mes_extenso = "Setembro";
	if(mes==10) mes_extenso = "Outubro";
	if(mes==11) mes_extenso = "Novembro";
	if(mes==12) mes_extenso = "Dezembro";
	
	return("Vitória, "+dia_semana+ " - "+num_dia+" de "+mes_extenso+" de "+ano+".");
}  

/*
-----------------------------------------------------------------------------
Nome da Função: FormataData
Parâmetros:
		campo -> campo que a função vai ser aplicada.
		teclapress -> codtecla pressionada pelo usuário (event)
Objetivo: Formatar Data
-----------------------------------------------------------------------------
*/
function FormataData(campo,teclapres)
{
// codigo da tecla pressionada (ASCII)
	var codtecla = teclapres.keyCode;
// tecla pressionada	
	var tecla = String.fromCharCode(codtecla)
	var tam
	var anodig, num
	tam = campo.value.length;

	if (((codtecla >= 48) && (codtecla <= 57)) || (codtecla == 8) || (codtecla == 9) || (codtecla == 13) || (codtecla == 46))
	{
		if (((tam == 1) || (tam == 4)) && (!(codtecla == 8)))
		{
			campo.value += tecla+'/';
		}
	}
	else
	{
		return false;
	}
// preencheu o dia
	if (tam == 1)
	{
		num = campo.value.substr(0,1)+tecla
		if (!((num >= 01)&&(num <= 31))) {
			alert('Dia Inexistente!');
			campo.value = ''
		}
		return false;					
	}
// preencheu o mes
	if (tam == 4)
	{
		num = campo.value.substr(3,1)+tecla
		if (!((num >= 01)&&(num <= 12))) {
			alert('Mês Inexistente!');
			campo.value = ''
		}
     	if ((num == 02) && (campo.value.substr(0,2) > 29))
		{
			alert('O mês correspondente possui no máximo 29 dias!');
			campo.value = ''			
		}		
     	if (!((num == "01") || (num == "03") || (num == "05") || (num == "07") || (num == "08") || (num == "10") || (num == "12")) && (campo.value.substr(0,2) == "31"))
		{
			alert('O mês correspondente possui apenas 30 dias!');
			campo.value = ''			
		}
		return false;					
	}
}

/*
-----------------------------------------------------------------------------
Função: VerificaHora(campo)
Objetivo: Faz a validação da hora digitada.
Parâmetros:
		campo -> campo a ser validado.
Chamada: OnBlur="VerificaHora(this)"
-----------------------------------------------------------------------------
*/

function VerificaHora(campo)
{
	msg = ''
	tam = campo.value.length;
	if (tam == 0)
		return false;
	if ((tam < 5) && (tam > 0))
		msg = 'Hora Invalida!';
	if (tam == 5)
	{
		partes = campo.value.split(":");
		hora = partes[0];
		minuto = partes[1];
		if (!((hora >= 00)&&(hora <= 23)))
			msg = 'Hora Invalida!';
		else
		{
			if (!((minuto >= 00)&&(minuto <= 59)))
				msg = 'Minuto Invalido!';
		}
	}
	
	if (msg != '')
	{
		alert(msg);
		campo.value = '';
		campo.focus();
		return false;
	}
	else
		return true;
}

/*
-----------------------------------------------------------------------------
Nome da Função: FormataDecimais
Parâmetros:
		campo -> campo no formulario
		teclapress -> codtecla pressionada pelo usuário (event)
		decimais -> casas decimais
Objetivo: Formatar e validar campos com 4 decimais
Validacoes:
		1 - nao deixa digitar numero negativo;
Chamada:
	onKeyUp="formatadecimais(this,event,decimais)"
-----------------------------------------------------------------------------
*/
function FormataDecimais(campo,teclapres,decimais) {
	var codtecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( "-", "" );
	tam = vr.length;
	if ( codtecla == 8 || codtecla >= 48 && codtecla <= 57 || codtecla >= 96 && codtecla <= 105 ){
		if ( tam < 2 ){ 
	 		campo.value = vr ; }
		if ( tam == 2 ){ 
	 		campo.value = vr.substr( 0, 1 ) + ',' + vr.substr( 1, 2 ) ; }
	 	if ( (tam > decimais+1) && (tam <= decimais+3)){
	 		campo.value = vr.substr( 0, tam - decimais ) + ',' + vr.substr( tam - decimais, tam ) ; }
	 	if ( (tam > decimais+3) && (tam <= decimais+6) ){
	 		campo.value = vr.substr( 0, tam - (decimais+3)) + '.' + vr.substr( tam - (decimais+3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ; }
	 	if ( (tam > decimais+6) && (tam <= decimais+9) ){
	 		campo.value = vr.substr( 0, tam - (decimais+6)) + '.' + vr.substr( tam - (decimais+6), 3 ) + '.' + vr.substr( tam - (decimais+3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ; }
	 	if ( (tam > decimais+9) && (tam <= decimais+12) ){
	 		campo.value = vr.substr( 0, tam - (decimais+9)) + '.' + vr.substr( tam - (decimais+9), 3 ) + '.' + vr.substr( tam - (decimais+6), 3 ) + '.' + vr.substr( tam - (decimais+3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ; }
	}
}
// end FormataDecimais


/*
-----------------------------------------------------------------------------
Nome da Função: check
Parâmetros:
Objetivo: Marcar e desmarcar os checkboxs de uma lista
Chamada:
	Todos:<input type="checkbox" name="nomecheckbox" onClick="this.value=check(this.form.nomecheckbox)" value="0">
-----------------------------------------------------------------------------
*/
var checkflag = "false";
function check(field) {
  if (checkflag == "false") {
     for (i = 0; i < field.length; i++) {
         field[i].checked = true;
     }
     checkflag = "true";
     return "0"; 
  }
  else {
     for (i = 0; i < field.length; i++) {
         field[i].checked = false; 
     }
     checkflag = "false";
     return "0"; 
  }
}

function janela_regulamento(regulamento){
	window.open(regulamento,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=330,height=170');
}

function calendario(dias){
	window.open(dias,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=550,height=500');
}

function lista(lista){
	window.open(lista,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=302,height=181');
}

function agenda(agenda){
	window.open(agenda,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=720,height=480');
}

function dados(dados){
	window.open(dados,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=700,height=320');
}

function dados_regiao(dados_regiao){
	window.open(dados_regiao,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=700,height=320');
}

function downloads(downloads){
	window.open(downloads,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=450,height=230');
}
	
function enquete(enquete){
	window.open(enquete,'tela','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=358,height=402');
}
	
/*
-----------------------------------------------------------------------------
Nome da Função: contaCaracteres

Parâmetros:
		campo -> Campo de textarea
		tamanho -> Tamanho máximo de caracteres a ser digitados
		restante -> Nome do SPAN onde irá mostrar quantos caracteres restam
		
Objetivo: Mostrar e limitar a digitacao dos caracteres no textarea

Validacoes:
		1 - nao deixa passar do tamanho sugerido;
		
Chamada:
		<input onkeyup="contaCaracteres(this,10,restante)" onkeypress="contaCaracteres(this,10,restante)" name="dtFim" type="text" id="select" title="DataFim" maxlength="15">
		<span id="restante" style="color:#FF0000">10</span> caracteres. 
-----------------------------------------------------------------------------
*/
function contaCaracteres(campo,tamanho,restante) 
{  
	total = tamanho;  
	tam = campo.value.length;  
	str="";  
	str=str+tam;   
	/*	digitado.innerHTML = str; */
	restante.innerHTML = total - str; 
	if (tam > total)
	{ 
		aux = campo.value; 
		campo.value = aux.substring(0,total); 
	/*	digitado.innerHTML = total */
		restante.innerHTML = 0
	} 
}
//	

/* -----------Tratamemto de CPF e CNPJ---------------------*/
/**
 * @author Márcio d'Ávila
 * @version 1.01, 2004
 *
 * PROTÓTIPOS:
 * método String.lpad(int pSize, char pCharPad)
 * método String.trim()
 *
 * String unformatNumber(String pNum)
 * String formatCpfCnpj(String pCpfCnpj, boolean pUseSepar, boolean pIsCnpj)
 * String dvCpfCnpj(String pEfetivo, boolean pIsCnpj)
 * boolean isCpf(String pCpf)
 * boolean isCnpj(String pCnpj)
 * boolean isCpfCnpj(String pCpfCnpj)
 */


NUM_DIGITOS_CPF  = 11;
NUM_DIGITOS_CNPJ = 14;
NUM_DGT_CNPJ_BASE = 8;


/**
 * Adiciona método lpad() à classe String.
 * Preenche a String à esquerda com o caractere fornecido,
 * até que ela atinja o tamanho especificado.
 */
String.prototype.lpad = function(pSize, pCharPad)
{
	var str = this;
	var dif = pSize - str.length;
	var ch = String(pCharPad).charAt(0);
	for (; dif>0; dif--) str = ch + str;
	return (str);
} //String.lpad


/**
 * Adiciona método trim() à classe String.
 * Elimina brancos no início e fim da String.
 */
String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
} //String.trim


/**
 * Elimina caracteres de formatação e zeros à esquerda da string
 * de número fornecida.
 * @param String pNum
 * 	String de número fornecida para ser desformatada.
 * @return String de número desformatada.
 */
function unformatNumber(pNum)
{
	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");
} //unformatNumber


/**
 * Formata a string fornecida como CNPJ ou CPF, adicionando zeros
 * à esquerda se necessário e caracteres separadores, conforme solicitado.
 * @param String pCpfCnpj
 * 	String fornecida para ser formatada.
 * @param boolean pUseSepar
 * 	Indica se devem ser usados caracteres separadores (. - /).
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida é um CNPJ.
 * 	Caso contrário, é CPF. Default = false (CPF).
 * @return String de CPF ou CNPJ devidamente formatada.
 */
function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	if (pUseSepar==null) pUseSepar = true;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var numero = unformatNumber(pCpfCnpj);

	numero = numero.lpad(maxDigitos, '0');
	if (!pUseSepar) return numero;

	if (pIsCnpj)
	{
		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;
		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");
	}
	else
	{
		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;
		numero = numero.replace(reCpf, "$1.$2.$3-$4");
	}
	return numero;
} //formatCpfCnpj


/**
 * Calcula os 2 dígitos verificadores para o número-efetivo pEfetivo de
 * CNPJ (12 dígitos) ou CPF (9 dígitos) fornecido. pIsCnpj é booleano e
 * informa se o número-efetivo fornecido é CNPJ (default = false).
 * @param String pEfetivo
 * 	String do número-efetivo (SEM dígitos verificadores) de CNPJ ou CPF.
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida é de um CNPJ.
 * 	Caso contrário, é CPF. Default = false (CPF).
 * @return String com os dois dígitos verificadores.
 */
function dvCpfCnpj(pEfetivo, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	var i, j, k, soma, dv;
	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);
	calculado = calculado.substring(2, maxDigitos);
	var result = "";

	for (j = 1; j <= 2; j++)
	{
		k = 2;
		soma = 0;
		for (i = calculado.length-1; i >= 0; i--)
		{
			soma += (calculado.charAt(i) - '0') * k;
			k = (k-1) % cicloPeso + 2;
		}
		dv = 11 - soma % 11;
		if (dv > 9) dv = 0;
		calculado += dv;
		result += dv
	}

	return result;
} //dvCpfCnpj


/**
 * Testa se a String pCpf fornecida é um CPF válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpf
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF válido.
 */
function isCpf(pCpf)
{
	var numero = formatCpfCnpj(pCpf, false, false);
	var base = numero.substring(0, numero.length - 2);
	var digitos = dvCpfCnpj(base, false);
	var algUnico, i;

	// Valida dígitos verificadores
	if (numero != base + digitos) return false;

	/* Não serão considerados válidos os seguintes CPF:
	 * 000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44,
	 * 555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99.
	 */
	algUnico = true;
	for (i=1; i<NUM_DIGITOS_CPF; i++)
	{
		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));
	}
	return (!algUnico);
} //isCpf


/**
 * Testa se a String pCnpj fornecida é um CNPJ válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCnpj
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CNPJ válido.
 */
function isCnpj(pCnpj)
{
	var numero = formatCpfCnpj(pCnpj, false, true);
	var base = numero.substring(0, NUM_DGT_CNPJ_BASE);
	var ordem = numero.substring(NUM_DGT_CNPJ_BASE, 12);
	var digitos = dvCpfCnpj(base + ordem, true);
	var algUnico;

	// Valida dígitos verificadores
	if (numero != base + ordem + digitos) return false;

	/* Não serão considerados válidos os CNPJ com os seguintes números BÁSICOS:
	 * 11.111.111, 22.222.222, 33.333.333, 44.444.444, 55.555.555,
	 * 66.666.666, 77.777.777, 88.888.888, 99.999.999.
	 */
	algUnico = numero.charAt(0) != '0';
	for (i=1; i<NUM_DGT_CNPJ_BASE; i++)
	{
		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));
	}
	if (algUnico) return false;

	/* Não será considerado válido CNPJ com número de ORDEM igual a 0000.
	 * Não será considerado válido CNPJ com número de ORDEM maior do que 0300
	 * e com as três primeiras posições do número BÁSICO com 000 (zeros).
	 * Esta crítica não será feita quando o no BÁSICO do CNPJ for igual a 00.000.000.
	 */
	if (ordem == "0000") return false;
	return (base == "00000000"
		|| parseInt(ordem, 10) <= 300 || base.substring(0, 3) != "000");
} //isCnpj


/**
 * Testa se a String pCpfCnpj fornecida é um CPF ou CNPJ válido.
 * Se a String tiver uma quantidade de dígitos igual ou inferior
 * a 11, valida como CPF. Se for maior que 11, valida como CNPJ.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpfCnpj
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF ou CNPJ válido.
 * chamada : onBlur="if((!isCpf(this.value))&&(this.value!='')) {alert('Por favor, digite um CPF válido.');this.value='';this.focus();}"
 */
function isCpfCnpj(pCpfCnpj)
{
	var numero = pCpfCnpj.replace(/\D/g, "");
	if (numero.length > NUM_DIGITOS_CPF)
		return isCnpj(pCpfCnpj)
	else
		return isCpf(pCpfCnpj);
} //isCpfCnpj
/* ---------Fim Tratamemto de CPF e CNPJ--------------------- */

/**
 * Da destaque no menu, alterando a cor do fundo
 * onMouseOut="destaca(this,'#FFFFFF');"
 */
function destaca(a,cor)
{
	a.style.background=cor;
}

/* --------- Fim Destaca ----------- */

/**
 * Da destaque no menu, alterando a cor do fundo
 * onMouseOut="destaca(this,'#FFFFFF');"
 */
function maisfonte(id,tipo){

	tamanho = new String(window.document.getElementById(id).style.fontSize);
	tamanho = tamanho.replace("px","");
	tamanho = parseInt(tamanho);
	if(window.document.getElementById(id).style.fontSize == "")
		if(tipo == "+")	
			window.document.getElementById(id).style.fontSize = "14px";
		else
			window.document.getElementById(id).style.fontSize = "10px";
	else
		if(tipo == "+"){
			if(tamanho <= 16)
				window.document.getElementById(id).style.fontSize = (tamanho+1)+"px";
		}else{
			if(tamanho >= 12)
				window.document.getElementById(id).style.fontSize = (tamanho-1)+"px";				
		}
}
/* --------- Fim Destaca ----------- */
/*
-----------------------------------------------------------------------------
Nome da Função: popUp
Parâmetros:
		efeito -> Nome do efeito que sera usado no popup
Objetivo: Mostrar o PopUp no site
Chamada:
	Todos:<a href="#" onclick="efeitos(this.innerHTML)">SlideDown</a> - Entrar
		  <a href="#" onclick="efeitos(this.innerHTML)">SlideUp</a> - Sair
----------------------------------------------------------------------------
*/
function popUp (efeito,nomeDiv) {
	eval("new Effect." + efeito + "('" + nomeDiv + "');");
	new Draggable(nomeDiv);
}
/* --------- Fim popUp ----------- */
/*
-----------------------------------------------------------------------------
Nome da Função: retornaDate
Objetivo: Comparar datas em validações js.
Parâmetros: Data em formato dd/mm/aaa
Chamada: <script>retornaDate("data")</script>
-----------------------------------------------------------------------------
*/
function retornaDate(str) {
	var data = new Date();
	
	vet = str.split("/");
	data.setFullYear(vet[2], (vet[1]-1), vet[0]);
	
	return data;
}
/* --------- Fim Retorna Data ----------- */

// Verificar qual navegador
function QualNavegador() {
	var s = navigator.appName
	if(s == "Microsoft Internet Explorer") return "IE";
	else if ( s == "Netscape" ) return "NE";
	else return "";
}

// Verificar qual a vers?o do navegador
function QualVersao() {
	var s = navigator.appVersion;
	if ( QualNavegador() == "IE" ) {
		var i = s.search("MSIE");
		s=s.substring(i+5);
		i=s.search(".");
		return parseInt(s.substring(0,i+1));
	}
	else if ( QualNavegador() == "NE" )	return parseInt(s.substring(0,1));
	else return 0;
}

/*
-----------------------------------------------------------------------------
Nome da Função: mostraDiv(divName)
Objetivo: Ocultar e mostrar algum div na p?gina.
Par?metros: divName --> Nome do div a ser ocultado
Chamada: onclick="mostraDiv('nome do div')"
-----------------------------------------------------------------------------
*/
function mostraDiv(divName) {
	if (document.getElementById(divName).className == "invisivel")
		document.getElementById(divName).className = "visivel";
	else
		document.getElementById(divName).className = "invisivel";
}

/*
-----------------------------------------------------------------------------
Nome da Função: reSizeImage(id)
Objetivo: Redimensionar imagem de acordo com a resolução.
Parametros: id --> Nome do id da imagem que será redimensionada
Chamada: reSizeImage('Nome do id')
-----------------------------------------------------------------------------
*/

function reSizeImage(id) {
	//Pego o tamanho da tela Horizontal e Vertical
	var valorW = screen.width;
	var valorH = screen.height;
	
	//Pego o tamanho da imagem Horizontal e Vertical
	var width = $(id).width;
	var height = $(id).height;
	//Variavel que identifica se a imagem eh maior que a tela
	var estouro = false;
	//Se o tamanho Horizontal da imagem for maior que o tamanho da tela
	if ( width > valorW ) {
		//Calculo o tamanho vertical da imagem proporcional ao tamanho da tela
		height = retornaProporcional( width, height, valorW );
		width = valorW;
		//Redimensiono a imagem para o tamanho da tela
		//Diminuo um pouco a imagem para que ela seja exibida completa
		//Windows XP deixa uma barra maior na parte inferior do popup
		$(id).width = valorW - 12;
		$(id).height = valorH - 60;
		estouro = true;
	}
	//Se o tamanho Vertical da imagem for maior que o tamanho da tela
	if ( height > valorH ) {
		//Calculo o tamanho horizontal da imagem proporcional ao tamanho da tela
		width = retornaProporcional( height, width, valorH );
		height = valorH;
		//Redimensiono a imagem para o tamanho da tela
		//Diminuo um pouco a imagem para que ela seja exibida completa
		//Windows XP deixa uma barra maior na parte inferior do popup
		$(id).width = valorW - 12;
		$(id).height = valorH - 60;
		estouro = true;
	}
	if ( !estouro ) {
		width += 12;
		height += 60;
	}
};

/*
-----------------------------------------------------------------------------
Nome da Função: retornaProporcional( x, y, valor )
Objetivo: Complemento da função reSizeImage(id).
-----------------------------------------------------------------------------
*/
function retornaProporcional( x, y, valor ) {
	var retorno;
	//Calculo um valor proporcional para y de acordo com x e valor
	retorno = new Number( y / ( x / valor ) );
	return retorno.toFixed(0);
}
