/**
 * Formata um campo cep durante a digitaï¿½ï¿½o do usuï¿½rio.
 * Essa funï¿½ï¿½o deve ser utilizada da seguinte maneira:
 * onkeypress="return formatarCep(this, event);"
 */
function formataCep(campo, e) {
    car = window.event ? e.keyCode : e.which;
    key = car;
    
    if (key == 0 || key == 8  || key == 9 || key == 37 || 
         key == 39 || key == 35 ||
         key == 36 || key == 45) {

        return true;
    }
    
    if ((key < 48 || key > 57) && (key < 96 || key > 105) && (key != 46)){
        return false;
    }

    switch(campo.value.length){
        case 5:
            campo.value+='-';
            break;
        case 9:
           return false;
    }

    return true;
}

function formatarCampoNumerico(e) { // Deixa escrever apenas nï¿½meros
	var key = window.event ? e.keyCode : e.which;
	/* Descricao dos keyCodes
	* 8 = backspace
	* 35 = end
	* 36 = home
	* 37 = seta esqueda
	* 39 = seta direita
	* 45 = insert
	* 48 - 57 = numeros no teclado alfabetico
	*/
	if (key == 0 || key == 8  || key == 37 || 
		 key == 39 || key == 35 ||
		 key == 36 || key == 45 || key == 9) {

		return true;
	} 
    
    if (key < 48 || key > 57){
        return false;
    } else {
        return true;
    }
}

function formatarCampoNumericoPontuacao(e) { // Deixa escrever apenas nï¿½meros
	var key = window.event ? e.keyCode : e.which;
	/* Descricao dos keyCodes
	* 8 = backspace
	* 35 = end
	* 36 = home
	* 37 = seta esqueda
	* 39 = seta direita
	* 45 = insert
	* 48 - 57 = numeros no teclado alfabetico
	*/
	if (key == 0 || key == 8  || key == 37 || 
		 key == 39 || key == 35 || key == 36 || 
		 key == 44 || key == 45 || key == 46 || key == 9) {

		return true;
	} 
    
    if (key < 48 || key > 57){
        return false;
    } else {
        return true;
    }
}

function formatarCpf(campo) { // Formata o CPF
	
	var key = window.event ? keyCode : which;
	var cpf = campo.value;
	var cpfOrigem = cpf;
	var set = 0;

	cpfOrigem = replace(cpfOrigem, " ", "");
	cpfOrigem = replace(cpfOrigem, ".", "");
	cpfOrigem = replace(cpfOrigem, "-", "");

	if (cpfOrigem.length == 11) {
		cpf = cpfOrigem.substring(0, 3) + "." + cpfOrigem.substring(3, 6) + "." + cpfOrigem.substring(6, 9) + "-" + cpfOrigem.substring(9,11);
		set = 1;
	}
	else {
		if (cpfOrigem.length == 3 && cpf.substring(3, 4) != ".") {
			cpf += ".";
		}
		else if (cpfOrigem.length == 6 && cpf.substring(7, 8) != ".") {
			cpf += ".";
		}
		else if (cpfOrigem.length == 9 && cpf.substring(11, 12) != "-") {
			cpf += "-";
		}
	}

	/* Descricao dos keyCodes
	* 8 = backspace
	* 35 = end
	* 36 = home
	* 37 = seta esqueda
	* 39 = seta direita
	* 45 = insert
	* 48 - 57 = numeros no teclado alfabetico
	*/

	if ((key != 8 && key != 37 && key != 39 && key != 35 && key != 36 && key != 45 && key >= 48 && key <= 57) || set == 1) {
		eval("document.all."+campo.name+".value = '"+cpf+"'");
		return true;
	}
	else {
		return false;
	}
}

/*
*  Funcao para fazer formatacao de datas : dd/mm/aaaa
*  Utilizar da seguinte forma: formataData(this,event).
*  onkeypress="return formataData(this,event)"
*/
function formataData( campo, e ) {
    car = (navigator.appName == "Netscape" ) ? e.which : e.keyCode;
    var key = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    key = String.fromCharCode(whichCode);
    
    var strCheck = 'abcdefghijklmnopqwrstyuvï¿½`ï¿½^~?;:.><,-_)(*&ï¿½%$#@!{[}]ï¿½ï¿½/'; /*'0123456789';*/

    if (strCheck.indexOf(key) != -1){
    	return false;   	
   	}
    if ( ( car < 48 || car > 57 ) && ( car > 31 ) ) return false;
    if ( ( campo.value.length == 2 ) || ( campo.value.length == 5 ) ) {
        if (car != 8) {
        	campo.value += '/';
        }
    }

    return true;
}

