/*************************************************************/
/********* Tire Selector functionality    *********/
/*************************************************************/
var tireSearchSizeWidth = ['165', '175', '185', '195', '205', '215', '225', '235', '245', 'LT245', '255', 'LT255',
    '265', 'LT265', '275', 'LT275', '285', 'LT285', '295', 'LT295', '305', 'LT305', '315', 'LT315',
    '325', 'LT325', '335', 'LT335', '345', 'LT345', '355', 'LT355', '365', 'LT365', '375', 'LT375',
    '385', 'LT385', '395', 'LT395', '405', 'LT405', '27', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '42'];
var tireSearchSizeAspectRatio = ['20', '25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80', '8.50', '9', '9.50', '10', '10.50', '11', '11.50', '12', '12.50', '13', '13.50', '14', '14.50'];

var tireSearchSizeAspectRatio1 = ['20', '25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80'];
var tireSearchSizeAspectRatio2 = ['8.50', '9', '9.50', '10', '10.50', '11', '11.50', '12', '12.50', '13', '13.50', '14', '14.50'];

var tireSearchSizeDiameter = [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30];

function InitTireSearchMenu(url) {
    $(".rt").hide();
    $(".dwn1").hide();
    $(".vehicle_list").show();
    $(".size_list").hide();

    $(".rt").click(function() {
        $(".rt").hide();
        $(".dwn").show();
        $(".vehicle_list").slideDown("fast");
		
		$(".rt1").show();
		$(".dwn1").hide();
		$(".size_list").slideUp("fast");
    });

    $(".dwn").click(function() {
        $(".dwn").hide();
        $(".rt").show();
        $(".vehicle_list").slideUp("fast");
		
		$(".rt1").hide();
		$(".dwn1").show();
		$(".size_list").slideDown("fast");
		
    });

    $(".rt1").click(function() {
        $(".rt1").hide();
        $(".dwn1").show();
        $(".size_list").slideDown("fast");
		
		$(".rt").show();
		$(".dwn").hide();
		$(".vehicle_list").slideUp("fast");
    });

    $(".dwn1").click(function() {
        $(".dwn1").hide();
        $(".rt1").show();
        $(".size_list").slideUp("fast");
		
		$(".rt").hide();
		$(".dwn").show();
		$(".vehicle_list").slideDown("fast");
    });

    var vehicleSearchOptions = {
        year: { control: '#menuYear', placeholder: 'Year' },
        make: { control: '#menuMakeId', placeholder: 'Make' },
        model: { control: '#menuModelId', placeholder: 'Model' },
        vehicle: { control: '#menuVehicleId', placeholder: 'Vehicle' },
        button: '#menuBtnVehicle'
    };

    $(vehicleSearchOptions.year.control).change(function() { LoadMake(url, vehicleSearchOptions); });
    $(vehicleSearchOptions.make.control).change(function() { LoadModel(url, vehicleSearchOptions); });
    $(vehicleSearchOptions.model.control).change(function() { LoadVehicle(url, vehicleSearchOptions); });
    $(vehicleSearchOptions.vehicle.control).change(function() { GetTireByVehicle(url, vehicleSearchOptions); });

    LoadYear(url, vehicleSearchOptions);

    var sizeSearchOptions = {
        width: { control: '#menuWidth', placeholder: 'Width' },
        aspectRatio: { control: '#menuAspectRatio', placeholder: 'Aspect Ratio' },
        diameter: { control: '#menuDiameter', placeholder: 'Diameter' },
        width2: { control: '#menuWidth2', placeholder: 'Width' },
        aspectRatio2: { control: '#menuAspectRatio2', placeholder: 'Aspect Ratio' },
        diameter2: { control: '#menuDiameter2', placeholder: 'Diameter' },
        staggered: true,
        button: '#menuBtnSize'
    };

    $(sizeSearchOptions.width.control).change(function() { LoadAspectRatio(1, sizeSearchOptions); });
    $(sizeSearchOptions.aspectRatio.control).change(function() { LoadDiameter(1, sizeSearchOptions); });
    $(sizeSearchOptions.diameter.control).change(function() { GetTireBySize(1, sizeSearchOptions); });
    $(sizeSearchOptions.width2.control).change(function() { LoadAspectRatio(2, sizeSearchOptions); });
    $(sizeSearchOptions.aspectRatio2.control).change(function() { LoadDiameter(2, sizeSearchOptions); });
    $(sizeSearchOptions.diameter2.control).change(function() { GetTireBySize(2, sizeSearchOptions); });

    LoadWidth(1, sizeSearchOptions);
    LoadWidth(2, sizeSearchOptions);
}

