$(document).ready(function () {

    if ($('#merk').length > 0 && $('#search-form').length > 0) {
        var fields = new Array('merk', 'model', 'carrosserievorm', 'brandstof');
        for (var i = 0; i < fields.length; i++) {
            $('#'+fields[i]).bind('change', loadSearchFieldsJs);
        }
        $('#merk').trigger('change');
    }

    function loadSearchFieldsJs() {
        var merk = $('#merk').val();
        var temp = arrModels[merk];
        switch ($(this).attr('id')) {
            case 'merk':
                var modsel = $('#model');
                var sel = $('#model option:selected').val();
                modsel.attr('length', 0);
                var option = $(document.createElement('option'));
                option.val(0);
                option.text('Alle modellen');
                modsel.append(option);

                if (merk == 0) {
                    modsel.attr('disabled', true);
                } else {
                    var model = '';
                    var model_count = 0;

                    for (var i = 0; i < temp.length; i++) {
                        if (model != temp[i][0]) {
                            var option = $(document.createElement('option'));
                            option.val(temp[i][0]);
                            option.text(temp[i][0]);

                            if (sel == temp[i][0]) {
                                option.attr('selected', true);
                            }

                            modsel.append(option);

                            model = temp[i][0];
                            model_count++;
                        }
                    }
                    modsel.attr('disabled', false);
                }
                populateFuel();
                populateTypes();
                break;
            case 'model':
                var model = $('#model').val();
                var uitsel = $('#carrosserievorm');
                uitsel.attr('length', 0);
                var option = $(document.createElement('option'));
                option.val(0);
                option.text('Alle uitvoeringen');
                uitsel.append(option);

                if (model == 0) {
                } else {
                }
                populateFuel();
                populateTypes();
                break;
            case 'uitvoering':
                populateFuel();
                break;
        }
    }

});

var origTypes = new Array();
function populateTypes() {
    var merk = $('#merk').val();
    //var temp = arrModels[merk];
    var model = $('#model').val();
    var uitsel = $('#carrosserievorm');

    var sel = $('#carrosserievorm option:selected').val();

    if (origTypes == 0) {
        var options = uitsel.attr('options');
        for (var i = 0; i < options.length; i++) {
            var option = $(options[i]);
            origTypes.push(new Array(option.val(), option.text()));
        }
    }

    uitsel.attr('length', 0);
    if (merk == 0) {
        // Just populate with all types
        for (var i = 0; i < origTypes.length; i++) {
            var option = $(document.createElement('option'));
            option.val(origTypes[i][0]);
            option.text(origTypes[i][1]);
            if (sel == origTypes[i][0]) {
                option.attr('selected', true);
            }
            uitsel.append(option);
        }
    }
    else {
        var option = $(document.createElement('option'));
        option.val(0);
        option.text('Alle uitvoeringen');
        uitsel.append(option);

        var temp = arrModels[merk];
        for (var i = 0; i < temp.length; i++) {
            if (model != 0 && temp[i][0] != model) {
                continue;
            }

            var options = uitsel.attr('options');

            // Prevent duplicates
            in_array = false;
            for (var j = 0; j < options.length; j++) {
                if ($(options[j]).val() == temp[i][1]) {
                    in_array = true;
                    break;
                }
            }
            if (!in_array) {
                var option = $(document.createElement('option'));
                option.val(temp[i][1]);
                option.text(getTypeName(temp[i][1]));
                if (sel == temp[i][1]) {
                    option.attr('selected', true);
                }
                uitsel.append(option);
            }
        }
    }
}

var origFuels = new Array();
function populateFuel() {
    var brandsel = $('#brandstof');
    var sel = $('#brandstof option:selected').val();
    if (origFuels == 0) {
        var options = brandsel.attr('options');
        for (var i = 0; i < options.length; i++) {
            var option = $(options[i]);
            origFuels.push(new Array(option.val(), option.text()));
        }
    }
    brandsel.attr('length', 0);

    var merk = $('#merk').val();
    var model = $('#model').val();
    var uitvoering = $('#carrosserievorm').val();

    if (merk == 0) { // Going through the entire array is too slowwww
        for (var i = 0; i < origFuels.length; i++) {
            var option = $(document.createElement('option'));
            option.val(origFuels[i][0]);
            option.text(origFuels[i][1]);
            if (sel == origFuels[i][0]) {
                option.attr('selected', true);
            }
            brandsel.append(option);
        }
    } else {
        var option = $(document.createElement('option'));
        option.val(0);
        option.text('Alle brandstof');
        brandsel.append(option);

        for (tmerk in arrModels) {
            if (merk != 0 && merk != tmerk) {
                continue;
            }
            var temp = arrModels[tmerk];
            for (var i = 0; i < temp.length; i++) {
                if (model != 0 && temp[i][0] != model) {
                    continue;
                }
                if (uitvoering != 0 && temp[i][1] != uitvoering) {
                    continue;
                }

                var options = brandsel.attr('options');
                in_array = false;
                for (var j = 0; j < options.length; j++) {
                    if ($(options[j]).text() == temp[i][2]) {
                        in_array = true;
                        break;
                    }
                }
                if (!in_array) {
                    var option = $(document.createElement('option'));
                    option.val(temp[i][2]);
                    option.text(temp[i][2]);
                    if (sel == temp[i][2]) {
                        option.attr('selected', true);
                    }
                    brandsel.append(option);
                }
            }
        }
    }
}
