// JScript source code

/*
********************************************************
* Arquivo com funções JavaScript
* Analista: Fábio Luiz Mendes Junior
* Data    : 20/11/2003
********************************************************
*/

/*
****************************************************************
FUNÇÃO PARA FORMATAR NUMERO QND O MESMO É DIGITADO
****************************************************************
*/
function FormataValor(campo,tammax,teclapres) 
{
	//Chamado no evento ONKEYDOWN
	
	var tecla = 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( /\./, "" );
	
	tam = vr.length;

	if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

	if (tecla == 8 ){	tam = tam - 1 ; }
		
	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
		if ( tam <= 2 ){ 
	 		campo.value = vr ; }
	 	if ( (tam > 2) && (tam <= 5) ){
	 		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 ) ;}
	}		
	
}

/*
****************************************************************
FUNÇÃO PARA COLOCAR BARRAS NA DATA ENQUANTO A MESMA É DIGITADA
****************************************************************
*/
function FormataData(Campo,teclapres) 
{
	//Chamado no evento ONKEYUP
	
	var tecla = teclapres.keyCode;
	var vr;	
		
	vr = Campo.value;		
		
	vr = vr.replace( /\./, "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace(/\D/,"");
	
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 ){
		if ( tam > 2 && tam < 5 )
			Campo.value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
		if ( tam >= 5 && tam <= 10 )
			Campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); }
}

/*
************************************
FUNÇÃO PARA FORMATAR O CPF DIGITADO.
************************************
*/
function FormataCPF(Campo,teclapres)
{	
	//Chamado no evento ONKEYUP
	
	var tecla = teclapres.keyCode;
	var vr;	
		
	vr = Campo.value;		
			
	vr = vr.replace( /\./, "" );
	vr = vr.replace( /\./, "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace(/\D/,"");
	
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 )
	{
		if ( tam > 3 && tam < 7 )
			Campo.value = vr.substr( 0, tam - 1  ) + '.' + vr.substr( tam - 1, tam );
		if ( tam >= 7 && tam < 10 )
			Campo.value = vr.substr( 0, 3 ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 3 ); 
		if ( tam >= 10 && tam < 12 )
			Campo.value = vr.substr( 0, 3 ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 3 ) + '-' + vr.substr( 9, 2 ); 
	}
}

/*
****************************************************************
FUNÇÃO PARA FORMATAR O CEP DIGITADO.
****************************************************************
*/
function FormataCEP(Campo,teclapres)
{	
	//Chamado no evento ONKEYUP
	
	var tecla = teclapres.keyCode;
	var vr;	
		
	vr = Campo.value;		
			
	vr = vr.replace( /\./, "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace(/\D/,"");
	
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 )
	{
		if ( tam > 2 && tam < 7 )
			Campo.value = vr.substr( 0, tam - 2  ) + '.' + vr.substr( tam - 2, tam );
		if ( tam >= 5 && tam <= 10 )
			Campo.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '-' + vr.substr( 5, 3 ); 
	}

}

/*
*************************************************
FUNÇÃO PARA VALIDAÇÃO DE CPF
*************************************************
*/
function ValidaCPF(CPF)
{
	//Valida argumento
	if (Len(CPF) != 11)
		return false;
	
	Repetido=true;
	for (i=1;i<=10;i++)
	{
		if (Mid(CPF,i,1)!=Mid(CPF,0,1))
			{Repetido=false;
				break;
			}
	}
	
	if (Repetido)
		return false;
								
	soma = 0
	for (i = 1;i<=9;i++)
		soma = soma + parseInt(Mid(CPF, i-1, 1)) * (11 - i);

	Resto = 11 - (soma - (parseInt(soma / 11) * 11));

	if (Resto == 10 || Resto == 11) 
			Resto = 0;
			 	
	if (Resto != parseInt(Mid(CPF, 9, 1)))
		return false;
							
	soma = 0
	for (i = 1;i<=10;i++)
		soma = soma + parseInt(Mid(CPF, i-1, 1)) * (12 - i);
	
	Resto = 11 - (soma - (parseInt(soma / 11) * 11));

	if (Resto == 10 || Resto == 11) 
		Resto = 0;
														
	if (Resto != parseInt(Mid(CPF, 10, 1)))
		return false;
		
	return true;
}