function SetVehicleOption(selector, placeholder, data) {
    var control = $(selector);
    $('option', control).remove();
    control.append('<option value="">' + placeholder + '</option>');
    control.val('');
    var inner = $(selector + '_inner');
    if (inner || inner.length > 0) { inner.html(placeholder); }
    if (data == null || data == undefined) { return; }

    for (var i = 0; i < data.length; i++) {
        control.append('<option value="' + data[i].Value + '">' + data[i].Label + '</option>');
    }
}

function LoadYear(url, optionsArgs) {
    $.get(url, function(data) { SetVehicleOption(optionsArgs.year.control, optionsArgs.year.placeholder, data); });
    SetVehicleOption(optionsArgs.make.control, optionsArgs.make.placeholder, null);
    SetVehicleOption(optionsArgs.model.control, optionsArgs.model.placeholder, null);
    SetVehicleOption(optionsArgs.vehicle.control, optionsArgs.vehicle.placeholder, null);
    $(optionsArgs.button).attr('disabled', 'disabled');
	if ( $('#fb-year').length ) $('#fb-year div span').html('Year');
}

function LoadMake(url, optionsArgs) {
    var year = $(optionsArgs.year.control).val();
    if (!year || year == '') { return; }
    // make sure the selection are valid
    var makeUrl = url + '/' + year;
    $.get(makeUrl, function(data) { SetVehicleOption(optionsArgs.make.control, optionsArgs.make.placeholder, data); });
    SetVehicleOption(optionsArgs.model.control, optionsArgs.model.placeholder, null);
    SetVehicleOption(optionsArgs.vehicle.control, optionsArgs.vehicle.placeholder, null);
    $(optionsArgs.button).attr('disabled', 'disabled');
	if ( $('#fb-make').length ) $('#fb-make div span').html('Make');
	if ( $('#fb-model').length ) $('#fb-model div span').html('Model');
	if ( $('#fb-trim').length ) $('#fb-trim div span').html('Trim');
}

function LoadModel(url, optionsArgs) {
    var year = $(optionsArgs.year.control).val();
    var make = $(optionsArgs.make.control).val();
    // make sure the selection are valid
    if (!year || year == '' || !make || make == '') { return; }
    var modelUrl = url + '/' + year + '/' + make;
    $.get(modelUrl, function(data) { SetVehicleOption(optionsArgs.model.control, optionsArgs.model.placeholder, data); });

    SetVehicleOption(optionsArgs.vehicle.control, optionsArgs.vehicle.placeholder, null);

    $(optionsArgs.button).attr('disabled', 'disabled');
	if ( $('#fb-model').length ) $('#fb-model div span').html('Model');
	if ( $('#fb-trim').length ) $('#fb-trim div span').html('Trim');
}

function LoadVehicle(url, optionsArgs) {
    var year = $(optionsArgs.year.control).val();
    var make = $(optionsArgs.make.control).val();
    var model = $(optionsArgs.model.control).val();
    if (!year || year == '' || !make || make == '' || !model || model == '') { return; }
    var modelUrl = url + '/' + year + '/' + make + '/' + model;
    $.get(modelUrl, function(data) { SetVehicleOption(optionsArgs.vehicle.control, optionsArgs.vehicle.placeholder, data); });
    $(optionsArgs.button).attr('disabled', 'disabled');
	if ( $('#fb-trim').length ) $('#fb-trim div span').html('Trim');
}

function GetTireByVehicle(url, optionsArgs) {
    $(optionsArgs.button).removeAttr('disabled');
}

function SetSizeOption(selector, placeholder, data) {
    var control = $(selector);
    $('option', control).remove();
    control.append('<option value="">' + placeholder + '</option>');
    control.val('');
    var inner = $(selector + '_inner');
    if (inner || inner.length > 0) { inner.html(placeholder); }
    if (data == null || data == undefined) { return; }
    for (var i = 0; i < data.length; i++) {
        control.append('<option value="'+ data[i] +'">' + data[i] + '</option>');
    }
}

function LoadWidth(index, optionsArgs) {
    if (optionsArgs.staggered && index == 1) {
        SetSizeOption(optionsArgs.width.control, optionsArgs.width.placeholder, tireSearchSizeWidth);
        SetSizeOption(optionsArgs.aspectRatio.control, optionsArgs.aspectRatio.placeholder, null);
        SetSizeOption(optionsArgs.diameter.control, optionsArgs.diameter.placeholder, null);
    } else if (optionsArgs.staggered && index == 2) {
        SetSizeOption(optionsArgs.width2.control, optionsArgs.width2.placeholder, tireSearchSizeWidth);
        SetSizeOption(optionsArgs.aspectRatio2.control, optionsArgs.aspectRatio2.placeholder, null);
        SetSizeOption(optionsArgs.diameter2.control, optionsArgs.diameter2.placeholder, null);
    } else {
        SetSizeOption(optionsArgs.width.control, optionsArgs.width.placeholder, tireSearchSizeWidth);
        SetSizeOption(optionsArgs.aspectRatio.control, optionsArgs.aspectRatio.placeholder, null);
        SetSizeOption(optionsArgs.diameter.control, optionsArgs.diameter.placeholder, null);
        SetSizeOption(optionsArgs.width2.control, optionsArgs.width2.placeholder, null);
        SetSizeOption(optionsArgs.aspectRatio2.control, optionsArgs.aspectRatio2.placeholder, null);
        SetSizeOption(optionsArgs.diameter2.control, optionsArgs.diameter2.placeholder, null);
    }
    $(optionsArgs.button).attr('disabled', 'disabled');
}