function formatarData(campo) { // Formata o campo data
	var key = window.event ? event.keyCode : event.which;
	var data = campo.value;
	var dataOrigem = data;
	var set = 0;
	dataOrigem = replace(dataOrigem, " ", "");
	dataOrigem = replace(dataOrigem, "/", "");

	if (dataOrigem.length == 8) {
		data = dataOrigem.substring(0, 2) + "/" + dataOrigem.substring(2, 4) + "/" + dataOrigem.substring(4, 8);
		set = 1;
	}
	else {
		if (data.length == 2 && data.substring(2, 3) != "/") {
			data += "/";
		}
		else if (data.length == 5 && data.substring(4, 5) != "/") {
			data += "/";
		}
	}
	
	/* Descricao dos keyCodes
	* 8 = backspace
	* 35 = end
	* 36 = home
	* 37 = seta esqueda
	* 39 = seta direita
	* 45 = insert
	* 48 - 57 = numeros no teclado alfabetico
	*/
	if ((key != 8 && key != 37 && key != 39 && key != 35 && key != 36 && key != 45 && key >= 48 && key <= 57) || set == 1) {
		//eval("document.all."+campo.name+".value = '"+data+"'");
		eval("document.all['" + campo.name + "'].value = '" + data + "';");
		return true;
	}
	else{
		return false;
	}
}

function formatarDataC(campo, e){
 	var key = window.event ? e.keyCode : e.which;			
	var data = campo.value;
	var dataOrigem = data;
	var set = 0;
	dataOrigem = replace(dataOrigem, " ", "");
	dataOrigem = replace(dataOrigem, "/", "");

	if(dataOrigem.length == 8){
		data = dataOrigem.substring(0, 2) + "/" + dataOrigem.substring(2, 4) + "/" + dataOrigem.substring(4, 8);
		set = 1;
	}
	else {
		if (data.length == 2 && data.substring(2, 3) != "/") {
			data += "/";
		}
		else if (data.length == 5 && data.substring(4, 5) != "/") {
			data += "/";
		}
	}
	
	/* Descricao dos keyCodes
	* 8 = backspace
	* 35 = end
	* 36 = home
	* 37 = seta esqueda
	* 39 = seta direita
	* 45 = insert
	* 48 - 57 = numeros no teclado alfabetico
	* 96 - 105 = numeros no teclado numerico
	*/
	if ((key != 8 && key != 37 && key != 39 && key != 35 && key != 36 && key != 45 && key >= 48 && key <= 57) || set == 1) {
		//eval("document.all."+campo.name+".value = '"+data+"'");
		eval("document.all['" + campo.name + "'].value = '" + data + "';");
		return true;
	}
	else{
		if (key == 8){
			return true;
		} else {
			return false;
		}
	}
}

function formatarHora(campo) { // Formata o campo Hora
	var key = window.event ? event.keyCode : event.which;
	var hora = campo.value;
	var horaOrigem = hora;
	var set = 0;
	horaOrigem = replace(horaOrigem, " ", "");
	horaOrigem = replace(horaOrigem, ":", "");

    if (horaOrigem.length == 8) {
        hora = horaOrigem.substring(0, 2) + ":" + horaOrigem.substring(2, 4) + ":" + horaOrigem.substring(4, 6);
        set = 1;
    }
    else {
        if (hora.length == 2 && hora.substring(2, 3) != ":") {
            hora += ":";
        }
        else if (hora.length == 5 && hora.substring(4, 5) != ":") {
            hora += ":";
        }
    }
	
	/* Descricao dos keyCodes
	* 8 = backspace
	* 35 = end
	* 36 = home
	* 37 = seta esqueda
	* 39 = seta direita
	* 45 = insert
	* 48 - 57 = numeros no teclado alfabetico
	*/
	if ((key != 8 && key != 37 && key != 39 && key != 35 && key != 36 && key != 45 && key >= 48 && key <= 57) || set == 1) {
		eval("document.all."+campo.name+".value = '"+hora+"'");
		return true;
	}
	else{
		return false;
	}
}