/*
****************************************************************
FUNÇÃO PARA VALIDAR O E-MAIL DIGITADO
****************************************************************
*/
function ValidaEmail(emailStr) 
{
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

	var matchArray=emailStr.match(emailPat)

	if (matchArray==null) 
	{
		alert("Email inválido !")
		return false
	}

	var user=matchArray[1]
	var domain=matchArray[2]
	
	if (user.match(userPat)==null) 
	{
		// usuario invalido
		alert("Nome do usuário inválido.")
		return false
	}

	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) 
	{
	    // Endereco IP
		  for (var i=1;i<=4;i++) 
		  {
		    if (IPArray[i]>255) 
		    {
		        alert("Endereço do IP de destino inválido!")
				return false
		    }
	    }
	    return true
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("Nome do dominio inválido.")
	    return false
	}

	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>3) 
	{	   
	   alert("Email inválido !! O email tem que terminar com 3 letras do domínio ou 2 letras do país.")
	   return false
	}

	if (len<2) 
	{
		var errStr="Está faltando o nome do servidor no email!"
		alert(errStr)
		return false
	}

		return true;
}



/*==============================================================================================
Verifica se o valor de um campo de uma página HTML é uma data válida. Exibe uma mensagem
de erro caso o valor do campo não seja uma data válida
Entradas:
   objCampo: campo presente em uma página HTML cujo valor deve ser verificado. 
             Se o valor do campo não for uma data, o campo permanecerá com o foco.
   sMensagem: mensagem a ser exibida se o valor do campo não for uma data.
              Parâmetro Opcional.
Retorna True se o valor do campo presente na página HTML for uma data e false caso contrário
*/
function ValorData(objCampo, sMensagem)
{
   //Verifica se os valores passados para os parâmetros da função são válidos
   if (typeof(objCampo) != "object")
   {
      alert("Erro na chamada da funçao ValorData." +
            " O tipo do valor passado para o parâmetro objCampo não é o esperado." +
            " Deve ser um campo de uma página HTML, ou seja, um objeto")
      return false;
   }
   if (!VerificaData(objCampo.value))
   {
      if (Trim(sMensagem) == "" || typeof(sMensagem) == "undefined")
      {
         sMensagem = "O valor informado para o campo " + objCampo.dataFld + 
                     " não é uma data válida.";
      }
      alert(sMensagem);
      SetFocus(objCampo);
      return false;
   }
   return true;
}

/*==============================================================================================
Verifica se um valor é uma data válida.
Entradas:
   sData: valor a ser verificado
Retorna true se o valor for uma data válida e false caso contrário
*/
function VerificaData(sData)
{
   //Objeto data utilizado para verificar se o valor está em um formato correto de data
   var objData;
   //Dia da Data
   var sDia;
   //Mês da Data
   var sMes;
   //Ano da Data
   var sAno;
   //Objeto do tipo String para receber a data
   var objStringData;

   objStringData = new String(sData);
   if (objStringData.length == 0) 
      return true;
   objData = new Date(sData);
   if (isNaN(objData))
      return false;
   else
   {
      //O valor está no formato correto de data. Deve-se verificar se os dias e meses estão válidos
      sDia = objStringData.substring(0,2);
      sMes = objStringData.substring(3,5);
      if (objStringData.length > 8)
         //Recupera o ano com 4 dígitos		
         sAno = objStringData.substring(6,10);
      else
         //Recupera o ano com 2 dígitos
         sAno = objStringData.substring(6,8);
      //Verifica se o mes e o dia são válidos
      if (sMes < 1 || sMes > 12)
         return false;
      if (sDia < 1 || sDia > 31) 
         return false;
      //Verifica os meses com 30 dias
      if (sMes == 4 || sMes == 6 || sMes == 9 || sMes == 11)
      {
         if (sDia == 31) 
            return false;
      }
      // fevereiro, ano bissexto
      if (sMes == 2)
      {
         if (sDia > 29) 
            return false;
         if (sDia == 29 && ((sAno/4) != parseInt(sAno/4))) 
            return false;
      }
   }  
   return true;
}   


