﻿
$(document).ready(function () {
    SetupSearchForm();
    SetupNewsletterSignupForm();
    SetupMenu();
    SetupHomepage();
});

function SetupHomepage() {
    $('#homeRotateSlides').cycle({ fx: 'fade', speed: 500, timeout: 6500, pause: true, pager: '#homeRotatePager' });
    $('#homeRotatePager a').html(""); //remove auto generated text from pager buttons
}

function SetupMenu() {
    //Setup hover image preloading and hover effects
    $('#menu .item img').each(function () {
        var menuItemImage = $(this);
        var imageUrl = menuItemImage.attr('imageUrl');
        var hoverImageUrl = menuItemImage.attr('hoverImageUrl');
        Image1 = new Image(1, 1);
        Image1.src = hoverImageUrl;
    });

    $('#menu .itemWrapper').each(function () {
        var menuItemWrapper = $(this);
        menuItemWrapper.hover(
        function () {
            //Hover In
            var image = $(this).find('.item img');
            image.attr("src", image.attr("hoverImageUrl"));
        }, function () {
            //Hover Out
            var image = $(this).find('.item img');
            image.attr("src", image.attr("imageUrl"));
        });
    });

    //Load browser-cached submenu content file.
    //submenuContentPageUrl will be provided by MegaMenu.ascx on load.
    $.ajax({ url: submenuContentPageUrl, dataType: "json", cache: true, success: submenuContentResponse });
}

function submenuContentResponse(response) {
    for (var i = 0; i < response.length; i++) {
        //<div class='subItemContent'>{4}</div>
        var menuItem = $('#menu .itemWrapper[categoryId="' + response[i].Key + '"]');
        if (menuItem != null) {
            //add the subitem content
            var subItemContent = "<div class='subItemContent'>" + response[i].Value + "</div>";
            menuItem.append(subItemContent);
            menuItem.addClass("expandableItemWrapper");

            //Adjust horizontal positioning if needed.
            //if subitemContent container is wider than template and the distance from the left edge of this container to the right edge of the template is less than the width of this container 
            //then right align this container with the template.
            var headerOffsetLeft = $('#header .center').offset().left;
            var headerRelativeItemOffsetLeft = menuItem.offset().left - headerOffsetLeft;
            var width = menuItem.children(".subItemContent").width();
            var itemIsOutsideTemplate = headerRelativeItemOffsetLeft + width > 1001;
            if (itemIsOutsideTemplate) {
                //remove the left attribute and instead set right to 0.(assume it will fit in the remaining space)
                menuItem.children(".subItemContent").css("left", "").css("right", "0px");
            }
        }
    }
}

function helloWorldResults(result) {
    document.title = result;
}

function SetupSearchForm() {
    SetupWatermark($('#txtSearch'), "Search");

    //Setup enterkey detection in header search
    $('#txtSearch').keypress(function (e) {
        if (e.which == 13 || e.keyCode == 13) {
            Search();
            return false;
        }
    });
}

function SetupNewsletterSignupForm() {
    SetupWatermark($('#txtHeaderMailingListEmail'), "Enter you email address");

    //Setup enterkey detection in header search
    $('#txtHeaderMailingListEmail').keypress(function (e) {
        if (e.which == 13 || e.keyCode == 13) {
            SubscribeToNewsletter();
            return false;
        }
    });

    $('#divHeaderMailingListSubscribe').click(function () {
        SubscribeToNewsletter();
    });
}