/**
 * formata o telefone com ddd
 * onkeypress="return formataTelefoneComDDD(this, event)"
 */
function formataTelefoneComDDD(campo, event) {
    var key = window.event ? event.keyCode : event.which;
    var retorno = false;
    var valor = "";
    var teste = campo.value;
    
    
    /* Descricao dos keyCodes
    * 0 = Tab
    * 8 = backspace
    * 35 = end
    * 36 = home
    * 37 = seta esqueda
    * 39 = seta direita
    * 45 = insert
    * 48 - 57 = numeros no teclado alfabetico
    */
    if (key == 0 || key == 8){
        return true;
    }
    if ((key != 8 && key != 37 && key != 39 && key != 35 && key != 36 && key != 45 && key >= 48 && key <= 57)) {
        retorno = true;
    }
    else{
        retorno = false;
    }
    
    var teste2 = "";
    
    //tratando o backspace.
    var tamanho = teste.length;
    
    for (var i = 0; i < tamanho; i++) {
        if (!isNaN(teste.charAt(i)) && teste.charAt(i) != " ") {
            teste2 += teste.charAt(i);
        }
    }
    
    if (key == 8 && teste2.length > 0){
        teste2 = teste2.substring(0, teste2.length -1);
    }

    // obtendo o tamanho do texto
    var t1 = teste2.length;
    
    if (t1 <= 1) {
      valor = '(' + teste2;
    } else if (t1 > 1 && t1 <= 5) {
        valor = '(' + teste2.substring(0, 2) + ') ' +  teste2.substring(2);
    } else if (t1 > 5 && t1 <= 9) {
        valor = '(' + teste2.substring(0, 2) + ') ' +  teste2.substring(2, teste2.length - 3) + '-' + teste2.substring(teste2.length - 3);
    } else {
        return false;
    } 
            
    campo.value = valor;
    
    return retorno;
}

/*
*  Funcao para fazer formatacao de Cnpj : 99.999.999/9999.99
*                     99 999 999 999 99         
*  Utilizar da seguinte forma: 
*  onkeypress="return formataCnpj(this);"
*/
function formataCnpj(campo, e) {
    
    car = window.event ? e.keyCode : e.which;
    key = car;
    
    if (key == 0 || key == 8  || key == 9 || key == 37 || 
         key == 39 || key == 35 ||
         key == 36 || key == 45) {

        return true;
    }
    
    if ((key < 48 || key > 57) && (key < 96 || key > 105) && (key != 46)){
        return false;
    }

    switch(campo.value.length){
        case 2:
            campo.value+='.';
            break;
        case 6:
            campo.value+='.';
            break;
        case 10:
            campo.value+='/';
            break;
        case 15:
            campo.value+='-';
            break;
        case 18:
           return false;
    }

    return true;
}

/*
*  Funcao para fazer formatacao de Cnpj : 99.999.999/9999.99
*                     99 999 999 999 99         
*  Utilizar da seguinte forma: 
*  onkeypress="return formataCnpj(this);"
*/
function formatarCnpj(campo) {
    switch(campo.value.length){
        case 2:
            campo.value+='.';
            break;
        case 6:
            campo.value+='.';
            break;
        case 10:
            campo.value+='/';
            break;
        case 15:
            campo.value+='-';
            break;
        case 18:
           return false;
    }

    return true;
}

/*
 *  Funcao para fazer formatacao de CPF : 008.225.764-73
 *                      
 *  Utilizar da seguinte forma: 
 *  onkeypress="return formataCpf(this, event);
*/
function formataCpf(campo, e){
    car = window.event ? e.keyCode : e.which;
    key = car;
    
    if (key == 0 || key == 8  || key == 9 || key == 37 || 
         key == 39 || key == 35 ||
         key == 36 || key == 45) {

        return true;
    }

    if ((key < 48 || key > 57) && (key < 96 || key > 105) && (key != 46)){
        return false;
    }

    switch(campo.value.length) {
        case 3:
            campo.value+='.';
            break;
        case 7:
            campo.value+='.';
            break;
        case 11:
            campo.value+='-';
            break;
        case 14: 
            return false;
    }

    return true;
}

