<!-- Constantes -->

var CPF  = 0;
var CPF_2  = 1;
var CNPJ = 2;
var CNPJ_2 = 3;
var COCLI  = 4;
var TEXTO_APENAS = 5;
var VALOR_REAL = 6;
var VALOR_INTEIRO = 7;
var DATA   = 8;
var CEP    = 9;
var HORA   = 10;
var VALOR_INTERVALO = 11;
var DATA_INTERVALO = 12;
var MOEDA  = 13;
var TRUNCAR = 14;
var ARREDONDAR = 15;
var CPF_CNPJ = 16;
var NUMERO_APENAS = 17;
var DATAHORA = 18;
var HORA_INTRANET = 19;
var PRODUTO_INTRANET = 20;
var NAVEGADOR;
var KEYCODE;

var COR_ERRO = "#EF741D";
var COR_INFO = "#0039BA";

<!-- Vari?veis Globais -->

var qCampo ="";
var qTipo;
var qTammax;
var qMsginfo;
var qMsgerro;
var qArg1;
var qArg2;
var temErro = false;
var campoErro = "";

<!-- Controladores -->

function SetValidacao(campo, tipo, tammax, msginfo, msgerro, arg1, arg2) {
    document.forms[0].elements[campo].value="";
    SetSairOk(campo);
    qCampo = campo;
	qTipo = tipo;
	qTammax = tammax;
	qMsginfo = msginfo;
	qMsgerro = msgerro;
	qArg1 = arg2;
	qArg2 = arg1;
	document.forms[0].elements[campo].focus();
}

function VerificarSelecionado(radio) {
	var radios = document.forms[0].elements[radio];
	for (i=0; i<radios.length; i++) {
		if (radios[i].checked)
		   radios[i].click();
	}
}

function FormatarMultiploDado(nomeradio, evento) {
   if (qCampo == "")
   	 VerificarSelecionado(nomeradio);
   return ((qCampo!="") && (FormatarDado(qCampo, qTipo, evento, qTammax)));
}


function ValidarMultiploDado() {
   return ((qCampo!="") && (ValidarDado(qCampo, qTipo, qMsgerro, qArg1, qArg2)));
}

function SetMultiploInfo(nomeradio) {
   if (qCampo == "")
   	 VerificarSelecionado(nomeradio);
   if (qCampo != "")
	 SetInfo(qCampo, qMsginfo);
}

/*
  Formata o Dado de Acordo com o parametro tipo.

  Parametros:

  nomecampo = Nome do Campo que se deseja formatar; (Obrigat?rio)
  tipo = Tipo do Campo que se deseja formatar; (Obrigat?rio)
  evento = Evento que est? invocando este m?todo; (Obrigat?rio)
  tammax = tamanho m?ximo permitido para o campo; (Opcional)

*/


function FormatarDado(nomecampo, tipo, evento, tammax, _navegador) {
   NAVEGADOR=_navegador;
   var res = false;
   KEYCODE = evento.keyCode;
   var teclapres;
   
   if (_navegador=="MOZILLA"){
      teclapres = String.fromCharCode(evento.charCode);
   }else {
   		teclapres = String.fromCharCode(evento.keyCode);   			
   	}
   
   var campo = document.forms[0].elements[nomecampo];
   if (tammax == undefined) tammax = 50;
   switch (tipo) {
	case CPF  : res = FormatarCPF(campo, 14, teclapres); break;
	case CPF_2  : res = FormatarValor(campo, 11, teclapres, VALOR_INTEIRO); break;
	case CNPJ : res = FormatarCNPJ(campo, 18, teclapres); break;
	case CNPJ_2 : res = FormatarValor(campo, 14, teclapres, VALOR_INTEIRO); break;
	case COCLI  : res = FormatarCOCLI(campo, 16, teclapres); break;
	case TEXTO_APENAS : res = FormatarTextoApenas(campo, tammax, teclapres); break;
	case VALOR_REAL : res = FormatarValor(campo, tammax, teclapres, VALOR_REAL); break;
	case VALOR_INTEIRO : res = FormatarValor(campo, tammax, teclapres, VALOR_INTEIRO); break;
    case DATA   : res = FormatarData(campo, evento , 10); break;
	case CEP    : res = FormatarCEP(campo, 9, teclapres); break;
	case HORA   : res = FormatarHora(campo, 8, teclapres); break;
	case DATAHORA : res = FormatarDataHora(campo, 19, teclapres); break ;
    case HORA_INTRANET : res = FormatarHora(campo, 8 , teclapres); break ;
    case PRODUTO_INTRANET : res = FormatarProdutoIntranet(campo, 8 , teclapres ); break ;
	case MOEDA :  res = FormatarValor(campo, tammax, teclapres, VALOR_REAL); break;
    case CPF_CNPJ:	if (campo.value.length<14) {
				res = FormatarCPF(campo, 14, teclapres);
                     	} else {
				res = FormatarCNPJ(campo, 18, teclapres);
                      	}
                      	break;
    case NUMERO_APENAS : res = FormatarValor(campo, tammax, teclapres, VALOR_INTEIRO);	break;
   }
   return res;
}

