﻿
// Bitte am Beginn der Seite lassen!
// wird nach dem Laden der Seite ausgeführt und initialisiert die Controls
$(function() {
    connectTyreGroup();
    connectTyreWidth();
    connectCrossSection();
    connectDiameter();
    connectSpeedIndex();
    connectionTyreGroupForProducerSearch();
    /// Dropdowns sollten nur Werte beinhalten die im Bezug auf die aktuelle Auswahl gültig sind
    $("select#drpTyreTypeForTestSearchBySize").val($("select#drpTyreTypeForTestSearchBySize").val()).change();
    $("select#drpTyreTypeForTestSearchByProducer").val($("select#drpTyreTypeForTestSearchByProducer").val()).change();
});


function connectionTyreGroupForProducerSearch() {
    $("select#drpTyreTypeForTestSearchByProducer").unbind("change").change(function() {
        var selectedTyreGroup = $(this).val();
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/" + language + "/TyreTest/GetProducersDependingOnTyreGroup/",
            data: { TyreGroup: selectedTyreGroup },
            success: function(optionItems) {
                var oldWidth = $("select#drpTyreProducer").val();
                $("select#drpTyreProducer option").remove();
                var newOptions = '';
                for (var i = 0; i < optionItems.length; i++) {
                    newOptions += "<option value=" + optionItems[i].Value + ">" + optionItems[i].Text + "</option>";
                }
                // stick these new options in the existing select menu
                $("select#drpTyreProducer").append(newOptions);

                //wenn möglich vorherige CrossSection wieder verwenden
                $("select#drpTyreProducer").val(oldWidth).change();
            },
            error: function() {
                alert('error');
            }
        });
    });
};

function connectTyreGroup() {
    $("select#drpTyreTypeForTestSearchBySize").unbind("change").change(function() {
        var selectedTyreGroup = $(this).val();
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/" + language + "/TyreTest/GetTyreWidthDependingOnTyreGroup/",
            data: { TyreGroup: selectedTyreGroup },
            success: function(optionItems) {
                var oldWidth = $("select#drpTyreWidth").val();
                $("select#drpTyreWidth option").remove();
                var newOptions = '';
                for (var i = 0; i < optionItems.length; i++) {
                    newOptions += "<option value=" + optionItems[i].Value + ">" + optionItems[i].Text + "</option>";
                }
                // stick these new options in the existing select menu
                $("select#drpTyreWidth").append(newOptions);
                //nachfolgende Controls(Diameter, Speedindex, Manufacturer, Anzahl Treffer ) neu laden
                connectTyreWidth();
                //wenn möglich vorherige CrossSection wieder verwenden
                $("select#drpTyreWidth").val(oldWidth).change();
            },
            error: function() {
                alert('error');
            }
        });
    });
};

function connectTyreWidth() {
    //unbind, weil bei wiederholtem Aufrufen von connectCrossSection sonst Events mehrfach registriert werden
    $("select#drpTyreWidth").unbind('change').change(function() {
        var selectedWidth = $(this).val();
        var selectedTyreGroup = $("select#drpTyreTypeForTestSearchBySize").val();
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/" + language + "/TyreTest/GetTyreCrossSectionDependingOnTyreWidth/",
            data: { TyreWidth: selectedWidth, TyreGroup: selectedTyreGroup },
            success: function(optionItems) {
                var oldCrossSection = $("select#drpTyreCrossSection").val();
                $("select#drpTyreCrossSection option").remove();
                var newOptions = '';
                for (var i = 0; i < optionItems.length; i++) {
                    newOptions += "<option value=" + optionItems[i].Value + ">" + optionItems[i].Text + "</option>";
                }
                // stick these new options in the existing select menu
                $("select#drpTyreCrossSection").append(newOptions);
                //nachfolgende Controls(Diameter, Speedindex, Manufacturer, Anzahl Treffer ) neu laden
                connectCrossSection();
                //wenn möglich vorherige CrossSection wieder verwenden
                $("select#drpTyreCrossSection").val(oldCrossSection).change();
            }
        });
    });
};

