﻿var pageNumber;
var searchResults;
var searchTerms = "";

var headerSearchTextboxValue;
var headerSearchTextbox;
var searchTextboxInactiveClass = "headerSearchTextInactive";

jQuery(document).ready(function () {

    jQuery('body').supersleight();

    headerSearchTextbox = jQuery(".headerSearchText").first();
    headerSearchTextboxValue = headerSearchTextbox.val();


    jQuery("#resultsContainer").hide();

    jQuery("#loginPopup").hover(
                function () {
                    jQuery(this).addClass("popupActive");
                },
                function () {
                    jQuery(this).removeClass("popupActive");
                }

            );

    jQuery("#basketPopup").hover(
        function () {
            jQuery(this).addClass("popupActive");
        },
        function () {
            jQuery(this).removeClass("popupActive");
            setTimeout("jQuery('#basketPopup').fadeOut(1000)", 500);
        });

    jQuery('a.load-local').cluetip({
        local: true,
        cursor: 'pointer',
        sticky: false,
        mouseOutClose: true,
        closePosition: 'top',
        closeText: '<div class="buttonMain"><span>&nbsp;&nbsp;X&nbsp;&nbsp;</span></div>'
    });

    jQuery("#productPopup").hover(
        function () {
            jQuery(this).addClass("popupActive");
        },
        function () {
            jQuery(this).removeClass("popupActive");
        }

    );
    headerSearchTextbox.attr("autocomplete", "off");

});


/*
========================================================================================= A j a x   S e a r c h
*/

function GetVehicleCallback(result) {

    jQuery("#resultsContainer").show();
    jQuery('#productPopup').removeClass('popupActive');
    hidePopup('productPopup', 0, 200);

    if (searchTerms != result.SearchTerms) {
        return;
    }

    var outDiv = document.getElementById("vehicleResults");
    outDiv.innerHTML = result.Html;

    jQuery("#vehicleResults").parent().show();
    jQuery("#accessoryResults").parent().removeClass("accessoryResultsContainerNoVehicles");
    jQuery("#homepageBanner").hide();
}

function GetAccessoryCallback(result) {
    jQuery("#resultsContainer").show();
    jQuery("#homepageBanner").hide();
    jQuery("#resultsOverlay").hide();
    jQuery('#productPopup').removeClass('popupActive');
    hidePopup('productPopup', 0, 200);

    if (searchTerms != result.SearchTerms) {
        return;
    }

    var outDiv = document.getElementById("accessoryResults");
    outDiv.innerHTML = result.Html;
    jQuery("#accessoryResultsHeader").html("Accessory results for <span class='accessoryResultsHeaderTerms'>&lsquo;" + searchTerms + "&rsquo;</span> //");

    searchResults = result;
    LoadPaging();
}

function clearSearchText() {
    if (headerSearchTextbox.hasClass(searchTextboxInactiveClass)) {
        headerSearchTextbox.val("");
        headerSearchTextbox.removeClass(searchTextboxInactiveClass);
    }
}

function fillSearchText() {
    if (headerSearchTextbox.val() == "") {
        headerSearchTextbox.addClass(searchTextboxInactiveClass);
        headerSearchTextbox.val(headerSearchTextboxValue);
        jQuery("#homepageBanner").show();
    }
}





/*
========================================================================================= P r o d u c t   F i n d e r
*/

function GetAccessoriesForVehicleCallback(result) {

    jQuery("#resultsContainer").show();
    jQuery("#resultsOverlay").hide();
    jQuery("#homepageBanner").hide();
    jQuery('#productPopup').removeClass('popupActive');
    hidePopup('productPopup', 0, 200);

    var outDiv = document.getElementById("accessoryResults");
    outDiv.innerHTML = result.Html;

    var vehicleDiv = document.getElementById("vehicle_" + result.SearchTerms);
    //alert(vehicleDiv);
    if (vehicleDiv != null) {
        jQuery("#vehicleResults").parent().show();
        jQuery("#accessoryResults").parent().removeClass("accessoryResultsContainerNoVehicles");
    }
    else {
        jQuery('.vehicleResult').each(
            function () {
                jQuery(this).remove();
            }
        );

        jQuery("#vehicleResults").parent().hide();
        jQuery("#accessoryResults").parent().addClass("accessoryResultsContainerNoVehicles");

    }

    searchResults = result;
    LoadPaging();
}