/*
  Valida o Dado de Acordo com o parametro tipo.

  Parametros:
  
  nomecampo = Nome do Campo que se deseja validar; (Obrigat?rio)
  tipo = Tipo do Campo que se deseja validar; (Obrigat?rio)
  msgErro = Mensagem de erro que ser? mostrada caso a valida??o falhe; (Opcional)
  arg1 = Argumento polim?rfico, utilizado na chamada de outros m?todos; (Opcional)
         Pode assumir os seguintes valores:
         VALOR_REAL -> Tipo de Tratamento para Decimais (Truncar/Arrendondar)
         VALOR_INTERVALO -> Valor M?nimo do Intervalo
         DATA_INTERVALO -> Data M?nima do Intervalo
  arg2 = Argumento polim?rfico, utilizado na chamada de outros m?todos; (Opcional)
         Pode assumir os seguintes valores:
         VALOR_REAL -> Quantidade de Casas Decimais (Truncar/Arrendondar)
         VALOR_INTERVALO -> Valor M?ximo do Intervalo
         DATA_INTERVALO -> Data M?xima do Intervalo
*/



function ValidarDado(nomecampo, tipo, msgErro, arg1, arg2) {
   var res = true;
   var campo = document.forms[0].elements[nomecampo];
   if (campo.value!='') {
   		switch (tipo) {
			case CPF  : res = ValidarCPF(campo); break;
			case CPF_2  : res = ValidarCPF(campo); break;
			case CNPJ : res = ValidarCNPJ(campo); break;
			case CNPJ_2 : res = ValidarCNPJ(campo); break;
			case COCLI  : res = ValidarCOCLI(campo); break;
			case TEXTO_APENAS : res = RemoverEspacos(campo); break;
			case VALOR_REAL : res = ValidarValor(campo, arg1, arg2); break;
			case VALOR_INTEIRO : res = ValidarValor(campo); break;
			case VALOR_INTERVALO : ValidarValor(campo); res = ValidarValorIntervalo(campo, arg1, arg2); break;
	                case DATA   : res = ValidarData(campo);break;
 			case DATA_INTERVALO : res = ValidarIntervaloData(campo, arg1, arg2);break;
 			case DATAHORA : res = ValidarDataHora(campo);break;
            case HORA_INTRANET : res = ValidarHoraIntranet(campo); break ;
			case CEP    : res = ValidarCEP(campo);break;
			case HORA   : res = ValidarHora(campo);break;
			case MOEDA  : res = ValidarMoeda(campo,ARREDONDAR,2);break;
		        case CPF_CNPJ:	if (campo.value.length<15) {
						res = ValidarCPF(campo);
		                     	} else {
						res = ValidarCNPJ(campo);
		                      	}
	               		      	break;
			case NUMERO_APENAS : res = ValidarSoNumero(campo);break;
  		}
   		if ((!res) && (msgErro != undefined)) {
  		  	campo.value="";
	   		campo.focus();
	   		SetErro(nomecampo,msgErro);
 		}
		else SetSairOk(nomecampo);
   } else {
     SetSairOk(nomecampo);
   }
   return false;
}

<!---->

<!-- Formata??o e Valida??o CPF -->

