﻿/* core page script */

//initial values
var isIE6 = (navigator.appVersion.split(";")[1] == " MSIE 6.0");
var imgSrcBlank = "\\images\\transparent.gif";

//Enable PNGs for IE6
function ApplyPagePngs()
{
    if (isIE6)
    {
        var allImages = document.images;
        //process image elements
        for (i = 0; i < allImages.length; i++)
        {
            //process if not tagged with a noFilter class
            if (!/noFilter/.test(allImages[i].className))
            {
                //test for png extension or embedObject class (dynamically generated AP assets)
                if (/\.png$/i.test(allImages[i].src.toLowerCase()) || allImages[i].className == "filter")
                {
                    var originalSrc = allImages[i].src;
                    var originalHeight;
                    var originalWidth;

                    //determine how to process based whether height and width have been defined
                    if (allImages[i].width > 0 && allImages[i].height > 0)
                    {
                        //accept predefined height/width
                        originalHeight = allImages[i].height;
                        originalWidth = allImages[i].width;
                    }
                    else
                    {
                        //reload image to retrieve height/width
                        var tempImage = new Image();
                        tempImage.onload = function () { originalHeight = tempImage.height; originalWidth = tempImage.width; }
                        tempImage.src = allImages[i].src;
                    }

                    //apply replacement src and set height/width and filter
                    allImages[i].src = imgSrcBlank;
                    if (/fullWidth/.test(allImages[i].className))
                    {
                        allImages[i].style.width = "100%";
                    }
                    else
                    {
                        allImages[i].style.width = originalWidth + "px";
                    }
                    allImages[i].style.height = originalHeight + "px";
                    allImages[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + originalSrc + "',sizingMethod='scale')";
                }
            }
        }
    }
}

function ChangePanelClass(idPrefix, ie7Fix)
{
    if (document.getElementById(idPrefix) != null)
    {
        var closePanel = GetPanelState(idPrefix);

        var newCookieState;
        var titleId = "#" + idPrefix + "Title";
        var slideId = "#" + idPrefix + "Slide";

        if ($(titleId).hasClass("closed") || !closePanel)
        {
            newCookieState = "open";
            SetPanelState(idPrefix);

            $(slideId).slideDown('slow', function ()
            {
                $(titleId).removeClass("closed");
                $(titleId).addClass("open");

                if (idPrefix == "Dock")
                {
                    $("#DockSpacer").height("47px");
                }

                if (ie7Fix)
                {
                    IE7Fix(idPrefix);
                }

                ResizeShadow();
            });
        }
        else
        {
            newCookieState = "closed";
            $(slideId).slideUp('slow', function ()
            {
                $(titleId).removeClass("open");
                $(titleId).addClass("closed");

                if (idPrefix == "Dock")
                {
                    $("#DockSpacer").height("0px");
                }

                if (ie7Fix)
                {
                    IE7Fix(idPrefix);
                }

                ResizeShadow();
            });
        }

        SetCookie(idPrefix + 'State', newCookieState);
    }
}

function IE7Fix(idPrefix)
{
    if (navigator.appVersion.toUpperCase().indexOf("MSIE 7.") > -1)
    {
        ChangePanelClass("Dock", (idPrefix == "Dock" ? false : true));
    }
}

function GetPanelState(idPrefix)
{
    switch (idPrefix)
    {
        case "BodyFooterText":
            return CloseBodyFooterTextPanel;
        case "Dock":
            return CloseDockPanel;
    }
}

function SetPanelState(idPrefix)
{
    switch (idPrefix)
    {
        case "BodyFooterText":
            CloseBodyFooterTextPanel = true;
            break;
        case "Dock":
            CloseDockPanel = true;
            break;
    }
}

function MakePriceSlider()
{
    if (document.getElementById('StartPrice') != null)
    {
        $('#StartPrice select, #EndPrice select').selectToUISlider(
        {
            labels: 0,
            changeArrowDirection: true
        }).hide();

        $('.ui-tooltip-pointer-down-inner').each(function ()
        {
            var bWidth = $('.ui-tooltip-pointer-down-inner').css('borderTopWidth');
            var bColor = $(this).parents('.ui-slider-tooltip').css('backgroundColor')
            $(this).css('border-top', bWidth + ' solid ' + bColor);
        });
    }
}

function ResizeBody()
{
    var header = document.getElementById("Header");
    var lowerHeader = document.getElementById("LowerHeader");
    var wrapper = document.getElementById("MainWrapper");
    var footer = document.getElementById("Footer");

    var height = GetHeight() - header.offsetHeight - lowerHeader.offsetHeight - footer.offsetHeight;
    if (height > wrapper.offsetHeight)
    {
        wrapper.style.height = height + "px";
    }
}

function GetHeight()
{
    if (window.innerHeight > 0)
    {
        return window.innerHeight;
    }
    else
    {
        return document.documentElement.clientHeight;
    }
}

function ResizeMyAccountNav()
{
    var customerName = document.getElementById("CustomerName");
    if (customerName != null)
    {
        var width = document.getElementById("MyAccountLinks").offsetWidth - 15 - customerName.offsetWidth;
        document.getElementById("MyAccountNav").style.width = width + "px";
    }
}

function ResizeShadow()
{
    var mainWrapper = document.getElementById("MainWrapper");
    if (mainWrapper != null)
    {
        document.getElementById("MainWrapperShadow").style.height = mainWrapper.offsetHeight + "px";
    }
}

function SetCookie(cookieName, value)
{
    var expireDays = 30;
    var expireDate = new Date();
    expireDate.setDate(expireDate.getDate() + expireDays);
    document.cookie = cookieName + "=" + escape(value) + ";expires=" + expireDate.toGMTString();
}

function SetUpLowerHeaderNav()
{
    $("#LowerHeaderNav li.parent").each(function ()
    {
        $(this).mouseover(function ()
        {
            $(this).children(".subNavHolder").removeClass("hidden");
        });

        $(this).mouseout(function ()
        {
            $(this).children(".subNavHolder").addClass("hidden");
        });
    });
}

window.onload = function ()
{
    ApplyPagePngs();
    ChangePanelClass("Dock", false);
    ChangePanelClass("BodyFooterText", true);
    MakePriceSlider();
    SetUpLowerHeaderNav();

    if (window.HideButtons) HideButtons();
    if (window.LoadRssFeed) LoadRssFeed();
    if (window.LoadRssMarquee) LoadRssMarquee();
    if (window.RunAjaxCalendar) RunAjaxCalendar();
    if (window.RunGreyBox) RunGreyBox();
    if (window.RunModalPopup) RunModalPopup();
    if (window.RunToolTip) RunToolTip();
    if (window.RunWaterwheelCarousel) { RunWaterwheelCarousel("CarouselDetails", "CarouselImages"); ApplyPagePngs(); }
    if (window.RunCodaSlider)
    {
        RunCodaSlider('DockBasket');
        RunCodaSlider('HomepageBanners');
        RunCodaSlider('SelectedProductsScroller');
    }
    if (window.SetDragAndDrop) SetDragAndDrop();
    if (window.StyleSelects)
    {
        StyleSelects();
        if (window.StyleSortSelect) StyleSortSelect();
        if (window.StyleAddressSelect) StyleAddressSelect();
    }

    //Need to be run at end
    ResizeBody();
    ResizeMyAccountNav();
    ResizeShadow();

    if (window.RunAmazonWidget) RunAmazonWidget();
    if (window.RunAmazonWidgetBottom) RunAmazonWidgetBottom();
    if (window.RunAmazonWidgetTop) RunAmazonWidgetTop();
    if (window.ShowNewSiteMessage) ShowNewSiteMessage();
};

window.onresize = function ()
{
    ResizeBody();
    ResizeShadow();
}
