
function mascara(o,f){

    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
	if(v_fun=='telefone')
   	 v_obj.value=telefone(v_obj.value);
	if(v_fun=='cep')
   	 v_obj.value=cep(v_obj.value);
	if(v_fun=='site')
   	 v_obj.value=site(v_obj.value);
	if(v_fun=='data')
   	 v_obj.value=data(v_obj.value);
	if(v_fun=='dinheiro')
   	 v_obj.value=dinheiro(v_obj.value);
	if(v_fun=='sem_casas')
   	 v_obj.value=sem_casas(v_obj.value);
	if(v_fun=='casas_3')
   	 v_obj.value=casas_3(v_obj.value);
	if(v_fun=='soNumeros')
   	 v_obj.value=soNumeros(v_obj.value);
	if(v_fun=='palavra')
   	 v_obj.value=soPalavra(v_obj.value);
	if(v_fun=='palavraPonto')
   	 v_obj.value=soPalavraPonto(v_obj.value);
	if(v_fun=='cpf')
   	 v_obj.value=cpf(v_obj.value);
	if(v_fun=='cnpj')
   	 v_obj.value=cnpj(v_obj.value);
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){

    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}
function soPalavra(v){
	v=v.replace(/[^\w\.\+-:@]/g,"")
    v=v.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    v=v.replace(/,/,"")
    v=v.replace(/ /,"")
    v=v.replace("+","")
    v=v.replace("-","")
    v=v.replace("www","")
    v=v.replace(".combr","")
	
    v=v.replace(/([\?&])=/,"$1")
	//testa se ja tem ponto
	total=0;
	palavra="";
	for (x=0;x<v.length;x++)
	{
		if(v.substr(x,1)==".")
			total++;
		if ((total<=1)||(v.substr(x,1)!="."))
		{
			if( ! (  ((x==0)&& (v.substr(x,1)==".")  )  ))//|| ((x==v.length-1)&&(v.substr(x,1)==".")) )
				palavra+=v.substr(x,1)+"";
			
		}
	}
	v=palavra;
	v=v.toLowerCase();
	return v
}
function soPalavraPonto(v){
	v=v.replace(/[^\w\.\+-:@]/g,"")
    v=v.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    v=v.replace(/,/,"")
    v=v.replace(/ /,"")
    v=v.replace("+","")
    v=v.replace("-","")
	
    v=v.replace(/([\?&])=/,"$1")
	//testa se ja tem ponto
	total=0;
	palavra="";
	for (x=0;x<v.length;x++)
	{
		if(v.substr(x,1)==".")
			total++;
		if ((total<=4)||(v.substr(x,1)!="."))
		{
			if( ! (  ((x==0)&& (v.substr(x,1)==".")  )  ))//|| ((x==v.length-1)&&(v.substr(x,1)==".")) )
				palavra+=v.substr(x,1)+"";
			
		}
	}
	v=palavra;
	v=v.toLowerCase();
	return v
}
function cpf(v){
    v=v.substr(0,14);
	v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
	
    return v
}

function cep(v){
    //v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
	 v=v.replace(/[^1234567890-]/g,"");
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
	
    return v
}

function cnpj(v){
   v=v.substr(0,18);
   v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

function site(v){
    //Esse sem comentarios para que você entenda sozinho ;-)
    v=v.replace(/^http:\/\/?/,"")
    dominio=v
    caminho=""
    if(v.indexOf("/")>-1)
        dominio=v.split("/")[0]
        caminho=v.replace(/[^\/]*/,"")
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    caminho=caminho.replace(/([\?&])=/,"$1")
    if(caminho!="")dominio=dominio.replace(/\.+$/,"")
    v="http://"+dominio+caminho
    return v
}


function data(v){

    v=v.replace(/[^1234567890/]/g,"");
	v=v.replace(/^(\d{2})(\d)/,"$1/$2");
	v=v.replace(/^(\d{2})\/(\d{2})(\d)/,"$1/$2/$3");
	v=v.substr(0,10);
	
	
	
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html

    return v
}


/*Função que padroniza valor monétario*/
    function dinheiro(v){
		
        v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
        v=v.replace(/^([0-9]{3}\.?){3}-[0-9]{2}$/,"$1.$2");
        //v=v.replace(/(\d{3})(\d)/g,"$1,$2")
        v=v.replace(/(\d)(\d{2})$/,"$1.$2") //Coloca ponto antes dos 2 últimos digitos
        return v
    }
	 function sem_casas(v){
		
         v=v.replace(/[^1234567890]/g,"");
        return v
    }
	function casas_3(v){
		
        v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
        v=v.replace(/^([0-9]{3}\.?){3}-[0-9]{2}$/,"$1.$2");
        v=v.replace(/(\d)(\d{3})$/,"$1.$2") //Coloca ponto antes dos 2 últimos digitos
        return v
    }




function formatCurrency(o, n, dig, dec)
{
	new function(c, dig, dec, m){
		addEvent(o, "keypress", function(e, _){
			if((_ = e.key == 45) || e.key > 47 && e.key < 58){
				var o = this, d = 0, n, s, h = o.value.charAt(0) == "-" ? "-" : "",
					l = (s = (o.value.replace(/^(-?)0+/g, "$1") + String.fromCharCode(e.key)).replace(/\D/g, "")).length;
				m + 1 && (o.maxLength = m + (d = o.value.length - l + 1));
				if(m + 1 && l >= m && !_) return false;
				l <= (n = c) && (s = new Array(n - l + 2).join("0") + s);
				for(var i = (l = (s = s.split("")).length) - n; (i -= 3) > 0; s[i - 1] += dig);
				n && n < l && (s[l - ++n] += dec);
				_ ? h ? m + 1 && (o.maxLength = m + d) : s[0] = "-" + s[0] : s[0] = h + s[0];
				o.value = s.join("");
			}
			e.key > 30 && e.preventDefault();
		});
	}(!isNaN(n) ? Math.abs(n) : 2, typeof dig != "string" ? "." : dig, typeof dec != "string" ? "," : dec, o.maxLength);
}