function FCPF(vr) {
	var res = '';
	tam = vr.length;
	if ( tam <= 2 ){
 		res = vr ; }
	if ( (tam > 2) && (tam <= 5) ){
 		res = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam ) ; }
	if ( (tam >= 6) && (tam <= 8) ){
 		res = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam ) ; }
	if ( (tam >= 9) && (tam <= 11) ){
 		res = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, 2 ) ; }
        if ( (tam >= 12) ){
 		res = vr.substr( 0, 3) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 3 ) + '-' + vr.substr( 9, 2 ) ; }
        return res;
}

function FormatarCPF(campo, tammax, tecla) {
	vr = campo.value;
	tam = vr.length;
        var re = new RegExp("[0-9]","g");
        if (re.test(tecla)) {
	  if (tam < tammax) {
                vr = vr.replace(/\D/g,'') + tecla;
                campo.value = FCPF(vr);
	  } else {
	  	var sel = "";
		sel = document.selection.createRange().text;
		return (sel != '');
	  }
        }
	return false;
}

function ValidarCPF(campo)
{
 var s = campo.value;
 s = s.replace(/\D/g,'');
 campo.value = FCPF(s);
 var vaCharCPF = false;
 var varFirstChr = s.charAt(0);
 for ( var i=0; i<=10; i++ )
 {
   var c = s.charAt(i);
   if( ! (c>="0")&&(c<="9") )
   { return false; }
   if( c!=varFirstChr ) vaCharCPF = true;
 }
 if((! vaCharCPF)  && (c == '0')){ return false; }
 soma=0;
 for ( i=0; i<9; i++ ) { soma += (10-i) * ( eval(s.charAt(i)) ); }
 digito_verificador = 11-(soma % 11);
 if ( (soma % 11) < 2 ) digito_verificador = 0;
 if ( eval(s.charAt(9)) != digito_verificador )
 { return false; }
 soma=0;
 for ( i=0; i<9; i++ ) { soma += (11-i) * ( eval(s.charAt(i)) ); }
 soma += 2 * ( eval(s.charAt(9)) );
 digito_verificador = 11-(soma % 11);
 if ( (soma % 11) < 2 ) digito_verificador = 0;
 if ( eval(s.charAt(10)) != digito_verificador )
 { return false; }
 return true;
}

<!---------------->

<!-- Formata??o e Valida??o CNPJ -->

function FCNPJ(vr) {
	var res = '';
	tam = vr.length;
	if ( tam <= 2 ){
		res = vr ; }
	if ( (tam > 2) && (tam <= 6) ){
		res = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam ) ; }
	if ( (tam >= 7) && (tam <= 9) ){
		res = vr.substr( 0, tam - 6 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	if ( (tam >= 10) && (tam <= 12) ){
		res = vr.substr( 0, tam - 9 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	if ( (tam >= 13) && (tam <= 14) ){
		res = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, 2 ) ; }
	if ( (tam >= 15) ){
		res = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) + '-' + vr.substr( 12, 2 ) ; }
        return res;
}

function FormatarCNPJ(campo, tammax, tecla) {
	vr = campo.value;
	tam = vr.length;
	var re = new RegExp("[0-9]","g");
        if (re.test(tecla)) {
	  if (tam < tammax) {
                vr = vr.replace(/\D/g,'') + tecla;
                campo.value = FCNPJ(vr);
	  } else {
	  	var sel = "";
		sel = document.selection.createRange().text;
		return (sel != '');
	  }
        }
        return false;
}

function ValidarCNPJ(campo)
{
 var s = campo.value;
 s = s.replace(/\D/g,'');
 campo.value = FCNPJ(s);
 var varFirstChr = s.charAt(0);
 var naoIguais = false;
 var vlMult,vlControle,s1, s2 = "";
 var i,j,vlDgito,vlSoma = 0;
 for ( var i=0; i<=13; i++ )
 {
   var c = s.charAt(i);
   if( ! (c>="0")&&(c<="9") ) { return false; }
   if( c!=varFirstChr ) { naoIguais = true; }
 }
 if( ! naoIguais ){ return false; }
 s1 = s.substring(0,12);
 s2 = s.substring(12,15);
 vlMult = "543298765432";
 vlControle = "";
 for ( j=1; j<3; j++ )
 {
  vlSoma = 0;
  for ( i=0; i<12; i++ )
    { vlSoma += eval( s1.charAt(i) )* eval( vlMult.charAt(i) );}
    if( j == 2 ){ vlSoma += (2 * vlDgito); }
    vlDgito = ((vlSoma*10) % 11);
    if( vlDgito == 10 ){ vlDgito = 0; }
    vlControle = vlControle + vlDgito;
    vlMult = "654329876543";
 }
 if( vlControle != s2 )
 { return false }
 else
 { return true }
}

<!---------------->
<!-- Formata??o e Valida??o CPF -->

function FCOCLI(vr) {
	var res = '';
	tam = vr.length;
	if ( tam <= 3 ){
 		res = vr ; }
	if ( (tam > 3) && (tam <= 7) ){
 		res = vr.substr( 0, tam - 3 ) + '.' + vr.substr( tam - 3, tam ) ;
 	} else
	if ( (tam >= 8) && (tam <= 10) ){
 		res = vr.substr( 0, tam - 7 ) + '.' + vr.substr( tam - 7, 4 ) + '.' + vr.substr( tam - 3, tam ) ;
 	} else
	if ( (tam >= 11) && (tam <= 13) ){
 		res = vr.substr( 0, tam -  10) + '.' + vr.substr( tam - 10, 3 ) + '.' + vr.substr( tam - 7, 4 ) + '.' + vr.substr( tam - 3, 3 ) ;
 	} else
    if ( (tam >= 14) ){
 		res = vr.substr( 0, 3) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 4 ) + '.' + vr.substr( 10, 3 ) ;
 	}
        return res;
}