/*Newsletter Signup (Template Header)*/
var newsletterPostPage = ""; //This must be initialized by the page. (is initialzied in Footer control)
function SubscribeToNewsletter() {
    var email = $('#txtHeaderMailingListEmail').val();

    var isEmail = true;
    re = new RegExp("\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
    isEmail = re.test(email);
    if (email.length > 0 && isEmail) {
        if (newsletterPostPage.length > 0) {
            $.post(newsletterPostPage, { action: "newslettersignup", email: email },
           function (data) {
               var dataArray = data.toString().split('|');
               var responseType = dataArray[0];
               var responseMsg = dataArray[1];
               if (responseType == "success") {
                   ShowModalMessage("mailingListSuccess", "");
                   $('#txtHeaderMailingListEmail').val("");
                   $('body').focus();
               }
               else {
                   ShowModalMessage("mailingListError", responseMsg);
               }
           });
        }
       else {
            //newsletter page was not detected
           ShowModalMessage("mailingListError", "#NPNF1");
        }
    }
    else {
        ShowModalMessage("mailingListError", 'Please enter a valid e-mail address.');
    }

    return false;
}

function Shared_DialogShow(dialog) {
    FixModalMask();
}

function FixModalMask() {
    var verticalScroll = document.documentElement.scrollTop;
    $('*[id$=_ModalTable]').css('top', verticalScroll + 'px');
    $('*[id$=_ModalMask]').css('top', verticalScroll + 'px');
}

/*ModalMessages Show Function*/
function ShowModalMessage(messageName, messageContent) {

    var dialogDOMElement = $("div[id$='ModalMessageDialog']")[0];
    switch (messageName) {
        case "mailingListSuccess":
            {
                dialogDOMElement.style.width = 481;
                dialogDOMElement.style.height = 298;
                $('#divModalMessageDialog .mailingListSuccess').show();
                break;
            }
        case "mailingListError":
            {
                dialogDOMElement.style.width = 481;
                dialogDOMElement.style.height = 298;
                $('#divModalMessageDialog .message').html(messageContent);
                $('#divModalMessageDialog .mailingListError').show();
                break;
            }
        case "addToCartNavDecision":
            {
                dialogDOMElement.style.width = 338;
                dialogDOMElement.style.height = 203;
                var destination = messageContent;
                $('#atcCheckout').attr("href", destination);
                $('#divModalMessageDialog .addToCartNavDecision').show();
                break;
            }
        case "pleasewait":
            {
                dialogDOMElement.style.width = 130;
                dialogDOMElement.style.height = 34;
                $('#divModalMessageDialog .pleasewait').show();
                break;
            }
            //        case "comingsoon":
            //            {
            //                dialogDOMElement.style.width = 411;
            //                dialogDOMElement.style.height = 256;
            //                $('#divModalMessageDialog .comingsoon').show();
            //                break;
            //            }

    }

    ModalMessageDialog.Show();
    FixModalMask();
}

function HideModalMessage() {
    //Hide contents first incase some browsers do not respect visibility change caused by dialog close.
    $('#divModalMessageDialog > div').hide();  
    ModalMessageDialog.Close();
}

function SetupWatermark(jqueryElementObject, waterMarkText) {
    // Define what happens when the textbox comes under focus
    // Remove the watermark class and clear the box
    jqueryElementObject.focus(function () {

        $(this).filter(function () {

            // We only want this to apply if there's not 
            // something actually entered
            return $(this).val() == "" || $(this).val() == waterMarkText

        }).removeClass("watermarkOn").val("");

    });

    // Define what happens when the textbox loses focus
    // Add the watermark class and default text
    jqueryElementObject.blur(function () {

        $(this).filter(function () {

            // We only want this to apply if there's not
            // something actually entered
            return $(this).val() == ""

        }).addClass("watermarkOn").val(waterMarkText);

    });
}

//Cancel events
// Prevents event bubble up or any usage after this is called.
// pE - event object
function StopEvent(pE) {
    if (!pE)
        if (window.event)
            pE = window.event;
        else
            return;
    if (pE.cancelBubble != null)
        pE.cancelBubble = true;
    if (pE.stopPropagation)
        pE.stopPropagation();
    if (pE.preventDefault)
        pE.preventDefault();
    if (window.event)
        pE.returnValue = false;
    if (pE.cancel != null)
        pE.cancel = true;
}  // StopEvent


// Pre-Condition: ModalMessage control exists
// DOTNET AJAX WaitMessage Scripts
var dotNetAJAXWaitMessageStartCount = 0;
var dotNetAJAXWaitMessageDelay =500;
function dotNetAJAXGlobalBeginRequest(sender, args) {
    dotNetAJAXWaitMessageStartCount++;
    setTimeout('dotNetAJAXGlobalShowWaitMessage()', dotNetAJAXWaitMessageDelay);
}

function dotNetAJAXGlobalShowWaitMessage() {
    if (dotNetAJAXWaitMessageStartCount > 0) {
        ShowModalMessage("pleasewait");
    }
}

function dotNetAJAXGlobalEndRequest(sender, args) {
    dotNetAJAXWaitMessageStartCount--;
    if (dotNetAJAXWaitMessageStartCount == 0) {
        HideModalMessage();
    }
}


/*- BVSCRIPTS
-------------------------------------------------------*/

var count = 0;
function Anthem_PreCallBack() {
    count++;
    setTimeout("CallBackStarted()", 500);
}
function Anthem_PostCallBack() { CallBackFinished(); }

function CallBackStarted() {
    if (count > 0) {
        var item = document.getElementById('wait');
        if ((!window.XMLHttpRequest) && (document.documentElement)) {
            item.style.position = 'absolute';
            //code to make ie6 behave
            if (document.documentElement.scrollTop) {
                item.style.top = document.documentElement.scrollTop + 15;
            }
            else { item.style.top = 15; }
            item.style.right = 15;
        }
        item.style.display = 'block';
    }
}

function CallBackFinished() {
    count--;
    if (count == 0) {
        var item = document.getElementById('wait');
        if (item != null) {
            item.style.display = 'none';
        }
    }
}
