var numEtapa = 0;
var carrousselTopo = null;
var tamamanhoMax = 0;
var tamamanhoMin = 0;
var quantidadeEmp = 0;
var quantidadeInput = 0;

$(document).ready(function()
{
    $("#idEstado").bind("change",function(){
        //QUANDO MUDAREM O ESTADO, RESETA O TIPO DE BUSCA
        jQuery("#tipoBuscaAtivo").val(1);    
        jQuery(".botoes").each(function(){ jQuery(this).removeClass("ativo"); });
        jQuery(".botoes").eq(0).addClass("ativo");
        
        setIdEstado(jQuery(this).val(),true);
    });
    
    $(".holder-inputs .fechar").bind("click",function(){
        jQuery(".bg-filtros-new").fadeOut('slow');
        jQuery(".botoes").each(function(){
            jQuery(this).removeClass("ativo");     
        });
    });
    
    $("#selectIdCidade").bind("change",function(){
        setIdCidade(jQuery(this).val());
    });
    
    $(".content-1,.content-2,.content-3").live("click",function(){
        voltar();
    });
    
    jQuery(".inputs ul li input").live("click",function(){
        
        if (jQuery(this).attr('id') == 'chkFiltroTodos'){
            jQuery(".inputs ul li input:checked").each(function(){
                jQuery(this).attr('checked',false);
            });
            jQuery(this).attr('checked',true);
        }
        else{
           jQuery('#chkFiltroTodos').attr('checked',false);
        }
        
        quantidadeInput = 0;
        var inputVal = "";
        var inputName = "";
        jQuery(".inputs ul li input:checked").each(function(){
            var split = jQuery(this).attr('name').split('|');
            quantidadeInput += parseInt(split[2]);
            inputName = split[1];
            inputVal += split[0]+",";
        });
        
        inputVal = inputVal.substr(0, (inputVal.length -1 ));
        
        if(quantidadeInput > 0 && quantidadeEmp >= quantidadeInput)
            setQuantidadeResultados(quantidadeInput);
        else{
            jQuery('#chkFiltroTodos').attr('checked',true);
            setQuantidadeResultados(quantidadeEmp);
        }

        switch(numEtapa)
        {
            case 2:
                if(jQuery("#tipoBuscaAtivo").val() != 3)
                    jQuery("#idBairro").val(inputVal);
            break;
        
            case 3:
                if(jQuery("#tipoBuscaAtivo").val() == 1)
                    jQuery("#idTipoempreendimento").val(inputVal);
                 if(jQuery("#tipoBuscaAtivo").val() == 3)
                    jQuery("#idBairro").val(inputVal);
            break;
        
            case 4:
                if(jQuery("#tipoBuscaAtivo").val() == 1)
                    jQuery("#idNumdormitoriocriterio").val(inputVal);
                else
                    jQuery("#idEtapa").val(inputVal);
            break;
        }
    });
});


function nextStep()
{
    if(quantidadeInput > 0)
        quantidadeEmp = quantidadeInput;
    
    switch(numEtapa)
    {
        case 2:
            if(jQuery("#tipoBuscaAtivo").val() != 3)
                setIdBairro(0, false);
            else
                 setPrecoempreendimento();
        break;
        case 3:
            if(jQuery("#tipoBuscaAtivo").val() == 1)
                setIdTipoempreendimento(0, false);
            if(jQuery("#tipoBuscaAtivo").val() == 2)
                setTamanhoempreendimento();
            if(jQuery("#tipoBuscaAtivo").val() == 3)
                setIdBairro(0, false);
        break;
        case 4:
            $("#formTopSearch").submit();  
        break;
    }
}


function getIdEtapa(min, max, tipo)
{
    jQuery.ajax({
        url		: '_services/AJAX-getFiltrosSlider.php',
        cache	: false,
        type	: 'POST',
        data:
        {
            idEstado:jQuery("#idEstado").val(),
            valMin: min,
            valMax: max,
            tipo: tipo,
            tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
        },
        success	: function(data)
        {
            var ids = "";
            if(tipo == 'val')
            {
                jQuery("#idFaixapreco").val(data);
                ids = jQuery("#idFaixapreco").val();
            }
            else
            {
                jQuery("#idTamanhocriterio").val(data);
                ids = jQuery("#idTamanhocriterio").val();
            }
            
            jQuery.ajax({
                url		: '_services/AJAX-getFiltrosSlider.php',
                cache	: false,
                type	: 'POST',
                data:
                {
                    
                        
                    tipo: 'num_'+tipo,
                    ids: ids,
                    idEstado:jQuery("#idEstado").val(),
                    tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
                },
                success	: function(res)
                {
                    setQuantidadeResultados(res);
                    //jQuery("#btBuscar").html(res);
                }
            });
        }
    });
}

