﻿/// <reference path="jquery-1.3.2-vsdoc2.js" />
/// <reference path="jQuery/jquery.watermark.js" />

function InitializeTabs() {
    // Tabs
    $('#searchtabs').tabs({
        select: function(event, ui) {
            //Set title (if visible)
            var tabTitle = $("#" + ui.tab.id + " td.TabMiddle")[0].innerHTML;
            $(".h3_SearchOptionsTitle").html("SHOP BY " + tabTitle.toUpperCase());
            //Set active tab
            switch (ui.index) {
                case 0:
                    $("input[id$=hdnSearchType]").val("VIN"); break;
                case 1:
                    $("input[id$=hdnSearchType]").val("MakeModelYear"); break;
                case 2:
                    $("input[id$=hdnSearchType]").val("Vehicle"); break;
                case 3:
                    $("input[id$=hdnSearchType]").val("InterchangeGuide"); break;
                case 4:
                    $("input[id$=hdnSearchType]").val("CompatibilityGuide"); break;
            }
        }
    });

    //Show form after jquery tabs has initialized
    $('#searchtabs').css("display", "");

    //Set active tab
    switch ($("input[id$=hdnSearchType]").val()) {
        case "VIN":
            $('#searchtabs').tabs('select', 0); break;
        case "MakeModelYear":
            $('#searchtabs').tabs('select', 1); break;
        case "Vehicle":
            $('#searchtabs').tabs('select', 2); break;
        case "InterchangeGuide":
            $('#searchtabs').tabs('select', 3); break;
        case "CompatibilityGuide":
            $('#searchtabs').tabs('select', 4); break;
    }
}

//init tabs on asynch postback
//Source: http://blog.dreamlabsolutions.com/post/2009/03/25/jQuery-live-and-ASPNET-Ajax-asynchronous-postback.aspx
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler_Search_ASCX);
function EndRequestHandler_Search_ASCX(sender, args) {
    InitializeTabs();
}

//eliminate post-back by doing client-search
function submitModelSearch() {
    var year = $('select[id$=ddlYear] option:selected').text();
    var make = $('select[id$=ddlMake] option:selected').text();
    var model = $('select[id$=ddlModel] option:selected').text();

    //validation
    var isValid = true;
    var validationMsg = "";
    if (year == "Select Year") {
        isValid = false;
        validationMsg += "Year is required.<br />";
        $("#SearchModelYearMsg").css("display", "inline");
    } else {
        $("#SearchModelYearMsg").css("display", "none");
    }
    
    if (make == "Select a Make") {
        isValid = false;
        validationMsg += "Make is required.<br />";
        $("#SearchModelMakeMsg").css("display", "inline");
    } else
        $("#SearchModelMakeMsg").css("display", "none");
    
    if (model == "Select a Model") {
        isValid = false;
        validationMsg += "Model is required.<br />";
        $("#SearchModelModelMsg").css("display", "inline");
    } else {
        $("#SearchModelModelMsg").css("display", "none");
    }

    if (!isValid) {
        $("#tabs-2 .ValidationSummary").html(validationMsg).css("display", "block");
    } else {
        $("#tabs-2 .ValidationSummary").css("display", "none");
        document.location = $("#hdnProductCatalogURL").val() + "?y=" + year + "&m=" + make + "&mo=" + model;
    }
}

//initialize tab doc loads. SetTimeout to spin off new thread
InitializeTabs();
    
//initialize watermarks
$(document).ready(function() {
    //watermarks
    $("input[id$=txtCompatiblePartNo]").watermark({ html: "<nobr>[Enter Part #]</nobr>", cls: 'Watermark-Text' });
    $("input[id$=txtVIN]").watermark({ html: "<nobr>[Enter a VIN]</nobr>", cls: 'Watermark-Text' });
    $("input[id$=txtInterchangePartNo]").watermark({ html: "<nobr>[Enter Part #]</nobr>", cls: 'Watermark-Text' });
});

//Load Dropdowns
////////////////
//Makes
$(document).ready(function() {
    $('select[id$=ddlYear]').change(function() {
        GetVehicleMakes();
    });
    //Initialize only if init values exist
    if ($('select[id$=ddlYear]').val() != "" && $("#hdnSearchModelMakeVal").val() != "" && $("#hdnSearchModelModelVal").val() != "") {
        GetVehicleMakes();
    }
});

function GetVehicleMakes() { 
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/Services/SearchVehicle.asmx/GetVehicleMakes",
        data: '{yearId: "' + $('select[id$=ddlYear]').val() + '", defaultId: "' + $("#hdnSearchModelMakeVal").val() + '"}',
        dataType: "json",
        success: GetVehicleMakesSuccess,
        error: GetVehicleMakesError
    });
}