function connectCrossSection() {    
    $("select#drpTyreCrossSection").unbind('change').change(function() {
        var selectedCrossection = $(this).val();
        var selectedWidth = $("select#drpTyreWidth").val();
        var selectedTyreGroup = $("select#drpTyreTypeForTestSearchBySize").val();
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/" + language + "/TyreTest/GetTyreDiameterDependingOnTyreWidthAndCrosssection/",
            data: { TyreWidth: selectedWidth, TyreCrossSection: selectedCrossection, TyreGroup: selectedTyreGroup },
            success: function(optionItems) {
                var oldTyreDiameter = $("select#drpTyreDiameter").val();
                $("select#drpTyreDiameter option").remove();
                var newOptions = '';
                for (var i = 0; i < optionItems.length; i++) {
                    newOptions += "<option value=" + optionItems[i].Value + ">" + optionItems[i].Text + "</option>";
                }
                // stick these new options in the existing select menu
                $("select#drpTyreDiameter").append(newOptions);
                //nachfolgende Controls(Diameter, Speedindex, Manufacturer, Anzahl Treffer ) neu laden
                connectDiameter();
                //wenn möglich vorherige CrossSection wieder verwenden
                $("select#drpTyreDiameter").val(oldTyreDiameter).change();
            }
        });
    });
};

function connectDiameter() {
    $("select#drpTyreDiameter").unbind('change').change(function() {
        var selectedDiameter = $(this).val();
        var selectedCrossection = $("select#drpTyreCrossSection").val();
        var selectedWidth = $("select#drpTyreWidth").val();
        var selectedTyreGroup = $("select#drpTyreTypeForTestSearchBySize").val();
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/" + language + "/TyreTest/GetSpeedGroupDependingOnWidthCrosssectionDiameter/",
            data: { TyreWidth: selectedWidth, TyreCrossSection: selectedCrossection, TyreGroup: selectedTyreGroup, TyreDiameter: selectedDiameter },
            success: function(optionItems) {
                var oldSpeedGroup = $("select#drpSpeedGroup").val();
                $("select#drpSpeedGroup option").remove();
                var newOptions = '';
                for (var i = 0; i < optionItems.length; i++) {
                    newOptions += "<option value=" + optionItems[i].Value + ">" + optionItems[i].Text + "</option>";
                }
                // stick these new options in the existing select menu
                $("select#drpSpeedGroup").append(newOptions);
                //nachfolgende Controls(Diameter, Speedindex, Manufacturer, Anzahl Treffer ) neu laden
                //wenn möglich vorherige CrossSection wieder verwenden
                $("select#drpSpeedGroup").val(oldSpeedGroup).change();
            }
        });

    });
};

function connectSpeedIndex() {
    $("select#drpSpeedGroup").unbind('change').change(function() {
        var selectedSpeedGroup = $(this).val();
        var selectedDiameter = $("select#drpTyreDiameter").val();
        var selectedCrossection = $("select#drpTyreCrossSection").val();
        var selectedWidth = $("select#drpTyreWidth").val();
        var selectedTyreGroup = $("select#drpTyreTypeForTestSearchBySize").val();
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/" + language + "/TyreTest/GetPriceCategoryDependingOnWidthCrosssectionDiameterSpeedGroup/",
            data: { TyreWidth: selectedWidth, TyreCrossSection: selectedCrossection, TyreGroup: selectedTyreGroup, TyreDiameter: selectedDiameter, SpeedGroup: selectedSpeedGroup },
            success: function(optionItems) {
                var oldPriceCategory = $("select#drpPriceCategory").val();
                $("select#drpPriceCategory option").remove();
                var newOptions = '';
                for (var i = 0; i < optionItems.length; i++) {
                    newOptions += "<option value=" + optionItems[i].Value + ">" + optionItems[i].Text + "</option>";
                }
                // stick these new options in the existing select menu
                $("select#drpPriceCategory").append(newOptions);
                //nachfolgende Controls(Diameter, Speedindex, Manufacturer, Anzahl Treffer ) neu laden
                //wenn möglich vorherige CrossSection wieder verwenden
                $("select#drpPriceCategory").val(oldPriceCategory).change();
            }
        });

    });    
};
