/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

$(function(){

    var jqIVdefault = {};

    $.fn.jqIdVeiculo = function(o) {
        var opts = $.extend({
            url:           "",                // codigo da tipo
            tipo:          0,                // codigo da tipo
            fk:            0,                // chave estrangeira (FK) utilizada para filtro
            dsccampo:      "tipo",           // nome descritivo do campo a ser carregado
            label:         "Selecione",      // label apos carregar
            loading:       "Carregando...",  // label enquanto esta carregando
            estoque:       true,             // apenas os veiculos em estoque
            exibirtotal:   true,             // indica se deve exibir o total (apenas qd filtrar apenas estoque)
            fstlabeltotal: "veículo",        // label do total de veículos no primeiro item (fst=first)
            maioresfst:    true,             // veiculos maiores por primeiro (true/false)
            inicial:       ""                // o "option" com esse value sera marcado por default
        }, o);

        fstcarros = [ 3, 12, 2, 4, 15, 5, 6, 1, 0 ];

        return this.each(function(){
            obj = this;
            $(this).find("option").remove().append("<option value=\"\">" + opts.loading + "</option>");

            if ( opts.url == "" ) {
                url = ( opts.estoque === true ) ? "/ajax/formtipomarcamodeloestoque.php" : "/ajax/formtipomarcamodelo.php";
            } else {
                url = opts.url;
            }
            var dadosstr1 = "";
            var dadosstr2 = "";


            // carrega os dados
            $.getJSON(
                url,
                { input: opts.dsccampo, filtro: opts.fk, categoria: opts.tipo },
                function(data) {
                    $.each( data.rows, function(i,item) {
                        dsctotal = ( opts.estoque && opts.dsccampo != "tipo" ) ? item[2] : null;
                        if ( opts.dsccampo == "marca" && opts.maioresfst && $.inArray(parseInt(item[0]),fstcarros) >= 0 ) {
                            dadosstr1 += ',{ id:' + item[0] + ', dsc:"' + item[1] + '", total: ' + dsctotal + ' }';
                        } else {
                            dadosstr2 += ',{ id:' + item[0] + ', dsc:"' + item[1] + '", total: ' + dsctotal + ' }';
                        }
                    });
                    if ( dadosstr1.length > 0 ) {
                        dadosstr1 += ",{id:0,dsc:\"\",total:0}";
                        dadosstr1 = dadosstr1.substr(1);
                    }
                    if ( dadosstr1.length <= 0 && dadosstr2.length > 0 ) dadosstr2 = dadosstr2.substr(1);
                    dados = eval("[" + dadosstr1 + dadosstr2 + "]");

                    // remove todos os itens atuais e adiciona o primeiro elemento
                    $(obj).find("option").remove();
                    $(obj).removeAttr("disabled").append("<option value=\"\">" + opts.label + "</option>"); // adiciona o primeiro item

                    $.each( dados, function(i, item) {
                        // verifica qual (e se ja tem) valor default
                        switch ( opts.dsccampo ) {
                            case "tipo": flgdefaultload = jqIVdefault.tipo; break;
                            case "marca": flgdefaultload = jqIVdefault.marca; break;
                            case "modelo": flgdefaultload = jqIVdefault.modelo; break;
                        }

                        selected = ( flgdefaultload == undefined && opts.inicial == item.id && opts.inicial != "" ) ? " selected=\"selected\"" : "" ;
                        txtoption = item.dsc;
                        if ( opts.exibirtotal && opts.estoque && opts.dsccampo != "tipo" && txtoption != "" ) {
                            txtoption += " (" + parseInt(item.total);
                            if ( opts.fstlabeltotal != "" && i == 0 ) {
                                txtoption += " " + opts.fstlabeltotal;
                                txtoption += ( parseInt(item.total) > 1 ) ? "s" : "";
                            }
                            txtoption += ")";
                        }
                        $(obj).append("<option value=\"" + item.id + "\"" + selected + ">" + txtoption + "</option>");
                    });

                    if ( $(obj).val() > 0 ) $(obj).trigger("change");

                    if ( opts.dsccampo == "tipo" ) {
                        if ( opts.inicial != "" ) jqIVdefault.tipo = false;

                    } else if ( opts.dsccampo == "marca" ) {
                        if ( opts.inicial != "" ) jqIVdefault.marca = false;

                    } else if ( opts.dsccampo == "modelo" ) {
                        if ( opts.inicial != "" ) jqIVdefault.modelo = false;
                    }

                }
            );


        });


    }
});
