/*
 * filter-brand-pricelist-model.js - Infomotori
 *
 * Copyright (c) 2009 Marco Beri
 *
 */

var infomotoriFilterPricelistBrandModel={
    name: "Infomotori filter-pricelist-brand-model 1.0",
    
    saveModel: function() {
        var cf = infomotoriFilterPricelistBrandModel.modelField;
        if (cf.options[cf.selectedIndex].value) {
            infomotoriFilterPricelistBrandModel.model_code = cf.options[cf.selectedIndex].value;
        }
    },

    onModelChange: function() {
        var cf = infomotoriFilterPricelistBrandModel.modelField;
        infomotoriFilterPricelistBrandModel.saveModel();
    },

    onBrandChange: function() {
        var chf = infomotoriFilterPricelistBrandModel.brandField;
        var cf = infomotoriFilterPricelistBrandModel.modelField;

        infomotoriFilterPricelistBrandModel.cleanModels();
        
        if(chf.selectedIndex > 0)
        {
            var url = '/pricelist/brand/'+ chf.options[chf.selectedIndex].value + '/models/';
            $.ajax({
                async: true,
                success: infomotoriFilterPricelistBrandModel.populateModels,
                dateType: "html",       
                error: infomotoriFilterPricelistBrandModel.errorHandler,
                type: "GET",
                url: url
            });
        };
    },

    errorHandler: function(XMLHttpRequest, textStatus, errorThrown) {
        //var message = "<div id=\"id_brand_error\"><ul class=\"errorlist\"><li>Spiacente. Ho incontrato un errore nella lettura dei modelli, contatta l'amministratore di sistema.</li></ul></div>";
        //$("#id_brand_error").remove();
        //$("#id_model").parent("div").before(message);
    },
    
    cleanModels: function() {
        var cf = infomotoriFilterPricelistBrandModel.modelField;
        infomotoriFilterPricelistBrandModel.saveModel();
        while(cf.options.length > 1) {
            cf.options[1] = null;
        };
    },
    
    populateModels: function(data, textStatus) {
        $("#id_brand_error").remove();
        data = eval(data);
        var cf = infomotoriFilterPricelistBrandModel.modelField;
        for (i=0; i < data.length; i++) {
            cf.options[cf.options.length] = new Option(data[i][1], data[i][0])
        }
        
        for (i=0; i < cf.options.length; i++) {
            if (cf.options[i].value == infomotoriFilterPricelistBrandModel.model_code) {
                cf.selectedIndex = i;
                break;
            }
        };
    },
  
    init: function() {
        infomotoriFilterPricelistBrandModel.brandField = document.getElementById("id_brand");
        infomotoriFilterPricelistBrandModel.modelField = document.getElementById("id_model");
        $("#id_brand").change(infomotoriFilterPricelistBrandModel.onBrandChange);
        $("#id_model").change(infomotoriFilterPricelistBrandModel.onModelChange);
        infomotoriFilterPricelistBrandModel.onBrandChange();
    }
}

$(document).ready(function(){
    infomotoriFilterPricelistBrandModel.init();
}); 