/*==============================================================================================
Retira os espaços em branco à direita e à esquerda de um texto
Entradas:
   sTexto: texto a cujos espaços em branco à esquerda e à direita devem ser eliminados
Retorna o texto sem espaços em branco à esquerda e à direita
*/
function Trim(sTexto)
{
   //Texto sem espaços em branco à esquerda e à direita
   var sTextoSemEspacos
   sTextoSemEspacos = LTrim(sTexto);
   sTextoSemEspacos = RTrim(sTextoSemEspacos);
   return sTextoSemEspacos;
}

/*==============================================================================================
Retira os espacos em branco à esquerda de um texto
Entradas:
   sTexto: texto cujos espaços em branco devem ser removidos
Retorna o texto sem espaços em branco à esquerda
*/
function LTrim(sTexto)
{
   //Objeto do tipo String para receber o texto a ser verificado
   var objString
   //Contador
   var iCont
   //Texto sem espaços em branco à esquerda e à direita
   var sTextoSemEspacos
   sTextoSemEspacos = ""
   objString = new String(sTexto);
   for (iCont=0; iCont < objString.length; iCont++) 
   {
      if (objString.charAt(iCont) != " ")
      {
     	 sTextoSemEspacos = objString.substring(iCont,objString.length)
         return sTextoSemEspacos;
      }
   }  
   return sTextoSemEspacos;
}

/*==============================================================================================
Retira os espacos em branco à direita de um texto
Entradas:
   sTexto: texto cujos espaços em branco devem ser removidos
Retorna o texto sem espaços em branco à direita
*/
function RTrim(sTexto)
{
   //Objeto do tipo String para receber o texto a ser verificado
   var objString
   //Contador
   var iCont
   //Texto sem espaços em branco à esquerda e à direita
   var sTextoSemEspacos

   sTextoSemEspacos = ""
   objString = new String(sTexto);
   for (iCont=objString.length -1; iCont >= 0; iCont--) 
   {
      if (objString.charAt(iCont) != " ")
      {
	 sTextoSemEspacos = objString.substring(0, iCont +1);
         return sTextoSemEspacos;
      }
   }  
   return sTextoSemEspacos;
}

/*==============================================================================================
Faz com que um campo presente em uma página HTMl fique com o foco
Entradas:
   objCampo: campo presente em uma página HTML que deve ter o foco.
*/
function SetFocus(objCampo)
{
   var objString
   //Verifica se os valores passados para os parâmetros da função são válidos
   if (typeof(objCampo) != "object")
   {
      alert("Erro na chamada da funçao SetFocus." +
            " O tipo do valor passado para o parâmetro objCampo não é o esperado." +
            " Deve ser um campo de uma página HTML, ou seja, um objeto");
      return false;
   }
   objString = new String(objCampo.tagName);
   objString = objString.toUpperCase();
   if (objString == "INPUT")
   {
      objString = new String(objCampo.type);
      objString = objString.toUpperCase();
      if ((objString != "HIDDEN") && (!objCampo.disabled))
         objCampo.focus();
   }
   return true;
}

/*
************************************
* Retorna o tamanho da string
************************************
*/
function Len(str)
	{  return String(str).length;  }
	
/*
************************************************
* Retorna uma String quebrada pelos parametros.
************************************************
*/
function Mid(str, start, len)  
{         
	if (start < 0 || len < 0) return "";

	var iEnd, iLen = String(str).length;
	if (start + len > iLen)
	         iEnd = iLen;
	else
	         iEnd = start + len;

	return String(str).substring(start,iEnd);
}

/*
****************************************************************
* Seta a especificação do Produto Escolhido no formulario HTML
****************************************************************
*/
function especificaProduto(){
	var i, args=especificaProduto.arguments;
	for (i=2; i<(args.length-1); i+=2){
		eval("document."+args[0]+"."+args[i]+" = "+args[i+1]);
		if (eval(args[i+1])){
			eval("document."+args[0]+".txtEspecificacao.value = '"+args[1]+"'")
		}
	}
}

// JavaScript by Marcos Tulio Dias
// mtdias@terra.com.br

function openPopup(u,n,w,h,o,c){var l=t=18;if(c){l=(screen.availWidth-w)/2;t=(screen.availHeight-h)/2;}p=window.open(u,'pop_'+n,'left='+l+',top='+t+',width='+w+',height='+h+',scrollbars=1'+((o)?','+o:''));}

// Esta função é executada a cada onload em TODAS as páginas
function initDefault(){
	if(isDef('init'))init();
}

/*
*********************
 Over de imagens
***********************
*/

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}