// Caracteres Reservados
var TipoMascara="/-._,:"
var TipoMascara2="AX9"

function Atualizacao(Valor,Mascara) {

	var sValue = Valor.value
	var TamValor  = sValue.length
	var TamMascara = Mascara.length

	if (Valor.createTextRange) {
		// Código das teclas de movimentação
		var TeclasMovimentacao="8;46;37;38;39;40;33;34;35;36;45;46"

		// Desprezar Teclas de Movimentação
		if (TeclasMovimentacao.indexOf(event.keyCode+";")>-1) return

		// Ajutar Valores
		if (Valor.value!=Valor._value) {
		   newValue = Pesquisa(Valor.value, Mascara)
 			if (newValue!=Valor.value) {
 				Valor.value=newValue
			}
		}

		// Limitar tamanho do campo
	    var sValue = Valor.value
	    TamValor  = sValue.length
		if (TamValor > TamMascara) {
			Valor.value = sValue.substring(0,TamMascara)
			return
		}

		var r1 = Valor.createTextRange()
		if (newValue!=Valor.value) {
			Valor.value=newValue
			var rNew = Valor.createTextRange()
			r1.setEndPoint("StartToEnd",rNew)
			r1.select()
		}


		Valor._value=Valor.value

	}

}

function Pesquisa(Valor, Mascara) {
	var TamValor  = Valor.length
	var TamMascara = Mascara.length
	var sValue = ""

	// Acescentar Caracteres Reservados
	for (var i=0; i < TamValor; i++) {
	    if (TipoMascara.indexOf(Mascara.substring(i,i+1))>-1) {
			if (Valor.substring(i,i+1) != Mascara.substring(i,i+1))
				Valor = Valor.substring(0,i) + Mascara.substring(i,i+1) + Valor.substring(i,TamValor)
		}
	}


	// Limitar tamanho do campo
    if (TamValor >= TamMascara) {
		TamValor = TamMascara
		Valor = Valor.substring(0,TamValor)
	}

	// Remover Caracteres Inválidos
	for (var i=0; i < TamValor; i++) {
		if ((Mascara.substring(i,i+1) == '9') && ((Valor.substring(i,i+1) < '0') || (Valor.substring(i,i+1) > '9'))) {
			Valor = Valor.substring(0,i) + Valor.substring(i+1,TamValor)
			TamValor = TamValor - 1
			i = i - 1
		}
		if ((Mascara.substring(i,i+1) == 'A') && ((Valor.substring(i,i+1) < 'A') || (Valor.substring(i,i+1) > 'z'))) {
			Valor = Valor.substring(0,i) + Valor.substring(i+1,TamValor)
			TamValor = TamValor - 1
			i = i - 1
		}
		if ((Mascara.substring(i,i+1) == 'X') && ((Valor.substring(i,i+1) < '0') || (Valor.substring(i,i+1) > 'z'))) {
			Valor = Valor.substring(0,i) + Valor.substring(i+1,TamValor)
			TamValor = TamValor - 1
			i = i - 1
		}
	}
	TamValor  = Valor.length

	// Remover Caracteres Reservados
	for (var i=0; i < TamValor; i++) {
	    if (TipoMascara.indexOf(Valor.substring(i,i+1))>-1) {
		   Valor = Valor.substring(0,i) + Valor.substring(i+1,TamValor)
		   i = i+1
		}
	}

	// Acescentar Caracteres Reservados
	for (var i=0; i < TamValor; i++) {
	    if (TipoMascara.indexOf(Mascara.substring(i,i+1))>-1) {
			if (Valor.substring(i,i+1) != Mascara.substring(i,i+1))
				Valor = Valor.substring(0,i) + Mascara.substring(i,i+1) + Valor.substring(i,TamValor)
		}
	}

	return Valor
	
} 

