    function parseReal(valor){
        var val = valor.toString().replace(/\./g,'');
        val = val.replace(',','.');
        return isNaN(parseFloat(val))?0:parseFloat(val);
    }
    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;
    }
    // ========================
    // validar CPF
    function validacpf(s){
    	var i,digitos_iguais=1;
    	if (s.length != 11) return false;
        for (i = 0; i < s.length - 1; i++) if (s.charAt(i) != s.charAt(i + 1)) { digitos_iguais = 0; break; }
    	if(digitos_iguais==1) return false;
     	var c = s.substr(0,9);
      	var dv = s.substr(9,2);
      	var d1 = 0;
      	for (i = 0; i < 9; i++)	d1 += c.charAt(i)*(10-i);
    	if (d1 == 0) return false;
        d1 = 11 - (d1 % 11);
      	if (d1 > 9) d1 = 0;
    	if (dv.charAt(0) != d1)	return false;
      	d1 *= 2;
      	for (i = 0; i < 9; i++) d1 += c.charAt(i)*(11-i);
    	d1 = 11 - (d1 % 11);
      	if (d1 > 9) d1 = 0;
      	if (dv.charAt(1) != d1)	return false;
      	return true;
    }
    // ====================
    // validar CNPJ
    function validacnpj(cnpj) {
    	var numeros, digitos, soma, i, resultado, pos, tamanho;
    	if (cnpj.length != 14) return false;
        var digitos_iguais = 1;
        for (i = 0; i < cnpj.length - 1; i++) if (cnpj.charAt(i) != cnpj.charAt(i + 1)){ digitos_iguais = 0; break;}
        if (digitos_iguais==1) return false;
        tamanho = cnpj.length - 2
    	numeros = cnpj.substring(0,tamanho);
    	digitos = cnpj.substring(tamanho);
    	soma = 0;
    	pos = tamanho - 7;
    	for (i = tamanho; i >= 1; i--){ soma += numeros.charAt(tamanho - i) * pos--; if (pos < 2) pos = 9; }
    	resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
    	if (resultado != digitos.charAt(0))	return false;
    	tamanho = tamanho + 1;
    	numeros = cnpj.substring(0,tamanho);
    	soma = 0;
    	pos = tamanho - 7;
    	for (i = tamanho; i >= 1; i--){ soma += numeros.charAt(tamanho - i) * pos--; if (pos < 2) pos = 9; }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))	return false;
        return true;
    }

        function validacaoCpfCnpj(obj){
            
            var old = obj;
            var n = "",valids = "0123456789",cpf="000.000.000-00",cnpj="00.000.000/0000-00";
            var i = 0,valid = false;
            for(i=0;i<old.length;i++) {
                if(valids.indexOf(old.charAt(i))>=0) n += old.charAt(i);
            }
            
            if(n.length==11){
                valid = validacpf(n);
                if(valid==false && n!=""){
                    alert('Atenção: O CPF informado é inválido!');
                }
            }else if(n.length==14){
                valid = validacnpj(n);
                if(valid==false && n!=""){
                    alert('Atenção: O CNPJ informado é inválido!');
                }
            }else{
                alert('Atenção: Este campo não foi digitado corretamente');
                //FFW.g('')
            }
        }

 var moeda = {
 	
	/**
	 * retiraFormatacao
	 * 
	 * Remove a formatação de uma string de moeda e retorna um float
	 * 
	 * @param {Object} num
	 */
	 desformatar: function(num){
	   num = num.replace(".","");
	
	   num = num.replace(",",".");
	
	   return parseFloat(num);
	},

	/**
	 * formatar
	 * 
	 * Deixar um valor float no formato monetário
	 * 
	 * @param {Object} num
	 */
	formatar: function(num){
	   x = 0;
	
	   if(num<0){
	      num = Math.abs(num);
	      x = 1;
	   }
	
	   if(isNaN(num)) num = "0";
	      cents = Math.floor((num*100+0.5)%100);

	   num = Math.floor((num*100+0.5)/100).toString();
	
	   if(cents < 10) cents = "0" + cents;
	      for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	         num = num.substring(0,num.length-(4*i+3))+'.'
	               +num.substring(num.length-(4*i+3));
	
	   ret = num + ',' + cents;
	
	   if (x == 1) ret = ' - ' + ret;return ret;
	},
	
	/**
	 * arredondar
	 * 
	 * @abstract Arredonda um valor quebrado para duas casas decimais.
	 * 
	 * @param {Object} num
	 */
	arredondar: function(num){
		return Math.round(num*Math.pow(10,2))/Math.pow(10,2);
	}
 }


    function calculaContribuicao(tipo){
        if(tipo == 'f'){
            var valorImposto = parseReal(FFW.g('valor_imposto').value)/100;
            var valorContribuicao = valorImposto*6;
            FFW.g('total_calculadora').value = moeda.formatar(valorContribuicao);  
        }else if(tipo == 'j'){
            var valorImposto = parseReal(FFW.g('valor_imposto').value)/100;
            var valorContribuicao = valorImposto;
            FFW.g('total_calculadora').value = moeda.formatar(valorContribuicao); 
        }
    }
    function copiaContribuicao(){
        FFW.g('valor_contribuicao').value = FFW.g('total_calculadora').value;
    }

    function trataValidaEmailBco(result){
        if(result.responseText == 'n')
            alert('Atenção: O E-Mail informado já está cadastrado em nossa base de dados!');
    }
    
    function validaEmailBco(email){
        
        var busca = new FFW.ajax.ajse('iss.php',trataValidaEmailBco,'UTF-8');
        busca.query('iss=valid.email&email='+email, 'GET');
    }

    function horizontal() {
     
       var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
        
       for (var i=0; i< navItems.length; i++) {
          if(navItems[i].className == "submenu"){
             if(navItems[i].getElementsByTagName('ul')[0] != null){
                navItems[i].onmouseover=function() {this.getElementsByTagName('ul')[0].style.display="block";this.style.backgroundColor = "";
    				display_sub_items(this.getElementsByTagName('ul')[0]);}
                navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";this.style.backgroundColor = "";}
             }
          }
       }
     
    }

    function display_sub_items(ul) {
    	var lis = ul.getElementsByTagName('li');
    	for (var i = 0; i < lis.length; i++) {
    		var subul = lis[i].getElementsByTagName('ul')[0];
    		if (subul != null) {
    			lis[i].onmouseover=function() {this.getElementsByTagName('ul')[0].style.display="block";
    				display_sub_items(this.getElementsByTagName('ul')[0]);}
    			lis[i].onmouseout= function() {this.getElementsByTagName('ul')[0].style.display="none";}
    		}
    	}
    }