function FormatarCOCLI(campo, tammax, tecla) {
	vr = campo.value;
	tam = vr.length;
        var re = new RegExp("[0-9]","g");
        if (re.test(tecla)) {
	  if (tam < tammax) {
                vr = vr.replace(/\D/g,'') + tecla;
                campo.value = FCOCLI(vr);
	  } else {
	  	var sel = "";
		sel = document.selection.createRange().text;
		return (sel != '');
	  }
        }
	return false;
}

function InsereZeros(campo, tamTotal, pos) {
   var res = '';
   var qtdZeros = tamTotal - campo.length;
   for (var i = 0; i<qtdZeros; i++) {
  		res += '0';
   }
   if (pos == 0) {
      campo = res + campo;
   } else {
      campo = campo + res;
   }
   return campo;
}

function ValidarCOCLI(campo)
{
 var s = campo.value;
 s = s.replace(/\D/g,'');
 if (s.length != 0)
    s = InsereZeros(s, 13, 0);
 campo.value = FCOCLI(s);
 return (campo.value.length == 16);
}

<!---------->

<!-- Formata??o Texto Apenas -->

function FormatarTextoApenas(campo, tammax, tecla) {
	vr = campo.value;
	tam = vr.length;
        re = new RegExp("[A-Za-z. ????????????????????????????????????????????]","g");
	var sel = "";
	sel = document.selection.createRange().text;
        return ((re.test(tecla)) && ((tam < tammax) || (sel != '')));
}

function RemoverEspacos(campo) {
	vr = campo.value;
        tam = vr.length;
        tokens = new Array();
        i = 0;
        token = '';
        for (i=0;i<tam;i++) {
          if (vr.charAt(i) != ' ') {
             token+=vr.charAt(i);
          } else {
             if (token.length!=0) {
                tokens.push(token);
                token = '';
             }
          }
        }
        if (token.length!=0) {
                tokens.push(token);
                token = '';
        }
        vr = '';
        for (i=0;i<tokens.length;i++) {
            if (tokens[i].length>1) {
              vr +=tokens[i] + ' ';
            } else {
              if (vr.charAt(vr.length-1) == ' ')
                 vr = vr.substr(0,vr.length-1)
              vr += tokens[i];
            }
        }
        if (vr.charAt(vr.length-1) == ' ')
            vr = vr.substr(0,vr.length-1)
        campo.value = vr.toUpperCase();
        return true;
}
<!----------->

<!-- Formata??o Valores Reais/Inteiros -->

