﻿

// Function to highlight typed text in auto suggest results
function AutoCompleteClientPopulated(source, eventArgs)
{
    if (source._currentPrefix != null)
    {
        var list = source.get_completionList();
        var search = source._currentPrefix.toLowerCase();
        for (var i = 0; i < list.childNodes.length; i++)
        {
            var text = list.childNodes[i].innerHTML;
            var index = text.toLowerCase().indexOf(search);
            if (index != -1)
            {
                var value = text.substring(0, index);
                value += '<span class="autocomplete_listItemHiliteText">';
                value += text.substr(index, search.length);
                value += '</span>';
                value += text.substring(index + search.length);
                list.childNodes[i].innerHTML = value;
            }
        }
    }
}

// Function to remove highlight span once selected
function AutoCompleteClientItemSelected(source, e)
{
    source.get_element().value = (document.all) ? e._item.innerText : e._item.textContent;
}




$(document).ready(function () {
    zIndexWorkaround();
    preloadImages();
});

function ShowSearchPopup() {
    $("#SearchPopup").slideDown("300");
};
function ShowCartPopup() {
    $("#CartPopup").slideDown("150");
};
function HideCartPopup() {
    $("#CartPopup").slideUp("150");
};
function ToggleCartPopup() {
    if ($("#CartPopup").css("display") == "none") {
        $("#CartPopup").slideDown("150");
        setCartListTimer($("#CartItems"));
        //GetCartList();
    }
    else {
        $("#CartPopup").slideUp("150");
    }
};
function ShowAddToCartPopup(popup, top, left) {
    $(popup).css("top", top);
    $(popup).css("left", left);
    $(popup).slideDown("150");
};
function HideAddToCartPopup() {
    $("div.AddToCartPopup").slideUp("150");
};

function HidePopups() {
    $("#SearchPopup").slideUp("300");
};

function ShowBookshelfPopup(popup, top, left) {
    $(popup).css("top", top);
    $(popup).css("left", left);
    $(popup).fadeIn("medium");
};
function HideBookshelfPopup(popup) {
    $(popup).fadeOut("medium");
};

function ShowPasswordPopup() {
    $("div.PasswordPopup").fadeIn("medium");
};
function HidePasswordPopup() {
    $("div.PasswordPopup").fadeOut("medium");
};

function isIE() {
    if (navigator.userAgent.match(/MSIE \d\.\d+/))
        return true;
    return false;
};
// The following is from http://richa.avasthi.name/blogs/tepumpkin/2008/01/11/ie7-lessons-learned/
// It's a workaround for IE7's z-index bug, using jQuery.
function zIndexWorkaround() {
    // If the browser is IE,
    try {
        if (isIE()) {
            /*
            ** For each div with class Popup (i.e.,
            ** the thing we want to be on top),
            */
            
            $("div.Popup").parents().each(function () {
                var p = $(this);
                var pos = p.css("position");

                // If it's positioned,
                if (pos == "relative" ||
                    pos == "absolute" ||
                    pos == "fixed") {
                    /*
                    ** Add the "on-top" class name when the
                    ** mouse is hovering over it, and remove
                    ** it when the mouse leaves.
                    */
                    p.hover(function () {
                        //$(this).addClass("on-top");
                    },
                function () {
                    //$(this).removeClass("on-top");
                });
                }
            });
        };
    }
    catch (e) {
    }
}
function newImage(arg) {
    if (document.images) {
        rslt = new Image();
        rslt.src = arg;
        return rslt;
    }
}
var preloadFlag = false;
function preloadImages() {
    if (document.images) {
        books_over = newImage("/images/common/books-dark.png");
        academic_over = newImage("/images/common/academic-dark.png");
        bibles_over = newImage("/images/common/bibles-dark.png");
        music_over = newImage("/images/common/music-dark.png");
        dvds_over = newImage("/images/common/dvds-dark.png");
        gifts_over = newImage("/images/common/gifts-dark.png");
        word4kids_over = newImage("/images/common/word4kids-dark.png");
        ministry_over = newImage("/images/common/ministry-dark.png");
        markdowns_over = newImage("/images/common/markdowns-dark.png");
        estores_over = newImage("/images/common/estores-dark.png");
        preloadFlag = true;
    }
}
function changeImages() {
    if (document.images && (preloadFlag == true)) {
        for (var i = 0; i < changeImages.arguments.length; i += 2) {
            document[changeImages.arguments[i]].src = changeImages.arguments[i + 1];
        }
    }
}

function Redirect(arg) {
    window.location = "/details.aspx?productid=" + arg
}

function DoSearch() {
    if ($("input.SearchBox").attr("value") != "") {
        var location = "/searchresults.aspx?Keywords=" + escape($("input.SearchBox").attr("value")) + "&ExcludeOOP=on"
        if ($("select.ProductGroupsDropdown").attr("value") > 0) location += "&ProductGroupID=" + $("select.ProductGroupsDropdown").attr("value");
        window.location = location;
    }
}
function CheckSearch(e) {
    var key;
    if (window.event)
        key = window.event.keyCode; //IE
    else
        key = e.which; //firefox   

    if (key == 13)
        DoSearch();
}

function disableEnterKey(e) {
    var key;
    if (window.event)
        key = window.event.keyCode; //IE
    else
        key = e.which; //firefox     

    return (key != 13);
}


function EnterCheck(e) {
    var code = (e.keyCode ? e.keyCode : e.which);

    if (code == 13) {
        DoSearch();
    }
}



// ------------------ AJAX procedures ------------------------

var currentTimer = 0;
var currentElement;
var cartQty;