function startSlider(tamMin, tamMax, etapa)
{
    var max = parseInt(tamMax);
    var min = parseInt(tamMin)
    var maxInicial = max;
    var minInicial = min;
    
    
    var step = 10000;
    if(etapa == 'tam')
        step = 1;
    else
    {
        minInicial += 50000;
        maxInicial -= 50000;
    }
    
    
    var data = '<div id="slider"></div><div id="amount"></div>';
    jQuery(".bg-filtros-new .holder-inputs .inputs").html(data);    
    
    // Slider
    $(function(){
        $('#slider').slider({
            range: true,
            min: min,
            max: max,
            values: [minInicial, maxInicial],
            step: step,
            slide: function( event, ui ) {
                if(etapa == 'tam')
                    $( "#amount" ).html(ui.values[0]+"m<sup>2</sup> à "+ui.values[1]+"m<sup>2</sup>" );
                else
                    $( "#amount" ).html( "R$" + number_format(ui.values[0], 0, ',', '.') + " à R$" + number_format(ui.values[1], 0, ',', '.') );
                
                tamamanhoMin = ui.values[0];
                tamamanhoMax = ui.values[1];
            },
            stop: function()
            {
                getIdEtapa(tamamanhoMin, tamamanhoMax, etapa);
            }
        });
    });
    
    if(etapa == 'tam')
        $("#amount").html($( "#slider" ).slider( "values", 0 )+"m<sup>2</sup> à " + $("#slider").slider("values", 1)+"m<sup>2</sup>");
    else
        $("#amount").html( "R$ " + number_format($( "#slider" ).slider( "values", 0 ), 0, ',', '.') + " à R$ " + number_format($("#slider").slider("values", 1), 0, ',', '.'));
    
    tamamanhoMin = tamMin;
    tamamanhoMax = max;
}

function tipoBusca(tipo)
{
    jQuery(".inputs").html('');
    
    numEtapa = 0;
    quantidadeEmp = 0;
    quantidadeInput = 0;
    
    if(jQuery(".bg-filtros-new").css('display') == "none")
        jQuery(".bg-filtros-new").show();
    
    jQuery("#tipoBuscaAtivo").val(tipo);
    
    //Guarda a cidade que estava selecionada, para quando atualizar o select, voltar o valor anterior
    var idCidadeAntigo = jQuery("#selectIdCidade option:selected").val();
    
    //Sempre que trocar o tipo de busca, seta o estado novamente, recarregando as cidades, para garantir que exista cidades nesse tipo
    setIdEstado(jQuery("#idEstado option:selected").val(),true);
    
    if(jQuery(".botoes").eq(tipo-1).hasClass('ativo'))
    {
        jQuery(".botoes").eq(tipo-1).removeClass('ativo')
        jQuery(".bg-filtros-new").hide();
    }
    else
    {
        jQuery(".botoes").each(function(){
            jQuery(this).removeClass("ativo");     
        });
        
        jQuery(".botoes").eq(tipo-1).toggleClass("ativo");    
    }
    
}