function FormatarValor(campo, tammax, tecla, tipo) {
        vr = campo.value;
        var re = new RegExp("[0-9]","g");
        if (tipo == VALOR_REAL) {
        	re = new RegExp("[0-9,]","g");
	        if ((tecla == ',') && (vr.search(/,/g,'')!=-1)){
        	  campo.value = vr.replace(/,/g,'');
        	}
        }
        var reLimpo = new RegExp("[^0-9]","g");
    	var vrLimpo = vr.replace(reLimpo,'');
    	var tam = vrLimpo.length;
	var sel = "";
	sel = document.selection.createRange().text;
        return ((re.test(tecla)) && ((tam < tammax) || (sel != '')));
}

function ValidarValor(campo, tipo, decimais) {
	vr = campo.value;
        re = new RegExp("[^0-9,]","g");
        vr = vr.replace(re,'');
        // Tirando os 0's do come?o
  	while (vr.indexOf('0') == 0)
    		vr = vr.substr(1, vr.length - 1);
        var pI = vr;
        var pD = '';
	// Verificando se tem v?rgula
	if (vr.indexOf(',') != -1)
	{
  		var pVir = vr.indexOf(',');
	   	pI = vr.substr(0,pVir);
		if (pI == '') pI = '0';
		pD = vr.substr(pVir+1, vr.length - pVir - 1);
                if (tipo != undefined) {
                  if (pD.length>=decimais) {
                  	switch(tipo) {
	                     case TRUNCAR : pD = TruncarValor(pD,decimais);break
        	             case ARREDONDAR : pD = ArredondarValor(pD,decimais);break
                	}
                  } else {
                        tamD = pD.length;
			while (tamD<decimais) {
		          pD += '0';
		          tamD++;
		        }
                  }
                }
	}
	tam = pI.length;
        cont = 0;
        var aux = '';
        for (var i = tam - 1; i >= 0; i--)
	{
	  ++cont;
	  aux = pI.substr(i,1) + aux;
	  if ((cont % 3 == 0) && (i != 0))
	    aux = '.' + aux;
	}

        vr = aux;
	if (pD != '')
	  vr += ','+pD;
        else {
	  if ((tipo != undefined) && (decimais!=0)){
             	vr += ',';
                i = 0;
		while (i<decimais) {
		    vr += '0';
		    i++;
		}
          }
        }
       if ( ( tipo != ARREDONDAR ) && ( tipo != TRUNCAR ) ) {
	       if (campo.value.substr( campo.value.length - 3,  campo.value.length - 3) != ',00') {
		        campo.value = vr + ',00';
	   	}
	   } else {
	   		campo.value = vr ;
	   }
      return true;
}

function ArredondarValor(valor,casas) {
     valor = '1'+valor;
     casas = casas+1;
     var tam = valor.length;
     var vlNum = ParseNumero(valor);
     var red = (Math.round(vlNum/Math.pow(10,tam - casas))).toString();
     return red.substr(1);
}

function TruncarValor(valor,casas) {
     return valor.substr(0,casas);
}
<!----------------->

<!---------- Valida??o Valor no Intervalo --------------->

function ValidarValorIntervalo(campo, min, max) {
	vlMin = ParseNumero(min);
        vlMax = ParseNumero(max);
        vr = ParseNumero(campo.value);
        return ((vr>=vlMin) && (vr <= vlMax));
}

function ParseNumero(numero) {
       numero = numero.replace(/\./g,'');
       numero = numero.replace(/,/g,'.');
       return new Number(numero).valueOf();
}

<!------------------------->

<!-- Formata??o Data -->

function FormatData(campo) {
    var vr = document.forms[0].elements[campo].value;
	tam = vr.length;
	if(tam == 2 || tam == 5){
		document.forms[0].elements[campo].value = vr+'/';
	}	
}


function FDATA(vr) {
	var res = '';
	tam = vr.length;
	if ( tam > 2 && tam < 5 )
		res = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
	else
	if ( tam >= 5 && tam <= 10 )
		res = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 );
	else
        	res = vr;
        return res;
}

function FormatarData(campo, evento, tammax) {
	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
    var tecla = String.fromCharCode((isNN) ? evento.which : evento.keyCode);
    var re = new RegExp("[0-9]","g");
    var rg = new RegExp("/","g");
    var vr = campo.value;
    var tam = 0;
    if(vr != ''){
       tam = vr.length;
    }
    if (re.test(tecla) || rg.test(tecla)) {
	  if (tam >= tammax) {
	  	var sel = "";
		sel = document.selection.createRange().text;
		return (sel != '');
	  } 
	}else{
	  	var sel = "";
		sel = document.selection.createRange().text;
		return (sel != '');
	}  
}


