/* Special hover box stuff to find positioning */
var cX = 0;
var cY = 0;
var rX = 0;
var rY = 0;

var savedXPos = 0;
var savedYPos = 0;

function UpdateCursorPosition(e)
{
    cX = e.clientX;
    cY = e.clientY;
}

function UpdateCursorPositionDocAll(e)
{
    cX = event.clientX;
    cY = event.clientY;
}

if (document.all)
{
    document.onmousemove = UpdateCursorPositionDocAll;
}
else
{
    document.onmousemove = UpdateCursorPosition;
}

function AssignPosition(d)
{
    d.style.left = (cX - 100) + "px";
    d.style.top = (cY - 20) + "px";
    var browser = navigator.appName
    if (browser.indexOf("Microsoft") != -1)
    {
        d.style.left = (document.documentElement.scrollLeft + cX + 100) + "px";
        d.style.top = (document.documentElement.scrollTop + cY - 20) + "px";
    }
}

function HideContent(d)
{
    if (d.length < 1)
    {
        return;
    }
    document.getElementById(d).style.display = "none";
}

function ShowContent(d)
{
    if (d.length < 1)
    {
        return;
    }
    var dd = document.getElementById(d);
    savedXPos = cX;
    savedYPos = cY;
    AssignPosition(dd);
    dd.style.display = "block";
}
/* Finished special hover box stuff to find positioning */

/* ripped from http://www.quirksmode.org/js/findpos.html */
function findCoordinates(obj)
{
    var curleft = 0;
    var curtop = 0;
    if (obj.offsetParent)
    {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent)
        {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft,curtop];
}

/** Notification hover boxes **/
function showNotificationHoverBox()
{
    if (document.getElementById('sort-options-select-box-id'))
    {
        var option_select_box = document.getElementById('sort-options-select-box-id');
        option_select_box.disabled = true;
    }
    return showHoverLayer('notification-hover-box');
}

function hideNotificationHoverBox()
{
    if (document.getElementById('sort-options-select-box-id'))
    {
        var option_select_box = document.getElementById('sort-options-select-box-id');
        option_select_box.disabled = false;
    }
    return hideHoverLayer('notification-hover-box');
}

/** Email list hover box functionality */
function showEmailListHoverBox()
{
    var hoverLinkId = 'email-list-link';
    var hoverLinkElement = document.getElementById(hoverLinkId);
    var coordinates = findCoordinates(hoverLinkElement);
    var leftPos = coordinates[0];
    var topPos = coordinates[1];

    var hoverBoxId = 'email-list-hover';
    var hoverBoxElement = document.getElementById(hoverBoxId);
    hoverBoxElement.style.left = leftPos - 170 + "px"
    hoverBoxElement.style.top = topPos + 22 + "px"

    var hoverTabId = 'email-list-hover-tab';
    var hoverTabElement = document.getElementById(hoverTabId);
    hoverTabElement.style.left = leftPos - 13 + "px"
    hoverTabElement.style.top = topPos - 1 + "px"

    toggleDisplayOn(hoverTabId);
    showHoverLayer(hoverBoxId);

    if (document.getElementById('sort-options-select-box-id'))
    {
        var option_select_box = document.getElementById('sort-options-select-box-id');
        option_select_box.disabled = true;
    }

    return false;
}

function hideEmailListHoverBox()
{
    toggleDisplayOff('email-list-hover-tab');

    if (document.getElementById('sort-options-select-box-id'))
    {
        var option_select_box = document.getElementById('sort-options-select-box-id');
        option_select_box.disabled = false;
    }

    return hideHoverLayer('email-list-hover');
}

/** START OF ADD TO GIFT LIST FUNCTIONALITY **/
function showAddToListHoverBox(add_to_list_button_id)
{
    if (document.getElementById('sort-options-select-box-id'))
    {
        var option_select_box = document.getElementById('sort-options-select-box-id');
        option_select_box.disabled = true;
    }
    showListHoverBox(add_to_list_button_id, 'add-product-to-gift-list-hover', 'add-product-to-gift-list-hover-tab');
}

function showAddGiftListHoverBox()
{
    showListHoverBox('add_gift_list_link', 'add-gift-list-hover', 'add-gift-list-hover-tab')
}

function focusInputElementById(inputElementId)
{
    document.getElementById(inputElementId).focus()
}