/*
 * Utilizado para formatar valores no formato ###.###,##
 * onblur="FormataValor(this, 2);"
 *
 * Exemplo de filtro de numero:
 * onfocus="FiltraCampo(this);" onblur="FormataValor(this);" onkeypress="return SaltaCampoNumerico(this, 8, event);"
 *
 * @param campo Campo do formulï¿½rio
 * @param decimal Nï¿½mero de casas decimais.
 */
function FormataValor(campo, decimal) {
    campo.value = FiltraCampo(campo);
    vr = campo.value;
    tam = vr.length;
    pre = "";
    if (tam > 0) pre = "0,";

    if ( tam <= decimal ) 
        campo.value = pre + vr;
    if ( (tam > decimal) && (tam <= (decimal + 3)) )
        campo.value = vr.substr( 0, tam - decimal ) + ',' + vr.substr( tam - decimal, tam ); 
    if ( (tam >= (decimal + 4)) && (tam <= (decimal + 6)) )
        campo.value = vr.substr( 0, tam - (decimal + 3) ) + '.' + vr.substr( tam - (decimal + 3), 3 ) + ',' + vr.substr( tam - decimal, tam ); 
    if ( (tam >= (decimal + 7)) && (tam <= (decimal + 9)) ) 
        campo.value = vr.substr( 0, tam - (decimal + 6) ) + '.' + vr.substr( tam - (decimal + 6), 3 ) + '.' + vr.substr( tam - (decimal + 3), 3 ) + ',' + vr.substr( tam - decimal, tam );
    if ( (tam >= (decimal + 10)) && (tam <= (decimal + 12)) ) 
        campo.value = vr.substr( 0, tam - (decimal + 9) ) + '.' + vr.substr( tam - (decimal + 9), 3 ) + '.' + vr.substr( tam - (decimal + 6), 3 ) + '.' + vr.substr( tam - (decimal + 3), 3 ) + ',' + vr.substr( tam - decimal, tam );
    if ( (tam >= (decimal + 13)) && (tam <= (decimal + 15)) )
        campo.value = vr.substr( 0, tam - (decimal + 12) ) + '.' + vr.substr( tam - (decimal + 12), 3 ) + '.' + vr.substr( tam - (decimal + 9), 3 ) + '.' + vr.substr( tam - (decimal + 6), 3 ) + '.' + vr.substr( tam - (decimal + 3), 3 ) + ',' + vr.substr( tam - decimal, tam );
}

/*
 * Utilizado para tirar a formataï¿½ï¿½o de um campo.
 * onblur="FormataValor(this);"
 *
 * Exemplo de filtro de numero:
 * onfocus="FiltraCampo(this);" onblur="FormataValor(this);" onkeypress="return SaltaCampoNumerico(this, 8, event);"
 *
 * @param campo Campo do formulï¿½rio.
 */
function FiltraCampo(campo){
    var s = "";
    var cp = "";
    vr = campo.value;
    tam = vr.length;
    
    for (i = 0; i < tam ; i++) {  
        if (vr.substring(i,i + 1) != "/" && vr.substring(i,i + 1) != "-" && vr.substring(i,i + 1) != "."  && vr.substring(i,i + 1) != "," ) {
            s = s + vr.substring(i,i + 1);
        }
    }
    /*if (parseInt(s) == 0) {
        s = "";
    }*/
    campo.value = s;
    return cp = campo.value;
}

/*
 * Funï¿½ï¿½o utilizada para determinar o tamanho de um campo com formataï¿½ï¿½o.
 * ï¿½ necessario utilizar essa funï¿½ï¿½o nos casos de ter um numero com 8 digitos
 * por exemplo, mas que com formataï¿½ï¿½o ele tenha 10 caracteres, nesse caso o tamanho
 * maximo deve ser controlado via javascript e nï¿½o via maxlength.
 * onkeypress="return SaltaCampo(this, 15, event);"
 *
 * Exemplo de filtro de numero:
 * onfocus="FiltraCampo(this);" onblur="FormataValor(this);" onkeypress="return SaltaCampoNumerico(this, 8, event);"
 *
 * @param campo Campo do formulï¿½rio.
 * @param tammax Numero mï¿½ximo de digitos que o numero poderï¿½ ter.
 * @param event Evento.
 */