function DataTamOito(campo){
   if(campo.length == 8){
       ano = campo.substr(6,8);
       if(ano < 24){
          ano = '20' + ano;
       }else{
          ano = '19' + ano
       }
       campo = campo.substr(0,6)+ano;
   }
   return campo;
   
}


function ValidarData(campo)
{
  var dataStr = DataTamOito(campo.value);
  campo.value = dataStr;
  var dataPat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; 
  var matchArray = dataStr.match(dataPat);  
  if (matchArray == null) 
  {
    return false;
  }
  mes = matchArray[3]; 
  
  dia = matchArray[1];
  ano = matchArray[4];
  if (mes < 1 || mes > 12) 
  { 
    return false;
  }
  if (dia < 1 || dia > 31) 
  {	
    return false;
  }
  if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31) 
  {
    return false;
  }
  if (mes == 2) 
  { 
    var bissexto = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
    if (dia>29 || (dia==29 && !bissexto)) 
    {   
      return false;
    }
  }
  return true;
}

<!------------->

<!-- Formata??o CEP -->

function FCEP(vr) {
	var res = '';
	tam = vr.length;
	if ( tam >= 6 && tam <= 9 )
		res = vr.substr( 0, 5 ) + '-' + vr.substr( 5, 3 );
        else
        	res = vr;
        return res;
}

function FormatarCEP(campo,tammax,tecla) {
	vr = campo.value;
        var re = new RegExp("[0-9]","g");
        tam = vr.length;
        if (re.test(tecla)) {
	  if (tam < tammax) {
                vr = vr.replace(/\D/g,'') + tecla;
                campo.value = FCEP(vr);
	  } else {
	  	var sel = "";
		sel = document.selection.createRange().text;
		return (sel != '');
	  }
        }
        return false;
}

function ValidarCEP(campo)
{
   campo.value = FCEP(campo.value.replace(/\D/g,''));
   return (campo.value.length == 9);
}

<!------------->

<!-- Formata??o Hora -->

function FHora(vr) {
	var res = '';
	tam = vr.length;
        if ( tam > 2 && tam < 5 )
		res = vr.substr( 0, tam - 2  ) + ':' + vr.substr( tam - 2, tam );
        else
        if ( tam >= 5 && tam <= 8 )
		res = vr.substr( 0, 2 ) + ':' + vr.substr( 2, 2 ) + ':' + vr.substr( 4, tam );
        else
	        res = vr;
        return res;
}

function FormatarHora(campo, tammax, tecla) {

		var vr = campo.value;
        var re = new RegExp("[0-9]","g");
        var tam = vr.length;
        var sel;
        if (re.test(tecla)) {
		  if (tam < tammax) {
	           	vr = vr.replace(/\D/g,'') + tecla;
		        campo.value = FHora(vr);
		  } else {
		  			sel = "";
		  	if(NAVEGADOR=="IE"){
				sel = document.selection.createRange().text;
				return (sel != '');
			}else{
				  var inicio_texto = campo.selectionStart;
  				  var termino_texto = campo.selectionEnd;
				  var texto_selecionado = campo.value.substring(inicio_texto,termino_texto);	
				  if (texto_selecionado.length == 0){
				  	return false;				  	
				  }
				  return true;				  
		 	 }
		  }
        }
		if(NAVEGADOR=="MOZILLA"){
		  return apaga();
		}
        return false;
}

function apaga(){

	if((KEYCODE=="46")||(KEYCODE=="8")||(KEYCODE=="13")||(KEYCODE=="37")||(KEYCODE=="39")||(KEYCODE=="9")){
		return true;
	}
	return false;
}

function FProdutoIntranet(vr) {
	var res = '';
	tam = vr.length;
        if ( tam > 2 && tam < 5 )
		res = vr.substr( 0, tam - 2  ) + '.' + vr.substr( tam - 2, tam );
        else
        if ( tam >= 5 && tam <= 8 )
		res = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 2 ) + '.' + vr.substr( 4, tam );
        else
	        res = vr;
        return res;
}