function GetVehicleMakesSuccess(result) {
    //disable field
    $("#ddlMake").attr("disabled", true);

    //clear all makes but the first
    $("#ddlMake").empty().append($("<option></option>").val("").text("Select a Make"));

    //load
    $.each(result.d, function() {
        var sel = (this["Sel"] == "1") ? true : false;
        $("#ddlMake").append($("<option></option>").attr("selected", sel).val(this["Value"]).text(this["Name"]));
    });

    //enabled if count is greater than one
    if ($("#ddlMake option").length > 1) $("#ddlMake").removeAttr("disabled");

    //reset default
    $("#hdnSearchModelMakeVal").val("");

    //refresh models
    GetVehicleModels();
}

function GetVehicleMakesError(result) {
    alert("Service Unavailable: Please try selecting the Year again.");
}

//Models
$(document).ready(function() {
    $('#ddlMake').change(function() {
        GetVehicleModels();
    });
});

function GetVehicleModels() {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/Services/SearchVehicle.asmx/GetVehicleModels",
        data: '{yearId: "' + $('select[id$=ddlYear]').val() + '", makeId: "' + $('#ddlMake').val() + '", defaultId: "' + $("#hdnSearchModelModelVal").val() + '"}',
        dataType: "json",
        success: GetVehicleModelsSuccess,
        error: GetVehicleModelsError
    });
}

function GetVehicleModelsSuccess(result) {
    //disable field
    $("#ddlModel").attr("disabled", "disabled");
    
    //clear all makes but the first
    $("#ddlModel").empty().append($("<option></option>").val("").text("Select a Model"));

    //load
    $.each(result.d, function() {
        var sel = (this["Sel"] == "1") ? true : false;
        $("#ddlModel").append($("<option></option>").attr("selected", sel).val(this["Value"]).text(this["Name"]));
    });

    //enabled if count is greater than one
    if ($("#ddlModel option").length > 1) $("#ddlModel").removeAttr("disabled");

    //reset default
    $("#hdnSearchModelModelVal").val("");
}

function GetVehicleModelsError(result) {
    alert("Service Unavailable: Please try selecting the Make again.");
}

//Vehicles
//////////
//Bind click to validate
$(document).ready(function() {
    $('select[id$=ddlVehicles]').change(function() {
        //Validate
        if ($(this).val == -1) {
            return;
        } else {
            var url = $("#SearchByVehiclesURL").val();
            url = url.replace(new RegExp("\\{0\\}"), $(this).val());
            document.location.href = url;

            return;
        }
    });
});

//Interchange Guide
////////////////////
//submit form on "enter"
$(document).ready(function() {
    //submit form on "enter"
    $("input[id$=txtInterchangePartNo]").keypress(function(e) {
        if (e.keyCode == 13) {
            $("a[id$=btnSearchByInterchange]").click();
            return false;
        }
    });

    //form submit event
    $("a[id$=btnSearchByInterchange]").click(function() {
        if (ValidateSearchByInterchange()) {
            var url = $("#SearchByInterchangeUrl").val();
            url = url.replace(new RegExp("\\{0\\}"), $("input[id$=txtInterchangePartNo]").val());
            document.location.href = url;
        }
        return false;
    });
});

//validate
function ValidateSearchByInterchange() {
    if ($("input[id$=txtInterchangePartNo]").val() == "") {
        $("#tabs-4 .ValidationMessage").css("display", "inline");
        return false;
    } else {
        $("#tabs-4 .ValidationMessage").css("display", "none");
        return true;
    }
}

//Buyer's Guide
////////////////
$(document).ready(function() {
    //submit form on "enter"
    $("input[id$=txtCompatiblePartNo]").keypress(function(e) {
        if (e.keyCode == 13) {
            $("a[id$=btnSearchByCompatibility]").click();
            return false;
        }
    });

    //form submit event
    $("a[id$=btnSearchByCompatibility]").click(function() {
        if (ValidateSearchByCompatibility()) {
            var url = $("#SearchByCompatibilityUrl").val();
            url = url.replace(new RegExp("\\{0\\}"), $("input[id$=txtCompatiblePartNo]").val());
            document.location.href = url;
        }
        return false;
    });
});

//validate
function ValidateSearchByCompatibility() {
    if ($("input[id$=txtCompatiblePartNo]").val() == "") {
        $("#tabs-5 .ValidationMessage").css("display", "inline");
        return false;
    } else {
        $("#tabs-5 .ValidationMessage").css("display", "none");
        return true;
    }
}