
/*	Telefone: 	 maxlength="14"
   	Competência: maxlength="7"
   	Cpf:		 maxlength="14"
  	Cep:		 maxlength="9"
   	Cnpj:		 maxlength="19"
*/


function mascara(o,f){
    v_obj=o;
    v_fun=f;
    setTimeout("execmascara()",1);
}

function execmascara(){
    v_obj.value=v_fun(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 mask_boleto(v){
    v=v.replace(/\D/g,"");
    v=v.replace(/^(\d{10})(\d)/,"$1-$2");
    return v;
}

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

function mask_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 mask_hora(v){
    v=v.replace(/\D/g,"");
    v=v.replace(/(\d{2})(\d)/,"$1:$2");
    return v;
}

function mask_competencia(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
    return v;
}

function mask_data(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)/,"$1/$2");  //Coloca ponto entre o segundo e o terceiro dígitos
    return v;
}

function mask_ano_versao(v){
    v=v.replace(/\D/g,"");				 //Remove tudo o que não é dígito
    v=v.replace(/(\d{4})(\d)/,"$1/$2");  //Coloca ponto entre o quarto e o quinto dígitos
    return v;
}

function mask_cpf(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 mask_cnpj(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 mask_cep(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 mask_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 mask_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 MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    if (whichCode == 13) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) objTextBox.value = '';
    if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
    if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}	*/

function mask_moeda(objTextBox, e) {
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '-0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    SeparadorMilesimo = '.';
    SeparadorDecimal = ',';

    if (whichCode == 13)
    	return true;

    key = String.fromCharCode(whichCode); // Valor para o código da Chave

    if (strCheck.indexOf(key) == -1 && whichCode != 8)
    	return false; // Chave inválida

    len = objTextBox.value.length; //Tamanho da variavel

    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal))
        	break;

		aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1)
        	aux += objTextBox.value.charAt(i);

		aux += key;
		len = aux.length;

		if (whichCode == 8) {
			len = 0;
		}

    if (len == 0)
    	objTextBox.value = '';

    if (len == 1)
    	objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;

    if (len == 2)
    	objTextBox.value = '0'+ SeparadorDecimal + aux;

    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        	objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }

    return false;
}



function mascara_num(obj, e){

	whichCode = (window.Event) ? e.which : e.keyCode;
	if (whichCode == 8) {
  		obj.value = "";

  		return true;
  	}
    if (whichCode == 13)
    	return true;

	valida_num(obj);

    mod = "";
	if (obj.value.match("-"))
		mod = "-";

  	valor = obj.value.replace("-", "");
  	valor = valor.replace(",", "");
  	if (valor.length >= 2)
    	valor = poe_ponto_num(valor.substring(0, valor.length - 1)) + "," + valor.substring(valor.length - 1, valor.length);

  	obj.value = mod + valor;
}

function poe_ponto_num(valor){
	valor = valor.replace(/\./g, "");
	if (valor.length > 3){
    	valores = "";
    	while (valor.length > 3){
      		valores = "." + valor.substring(valor.length - 3, valor.length) + "" + valores;
      		valor = valor.substring(0, valor.length - 3);
    	}
    	return valor + "" + valores;
  	}
  	else return valor;
}

function valida_num(obj){
	numeros = new RegExp("[0-9]");
	while (!obj.value.charAt(obj.value.length-1).match(numeros)){
    	if (obj.value.length == 1 && obj.value == "-")
      		return true;

    	if (obj.value.length >= 1)
     		obj.value = obj.value.substring(0, obj.value.length - 1);
    	else
      		return false;
	}
}


function mvalor(v){  
    v=v.replace(/\D/g,"");//Remove tudo o que não é dígito  
    v=v.replace(/(\d)(\d{8})$/,"$1.$2");//coloca o ponto dos milhões  
    v=v.replace(/(\d)(\d{5})$/,"$1.$2");//coloca o ponto dos milhares  
  
    v=v.replace(/(\d)(\d{2})$/,"$1,$2");//coloca a virgula antes dos 2 últimos dígitos  
    return v;  
} 