function setTimer(e) {
    EnterCheck(e);
    document.getElementById("SearchPopupSuggestions").innerHTML = '<p>&nbsp;&nbsp;Searching, please wait... &nbsp;<img src="/images/animations/rotating_arrow.gif" alt="Loading" /></p>';
    clearTimeout(currentTimer)
    currentTimer = setTimeout("GetSuggestions()", 300);
}


/* Search Suggestions -------------------------------- */

function GetSuggestions() {
    ret = suggestionsWS.GetSuggestions($("input.SearchBox").attr("value"), $("select.ProductGroupsDropdown").attr("value"), OnSearchComplete, OnSearchTimeout, OnSearchError);
    return (true);
}

function OnSearchComplete(arg) {
    document.getElementById("SearchPopupSuggestions").innerHTML = arg;
}

function OnSearchTimeout(arg) {
    document.getElementById("SearchPopupSuggestions").innerHTML = '<p>&nbsp;&nbsp;A timeout error occurred - please check your Internet connection.</p>';
}

function OnSearchError(arg) {
    document.getElementById("SearchPopupSuggestions").innerHTML = '<p>&nbsp;&nbsp;An error occurred. Please try a different search.</p>';
}


/* Shopping Cart Popup ------------------------------- */

function GetCartList() {
    ret = cartWS.GetCartList(OnCartComplete, OnCartTimeout, OnCartError);
    return (true);
}

function OnCartComplete(arg) {
    document.getElementById("CartItems").innerHTML = arg;
}

function OnCartTimeout(arg) {
    document.getElementById("CartItems").innerHTML = '<p>&nbsp;&nbsp;A timeout error occurred - please check your Internet connection.</p>';
}

function OnCartError(arg) {
    document.getElementById("CartItems").innerHTML = '<p>&nbsp;&nbsp;An error occurred. Please try a different search.</p>';
}


/* Add to cart --------------------------------------- */

function AddCartItem(productid, quantity) {
    ret = cartWS.AddItem(productid, quantity);
}

function setAddToCartTimer(ctl) {
    ctl.attr('innerHTML', '<p>&nbsp;&nbsp;Adding item, please wait... &nbsp;<img src="/images/animations/rotating_arrow.gif" alt="Loading" /></p>');
    currentElement = ctl
    clearTimeout(currentTimer)
    currentTimer = setTimeout("GetCurrentCartItem()", 1000);
}

function setCartListTimer(ctl) {
    ctl.attr('innerHTML', '<p>&nbsp;&nbsp;Retrieving your cart... &nbsp;<img src="/images/animations/rotating_arrow.gif" alt="Loading" /></p>');
    currentElement = ctl
    clearTimeout(currentTimer)
    currentTimer = setTimeout("GetCartList()", 1000);
}

function GetCurrentCartItem() {
    ret = cartWS.GetCurrentCartItem(OnComplete, OnTimeout, OnError);
    return (true);
}

function OnComplete(arg) {
    $(currentElement).attr("innerHTML", arg);
    UpdateCart();
}

function OnTimeout(arg) {
    $(currentElement).attr("innerHTML", '<p>&nbsp;&nbsp;A timeout error occurred - please check your Internet connection.</p>');
}

function OnError(arg) {
    $(currentElement).attr("innerHTML", '<p>&nbsp;&nbsp;An error occurred.</p>');
}


/* Cart Quantity/Total ------------------------------- */

function GetCartQuantity() {
    ret = cartWS.GetCartQuantity(OnCartQtyComplete, OnCartQtyTimeout, OnCartQtyError);
    return (true);
}

function OnCartQtyComplete(arg) {
    var text

    $("div.CartText").attr("innerHTML", arg + " items in cart");
    if (arg >= 5) {
        text = "Displaying 5 of " + arg + " items"
    }
    else {
        text = "Displaying " + arg + " of " + arg + " items"
    };
    $("div.CartSummary").attr("innerHTML", text);
    cartQty = arg;
    GetCartTotal();
}

function OnCartQtyTimeout(arg) {
    $("div.CartText").attr("innerHTML", "Timeout");
    $("div.CartSummary").attr("innerHTML", "Timeout");
}

function OnCartQtyError(arg) {
    $("div.CartText").attr("innerHTML", "Error");
    $("div.CartSummary").attr("innerHTML", "Error");
}

function GetCartTotal() {
    ret = cartWS.GetCartTotal(OnCartTotalComplete, OnCartTotalTimeout, OnCartTotalError);
    return (true);
}

function OnCartTotalComplete(arg) {
    var text;
    text = "Total for " + cartQty + " items:  <b>" + arg + "</b>"
    $("div.CartTotal").attr("innerHTML", text);   
}

function OnCartTotalTimeout(arg) {
    $("div.CartTotal").attr("innerHTML", "Timeout");
}

function OnCartTotalError(arg) {
    $("div.CartTotal").attr("innerHTML", "Error");
}

function UpdateCart() {
    GetCartQuantity();
}


/* Wish list functions ------------------------------- */

function AddWishListItem(productid, ctl) {
    currentElement = ctl;
    ret = cartWS.AddWishListItem(productid, OnAddWishListComplete, OnAddWishListTimeout, OnAddWishListError);
    return (true);
}

function OnAddWishListComplete(arg) {
    $(currentElement).attr("innerHTML", "<a href='/cart.aspx#wishlist'>This is in your Wishlist</a>");
}

function OnAddWishListTimeout(arg) {
    $(currentElement).attr("innerHTML", "Timeout");
}

function OnAddWishListError(arg) {
    $(currentElement).attr("innerHTML", "Error");
}

// -------


