// JavaScript Document

function mascaraData(v){
//v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/[^\s\:\d]/g,"") //Remove tudo o que não é dígito
v=v.replace(/(\d{2})(\d)/,"$1/$2") //Coloca barra entre o segundo e o terceiro digito
v=v.replace(/(\d{2})(\d)/,"$1/$2") //Coloca barra entre o quinto e o sexto digito
return v
}
function mascaraValor(v){
v=v.replace(/[^\-\d]/g,"") //Remove tudo o que não é dígito
v=v.replace(/([\-\d])(\d{2})$/,"$1.$2") //Coloca ponto antes dos 2 últimos digitos
return v
}

function mascara(o,f){
	v_obj=o
	v_fun=f
	setTimeout("execmascara()",1)
}

function execmascara(){
	v_obj.value=v_fun(v_obj.value)
}

function mascaraLeech(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 mascaraSoNumeros(v){
	return v.replace(/\D/g,"")
}

function mascaraTelefone(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 mascaraCpf(v){
	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
											 //de novo (para o segundo bloco de números)
	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 mascaraCep(v){
	v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
	v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
	return v
}

function mascaraPlaca(v){
	v=v.replace(/([A-z]{3})(\d)/,"$1-$2") //Coloca um hífen depois do bloco de tres dígitos
	return v.toUpperCase()
}

function mascaraCnpj(v){
	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 mascaraRomanos(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 mascaraSite(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
}


/*** Funcao Generica pra formatar usando uma mascara ex.: aplicarMascara(this,'##/##/####') ***/
function aplicarMascara(src, mask){
	if(!nbr) nbr = (window.event)?window.event.keyCode:'';
//alert(nbr);
	var allow = [8,9,13,35,36,37,38,39,40,46];
	if($.inArray(nbr,allow) < 0){
		var i = src.value.length;
		var max = mask.length;
		if (i > max-1) {
			src.value = src.value.substring(0,max);
			return;
		}
		var entrada = src.value;
		var saida = '#';
		var texto = mask.substring(i);
		if(i==1 && (mask.substring(0,1) != saida)) src.value = mask.substring(0,1)+entrada;
		else if(texto.substring(0,1) != saida) {
			src.value += texto.substring(0,1);
			if(mask.substr(i+1,1) == ' ') src.value += ' ';
		}
		else if(mask.substr(i-2,1) == src.value.substr(i-1,1)) src.value = src.value.substr(0,i-1);
	}
}

/**pegando o evento de keydown para ajudar na mascara generica**/
var nbr;
function handleKeyPress(evt) {
	nbr = (window.event)?event.keyCode:evt.which;
	return true;
}
document.onkeydown= handleKeyPress;

/**
 * mascaras em classes automaticas
 *
 * @author Jucu
 */
	/*********FUNCOES*********/
	//classe form-filtro
	function auto_formFiltro(){
		var target = $('.form-filtro input:text');
		target.unbind('.maskFormFiltro').bind('click.maskFormFiltro', function(){
			highlight(this.id);
		});
	}
	//classe mascaraSoNumeros
	function auto_mascaraSoNumeros(){
		var target = $('.mascaraSoNumeros');
		target.unbind('.maskSoNum').bind('keyup.maskSoNum', function(){
			this.value = mascaraSoNumeros(this.value);
		});
	}
	//classe mascaraData
	function auto_mascaraData(){
		var target = $('.mascaraData');
		target.unbind('keypress').bind('keypress', function(e){
			if (e.shiftKey) return true;
			var allow = [8,9,13,46,37,38,39,40];
			var kc = e.keyCode;
			if($.inArray(kc,allow) < 0){
				//if ( (kc < 48) || (kc > 57 && kc < 96 ) || (kc > 105) ) e.preventDefault();
				aplicarMascara(this,'##/##/####');
			}
		}).unbind('blur').bind('blur', function(){
			var val = target.val();
			target.val(val.replace(/[^\s\/\d]/g,""));
		});
	}
	//classe mascaraValor
	function auto_mascaraValor(){
		var target = $('.mascaraValor');
		target.unbind('.maskVal').bind('keyup.maskVal', function(){
			this.value = mascaraValor(this.value);
		});
	}
	//classe mascaraCep
	function auto_mascaraCep(){
		var target = $('.mascaraCep');
		target.unbind('.maskCep').bind('keyup.maskCep', function(){
			this.value = mascaraCep(this.value);
		});
	}
	//classe mascaraFone
	function auto_mascaraFone(){
		var target = $('.mascaraFone');
		var mascara = '(##)####-####';
		target.unbind('keydown').bind('keydown', function(e){
			if (e.shiftKey) return true;
			var allow = [8,9,13,46,37,38,39,40];
			if($.inArray(e.keyCode,allow) < 0) aplicarMascara(this,mascara);
		}).unbind('blur').bind('blur', function(){aplicarMascara(this,mascara);});
	}

	/****CHAMADA DAS MASCARAS****/
	function insertMasks(){
		auto_formFiltro();
		auto_mascaraSoNumeros();
		auto_mascaraData();
		auto_mascaraValor();
		auto_mascaraCep();
		auto_mascaraFone();
	}
	$(document).ready(function(){insertMasks();});
/******************************************/

