﻿//There is a bug in CA dialog for FF and Chrome that scrolls bg to top on show.
//This variable allows individual pages to switch off modal when this is a problem.
var ForceModalMessageDialogNonModal = false;
var searchPage = 'search.aspx';
var timeTracker = new TimeTracker(); 

$(document).ready(function () {
    //Wireup the search box enter key press
    $('#txtSearch').keypress(function (e) {
        if (e.keyCode == 13) {
            return Search();
        }
    });

    //Wireup the search box watermark
    SetupWatermark($('#txtSearch'), "Search by keyword or color");
    //Wireup the search button
    $('#search .btn').click(Search);

    //Setup Newsletter Subscription Signup Form
    SignUpSetup("txtNewsletterSignup", "btnSignUp");

    //Setup the rotator if this is this is the homepage and the rotator block was found
    var cyclePluginExists = $.fn.cycle;
    if (cyclePluginExists) {
        $('.#rotator').cycle({ timeout: 6000 });
    }
});

function Search() {
    var val = $('#txtSearch').val();
    if (val.length > 0 && val != "Search") {
        window.open(searchPage + '?keyword=' + val, '_self', '');
    }
    return false;
}

//Setup events for a subscribe form given ids to its text box and btn controls.
//This also relies on a variable initialized in the footer control.
function SignUpSetup(txtEmailId, btnSubscribeId) {
    SetupWatermark($("#" + txtEmailId), 'Enter Your Email');
    $("#" + txtEmailId).keypress(function (e) {
        if (e.keyCode == 13) {
            return NewsletterSignUp($("#" + txtEmailId));
        }
    });
    $("#" + btnSubscribeId).click(function () { return NewsletterSignUp($("#" + txtEmailId)); });
}

function FixModalMask() {
    var verticalScroll = document.documentElement.scrollTop;
    $('*[id$=_ModalTable]').css('top', verticalScroll + 'px');
    $('*[id$=_ModalMask]').css('top', verticalScroll + 'px');
}


function FixModalMaskForIE9() {
    FixModalMask();//this was applied to all browsers instead of just ie9
}

function Shared_DialogShow(dialog) {
    FixModalMask();
}

/*ModalMessages Show Function*/
function ShowModalMessage   (messageName) {
    var dialogDOMElement = $("div[id$='ModalMessageDialog']")[0];
    switch (messageName) {
        case "comingsoonlivechat":
        case "comingsoon":
            {
                dialogDOMElement.style.width = 411;
                dialogDOMElement.style.height = 256;
                $('#divComingSoon').show();
		ModalMessageDialog.set_modal(true);
                break;
            }
	case "changecurrency":
            {
                dialogDOMElement.style.width = 388;
                dialogDOMElement.style.height = 358;
                $('#divModalMessageDialog #divChangeCurrency').show();
                ModalMessageDialog.set_modal(true);
		        break;
            }
        case "pleasewait":
            {
                dialogDOMElement.style.width = 130;
                dialogDOMElement.style.height = 34;
                $('#divModalMessageDialog .pleasewait').show();
                ModalMessageDialog.set_modal(!ForceModalMessageDialogNonModal);
                break;
            }
        case "headerpromotion":
            {
                dialogDOMElement.style.width = 420;
                dialogDOMElement.style.height = 420;
                $('#divModalMessageDialog .promotionRestrictions').show();
                ModalMessageDialog.set_modal(true);
                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();
}


/*Newsletter Signup (Template Footer)*/
var newsletterPostPage = ""; //This must be initialized by the page. (is initialzied in Footer control)
function NewsletterSignUp(emailTextBoxJQ) {
    var email = emailTextBoxJQ.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: "signup", email: email },
           function (data) {
               var dataArray = data.toString().split('|');
               var responseType = dataArray[0];
               var responseMsg = dataArray[1];

               $('#divNewsletterSignupDialog *').hide(); //hide all first (just incase)
               if (responseType == "success") {
                   $('#divNewsletterSignupDialog .success').show();
               }
               else {
                   if (responseMsg == "DUPE") {
                       $('#divNewsletterSignupDialog .errorDupe').show();
                   }
                   else {
                       $('#divNewsletterSignupDialog .error').show();
                       var errorMessagePlaceholder = $('#divNewsletterSignupDialog .customErrorMessage');
                       errorMessagePlaceholder.html(responseMsg);
                       errorMessagePlaceholder.show();
                   }
               }

               NewsletterSignupDialog.Show(); //show dialog
               FixModalMask();
               emailTextBoxJQ.val(""); //reset
           });
        }
    }
    else {
        alert('Please enter a valid e-mail address.');
    }

    return false;
}

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);

    });
}

// BVScripts Below --------------------------------------------
// Requirement: ModalMessage control use

// DOTNET AJAX WaitMessage Scripts
var AJAXElementId = '';
var dotNetAJAXWaitMessageStartCount = 0;
var dotNetAJAXWaitMessageDelay = 2000;
function dotNetAJAXGlobalBeginRequest(sender, args) {
    dotNetAJAXWaitMessageStartCount++;
    AJAXElementId = args._postBackElement.id;
    timeTracker._recordStartTime();
    setTimeout('dotNetAJAXGlobalShowWaitMessage()', dotNetAJAXWaitMessageDelay);
}

function dotNetAJAXGlobalShowWaitMessage() {
    if (dotNetAJAXWaitMessageStartCount > 0) {
        ShowModalMessage("pleasewait");
    }
}

function dotNetAJAXGlobalEndRequest(sender, args) {
    dotNetAJAXWaitMessageStartCount--;
    if (dotNetAJAXWaitMessageStartCount == 0) {
        timeTracker._recordEndTime();
        TrackAJAXEvent('AJAX Request Duration', AJAXElementId, timeTracker._getTimeDiff());
        HideModalMessage();
    }
}

// Anthem AJAX WaitMessage Scripts
var anthemWaitMessageStartCount = 0;
var anthemWaitMessageDelay = 500;
function Anthem_PreCallBack() {
    anthemWaitMessageStartCount++;
    setTimeout("CallBackStarted()", anthemWaitMessageDelay);
}
function Anthem_PostCallBack() { CallBackFinished(); }

function CallBackStarted() {
    if (anthemWaitMessageStartCount > 0) {
        AJAXElementId = '';
        timeTracker._recordStartTime();
        ShowModalMessage("pleasewait");
    }
}

function CallBackFinished() {
    anthemWaitMessageStartCount--;
    if (anthemWaitMessageStartCount == 0) {
        timeTracker._recordEndTime();
        TrackAJAXEvent('AJAX Request Duration', AJAXElementId, timeTracker._getTimeDiff());
        HideModalMessage();
    }
}

//Precondition: Google Analytics is setup for each page.
function TrackAJAXEvent(actionName, elementId, eventDuration) {
    var category = 'AJAX Processing';
    var label = document.title;
    if(elementId.length > 0) {
        label = label + ' > ElementId: ' + elementId;
    }

    var value = eventDuration;
    var opt_noninteraction = true;
    _gaq.push(['_trackEvent', category, actionName, label, value, opt_noninteraction]);
}

