// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask)
{
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
		{
		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}
		return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
 		dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
		{
		 		if (dFilterMask.charAt(dFilterStep)!='#')
				{
		        dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
				}
		}
		return dFilterTemp.length;
}

function dFilter (key, textbox, dFilterMask)
{
		dFilterNum = dFilterStrip(textbox.value, dFilterMask);
		//alert(key);
		if (key==9)
		{
		    return true;
		}
		else if (key==8&&dFilterNum.length!=0)
		{
		 	 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
 	  else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
		{
		  if ((key>95&&key<106))
		  {
				key=key-48;
		  }
		//alert(key+' = '+String.fromCharCode(key));
        dFilterNum=dFilterNum+String.fromCharCode(key);
		}

		var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
		{
        if (dFilterMask.charAt(dFilterStep)=='#')
				{
					  if (dFilterNum.length!=0)
					  {
				        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
					      dFilterNum = dFilterNum.substring(1,dFilterNum.length);
					  }
				    else
				    {
				        dFilterFinal = dFilterFinal + "";
				    }
				}
		 		else if (dFilterMask.charAt(dFilterStep)!='#')
				{
				    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
				}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}


		textbox.value = dFilterFinal;
    return false;
}

function replace(fullString,text,by) {
// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;

    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;

    var newstr = fullString.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

    return newstr;
}


//===========================================================================================================================================================//
function Limpar(valor, validos) {

  // retira caracteres invalidos da string

  var result = "";

  var aux;

  for (var i=0; i<valor.length; i++)

  {

    aux = validos.indexOf(valor.substring(i, i+1));

    if (aux>=0)

    {

    	result += aux;

    }

  }

  return result;

}
//===========================================================================================================================================================//
function formataCPF(campo){

	//campo.value = filtraCampo(campo);

	vr = Limpar(campo.value, "0123456789");

	tam = vr.length ;

	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 );}
}
//===========================================================================================================================================================//
function validaCPF(cpf)   
{  
  erro = new String;  
	var var_cpf=cpf.value;
		
	var_cpf = var_cpf.replace('.', '');  
    var_cpf = var_cpf.replace('.', '');  
    var_cpf = var_cpf.replace('-', '');  
  
    if (var_cpf.length == 11)  
    {     
  
            var nonNumbers = /\D/;  
      
            if (nonNumbers.test(var_cpf))   
            {  
                    erro = "A verificacao de CPF suporta apenas números!";   
            }  
            else  
            {  
                    if (var_cpf == "00000000000" ||   
                            var_cpf == "11111111111" ||   
                            var_cpf == "22222222222" ||   
                            var_cpf == "33333333333" ||   
                            var_cpf == "44444444444" ||   
                            var_cpf == "55555555555" ||   
                            var_cpf == "66666666666" ||   
                            var_cpf == "77777777777" ||   
                            var_cpf == "88888888888" ||   
                            var_cpf == "99999999999") {  
                              
                            erro = "Número de CPF inválido!"  
							cpf.value='';
							cpf.focus();  
                    }  
      
                    var a = [];  
                    var b = new Number;  
                    var c = 11;  
  
                    for (i=0; i<11; i++){  
                            a[i] = var_cpf.charAt(i);  
                            if (i < 9) b += (a[i] * --c);  
                    }  
      
                    if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }  
                    b = 0;  
                    c = 11;  
      
                    for (y=0; y<10; y++) b += (a[y] * c--);   
      
                    if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }  
      
                    if ((var_cpf.charAt(9) != a[9]) || (var_cpf.charAt(10) != a[10])) {  
                        erro = "Número de CPF inválido.";  
						cpf.value='';
			            cpf.focus();  
                    }  
            }  
    }  
    else  
    {  
        if(var_cpf.length == 0)  
            return false  
        else  
            erro = "Número de CPF inválido.";  
			cpf.value='';
            cpf.focus();  
	}  
    if (erro.length > 0) {  
            alert(erro); 
			cpf.value='';
            cpf.focus();  
            return false;  
    }     
    return true;      
}  
//===========================================================================================================================================================//