function setIdEstado(idEstado,setCidade,callbackname)
{
    var buscaResidencial = 0;
    var buscaComercial   = 0;
        
    //VALIDA TIPOS DE BUSCA
    for(var contEstado=0; contEstado<arEstado.length; contEstado++){
        var estado = arEstado[contEstado][0];        
        if (estado != idEstado) continue;
        
        var buscaResidencial = 0;
        var buscaComercial   = 0;
        
        //RESIDENCIAL idTipoempreendimento in (1,2,3,7,9,10,11)        
        //COMERCIAL idTipoempreendimento in (4,5,6,8)
        
        for(var contTipoempreendimento=1; contTipoempreendimento<arEstado[contEstado].length; contTipoempreendimento++){
            if (arEstado[contEstado][contTipoempreendimento] ==  4 || arEstado[contEstado][contTipoempreendimento] ==  5 || arEstado[contEstado][contTipoempreendimento] ==  6 || arEstado[contEstado][contTipoempreendimento] ==  8)
                buscaComercial = 1;
            else
                buscaResidencial = 1;
        }
    }
    
    //SETA idCidade
    jQuery("#idEstadoBusca").val(idEstado);
    
    //MOSTRA TODOS OS TIPOS DE BUSCA
    jQuery(".buscaResidencial").show();
    jQuery(".buscaComercial").show();
    
    if (buscaComercial == 0){
        jQuery(".buscaComercial").hide();
    }
    if (buscaResidencial == 0){
        jQuery(".buscaResidencial").hide();
    }
    
    countNumEtapa();

    //resetContent();
    
    //RESETA OS PROXIMOS PARAMETROS DE FILTRO
    idCidade = 0;
    idBairro = 0;
    idTipoempreendimento = 0;
    
    //RESETA OS PROXIMOS PARAMETROS DE FILTRO
    jQuery("#idCidade").val('0');
    jQuery("#idBairro").val('0');
    jQuery("#idTipoempreendimento").val('0');
    jQuery("#idNumdormitoriocriterio").val('0');
    jQuery("#idTamanhocriterio").val('0');
    jQuery("#idFaixapreco").val('0');
    jQuery("#idEtapa").val('0');
    
    //SENAO VIER O TIPO DE BUSCA, SETA INVESTIMENTO, O MAIS GENERICO
    if (jQuery("#tipoBuscaAtivo").val() == '') jQuery("#tipoBuscaAtivo").val('3');
    
    jQuery.ajax({
        url		: '_services/AJAX-getFiltros.php',
        cache	: false,
        type	: 'POST',
        data:
        {
            idEstado:idEstado,
            getItem:'Cidades',
            tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
        },
        dataType: 'html',
        error	: function()
        {
            
        },
        success	: function(data)
        {
            var idCidadeAntigo = jQuery("#selectIdCidade option:selected").val();
            
            //alert(data);
            jQuery("#selectIdCidade").html(data);
            
            //SE A CIDADE QUE ESTAVA SELECIONADA ANTES, VIER NOVAMENTE, SETA ELA
            jQuery("#selectIdCidade option").each(function(){
                if (jQuery(this).val() == idCidadeAntigo){
                    limpaSelected(jQuery("#selectIdCidade option"));
                    jQuery(this).attr('selected','selected');
                    jQuery("#idCidade").val(idCidadeAntigo);
                }
            });
            
            if(setCidade == true)
            {
                setIdCidade(jQuery("#selectIdCidade option:selected").val());
                
                /*
                jQuery('.lnkImoveis a').each(function(){
                    var idCidade = jQuery("#selectIdCidade option:selected").val();
                    idCidade = idCidade.substr(0,idCidade.indexOf('|'));
                    
                    jQuery(this).attr('href','busca.php#'+idEstado+'/'+idCidade+'/0/0/0/0/0/0/1');
                });
                */
            }
            
            //EXECUTA a função de callback passada    
            if (callbackname != undefined){
                window[callbackname]();
            }
            
        }
    });
}


function limpaSelected(obj)
{
    obj.each(function(){
        jQuery(this).removeAttr('selected');
    });
}

function setQuantidadeResultados(quantidadeEmp){
    //SETA QTD RESULTADOS
    if (quantidadeEmp > 0){
        if (quantidadeEmp == 1)
            jQuery("#lblTipofiltro").html('imóvel localizado.');
        else
            jQuery("#lblTipofiltro").html('imóveis localizados.');
            
        jQuery("#btBuscar").html(quantidadeEmp);        
    }
    else{
        jQuery("#lblTipofiltro").html('Nenhum imóvel localizado.');
        jQuery("#btBuscar").html(0);
    }
}