function ValidaValor(Valor) {

    if (document.body==null) return true
    if (document.body.createTextRange==null) return true

    // Convert key code to character
    var key = String.fromCharCode(event.keyCode)
	var dotRelationship
	var allowDigit
    var checkDot = false
    var allowDigit = false

    // Check if number of digits following decimal point is cached
    if (Valor._digits==null) {
      // Examine default value (initial value attribute)
 	  var strNum = Valor.defaultValue
      // Find the decimal point
      var idx = strNum.indexOf(".")
      // Calculate number of decimal digits
      if (idx>-1) 
        Valor._digits = strNum.length - idx - 1
      else
        Valor._digits = -1
    }

    // Make sure a digit or a decimal point
    if (!isNaN(key) || key==".") {
      // Get selection (either insertion point or text selection)
      var selectionRange = document.selection.createRange()
      // Store a copy for use in comparisons
      var tempSel = selectionRange.duplicate()

      // Variable for the input range 
      var inputRange = Valor.createTextRange()
 
      // Get index of the dot
      var dotPos = Valor.value.indexOf(".")
     
      // If decimal point, check if new character valid
      if (dotPos>-1) {
        // Locate existing decimal point 
        inputRange.findText(".")
        // When user types decimal, it is only accepted if
        // replacing existing decimal point
        if ((key==".") && (Valor._digits>-1)) {
          if (tempSel.findText("."))
          // Test if existing decimal in selection
          checkDot = selectionRange.inRange(tempSel)
        } else {
          // Determine whether the selection is before or after the decimal point
          dotRelationship = inputRange.compareEndPoints("EndToStart",selectionRange)
          // Test if new input is an allowable digit
          allowDigit = ((dotRelationship<=0 && (Valor.value.length - dotPos -1 < Valor._digits || selectionRange.text.length>0)) || (dotRelationship==1 && key!="."))
        }
      } else {
        // If inserting a decimal, test number of following digits
        if (key==".") 
          tempSel.moveEnd("textEdit",1)          
        allowDigit = (key=="." && (tempSel.text.length - 1 < Valor._digits)) || !isNaN(key)
      }
    }
    // Return whether the key is allowed

    var selectionRange = document.selection.createRange()
	selectionRange.moveEnd("textEdit",2)          

    return (checkDot || allowDigit)
  }

function AjustaValor(Valor) {

	var strValor = Valor.value
	var strNum = strValor.length

    if (strNum >-1 && strNum<1)
    {
       Valor.value = "0.00"
       return 
    }

    var PontoDecimal = strValor.indexOf(".") + 1

    if (PontoDecimal!=0) 
       Digitos = strNum - PontoDecimal 
    else
       Digitos = 0
        
    if (Digitos>-1 && Digitos<1)
       if (PontoDecimal!=0)
          Valor.value = Valor.value + "00"
       else
          Valor.value = Valor.value + ".00"
    else
       if (Digitos>0 && Digitos<2)
          Valor.value = Valor.value + "0"
 } 

function update(Valor, Mascara, Tipo) {

	var ValorNovo   = ""
	var ValorAntigo = ""

	if (Valor.value!=null)  {ValorNovo   = Valor.value}
	if (Valor._value!=null) {ValorAntigo = Valor._value}

	var TamValorNovo   = ValorNovo.length
	var TamValorAntigo = ValorAntigo.length
	var TamMascara     = TamMascara     = Mascara.length


	// Encontrar Digito Novo
	for (var i=0; i < TamValorNovo; i++) {

		if (i <= TamValorAntigo)  {
			if (ValorNovo.substring(i,i+1) != ValorAntigo.substring(i,i+1)) {
			   break;
			}

		}
	}
	
}

/*
    OBSERVAÇÕES: Função para permitir somente valores numéricos
*/
function somenteNumeros(campo) { 

	campo.value = campo.value.toLowerCase(); 

	var caracteres = "abcdefghijklmnopqrstuvwxyzáéíóúàèìòùâêîôûäëïöüãõ@#$%^&*()_+=-~` ç.\/[]{}<>?!|:;,"; 
	var retorno  = "";

	for(i=0;i<caracteres.length;i++){ 
	     
	   for(j=0;j<campo.value.length;j++){ 
	      retorno = campo.value.replace(caracteres.substr(i,1),""); 
	      campo.value = retorno; 
      } 

   }
  
}

function validaCNPJ(CNPJ) { 
    var a = new Array(); 
    var b = new Number; 
    var c = [6,5,4,3,2,9,8,7,6,5,4,3,2]; 
    for (i=0; i<12; i++){ 
        a[i] = CNPJ.charAt(i); 
        b += a[i] * c[i+1]; 
    } 
    if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x } 
    b = 0; 
    for (y=0; y<13; y++) { 
        b += (a[y] * c[y]); 
    } 
    if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; } 
    if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){ 
        return false; 
    } 
    return true; 
}