function LoadModels(combo, eventArqs) {
    var item = eventArqs.get_item();
    modelsCombo.set_text("Loading...");
    vehicleCombo.clearSelection();

    // if a make is selected
    if (item.get_index() > 0) {
        // this will fire the ItemsRequested event of the 
        // countries combobox passing the make id as a parameter 
        modelsCombo.requestItems(item.get_value(), false);
    }
    else {
        // the default item
        modelsCombo.set_text(" ");
        modelsCombo.clearItems();

        vehicleCombo.set_text(" ");
        vehicleCombo.clearItems();
    }
}

function LoadVehicles(combo, eventArqs) {
    var item = eventArqs.get_item();
    // if a make is selected
    if (item.get_index() > 0) {

        vehicleCombo.set_text("Loading...");
        // this will fire the ItemsRequested event of the
        // cities combobox passing the year id as a parameter 
        vehicleCombo.requestItems(makesCombo.get_value() + "|" + item.get_value(), false);
    }
    else {
        vehicleCombo.set_text(" ");
        vehicleCombo.clearItems();
    }
}

function ItemsLoaded(combo, eventArqs) {

    if (combo.get_items().get_count() > 0) {
        // pre-select the first item
        combo.set_text(combo.get_items().getItem(0).get_text());
        combo.get_items().getItem(0).highlight();
    }

    if (combo.get_items().getItem(0).get_value() == 0) {
        combo.showDropDown();
    }
}

function ChangePage(combo, eventArqs) {
    var item = eventArqs.get_item();
    if (item.get_index() > 0) {
        LoadVehicle(item.get_value(), item.get_text(), null);
    }
}

/*
========================================================================================= O t h e r s
*/

function LoadPaging() {
    if (searchResults.NumberOfPages > 1) {
        var html = "<span class='accessoryPagingLabel'>Page</span> <ol>\n";

        for (var i = 1; i <= searchResults.NumberOfPages; i++) {
            var row = "<li" + (i == searchResults.PageNumber ? " class='selectedPage'" : "") + "><a href='javascript:";

            if (searchResults.SearchType == "Search") {
                row += "jQuery(\"#resultsOverlay\").show();LoadAccessories(\"" + searchResults.SearchTerms + "\", " + i + ")";
            }
            else if (searchResults.SearchType == "Vehicle") {
                row += "jQuery(\"#resultsOverlay\").show();LoadAccessoriesForVehicle(\"" + searchResults.SearchTerms + "\", " + i + ")";
            }

            row += "'>" + i + "</a></li>\n";

            html += row;
        }

        html += "\n</ol>";
        jQuery(".accessoryPaging").each(function () {
            jQuery(this).html(html);
        });
    }
    else {
        jQuery(".accessoryPaging").each(function () {
            jQuery(this).html("");
        });
    }
}

function LoadAccessories(searchTerms, pageNo) {
    pageNumber = pageNo;
    SearchService.GetAccessoryResults(searchTerms, pageNumber, GetAccessoryCallback);

    jQuery('#productPopup').removeClass('popupActive');
    hidePopup('productPopup', 0, 200);
}
function LoadAccessoriesForVehicle(vehicleCode, pageNo) {
    pageNumber = pageNo;
    SearchService.GetAccessoriesForVehicle(vehicleCode, pageNumber, GetAccessoriesForVehicleCallback);

    jQuery('#productPopup').removeClass('popupActive');
    hidePopup('productPopup', 0, 200);
}

function showPopup(popupId, outEvent, inSpeed) {
    jQuery("#" + popupId).fadeIn(inSpeed,
            function () {
                // If popup is to be hidden automatically
                if (outEvent == "auto" && !jQuery("#" + popupId).hasClass("popupActive")) {
                    setTimeout("hidePopup('" + popupId + "', 2000, " + inSpeed + ")", 2000);
                }
            });
}

function hidePopup(popupId, timeout, outSpeed) {
    if (!jQuery("#" + popupId).hasClass("popupActive")) {
        setTimeout("jQuery('#" + popupId + "').fadeOut(" + outSpeed + ")", timeout);
    }
}