function setIdCidade(id, callbackname)
{
    if (id == '' || id == undefined) return false;
    
    if (id.indexOf('|') < 0) id = id+'|';
    
    //RECEBE O PARAMETRO E SETA NOVAMENTE O SELECT E O HIDDEN, POIS NEM SEMPRE VEM DO CLIQUE NO SELECT    
    jQuery("#selectIdCidade option").each(function(){
        if (jQuery(this).val().indexOf(id) == 0){
            limpaSelected(jQuery("#selectIdCidade option"));
            jQuery(this).attr('selected','selected');
        }
    });
    
    countNumEtapa();
    
    var idCidade = id.substr(0,id.indexOf('|'));
    quantidadeEmp = id.substr(id.indexOf('|')+1);
    
    //SETA idCidade
    jQuery("#idCidade").val(idCidade);
    
    //SETA QTD RESULTADOS
    setQuantidadeResultados(quantidadeEmp);
        
    //RESETA OS PROXIMOS PARAMETROS DE FILTRO
    jQuery("#idBairro").val('0'); 
    jQuery("#idTipoempreendimento").val('0');
    jQuery("#idNumdormitoriocriterio").val('0');
    jQuery("#idTamanhocriterio").val('0');
    jQuery("#idFaixapreco").val('0');
    jQuery("#idEtapa").val('0');
    
    if (jQuery("#tipoBuscaAtivo").val() == 1 || jQuery("#tipoBuscaAtivo").val() == 2){        
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:idCidade,
                getItem:'Bairro',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                var bairros = "<ul>"+data+"</ul>";
                jQuery(".bg-filtros-new .holder-inputs .inputs").html(bairros);
                //resetCarroussel();
                
                jQuery(".fase-atual p.fase").html('<p>Escolha o bairro</p>');
                
                if (jQuery(".inputs ul li").length == 1)
                {
                    var params = jQuery(".inputs ul li input").attr('name').split('|');
                    quantidadeEmp = params[2];
                    setIdBairro(params[0], true);
                }
                
                //EXECUTA a função de callback passada    
                if (callbackname != undefined){
                    window[callbackname]();
                }
            }
        });
    }
    
    if (jQuery("#tipoBuscaAtivo").val() == 3)
    {
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:idCidade,
                getItem:'Valor',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                var obj = jQuery.parseJSON(data);
                
                if (obj.min != undefined && obj.max != undefined)
                {
                    jQuery(".fase-atual p.fase").html('<p>Escolha o valor do empreendimento.<p>');
                    startSlider(obj.min, obj.max, 'val');
                }
                else
                {
                    setPrecoempreendimento(obj.id);
                }
                
            }
        });
    }
}



function setIdBairro(id, setQtd)
{
    countNumEtapa();

    //SETA idBairro
    if(id > 0)
        jQuery("#idBairro").val(id);
    
    //SETA QTD RESULTADOS    
    if(setQtd)
    {
        setQuantidadeResultados(quantidadeEmp);
    }
    
    if (jQuery("#tipoBuscaAtivo").val() == 1){
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:jQuery("#idCidade").val(),
                idBairro:jQuery("#idBairro").val(),
                getItem:'Tipo',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                if (data != '' && data != undefined)
                {
                    var tipos = "<ul>"+data+"</ul>";
                    jQuery(".bg-filtros-new .holder-inputs .inputs").html(tipos);
                    jQuery(".fase-atual p.fase").html('<p>Escolha o tipo de imóvel<p>');
                    
                    if (jQuery(".inputs ul li").length == 1)
                    {
                        var params = jQuery(".inputs ul li input").attr('name').split('|');
                        quantidadeEmp = params[2];
                        setIdTipoempreendimento(params[0])
                    }
                }
                else
                {
                    $("#formTopSearch").submit();
                }
            }
        });
    }
    if (jQuery("#tipoBuscaAtivo").val() == 2){
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:jQuery("#idCidade").val(),
                idBairro:jQuery("#idBairro").val(),
                getItem:'Metragem',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                var obj = jQuery.parseJSON(data);
                
                if (obj.min && obj.max)
                {
                    jQuery(".fase-atual p.fase").html('<p>Escolha o valor do empreendimento.<p>');
                    startSlider(obj.min, obj.max, 'tam');
                }
                else
                {
                    setTamanhoempreendimento(obj.id);
                }
            }
        });
    }
    
    if(jQuery("#tipoBuscaAtivo").val() == 3)
    {
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:jQuery("#idCidade").val(),
                idFaixapreco:jQuery("#idFaixapreco").val(),
                idBairro:jQuery("#idBairro").val(),
                getItem:'Etapa da obra',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                if (data != '' && data != undefined)
                {
                    var etapa = "<ul>"+data+"</ul>";
                    jQuery(".bg-filtros-new .holder-inputs .inputs").html(etapa);
                    jQuery(".fase-atual p.fase").html('<p>Escolha a etapa da obra<p>');
                    
                    if (jQuery(".inputs ul li").length == 1)
                    {
                        var params = jQuery(".inputs ul li input").attr('name').split('|');
                        quantidadeEmp = params[2];
                        setEtapaempreendimento(params[0]);
                    }
                }
                else
                {
                    $("#formTopSearch").submit();
                }
            }
        });
    }
    
}