function SaltaCampo(campo, tammax, event){
    var tecla = window.event ? event.keyCode : event.which;
    vr = campo.value;
    tam = vr.length;
    
    if (tecla != 0 && tecla != 9 && tecla != 16 ){
        if ( tam >= tammax ){
           return false;
        }
    }
        
}

/*
 * Funï¿½ï¿½o utilizada para determinar o tamanho de um campo com formataï¿½ï¿½o.
 * ï¿½ necessario utilizar essa funï¿½ï¿½o nos casos de ter um numero com 8 digitos
 * por exemplo, mas que com formataï¿½ï¿½o ele tenha 10 caracteres, nesse caso o tamanho
 * maximo deve ser controlado via javascript e nï¿½o via maxlength.
 * onkeypress="return SaltaCampo(this, 15, event);"
 *
 * Exemplo de filtro de numero:
 * onfocus="FiltraCampo(this);" onblur="FormataValor(this);" onkeypress="return SaltaCampoNumerico(this, 8, event);"
 *
 * @param campo Campo do formulï¿½rio.
 * @param tammax Numero mï¿½ximo de digitos que o numero poderï¿½ ter.
 * @param event Evento.
 */
function SaltaCampoNumerico(campo, tammax, event){
    var key = window.event ? event.keyCode : event.which;
    
    if (!formatarCampoNumerico(event)){
        return false;
    }
    
    vr = campo.value;
    tam = vr.length;
    
    if (key == 0 || key == 8  || key == 37 || 
         key == 39 || key == 35 ||
         key == 36 || key == 45 || key == 9) {

        return true;
    } 
    
    if ( tam >= tammax ){
       return false;
    }
        
}

/**
 * Essa funï¿½ï¿½o valida o valor de um campo numero, verificando
 * se a formataï¿½ï¿½o ï¿½ vï¿½lida.
 */
function validaValorNumerico(campo, form, campoOrigem, campoDestino, decimal) {
	var valor = campo.value;
    valor = replace(valor, ",", ".");
    if (valor.indexOf(".") != -1) {
    	var arrValor = valor.split(".");
    	if (arrValor.length > 2) {
    		alert("Digite um valor vï¿½lido.\nEx.: 1000.00");
	    	eval("document." + form + "['" + campoOrigem + "'].value = '';");
	    	eval("document." + form + "['" + campoDestino + "'].value = '';");
	    	eval("document." + form + "['" + campoOrigem + "'].focus();");
    		return false;
    	} else {
    		if (arrValor[1].length > decimal) {
    			valor = arrValor[0] + "." + arrValor[1].substring(0, decimal);
    		}
    	}
    }
    var numero = new Number(valor);
    if(numero.constructor == Number && !isNaN(numero)) {
    	eval("document." + form + "['" + campoOrigem + "'].value = '" + numero + "';");
    	eval("document." + form + "['" + campoDestino + "'].value = '" + numero + "';");
    } else { 
    	alert("Digite um valor vï¿½lido.\nEx.: 1000.00");
    	eval("document." + form + "['" + campoOrigem + "'].value = '';");
    	eval("document." + form + "['" + campoDestino + "'].value = '';");
    	eval("document." + form + "['" + campoOrigem + "'].focus();");
    	return false;
    }
}

/**
 * Essa funï¿½ï¿½o valida o valor de um campo numero, verificando
 * se a formataï¿½ï¿½o ï¿½ vï¿½lida.
 */
function validaValorNumericoEspec(campo, decimal) {
	var valor = campo.value;
    valor = replace(valor, ",", ".");
    if (valor.indexOf(".") != -1) {
    	var arrValor = valor.split(".");
    	if (arrValor.length > 2) {
    		alert("Digite um valor vï¿½lido.\nEx.: 1000.00");
	    	campo.value = '';
	    	campo.focus();
    		return false;
    	} else {
    		if (arrValor[1].length > decimal) {
    			valor = arrValor[0] + "." + arrValor[1].substring(0, decimal);
    		}
    	}
    }
    var numero = new Number(valor);
    if(numero.constructor == Number && !isNaN(numero)) {
    	campo.value = numero;
    } else { 
    	alert("Digite um valor vï¿½lido.\nEx.: 1000.00");
    	campo.value = '';
    	campo.focus();
    	return false;
    }
}