function LoadAspectRatio(index, optionsArgs) {
    if (optionsArgs.staggered && index == 1) {
        SetSizeOption(optionsArgs.aspectRatio.control, optionsArgs.aspectRatio.placeholder, tireSearchSizeAspectRatio);
//		if ( $('#width').val() >= 27 && $('#width').val() <= 42 )
//			SetSizeOption(optionsArgs.aspectRatio.control, optionsArgs.aspectRatio.placeholder, tireSearchSizeAspectRatio2);
//		else
//			SetSizeOption(optionsArgs.aspectRatio.control, optionsArgs.aspectRatio.placeholder, tireSearchSizeAspectRatio1);
        SetSizeOption(optionsArgs.diameter.control, optionsArgs.diameter.placeholder, null);
		if ( $('#fb-aspect').length ) $('#fb-aspect div span').html('---');
		if ( $('#fb-diameter').length ) $('#fb-diameter div span').html('---');
    } else if (optionsArgs.staggered && index == 2) {
        SetSizeOption(optionsArgs.aspectRatio2.control, optionsArgs.aspectRatio2.placeholder, tireSearchSizeAspectRatio);
//		if ( $('#width2').val() >= 27 && $('#width2').val() <=42 )
//			SetSizeOption(optionsArgs.aspectRatio2.control, optionsArgs.aspectRatio2.placeholder, tireSearchSizeAspectRatio2);
//		else
//			SetSizeOption(optionsArgs.aspectRatio2.control, optionsArgs.aspectRatio2.placeholder, tireSearchSizeAspectRatio1);
        SetSizeOption(optionsArgs.diameter2.control, optionsArgs.diameter2.placeholder, null);
		if ( $('#fb-aspect2').length ) $('#fb-aspect2 div span').html('---');
		if ( $('#fb-diameter2').length ) $('#fb-diameter2 div span').html('---');
    } else {
        SetSizeOption(optionsArgs.aspectRatio.control, optionsArgs.aspectRatio.placeholder, tireSearchSizeAspectRatio);
        SetSizeOption(optionsArgs.diameter.control, optionsArgs.diameter.placeholder, null);
        SetSizeOption(optionsArgs.width2.control, optionsArgs.width2.placeholder, null);
        SetSizeOption(optionsArgs.aspectRatio2.control, optionsArgs.aspectRatio2.placeholder, null);
        SetSizeOption(optionsArgs.diameter2.control, optionsArgs.diameter2.placeholder, null);
    }
    $(optionsArgs.button).attr('disabled', 'disabled');
	
}

function LoadDiameter(index, optionsArgs) {
    if (optionsArgs.staggered && index == 1) {
        SetSizeOption(optionsArgs.diameter.control, optionsArgs.diameter.placeholder, tireSearchSizeDiameter);
		if ( $('#fb-diameter').length ) $('#fb-diameter div span').html('---');
    } else if (optionsArgs.staggered && index == 2) {
        SetSizeOption(optionsArgs.diameter2.control, optionsArgs.diameter2.placeholder, tireSearchSizeDiameter);
		if ( $('#fb-diameter2').length ) $('#fb-diameter2 div span').html('---');
    } else {
        SetSizeOption(optionsArgs.diameter.control, optionsArgs.diameter.placeholder, tireSearchSizeDiameter);
        SetSizeOption(optionsArgs.width2.control, optionsArgs.width2.placeholder, null);
        SetSizeOption(optionsArgs.aspectRatio2.control, optionsArgs.aspectRatio2.placeholder, null);
        SetSizeOption(optionsArgs.diameter2.control, optionsArgs.diameter2.placeholder, null);
    }
    $(optionsArgs.button).attr('disabled', 'disabled');
}

function GetTireBySize(index, optionsArgs) {
    var diameter1 = $(optionsArgs.diameter.control).val();
    var diameter2 = $(optionsArgs.diameter2.control).val();
	
    if (optionsArgs.staggered && diameter1 != 'Diameter' && diameter2 != 'Diameter') {
        $(optionsArgs.button).removeAttr('disabled');
        return;
    }

    if (!optionsArgs.staggered && diameter1 != 'Diameter') {
        $(optionsArgs.button).removeAttr('disabled');
        return;
    }
}