function showListHoverBox(button_id, hover_id, tab_id)
{
    var add_button = document.getElementById(button_id);
    var coordinates = findCoordinates(add_button);
    var leftPos = coordinates[0];
    var topPos = coordinates[1];

    var hover_box_content = document.getElementById(hover_id);
    hover_box_content.style.left = leftPos - 240 + "px";
    hover_box_content.style.top = topPos + 25 + "px";
    ;

    var hover_box_tab = document.getElementById(tab_id);
    hover_box_tab.style.left = leftPos - 6 + "px";
    hover_box_tab.style.top = topPos - 6 + "px";

    showHoverLayer(hover_id);
    showHoverLayer(tab_id);
}

function hideAddToListHoverBox()
{
    if (document.getElementById('sort-options-select-box-id'))
    {
        var option_select_box = document.getElementById('sort-options-select-box-id');
        option_select_box.disabled = false;
    }
    hideHoverLayer('add-product-to-gift-list-hover');
    hideHoverLayer('add-product-to-gift-list-hover-tab');
}

function hideAddGiftListHoverBox()
{
    hideHoverLayer('add-gift-list-hover');
    hideHoverLayer('add-gift-list-hover-tab');
}

function showAddToListButton(listType)
{
    toggleDisplayOn('add-to-list-button');
    resetListTypesSelected();
    setSelectedStyleToDiv('my-' + listType + '-div');

    // Toggle off all list type comment divs
    var typeSelectionElements = getElementsByClassName(document, "div", "add-to-list-comment-div");
    for (var i = 0; i < typeSelectionElements.length; i++)
    {
        var typeSelectionElement = typeSelectionElements[i];
        toggleDisplayOff(typeSelectionElement.id);
    }
    // Toggle on the selected list type comment div
    toggleDisplayOn('my-' + listType + '-comment-div');
    focusInputElementById('add-to-list-cancel-button-input');
}

function setAddToListId(addToListIdValue)
{
    var addToListIdHiddenField = document.getElementById('add-to-list-id-input');
    addToListIdHiddenField.value = addToListIdValue;
}

function setAddToListType(addToListTypeValue)
{
    var addToListTypeHiddenField = document.getElementById('add-to-list-type-input');
    addToListTypeHiddenField.value = addToListTypeValue;
}

function setSelectedStyleToDiv(divElementId)
{
    var list_div = document.getElementById(divElementId);
    list_div.className = list_div.className + ' add-to-list-type-selected';
}

function resetListTypesSelected()
{
    // reset the classes for all selection divs
    var typeSelectionElements = getElementsByClassName(document, "div", "add-to-list-type-selection");
    for (var i = 0; i < typeSelectionElements.length; i++)
    {
        var typeSelectionElement = typeSelectionElements[i];
        typeSelectionElement.className = 'add-to-list-type-selection';
    }
    var newListElement = document.getElementById("my-new-list-div");
    if (newListElement != null) {
        newListElement.className = 'add-to-new-list-type-selection';
    }
}

function keyPressedOnCommentBox(commentBoxId)
{
    var commentBox = document.getElementById(commentBoxId);
    var commentValue = commentBox.value;
    var commentInputField = document.getElementById('add-to-list-comment-input');
    commentInputField.value = commentValue;
}

function displayNewListSelection()
{
    Effect.Appear('my-new-list-div');
    showAddToListButton('new-list');
    setAddToListType('new-list');
}

/** END OF ADD TO GIFT LIST FUNCTIONALITY **/


function showRetailChainHover(productIndex)
{
    ShowContent('product-retail-chains-' + productIndex);
    var opaque_retail_chain_hover_background = document.getElementById('opaque-retail-chain-hover-background');
    opaque_retail_chain_hover_background.style.left = (cX - 200) + "px";
    opaque_retail_chain_hover_background.style.top = (cY - 50) + "px";
    var browser = navigator.appName
    if (browser.indexOf("Microsoft") != -1)
    {
        opaque_retail_chain_hover_background.style.left = (document.documentElement.scrollLeft + cX - 500) + "px";
        opaque_retail_chain_hover_background.style.top = (document.documentElement.scrollTop + cY - 170) + "px";
    }
    opaque_retail_chain_hover_background.style.display = 'block';
}

function hideRetailChainHover()
{
    var typeSelectionElements = getElementsByClassName(document, "div", "carousel-product-retail-chains");
    for (var i = 0; i < typeSelectionElements.length; i++)
    {
        var typeSelectionElement = typeSelectionElements[i];
        toggleDisplayOff(typeSelectionElement.id);
    }
    document.getElementById('opaque-retail-chain-hover-background').style.display = 'none';
}