/**
 * Essa funï¿½ï¿½o obtï¿½m um campo formatado e tira a formataï¿½ï¿½o deixando
 * o numero no formato padrï¿½o aceitado pela linguagem.
 */
function tiraFormatacao(form, campoOrigem, campoDestino){
    var valor = eval("document." + form + "['" + campoOrigem + "'].value");

    valor = replace(valor, ".", "");
    valor = replace(valor, ",", ".");
    if (valor != "") {
        eval("document." + form + "['" + campoDestino + "'].value = '" + valor + "';");
    } else {
        eval("document." + form + "['" + campoDestino + "'].value = '';");
    }
}

/**
 * Essa funï¿½ï¿½o obtï¿½m um campo formatado e tira a formataï¿½ï¿½o deixando
 * o numero no formato padrï¿½o aceitado pela linguagem.
 */
function tiraFormatacaoById(form, campoOrigem, campoDestino){
    var valor = eval("document.getElementById('" + campoOrigem + "').value");

    valor = replace(valor, ".", "");
    valor = replace(valor, ",", ".");
    if (valor != "") {
        eval("document.getElementById('" + campoDestino + "').value = '" + valor + "';");
    } else {
        eval("document.getElementById('" + campoDestino + "').value = '';");
    }
}

/**
 * Essa funï¿½ï¿½o foi criada para que a taglib uzzi:numero
 * pudesse atualizar o campo hidden no onblur do campo texto,
 * e como nï¿½o tem como executar duas funï¿½ï¿½es, essa centraliza
 * tudo que se deveria fazer.
 */
function formataValorAtualiza(campo, maxlen, decimal, form, campoOrigem, campoDestino){
    //FormataValor(campo, decimal);
    formatarMoeda(campo, maxlen, decimal, '.', ',');
    tiraFormatacao(form, campoOrigem, campoDestino);
}

/**
 * Essa funï¿½ï¿½o obtï¿½m um valor formatado e tira a formataï¿½ï¿½o deixando
 * o numero no formato padrï¿½o aceitado pela linguagem para um array
 * de campos.
 */
function atualizaArray(form, campoOrigem, campoDestino, posicao){
    formatarMoeda(eval("document." + form + "['" + campoOrigem + "'][" + posicao + "]"), 15, 2, '.', ',');
    var valor = eval("document." + form + "['" + campoOrigem + "'][" + posicao + "].value");

    valor = replace(valor, ".", "");
    valor = replace(valor, ",", ".");
    if (valor != "") {
        eval("document." + form + "['" + campoDestino + "'][" + posicao + "].value = '" + valor + "';");
    } else {
        eval("document." + form + "['" + campoDestino + "'][" + posicao + "].value = '';");
    }
}

/*
 * Formata um valor e arrendonda para duas casas
 * apï¿½s a virgula.
 */
function moedaValue(n){
    var Bstr = "";
    var b = n * 100;
    var c = Math.round(b);
    var Astr = c.toString();
    var Alength = Astr.length;
    if (n == 0){
        return "0,00";
    }
    //if (Alength <= 2) {
    //  Bstr = Bstr + ",";
    //}

    for (i = 0; i < Alength; i++){
        if (i > 2){
            if (((i - 2) % 3) == 0){
                Bstr =  "." + Bstr;
            }
        }
        Bstr = Astr.charAt(Alength - (i + 1)) + Bstr;

        if (i == 1){
            if (Alength == 2) {
                Bstr = "0," + Bstr;
            } else {
                Bstr = "," + Bstr;
            }
        }
    }
    if (Bstr.length == 1) {
        Bstr = "0,0" + Bstr;
    }
    var d = Bstr;

    return d;
}

/*
 * Formata um valor e arrendonda para duas casas
 * apï¿½s a virgula.
 */
function round(value, decimais){
    value = parseFloat(value);
    decimais = parseFloat(decimais);
    p = Math.pow(10, decimais);
    return Math.round(value * p) / p;
}

/*
 * Formata um valor e arrendonda para tres casas
 * apï¿½s a virgula. 
 */