function setTamanhoempreendimento(id, setQtd)
{
    countNumEtapa();

    //SETA idTipoempreendimento
    if(id > 0)
        jQuery("#idTamanhocriterio").val(id);
    
    //SETA QTD RESULTADOS
    if(setQtd)
    {
        setQuantidadeResultados(quantidadeEmp);
    }
    
    if (jQuery("#tipoBuscaAtivo").val() == 2){
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:jQuery("#idCidade").val(),
                idBairro:jQuery("#idBairro").val(),
                idTamanhocriterio: jQuery("#idTamanhocriterio").val(),
                getItem:'Valor',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                var obj = jQuery.parseJSON(data);
                
                if (obj.min != undefined && obj.max != undefined)
                {
                    jQuery(".fase-atual p.fase").html('<p>Escolha o valor do empreendimento.<p>');
                    startSlider(obj.min, obj.max, 'val');
                }
                else
                {
                    $("#formTopSearch").submit();
                }
                
            }
        });
    }
}

function setPrecoempreendimento(id, setQtd)
{
    countNumEtapa();

    //SETA idTipoempreendimento
    if(id > 0)
        jQuery("#idFaixapreco").val(id);
    
    //SETA QTD RESULTADOS
    if(setQtd)
    {
        setQuantidadeResultados(quantidadeEmp);
    }
    
    
    if (jQuery("#tipoBuscaAtivo").val() == 3){
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:jQuery("#idCidade").val(),
                idFaixapreco:jQuery("#idFaixapreco").val(),
                getItem:'Bairro',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                if (data != '' && data != undefined)
                {
                    var bairro = "<ul>"+data+"</ul>";
                    jQuery(".bg-filtros-new .holder-inputs .inputs").html(bairro);
                    jQuery(".fase-atual p.fase").html('<p>Escolha o bairro<p>');   
                    
                    if (jQuery(".inputs ul li").length == 1)
                    {
                        var params = jQuery(".carroussel-filtros ul li span").attr('name').split('|');
                        quantidadeEmp = params[2];
                        setIdBairro(params[0]);
                    }
                } 
                else
                {
                    $("#formTopSearch").submit();
                }
            }
        });
    }
    
}

function setIdTipoempreendimento(id, setQtd)
{
    countNumEtapa();

    //SETA idTipoempreendimento
    if(id > 0)
        jQuery("#idTipoempreendimento").val(id);
    
    //SETA QTD RESULTADOS
     if(setQtd !== false)
    {
        setQuantidadeResultados(quantidadeEmp);
    }
    
    if (jQuery("#tipoBuscaAtivo").val() == 1){
        jQuery.ajax({
            url		: '_services/AJAX-getFiltros.php',
            cache	: false,
            type	: 'POST',
            data:
            {
                idEstado:jQuery("#idEstado").val(),
                idCidade:jQuery("#idCidade").val(),
                idBairro:jQuery("#idBairro").val(),
                idTipoempreendimento:jQuery("#idTipoempreendimento").val(),
                getItem:'Dormitorios',
                tipoBuscaAtivo:jQuery("#tipoBuscaAtivo").val()
            },
            dataType: 'html',
            error	: function()
            {
                
            },
            success	: function(data)
            {
                if (data != '' && data != undefined)
                {
                    var dorms = "<ul>"+data+"</ul>";
                    jQuery(".bg-filtros-new .holder-inputs .inputs").html(dorms);
                    
                    if(jQuery("#idEstado").val() == 1)
                        jQuery(".fase-atual p.fase").html('<p>Escolha a quantidade de dormitórios<p>');
                    else
                        jQuery(".fase-atual p.fase").html('<p>Escolha a quantidade de quartos<p>');
                        
                    if(jQuery(".inputs ul li").length == 1)
                    {
                        var params = jQuery(".inputs ul li input").attr('name').split('|');
                        setQtdDormitorio(params[0],params[1],params[2])
                    }
                }
                else
                {
                    $("#formTopSearch").submit();               
                }
            }
        });
    }
}


function voltar()
{
    var tipoBuscaAtivo = jQuery("#tipoBuscaAtivo").val();    
    tipoBusca(tipoBuscaAtivo);    
}

function countNumEtapa()
{
    numEtapa += 1;
    if(numEtapa >= 4) numEtapa = 4;
}

function setEtapaempreendimento(id,nome,qtd)
{
    countNumEtapa();
    //SETA idNumdormitoriocriterio
    jQuery("#idEtapa").val(id);
    //SETA QTD RESULTADOS
    setQuantidadeResultados(qtd);
}

function setQtdDormitorio(id,nome,qtd)
{
    countNumEtapa();
    //SETA idNumdormitoriocriterio
    jQuery("#idNumdormitoriocriterio").val(id);
    //SETA QTD RESULTADOS
    setQuantidadeResultados(qtd);
}

function number_format(number, decimals, dec_point, thousands_sep)
{
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
        
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

