
$(function() {



    var find = $('#find');
    find.on('click', function(event) {

        event.preventDefault();
        var address = $('[name=address]');

        $.get('http://maps.googleapis.com/maps/api/geocode/json?sensor=true&region=es&address=' + address.val())
                .success(function(data) {
                    if (data.status === 'OK') {
                        $('#provincia').hide();
                        var result = data.results.shift();
                        $('[name="condicion[latitud]"]').val(result.geometry.location.lat);
                        $('[name="condicion[longitud]"]').val(result.geometry.location.lng);
                        change();
                        address.val(result.formatted_address);
                    } else if (data.status === 'ZERO_RESULTS') {
                        $('[name="condicion[latitud]"]').val('');
                        $('[name="condicion[longitud]"]').val('');
                        $('#provincia').show();
                    }
                });

    });


    function compruebaColores(datos) {

        $('#colores input').each(function(index) {
            $('#color_' + $(this).val()).parent().addClass('disable');
            $('#color_' + $(this).val()).text('0');
            $(this).attr("disabled", true);
        });

        $.each(datos, function(i, colores) {
            var input_val = colores.ID;
            $('#color_' + input_val).parent().removeClass('disable');
            $('#color_' + input_val).parent().siblings().attr("disabled", false);
            $('#color_' + input_val).text(colores.COUNT);
        });

    }

    function compruebaCarrocerias(datos) {

        $('#carrocerias input').each(function(index) {
            $('#carroceria_' + $(this).val()).parent().addClass('disable');
            $('#carroceria_' + $(this).val()).text('0');
            $(this).attr("disabled", true);
        });

        $.each(datos, function(i, carrocerias) {
            var input_val = carrocerias.ID;
            $('#carroceria_' + input_val).parent().removeClass('disable');
            $('#carroceria_' + input_val).parent().siblings().attr("disabled", false);
            $('#carroceria_' + input_val).text(carrocerias.COUNT);
        });

    }

    function compruebaCombustibles(datos) {

        $('#combustibles input').each(function(index) {
            $('#combustible_' + $(this).val()).parent().addClass('disable');
            $('#combustible_' + $(this).val()).text('0');
            $(this).attr("disabled", true);
        });

        $.each(datos, function(i, combustible) {
            var input_val = combustible.ID;
            $('#combustible_' + input_val).parent().removeClass('disable');
            $('#combustible_' + input_val).parent().siblings().attr("disabled", false);
            $('#combustible_' + input_val).text(combustible.COUNT);
        });

    }

    function pintaAnucios(datos) {
        $('#flu').empty();
        $.each(datos, function(id, valor) {
            var coche = {
                'slug_ficha': valor.slug_ficha,
                'id': valor.id,
                'marca': valor.marca,
                'modelo': valor.modelo,
                'version': valor.version,
                'nombre': valor.nombre,
                'precioFormat': valor.precioFormat,
                'referencia': valor.referencia,
                'foto': valor.foto,
                'potencia': valor.potencia,
                'potenciakw': valor.potenciakw,
                'km': valor.km,
                'fecha': valor.fecha,
                'ano': valor.ano,
                'combustible': valor.combustibleSeo,
                'pintura': valor.pintura,
                'provincia': valor.provincia,
                'precioOferta': valor.precioOferta,
                'concesionario': valor.concesionario,
                'esFavorito': valor.esFavorito,
                'esComparativa': valor.esComparativa,
                'antiguedad': valor.antiguedad,
                'marca_lower': valor.marca_lower,
                'tieneFoto': valor.tieneFoto,
                'fotoResultados': valor.fotoResultados,
                'tipo_vehiculo': valor.tipo_vehiculo,
                'es_plus': valor.es_plus,
                'es_dasweltauto': valor.es_dasweltauto,
                'aplicarDescuento': valor.aplicarDescuento
            };
            $('#anuncios').tmpl(coche).appendTo('#flu');
        });
        muestraFinanciacion();

    }

    function infoSeleccion(entrada) {
        var seguridad = $('[name="info[seguridad]"]'),
                confort = $('[name="info[confort]"]'),
                extras = $('[name="info[extras]"]');

        if (!entrada.combustibles) {
            var combus = $('[name="info[combustibles]"]');
            combus.removeClass('additem')
                    .find('span').text('');
        }
        if (!entrada.colores) {
            var color = $('[name="info[colores]"]');
            color.removeClass('additem')
                    .find('span').text('');
        }
        if (!entrada.carrocerias) {
            var carroceria = $('[name="info[carrocerias]"]');
            carroceria.removeClass('additem')
                    .find('span').text('');
        }
        if (!entrada.equipamiento) {
            seguridad.removeClass('additem')
                    .find('span').text('');
            confort.removeClass('additem')
                    .find('span').text('');
            extras.removeClass('additem')
                    .find('span').text('');
        }
        $.each(entrada, function(campo, valor) {
            var name, texto, remove, add, apend;
            switch (campo) {
                case 'marca':
                    if (valor !== '-1') {
                        name = 'marca';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'marca';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'modelo':
                    if (valor !== '-1') {
                        name = 'modelo';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'modelo';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'version':
                    if (valor !== '-1') {
                        name = 'version';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'version';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'fecha_version_desde' :
                    if (valor !== '-1') {
                        name = 'fecha';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'fecha';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'fecha_version_hasta':
                    if (valor !== '-1') {
                        name = 'fecha';
                        apend = ' - ' + valor;
                        add = 'additem';
                        remove = '';
                    }
                    break;
                case 'precio_desde':
                    if (valor !== '-1') {
                        name = 'precio';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'precio';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'precio_hasta':
                    if (valor !== '-1') {
                        name = 'precio';
                        apend = ' - ' + valor;
                        add = 'additem';
                        remove = '';
                    }
                    break;
                case 'cuota_desde':
                    if (valor !== '-1') {
                        name = 'cuota';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'cuota';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'cuota_hasta':
                    if (valor !== '-1') {
                        name = 'cuota';
                        apend = ' - ' + valor;
                        add = 'additem';
                        remove = '';
                    }
                    break;
                case 'km_desde':
                    if (valor !== '-1') {
                        name = 'km';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'km';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'km_hasta':
                    if (valor !== '-1') {
                        name = 'km';
                        apend = ' - ' + valor;
                        add = 'additem';
                        remove = '';
                    }
                    break;
                case 'combustible':
                    if (valor !== '-1') {
                        name = 'combustibles';
                        texto = valor === '1' ? 'Gasolina' :
                                valor === '2' ? 'Diesel' :
                                valor === '3' ? 'Eléctrico' :
                        apend = ' ' + texto;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'combustibles';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;

                case 'potencia_cv_desde':
                    if (valor !== '-1') {
                        name = 'potencia';
                        texto = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'potencia';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'potencia_cv_hasta':
                    if (valor !== '-1') {
                        name = 'potencia';
                        apend = ' - ' + valor;
                        add = 'additem';
                        remove = '';
                    }
                    break;
                case 'cambio':
                    if (valor !== '-1') {
                        name = 'cambio';
                        var nombre = (valor === '1') ? 'Manual' : ((valor === '2') ? 'Automático' : 'Secuencial');
                        texto = 'Cambio : ' + nombre;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'cambio';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'carroceria':
                    if (valor !== '-1') {
                        name = 'carrocerias';
                        apend = ' ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'carrocerias';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'colores':
                    var o = entrada.colores;
                    if (Object.keys) { //IE <= 8 no soporta
                        var ol = Object.keys(o);
                        var num = ol.length;
                    } else {
                        num = 1;
                    }
                    name = 'colores';
                    texto = (num === 1) ? num + ' item selecionado' : num + ' item selecionados';
                    add = 'additem';
                    remove = '';
                    break;
                case 'puertas':
                    if (valor !== '-1') {
                        name = 'puertas';
                        texto = 'Puertas : ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'puertas';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'num_asientos':
                    if (valor !== '-1') {
                        name = 'num_asientos';
                        texto = 'Plazas : ' + valor;
                        add = 'additem';
                        remove = '';
                    } else {
                        name = 'num_asientos';
                        texto = '';
                        add = '';
                        remove = 'additem';
                    }
                    break;
                case 'equipamiento':
                    seguridad.removeClass('additem')
                            .find('span').text('');
                    confort.removeClass('additem')
                            .find('span').text('');
                    extras.removeClass('additem')
                            .find('span').text('');
                    var res = valor.toString().split(",");
                    $.each(res, function(id, pro) {
                        texto = 'Item seleccionado';
                        var selectorBi = $('#' + pro);
                        selectorBi.closest("div").prev()
                                .addClass('additem')
                                .find('span').text(texto);
                    });
                    break;

            }

            var selector = $('[name="info[' + name + ']"]');
            selector
                    .addClass(add)
                    .removeClass(remove)
                    .find('span').text(texto)
                    .append(apend);


        });

    }


    var form = $('#form');
    function change(event) {

        var campo_change = (typeof event == 'string' || event instanceof String) ? event : 'nada';

        var flu = $("#flu").val();
        var salida = [
            'marca_total', 'modelo_total', 'fecha_version_desde', 'fecha_version_hasta', 'precio_desde', 'precio_hasta',
            'km_desde', 'km_hasta', 'combustible_total', 'potencia_cv_desde', 'potencia_cv_hasta', 'cambio', 'carroceria_total',
            'color_total', 'puertas', 'provincia_total', 'numero_anuncios', 'numero_paginas', 'pagina', 'codigo_postal',
            'num_asientos', 'batalla', 'techo', 'peso', 'volumen', 'version','equipamiento_total'
        ];

        var marca = form.find('[name="condicion[marca]"]');
        if (marca.val() == -1 || marca.val() == null) {
            // Si la marca es -1, ponemos el modelo a -1 y limpiamos el select
            var modelo = form.find('[name="condicion[modelo]"]');
            modelo.selectUpdate(new Array(), {todos: marca.data('label')});
            modelo.val(-1);
        } else {
            // Si no, pedimos el modelo
            salida.push('modelo_total');
        }

        var entrada = form.serializeObject();

        if (campo_change !== 'por_pagina') {
            entrada.pagina = 1;
        }

        $.servicio({
            canal: 'motorflash',
            servicio: 'getBuscador',
            url: ruta_servicios,
            data: {
                entrada: entrada,
                salida: salida
            },
            beforeSend: function(data) {
                $.loading('start');
                var url = $('#form').attr('action');  //la url del action del formulario
                if (flu !== undefined && data.numero_anuncios !== 0) {
                    $("#flu").load(url, entrada, function(responseText, statusText, xhr) {
                        if (statusText === "success") {
                            muestraFinanciacion();
                        }
                    });
                }
                infoSeleccion(entrada.condicion);
            },
            complete: function(data) {
                var datos = $('#form').serializeObject();
                $.loading('stop');
            },
            success: function(data) {
                if (data.numero_anuncios == 0) {
                    $('.sin_resultados.sin').click();
                    $('span#numero_anuncios').text(0);
                    return false;
                } else {
                       
                    $.each(data, function(i) {

                        if ((i == 'combustible_total' && campo_change.indexOf('condicion[combustibles]') === -1) || typeof entrada.condicion['combustibles'] === "undefined") {
                            compruebaCombustibles(data.combustible_total);
                        }
                         if ((i == 'carroceria_total' && campo_change.indexOf('condicion[carroceria]') === -1) || typeof entrada.condicion['carroceria'] === "undefined") {
                            compruebaCarrocerias(data.carroceria_total);
                        }
                         if ((i == 'color_total' && campo_change.indexOf('condicion[colores]') === -1) || typeof entrada.condicion['colores'] === "undefined") {
                            compruebaColores(data.color_total);
                        }
                         if (i == 'equipamiento_total'){

                            $.each(data[i], function(k, val) {
                                
                                var key = val.ID;
                                var nom = val.NOMBRE;
                                if(key === 84)
                                    nom = 'quattro&reg;';
                                $('#' + key + ' > label > b, #' + key + '> b').html(nom + ' (' + val.COUNT + ')');
                                if (val.COUNT == 0) {
                                    $('#' + key + ' > label, #' + key ).addClass('disable');
                                    $('#' + key + ' > label > input, #' + key + ' > input').attr("disabled", true);
                                } else {
                                    $('#' + key + ' > label, #' + key).removeClass('disable');
                                    $('#' + key + ' > label > input, #' + key + ' > input').attr("disabled", false);
                                }
                            });
                        }
                        
                        var opciones = {};
                        if (i.indexOf('_total') != -1) {
                            i = i.substr(0, i.indexOf('_total'));
                            opciones.incluir_count = true;
                        }
                        var nodo = $('[name="condicion[' + i + ']"]');
                        var limite = $('[name="limite[' + i + ']"]');
                        if (nodo.length) {
                            if (nodo.attr("type") == "hidden") {
                                limite.val(this);
                            } else {
                                nodo.selectUpdate(this, $.extend(opciones, {todos: nodo.data('label')}));
                            }
                            if (typeof entrada.condicion[i] !== "undefined") {
                                nodo.val(entrada.condicion[i]);
                            }
                        } else if (i == 'numero_anuncios') {
                            $('span#numero_anuncios').text(this);
                        } else if (i == 'texto_codigo_postal') {
                            $('span#codigo_postal').text(this);
                            if (this == '') {
                                $('#provincia').show();
                            } else {
                                $('#provincia').hide();
                            }
                        } else if (i == 'anuncio' && flu !== undefined) {
//							pintaAnucios(data.anuncio);
                        }
                    });
                }
            }
        });

    }
    $('[name]').change(function(event) {
        event.preventDefault();
        if (this.name !== 'address') {
            change(this.name);
        }
    });
    $('[name="address"]').keyup(function(event) {
        var cp = $('[name="address"]').val();
        if (cp.length === 0) {
            $('[name="condicion[latitud]"]').val('');
            $('[name="condicion[longitud]"]').val('');
            $('#provincia').show();
            change();
        }
    });
    $('[name="address"]').change(function(event) {
        event.preventDefault();
    });
    var resultados = $(".dwa-navi-res").val();
    if (resultados == undefined) {
        change();
    } else {
        var datos = $('#form').serializeObject();
        infoSeleccion(datos.condicion);
    }


});

$(document).ready(function() {

    $('#form').submit(function(event) {
        event.preventDefault();
        if ($('#boton').val() !== undefined) {
            $(this).unbind('submit').submit();
        }
    });

    $(document.body).on('change', "#por_pagina", function(event) {
        event.preventDefault();
        var por_pagina = $(this).select().val();
        $('input[name=por_pagina]').val(por_pagina);
        $('[name="por_pagina"]').change();
    });

    $(document.body).on('click', "#pagina", function(event) {
        event.preventDefault();
        var pagina = $(this).attr('rel');
        $('#form').append('<input type="hidden" name="pagina" value="' + pagina + '"/>');
        $("html, body").animate({scrollTop: 0}, "slow");
        $('[name="por_pagina"]').change();
    });

    $(document.body).on('click', "#boton_avanzado", function(event) {
        var url = '/coches-buscador-avanzado';
        $('#form').attr('action', url);
        $('#form').submit();
    });

});