function formataMedida(medida){             
        
	medida = parseFloat(medida.toString().replace(",","."));        
	var parteInteira = parseInt(medida);    
	if(parteInteira != medida){
	      var b = medida * 1000;
	      var medida = Math.ceil(b)/1000;   
	}       
	
	v = medida.toString().split(".");
	valor = "";
	decimal = "";
	inteiro = "";
	if(v[1] != null){           
	  for (i = 0; i < 3; i++){
	    if(v[1].length <= i){
	            decimal = decimal + "0";
	    }else{
	        decimal = decimal + v[1].charAt(i);   
	    }
	    }               
	}else{          
	    decimal = "000";
	}       
	
	tam = v[0].length;  
	var y = 0;
	for (i = tam - 1; i >= 0; i--){         
	        if(y == 3){
	            inteiro = "." + inteiro;
	            y = 0;
	        }       
	    inteiro = v[0].charAt(i) + inteiro; 
	    y++; 
	  }
	
	valor = inteiro + "," + decimal;
	return valor;	 
}

/*
 * Utilizado no calculo da metragem;
 * Arredondando a altura e largura com duas casas decimais, e mï¿½ltiplo de 5 
 */
function arredondaMedida(medida) {       
	medida = parseFloat(replace(medida.toString(),",","."));
    var parteInteira = parseInt(medida);           
	var resto = medida % 5;
	if (parteInteira != medida) {
        //alert("medidaAnt: " + medida + " <-> " + (medida * 100) + " arred: " + arred(parseFloat(20.00699), 3));
        medida = Math.ceil(arred((medida * 100),3));
        resto = medida % 5;
        //alert("medida: " + medida + " - resto: " + resto);
        if (resto != 0 && resto != 5) {
            medida += (5 - resto);
        }
        medida = medida / 100;

    } /*else {
        if (resto != 0 && resto != 5){
            medida += (5 - resto);
        }
    }*/
    //alert("medidaArredondada: " + medida);

    return medida;
}
function arred(value, decimais) {
    p = parseFloat(Math.pow(10, decimais));
    return Math.round(value * p) / p;
}

/**
 * Funcao: MascaraMoeda
 * Sinopse: Mascara de preenchimento de moeda
 * Parametro:
 * objTextBox : Objeto (TextBox)
 * maxlen : Tamanho mï¿½ximo permitido para o campo
 * decimal : Quantas casas decimais serï¿½o usadas
 * SeparadorMilesimo : Caracter separador de milï¿½simos
 * SeparadorDecimal : Caracter separador de decimais
 * e : Evento
 * Retorno: Booleano
 **/
function mascaraMoeda(objTextBox, maxlen, decimal, SeparadorMilesimo, SeparadorDecimal, e){
    var zero = '';
    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 || whichCode == 0) 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 > maxlen) return false; // Tamanho mï¿½ximo
    for (z = 0; z < decimal - len; z++) {
        zero += '0';
    }
    if (len == 0) objTextBox.value = '';
    if (len > 0 && len <= decimal) objTextBox.value = '0' + SeparadorDecimal + zero + aux;
    if (len > decimal) {
        aux2 = '';
        for (j = 0, i = len - (decimal + 1); 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);
            //alert(objTextBox.value);
        }
        objTextBox.value += SeparadorDecimal + aux.substr(len - decimal, len);
    }
    return false;
}

function formatarMoeda(objTextBox, maxlen, decimal, SeparadorMilesimo, SeparadorDecimal) {
    var zero = '';
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != 'x') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++) {
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) {
            aux += objTextBox.value.charAt(i);
        }
    }
    len = aux.length;
    for (z = 0; z < decimal - len; z++) {
        zero += '0';
    }
    if (len == 0) objTextBox.value = '';
    if (len > 0 && len <= decimal) objTextBox.value = '0' + SeparadorDecimal + zero + aux;
    if (len > decimal) {
        aux2 = '';
        for (j = 0, i = len - (decimal + 1); 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 - decimal, len);
    }
}

// ------------------------------------
// -- FUNï¿½ï¿½O MASCARA CAMPO 
// ------------------------------------