function LoadVehicle(vehicleCode, vehicleTitle, make) {

    if (make != null) {
        makesCombo.set_text(make);
    }

    modelsCombo.requestItems(">" + vehicleCode);
    vehicleCombo.requestItems(">" + vehicleCode);

    jQuery("#resultsOverlay").show();

    jQuery('.vehicleResult').each(
                function () {
                    jQuery(this).removeClass("vehicleResultsCurrent");
                }
            );

    var vehicleDiv = jQuery("li[id=vehicle_" + vehicleCode + "]");
    if (vehicleDiv.length > 0) {
        vehicleDiv.addClass("vehicleResultsCurrent");
    }

    jQuery("#accessoryResultsHeader").html("Accessories for <span class='accessoryResultsHeaderTerms'>&lsquo;" + vehicleTitle + "&rsquo;</span> //");

    LoadAccessoriesForVehicle(vehicleCode, 1);
}

function IsNumeric(input) {
    return (input - 0) == input && input.length > 0;
}

function AddToBasket(sanitisedProductCode, productCode) {
    var quantity = jQuery("#quantity_" + sanitisedProductCode).val();

    if (!IsNumeric(quantity)) {
        alert("Enter a number");
        return;
    }

    BasketService.AddToBasket(productCode, quantity, AddToBasketCallback);
    jQuery("#button_" + sanitisedProductCode).hide();
    jQuery("#loading_" + sanitisedProductCode).show();
    return false;
}

function AddToBasketCallback(result) {

    var content = result.split("<||>");

    var headerBasket = document.getElementById("headerBasketBasket");
    headerBasket.innerHTML = content[1];

    var basketSpan = document.getElementById("basketSpan");
    basketSpan.innerHTML = content[2];

    pulseBasketIcon();

    showPopup("basketPopup", "auto", 1000);

    jQuery("#button_" + content[0]).show();
    jQuery("#loading_" + content[0]).hide();
}


function pulseBasketIcon() {
    var basketHighlighted = jQuery('#basketIconHighlighted');
    var basket = jQuery('#basketIcon');
    // fade in quickly
    basketHighlighted.fadeIn(1000);
    basket.fadeOut(1000,
    function () {
        // fade away slowly
        basketHighlighted.fadeOut(1000);
        basket.fadeIn(1000);
    });
}

function resetForms() {
    document.forms[0].reset();
    headerSearchTextbox.addClass(searchTextboxInactiveClass);
    jQuery("#resultsContainer").hide();
    jQuery("#homepageBanner").show();
}

function ClearBasket() {
    jQuery("#basketOverlay").show();
    BasketService.ClearBasket(UpdateBasketCallback);
}

function RemoveFromBasket(productCode) {
    jQuery("#basketOverlay").show();
    BasketService.RemoveFromBasket(productCode, UpdateBasketCallback);
}

function UpdateBasket() {

    jQuery("#basketOverlay").show();

    var basket = "";

    jQuery(".basketRow").each(function () {
        var quantity = jQuery(this).find(".basketQuantity").first();
        var productCode = quantity.next();
        if (quantity.val() >= 1) {
            basket += productCode.val() + ":" + quantity.val() + ";";
        }
    });

    BasketService.UpdateBasket(basket, UpdateBasketCallback);
}

function UpdateBasketCallback(result) {
    var content = result.split("<||>");

    var headerBasket = document.getElementById("headerBasketBasket");
    headerBasket.innerHTML = content[0];

    var basketSpan = document.getElementById("basketSpan");
    basketSpan.innerHTML = content[1];

    pulseBasketIcon();

    jQuery("#basketOverlay").hide();
}

function LoadProduct(productCode, title) {
    showPopup("productPopup", "manual", 200);
    SearchService.GetProductDetails(productCode, GetProductDetailsCallback);
}

function GetProductDetailsCallback(result) {
    jQuery("#productPopupContent").html(result);
    initLightbox();
}

function EmailMeWhenBackInStock(sanitizedProductCode, productCode) {
    BasketService.EmailMeWhenBackInStock(productCode, EmailMeWhenBackInStockCallback);
    jQuery("#backInStockButton_" + sanitizedProductCode).hide();
    jQuery("#backInStockLoading_" + sanitizedProductCode).show();
}

function EmailMeWhenBackInStockCallback(sanitizedProductCode) {
    jQuery("#backInStockLoading_" + sanitizedProductCode).hide();
    jQuery("#backInStockLoaded_" + sanitizedProductCode).show();
}


jQuery(document).ready(function () {
    refreshCluetip();
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(refreshCluetip);
});

function refreshCluetip() {
    jQuery('a.load-local').cluetip({
        local: true,
        cursor: 'pointer',
        sticky: false,
        mouseOutClose: true,
        closePosition: 'top',
        closeText: '<span class="buttonMain"><span>&nbsp;&nbsp;X&nbsp;&nbsp;</span></span>'
    });

}