function FormatarProdutoIntranet(campo, tammax, tecla) {
		vr = campo.value;
        var re = new RegExp("[0-9]","g");
        tam = vr.length;
        if (re.test(tecla)) {
		  if (tam < tammax) {
	        vr = vr.replace(/\D/g,'') + tecla;
		    campo.value = FProdutoIntranet(vr);
		  } else {		  
		  			var sel = "";
		  			if(NAVEGADOR=="IE"){
						sel = document.selection.createRange().text;
						return (sel != '');
					}else{
				   		   var inicio_texto = campo.selectionStart;
		  				   var termino_texto = campo.selectionEnd;
						   var texto_selecionado = campo.value.substring(inicio_texto,termino_texto);	
						   if (texto_selecionado.length == 0){
						  		return false;				  	
				   			}
				    return true;				  
		 	 	    }
	  		}
        }
        if(NAVEGADOR=="MOZILLA"){
		  return apaga();
		}
        return false;
}


function FDataHora(vr) {
	var res = '';
	tam = vr.length;
		if ( tam <= 13 ) {
			res = vr.substr(0, 10) + ' ' + vr.substr(10, tam - 2 ) ;
		} else {
        	if ( tam == 15 ) {
				res = vr.substr(0, 10) + ' ' + vr.substr( 11, 3  ) + ':' + vr.substr( tam - 1, tam );
        	} else {
        		if ( tam == 18 ) {
					res = vr.substr(0, 10) + ' ' + vr.substr( 11, 3 ) + ':' + vr.substr( 15, 2 ) + ':' + vr.substr( tam - 1, tam );
				} else {
	        		res = vr;
		        }
	     	}
	     }
        return res;
}

function FormatarDataHora(campo, tammax, tecla) {
	vr = campo.value;
        var re = new RegExp("[0-9]","g");
        tam = vr.length;
        if (re.test(tecla)) {
	        if ( tam < 10 ) {
	        	//valor = vr.substr( 0, tam )
	        	FormatarData( campo, 10, tecla) ;
	        } else {
			  if (tam <= tammax) {
			        campo.value = FDataHora(vr + tecla);
			  } else {
			  	var sel = "";
				sel = document.selection.createRange().text;
				return (sel != '');
			  }
		   }
        }
        return false;
}



function ValidarHoraIntranet(campo)
{ 

  switch (campo.value.length) {
	case 1  : valCampo = "0"+campo.value+":00:00"; break;
	case 2  : valCampo = campo.value+":00:00"; break;
	case 3  : valCampo = campo.value+"00:00"; break;
	case 4  : valCampo = campo.value.substr(0,3)+"0"+campo.value.substr(3,4)+":00"; break;
	case 5  : valCampo = campo.value+":00"; break;
	case 6  : valCampo = campo.value+"00"; break;
	case 7  : valCampo = campo.value.substr(0,6)+"0"+campo.value.substr(6,7); break;
	case 8  : valCampo = campo.value; break;
  }
  campo.value = valCampo;
  campo.value = FHora(campo.value.replace(/\D/g,''));
  var horaStr = campo.value;
  var horaPat = /^(\d{1,2})(:)(\d{2})\2(\d{2})$/;
  var matchArray = horaStr.match(horaPat);
  if (matchArray == null)
  {
    return false;
  }
  min = matchArray[3];
  hora = matchArray[1];
  seg = matchArray[4];
  if ((min > 59) || (seg > 59) || (hora > 23))
  {
    return false;
  }
  return true;
}



function ValidarHora(campo)
{
  campo.value = FHora(campo.value.replace(/\D/g,''));
  var horaStr = campo.value;
  var horaPat = /^(\d{1,2})(:)(\d{2})\2(\d{2})$/;
  var matchArray = horaStr.match(horaPat);
  if (matchArray == null)
  {
    return false;
  }
  min = matchArray[3];
  hora = matchArray[1];
  seg = matchArray[4];
  if ((min > 59) || (seg > 59) || (hora > 23))
  {
    return false;
  }
  return true;
}


function ValidarDataHora(campo)
{
  vlr = campo.value ;
  campo.value = vlr.substr(0,10) ;
  data = ValidarData( campo )  ;
  campo.value = vlr.substr(12,8) ;
  hora = ValidarHora( campo ) ;
  campo.value = vlr ;
  return ( data && hora ) ;
}

<!------------->

<!-- Intervalo de Datas -->