function mascaraCampo(campo,formatoMascara,conjuntoVerdade) {
    var valorLimpo = "";
    if (conjuntoVerdade == '')
        valorLimpo = limparCampoPorConjuntoVerdade(campo.value,"0123456789");
    else
        valorLimpo = limparCampoPorConjuntoVerdade(campo.value,conjuntoVerdade);
    var resultado = "";
    var b = 0;
    if(valorLimpo.length != 0){
        for( var a = 0; a < formatoMascara.length ; a++ ) {
            if ( formatoMascara.substring(a,a+1) == "#" ) {
                resultado = resultado + valorLimpo.substring(b,b+1);
                b++;
                if ( b >= valorLimpo.length ) {
                        break;
                }
            } else {
                //if(b < valorLimpo.length)
                resultado = resultado + formatoMascara.substring(a,a+1);
                //b++;
            }
        }
    }
    campo.value = resultado;
}

// ------------------------------------
// -- FUNï¿½ï¿½O LIMPAR UMA STRING
// ------------------------------------
function limparCampoPorConjuntoVerdade(valor,conjuntoVerdade) {
    var resultado = "";
    for( var a = 0; a < valor.length ; a++ ) {
        if ( conjuntoVerdade.indexOf(valor.substring(a,a+1)) >= 0 ) {
            resultado += valor.substring(a,a+1);
        }
    }
    return resultado;
}


// ------------------------------------------------------
// -- FUNï¿½ï¿½O FORMATAR UM DECIMAL COM QUANTAS CASAS QUISER
// ------------------------------------------------------
function formataDecimal(n, casas){
      var Bstr = "";
      var m = "1";
      for(i=0; i<casas; i++) m += "0";
      var b = n * parseInt(m);
      var c = Math.round(b);
      var Astr = c.toString();
      var Alength = Astr.length ;
      if (n == 0){
          var v = "0,";
          for(i=0; i<casas; i++) v += "0";
          return v;
      }
      
      for (i = 0; i < Alength; i++){
          if (i > casas){
              if (((i - casas) % 3) == 0){
                  Bstr =  "." + Bstr;
              } 
          }
          
          Bstr = Astr.charAt(Alength - (i + 1)) + Bstr;
          
          if (i == casas - 1){
              Bstr = "," + Bstr; 
          }
          
      }
      
      if (Bstr.length == casas + 1)
          Bstr = "0" + Bstr;
      var d = Bstr;
      
      return d;
}

function upperTextoNome(e, numero) {
	var ret = false;

	if (document.all) {// Internet Explorer
		var tecla = event.keyCode;
	}
	else if(e) {// Firefox
		var tecla = e.which;
		if (tecla == 0) {
			tecla = e.keyCode;
		}
	}

	ret = this.upperTexto(e, numero);

	if (tecla == 46) { // Ponto
		return false;
	} else if (tecla == 45) { // Traço
		return false;
	} else if (tecla == 64) { // Arroba
		return false;
	} else if (tecla == 95) { // Sublinhado
		return false;
	} else {
		return ret; // Alfabeto maiusculo
	}
}

function upperTexto(e, numero) {
	if (document.all) {// Internet Explorer
		var tecla = event.keyCode;
	}
	else if(e) {// Firefox
		var tecla = e.which;
		if (tecla == 0) {
			tecla = e.keyCode;
		}
	}

	if (tecla == 8 || tecla == 46 || tecla == 9 || tecla == 39 || tecla == 37) { // BACKSPACE - DEL - TAB - LEFT - DOWN
		return true;
	}

	if (tecla > 96 && tecla < 123 && numero < 2) { // Letras minusculas
		if (document.all) {
			event.keyCode = tecla - 32;
		}
	} else if (tecla > 64 && tecla < 91 && numero == 2) {
		if (document.all) {
			event.keyCode = tecla + 32;
		}
	} else if (tecla > 64 && tecla < 91 && numero < 2) { // Letras maiusculas
		return true;
	} else if (tecla > 96 && tecla < 123 && numero == 2) { // Letras maiusculas
		return true;
	} else if (numero >= 1 && tecla > 47 && tecla < 58) { // Números
		return true;
	} else if (tecla == 64) { // Arroba
		return true;
	} else if (tecla == 45) { // Traço
		return true;
	} else if (tecla == 46) { // Ponto
		return true;
	} else if (tecla == 95) { // Sublinhado
		return true;
	} else if (tecla == 32) { // Espaço
		return true;
	} else {
		return false;
	}
}