function ParseData(data)
{
  // Dia
  pos = data.indexOf('/');
  dia = data.substr(0,pos);
  data = data.substr(pos + 1, data.length - pos - 1);
  // mes
  pos = data.indexOf('/');
  mes = data.substr(0,pos);
  data = data.substr(pos + 1, data.length - pos - 1);
  // Ano
  d = new Date(data, mes-1, dia);
  return d;
}

function CompararDatas (dataInicial, dataFinal) {
  dIni = ParseData(dataInicial);
  dFin = ParseData(dataFinal);
  return (dIni<=dFin);
}

function ValidarPeriodoDatas (dataInicial, dataFinal, periodo) {
  var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

  dIni = ParseData(dataInicial);
  dFin = ParseData(dataFinal);

  yIni = dIni.getYear();
  yFin = dFin.getYear();

  if ((navigator.appName == "Microsoft Internet Explorer") && (yIni < 2000))
	yIni="19" + yIni;
  if (navigator.appName == "Netscape")
    yIni=1900 + yIni;

  if ((navigator.appName == "Microsoft Internet Explorer") && (yFin < 2000))
	yFin="19" + yFin;
  if (navigator.appName == "Netscape")
    yFin=1900 + yFin;

  var dtFin = montharray[dFin.getMonth()]+" "+dFin.getDate()+", "+ yFin;
  var dtIni = montharray[dIni.getMonth()]+" "+dIni.getDate()+", "+ yIni;

  var diferenca =(Math.round((Date.parse(dtFin)- Date.parse(dtIni))/(24*60*60*1000))*1);

  return( diferenca < periodo ) ;
}

function ValidarIntervaloData (campo, dataInicial, dataFinal) {
  if (ValidarData(campo)) {
  	dCampo = ParseData(campo.value);
	dIni = ParseData(dataInicial);
	dFin = ParseData(dataFinal);
	return ((dIni<=dCampo) && (dCampo<=dFin));
  }
  return false;
}

function ComputarIdade (nomecampo, msgErro, min, max) {
  var campo = document.forms[0].elements[nomecampo];
  if (ValidarData(campo)) {
	data = ParseData(campo.value);
	hoje = new Date();
	idade = -1;
	do
	{
		idade++;
		data.setFullYear(data.getFullYear()+1);
	} while (data < hoje);
	if ((min>idade) || (idade>max)) SetErro(nomecampo,msgErro);
	else SetErro(nomecampo,'');
  } else {
	SetErro(nomecampo,msgErro);
  }
}


<!------------->

<!---------- Preenche Erro --------------->

function SetSairOk(campo) {
   if (campoErro ==campo) {
	   temErro = false;
	   campoErro = "";
   }
   document.forms[0].elements[campo].className='selectBoxNormal';
   SetMsg(campo, '', COR_INFO)
}

<!---------- Preenche Erro --------------->

function SetErro(campo, txt) {
   temErro = true;
   campoErro = campo;
   alert( txt ) ;
   //document.forms[0].elements[campo].className='selectBoxErro';
   //SetMsg(campo, txt, COR_ERRO)
}

<!---------- Preenche Info --------------->

function SetInfo(campo, txt) {
   if ((!temErro) || (campoErro!=campo)) {
     document.forms[0].elements[campo].className='selectOver';
     SetMsg(campo, txt, COR_INFO);
   }
}

<!---------- Preenche Msg --------------->

function SetMsg(campo, txt, cor) {
  if (document.getElementById["info_"+campo] != undefined) {
  	eval("info_"+campo).style.color = cor;
  	eval("info_"+campo).innerText = txt ;
  }
}

<!------------->

<!---------- Formatar Moeda --------------->

function RemoverCifrao(campo) {
        var vr = campo.value;
        var re = new RegExp("[R$ ]","g");
        campo.value = vr.replace(re,"");
}

function ValidarMoeda(campo, tipo, decimais) {
        ValidarValor(campo,tipo, decimais);
        campo.value = 'R$ '+campo.value;
        return true;
}

<!------------->

<!---------- Formatar Numero -------------->
function ValidarSoNumero(campo) {
	vr = campo.value;
    re = new RegExp("[^0-9]","g");
    campo.value = vr.replace(re,'');
    return true;
}

<!------------->
