/* ----------------------------------------------------------------------------------------- */
/*  Javascript for Euroflorist                                                               */
/* ----------------------------------------------------------------------------------------- */

/* scroller properties */
clipTop = 0
clipRight = 840;
clipBottom = 634;
clipLeft = 0;

scrollAreaWidth = 840;
maxClipRight = 840;

delta = 0;
scrollInterval = 10; /* 9 - 10 */

scrollDiv = null;
scrollTimer = null;

ballonVisible = 0;

scrollingActive = false;

// Global variables
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page

var visibleProduct = null;

/* scroll offset */
scrollOffset = 6;

function addEvent(obj, type, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(type, fn, false);
        EventCache.add(obj, type, fn);
    } else if (obj.attachEvent) {
        obj["e" + type + fn] = fn;
        obj[type + fn] = function() { obj["e" + type + fn](window.event); }
        obj.attachEvent("on" + type, obj[type + fn]);
        EventCache.add(obj, type, fn);
    } else {
        obj["on" + type] = obj["e" + type + fn];
    }
    return;
}

var EventCache = function() {
    var listEvents = [];
    return {
        listEvents: listEvents,
        add: function(node, sEventName, fHandler) {
            listEvents.push(arguments);
        },
        flush: function() {
            var i, item;
            for (i = listEvents.length - 1; i >= 0; i = i - 1) {
                item = listEvents[i];
                if (item[0].removeEventListener) {
                    item[0].removeEventListener(item[1], item[2], item[3]);
                };
                if (item[1].substring(0, 2) != "on") {
                    item[1] = "on" + item[1];
                };
                if (item[0].detachEvent) {
                    item[0].detachEvent(item[1], item[2]);
                };
                item[0][item[1]] = null;
            };
        }
    };
} ();

/* ----------------------------------------------------------------------------------------- */
/*  scroll an element (direction: 1 = right, -1 = left)                                      */
/* ----------------------------------------------------------------------------------------- */
function scrollElement(direction) {
    if (delta >= scrollAreaWidth) {
        delta = 0;
        clearInterval(scrollTimer);
        scrollTimer = null;

        if (clipRight < maxClipRight) {
            scrollingActive = false;
            document.getElementById("ScrollTriggerRight").style.visibility = "visible";
        }
        if (clipRight >= maxClipRight) {
            loadNextProductGroup();
            // document.getElementById("ScrollTriggerRight").style.visibility = "hidden";
        }
        if (clipLeft <= 0) document.getElementById("ScrollTriggerLeft").style.visibility = "hidden";
        if (clipLeft > 0) document.getElementById("ScrollTriggerLeft").style.visibility = "visible";

        if (direction <= 0)
            scrollingActive = false;

        return;
    }

    scrollStep = Math.ceil((scrollAreaWidth - delta) * .1)
    if (scrollStep < 2) scrollStep = 2;
    if (delta + scrollStep >= scrollAreaWidth) {
        delta = scrollAreaWidth;
        scrollStep = scrollAreaWidth - delta + 1
    } else {
        delta += scrollStep;
    }

    if (direction == 1) {
        clipRight += Math.ceil(scrollStep);
        clipLeft += Math.ceil(scrollStep);
    } else {
        clipRight -= Math.ceil(scrollStep);
        clipLeft -= Math.ceil(scrollStep);
    }

    scrollDiv.style.clip = "rect(0px " + clipRight + "px " + clipBottom + "px " + clipLeft + "px)";
    scrollDiv.style.left = -clipLeft + 80 + "px";

    return;
}

/* ----------------------------------------------------------------------------------------- */
/*  initiate scrolling                                                                       */
/* ----------------------------------------------------------------------------------------- */
function scrollMe(direction) {
    if (!scrollTimer) {
        if (!scrollingActive) {
            scrollingActive = true;
            scrollTimer = setInterval("scrollElement(" + direction + ")", scrollInterval);
        }
    }
    return
}

/* ----------------------------------------------------------------------------------------- */
/*  finds an elements position                                                               */
/* ----------------------------------------------------------------------------------------- */
function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft, curtop];

   
}

/* ----------------------------------------------------------------------------------------- */
/*  toggles display of an element                                                            */
/* ----------------------------------------------------------------------------------------- */
function toggleDisplay(objId) {
    if (elm = document.getElementById(objId)) {
        elm.style.display = (elm.style.display == "block" ? "none" : "block");
    }
    return;
}

/* ----------------------------------------------------------------------------------------- */
/*  displays an element                                                                      */
/* ----------------------------------------------------------------------------------------- */
function displayElement(objId) {
    if (elm = document.getElementById(objId)) {
        elm.style.display = "block";
    }
    return;
}

/* ----------------------------------------------------------------------------------------- */
/*  hides an element                                                                         */
/* ----------------------------------------------------------------------------------------- */
function hideElement(objId) {
    if (elm = document.getElementById(objId)) {
        elm.style.display = "none";
    }
    return;
}

/* ----------------------------------------------------------------------------------------- */
/*  extends mouseover and mouseout events                                                    */
/* ----------------------------------------------------------------------------------------- */
function containsDOM(container, containee) {
    var isParent = false;
    do {
        if ((isParent = container == containee))
            break;
        containee = containee.parentNode;
    }
    while (containee != null);
    return isParent;
}

function checkMouseEnter(element, evt) {
    //	if (!evt) var evt = window.event;
    if (element.contains && evt.fromElement) {
        return !element.contains(evt.fromElement);
    } else if (evt.relatedTarget) {
        return !containsDOM(element, evt.relatedTarget);
    }
}

function checkMouseLeave(element, evt) {
    //	if (!evt) var evt = window.event;
    if (element.contains && evt.toElement) {
        return !element.contains(evt.toElement);
    } else if (evt.relatedTarget) {
        return !containsDOM(element, evt.relatedTarget);
    }
}

/* ----------------------------------------------------------------------------------------- */
/*  loads next product group so images are cached and scrolling can be smooth                */
/* ----------------------------------------------------------------------------------------- */
function loadNextProductGroup() {
    // use AJAX to retrieve product group
    // someAjaxFunction()	
    if (elmScrollArea = document.getElementById("ScrollArea")) {
        GetNextProducts(scrollOffset);
        scrollOffset = scrollOffset + 6;
    }
}

function renderNextProductGroup(result) {
    if (elmScrollArea = document.getElementById("ScrollArea")) {
        // create elements to hold the products
        elmProductGroup = document.createElement("div");
        elmProductGroup.className = "product_group";

        for (i = 0; i < result.length; i++) {
            elmProductDiv = document.createElement("div");
            if (i == 1 || i == 4) {
                elmProductDiv.className = "product middle";
            }
            else {
                elmProductDiv.className = "product";
            }

            elmProductImageDiv = document.createElement("div");
            elmProductImageDiv.className = "image";

            elmProductLink = document.createElement("a");
            elmProductLink.href = result[i].ProductUrl;

            elmProductImage = document.createElement("img");
            elmProductImage.src = result[i].ProductImageUrl; // "images/flowers/true_size/200x200/" + Math.ceil(Math.random() * 6) + ".jpg";
            elmProductImage.title = result[i].Name; // "a new product";
            elmProductImage.alt = result[i].Name; //"product image alt text";
            elmProductImage.width = 200;
            elmProductImage.height = 200;

            elmBuyButtonDiv = document.createElement("div");
            elmBuyButtonDiv.className = "buy_button";

            elmBuyButtonLink = document.createElement("a");
            elmBuyButtonLink.href = result[i].ProductUrl;

            elmBuyButtonImage = document.createElement("img");
            elmBuyButtonImage.src = result[i].ProductBuyImageUrl //"images/buy_now.gif";
            elmBuyButtonImage.width = result[i].ProductBuyImageWidth;
            elmBuyButtonImage.height = result[i].ProductBuyImageHeight;
            /*elmBuyButtonImage.title = "buy button title";
            elmBuyButtonImage.alt = "buy button alt text";*/

            elmBuyButtonLink.appendChild(elmBuyButtonImage);
            elmBuyButtonDiv.appendChild(elmBuyButtonLink);

            elmProductLink.appendChild(elmProductImage);
            elmProductImageDiv.appendChild(elmProductLink);

            elmProductDiv.appendChild(elmProductImageDiv);
            elmProductDiv.appendChild(elmBuyButtonDiv);

            elmProductGroup.appendChild(elmProductDiv);
        }

        if (result.length > 0) {
            // append new images to element
            elmScrollArea.appendChild(elmProductGroup);
            // increase clip area and div width
            maxClipRight += 840;
            scrollDiv.style.width = maxClipRight + "px";
        } else {
            // if no results, hide right scroll arrows
            if (x = document.getElementById("ScrollTriggerRight")) x.style.visibility = "hidden";
        }
    }

    scrollingActive = false;

    return
}

function cardTextCount(elmCardText) {
    if (elmTextCounter = document.getElementById("CardTextCharacterCount")) {

        if ((272 - elmCardText.value.length) < 0) {
            elmCardText.value = elmCardText.value.substring(0, 272);
        }
        elmTextCounter.innerHTML = 272 - (elmCardText.value.length)
        if (elmTextCounter.innerHTML == "-1") {
            elmTextCounter.innerHTML = "0";
        }
        else {

            var temp = elmCardText.value.split("\n");
            if (temp.length > 100) {
                elmTextCounter.innerHTML = "0";
                elmCardText.value = elmCardText.value.substring(0, elmCardText.value.length - 2);
            }

        }
    }
    return;
}

/* popup window */
function popupWindow(url) {
    window.open(url, "ef_window", "width=800,height=820,scrollbars,resizable")
}

function contractMainNavSubmenu() {
    var elmMenuItems = document.getElementById("MenuItems");
    var elmLogo = document.getElementById("Logo");
    var elmMenuBottom = document.getElementById("MenuBottom");

    if (elms = elmMenuItems.getElementsByTagName("ul")) {
        for (i = 0; i < elms.length; i++) {
            if (elms[i].style.display == "block") {
                elms[i].style.display = "none";
            }
        }
    }

    elmMenuItems.className = "";
    elmLogo.className = "";
    elmMenuBottom.style.display = "none";

    /*
    if (obj = document.getElementById("MainNavViewMore")) {
    for (i = 0; i < obj.childNodes.length; i++) {
    if (obj.childNodes[i].tagName == "UL") {
    obj.childNodes[i].style.display = "none";
    elmMenuItems.className = "";
    elmLogo.className = "";
    elmMenuBottom.style.display = "none";
    break;
    }
    }
    }
    */
    return;
}

/* ----------------------------------------------------------------------------------------- */
/*  create and display form element help balloon                                             */
/* ----------------------------------------------------------------------------------------- */
function showBalloon(obj, offset) {
    if (typeof (balloon) == "undefined") return;

    if (!obj.helpPopupCreated) {
        elmPosition = findPos(obj);
        mainContentPosition = findPos(document.getElementById("MainContent"));

        elmParent = obj.parentNode;
        if (elmParent.id == "ACListContainer") {
            elmParent = elmParent.parentNode;
        }

        elmBalloon = document.createElement("div");
        elmBalloon.className = "formHelpPopup";
        elmBalloon.style.position = "absolute";
        elmBalloon.style.left = (elmPosition[0] + obj.offsetWidth - mainContentPosition[0] + (offset ? offset : 20)) + "px";
        elmBalloon.style.top = (elmPosition[1] - (findPos(document.getElementById("MainContent"))[1])) - 60 + "px";

        elmBalloon.style.visibility = "hidden";

        elmInnerTop = document.createElement("div");
        elmInnerTop.className = "inner-top";
        elmInnerBottom = document.createElement("div");
        elmInnerBottom.className = "inner-bottom";

        elmBalloonText = document.createElement("p");
        elmBalloonText.innerHTML = "<b>" + balloon[obj.id].split("::")[0] + "</b><br />" + balloon[obj.id].split("::")[1];

        elmInnerTop.appendChild(elmBalloonText);
        elmBalloon.appendChild(elmInnerTop);
        elmBalloon.appendChild(elmInnerBottom);
        elmParent.appendChild(elmBalloon);

        obj.helpPopupCreated = true;
        obj.balloonRef = elmBalloon;
    }

    if (ballonVisible == 0) {
        obj.balloonRef.style.visibility = "visible";
        ballonVisible = 1;
    }
    return
}

/* ----------------------------------------------------------------------------------------- */
/*  hides the form elements help balloon                                                     */
/* ----------------------------------------------------------------------------------------- */
function hideBalloon(obj) {
    if (elm = document.getElementById(obj)) {
        if (elm.balloonRef) {
            if (elm.balloonRef.style.visibility == "visible") {
                ballonVisible = 0;
            }
            elm.balloonRef.style.visibility = "hidden";
        }
    }
    return;
}

/* ----------------------------------------------------------------------------------------- */
/*  product zoom in and zoom out                                                             */
/* ----------------------------------------------------------------------------------------- */
function zoomIn() {
    if (elm = document.getElementById("PageContainer")) {
        elm.className = "transparent";
    }

    if (elm = document.getElementById("ZoomedProductContainer")) {
        elm.style.display = "block";
    }
}

function zoomOut() {
    if (elm = document.getElementById("PageContainer")) {
        elm.className = "";
    }
    if (elm = document.getElementById("ZoomedProductContainer")) {
        elm.style.display = "none";
    }
    return
}

/* ----------------------------------------------------------------------------------------- */
/*  display or hide payment options popup                                                    */
/* ----------------------------------------------------------------------------------------- */
function displayPaymentOptionsPopup() {
    if (elm = document.getElementById("PaymentOptionsPopup")) {
        elm.style.display = "block";
    }
    return;
}

function hidePaymentOptionsPopup() {
    if (elm = document.getElementById("PaymentOptionsPopup")) {
        elm.style.display = "none";
    }
    return;
}

function showChooseFlorist() {
    if (elm = document.getElementById("ChooseFloristHelp")) {
        elm.style.display = "block";
        document.getElementById("ChooseFloristArrow").src = "/images/expander_arrow_open.gif"
    }
    return
}

function toggleFloristResult(obj) {
    if (elm = document.getElementById(obj + "Table")) {
        if (elm.style.display == "block") {
            elm.style.display = "none";
            document.getElementById(obj + "Arrow").src = "/images/result_arrow_closed.gif"
        } else {
            elm.style.display = "block";
            document.getElementById(obj + "Arrow").src = "/images/result_arrow_open.gif"
        }

    }
    return
}

function toggleHistoryDisplay(obj) {
    if (elm = document.getElementById(obj + "Table")) {
        if (elm.style.display == "block") {
            elm.style.display = "none";
            document.getElementById(obj + "Arrow").src = "/images/result_arrow_closed.gif"
        } else {
            elm.style.display = "block";
            document.getElementById(obj + "Arrow").src = "/images/result_arrow_open.gif"
        }

    }
    return
}

function toggleSearchResults(number) {
    var obj = "SearchResultsCategory" + number;

    if (elms = document.getElementsByTagName("span")) {
        for (i = 0; i < elms.length; i++) {
            if (elm = document.getElementById("SearchResultsCategory" + i)) {
                document.getElementById("SearchResultsCategory" + i).style.display = "none";
            }
            if (elm = document.getElementById("ResultArrow" + i)) {
                document.getElementById("ResultArrow" + i).src = "/images/search_result_arrow_closed.gif"
            }
        }
    }

    if (elm = document.getElementById("ResultArrow" + number)) {
        document.getElementById("SearchResultsCategory" + number).style.display = "block";
        document.getElementById("ResultArrow" + number).src = "/images/search_result_arrow_open.gif"
    }
    return
}

function toggleLoginForm(strWhichForm) {
    if (elm = document.getElementById(strWhichForm + "LoginForm")) {
        if (elm.style.display == "block") {
            elm.style.display = "none";
            document.getElementById(strWhichForm + "AccessAddressBookArrow").src = "/images/expander_arrow_closed.gif"
        } else {
            elm.style.display = "block";
            document.getElementById(strWhichForm + "AccessAddressBookArrow").src = "/images/expander_arrow_open.gif"
        }
    }
    return
}

function toggleCardtextForm() {
    if (elm = document.getElementById("cardtexthelp")) {
        if (elm.style.display == "block")
            elm.style.display = "none";
        else
            elm.style.display = "block";
    }
    return
}

function showSearchResultPopup(obj) {
    if (!obj.popupCreated) {
        // create element for image
        newDiv = document.createElement("div");
        newDiv.className = "product_popup";
        if (document.all) {
            offsetX = findPos(obj)[0];
            offsetY = findPos(obj)[1];
            xMousePos += offsetX;
            yMousePos += offsetY;
        }
        newDiv.style.left = xMousePos + 20 + "px";
        newDiv.style.top = yMousePos - 76 + "px";
        newImg = document.createElement("img");

        newImg.src = obj.title.substring(obj.title.indexOf("_") + 1, obj.title.length); //"/images/flowers/130x130/" + obj.title.substring(obj.title.indexOf("_") + 1, obj.title.length) + ".png";
        newDiv.appendChild(newImg);
        document.getElementsByTagName("body")[0].appendChild(newDiv);
        obj.popupCreated = true;
        obj.popupRef = newDiv;
        obj.title = "";
        visibleProduct = obj;
    } else {
        if (document.all) {
            offsetX = findPos(obj)[0];
            offsetY = findPos(obj)[1];
            xMousePos += offsetX;
            yMousePos += offsetY;
        }
        obj.popupRef.style.left = xMousePos + 20 + "px";
        obj.popupRef.style.top = yMousePos - 76 + "px";
        obj.popupRef.style.display = "block";
        visibleProduct = obj;
    }
    return;
}

function hideSearchResultPopup(obj) {
    if (obj.popupRef) {
        obj.popupRef.style.display = "none"
        visibleProduct = null;
    }
    return;
}

function captureMousePosition(e) {
    if (document.all) {
        xMousePos = event.x + document.body.scrollLeft;
        yMousePos = event.y + document.body.scrollTop;
        //		xMousePos -= findPos(
        /*		window.status = "IE: " + (xMousePos) + ", " + (yMousePos)
        xMousePosMax = document.body.clientWidth + document.body.scrollLeft;
        yMousePosMax = document.body.clientHeight + document.body.scrollTop;*/
    } else {
        if (document.getElementById) {
            xMousePos = e.pageX;
            yMousePos = e.pageY;
            /*			xMousePosMax = window.innerWidth + window.pageXOffset;
            yMousePosMax = window.innerHeight + window.pageYOffset;
            window.status = "ALL: " + (xMousePos) + ", " + (yMousePos)*/
        }
    }

    if (visibleProduct) {
        if (document.all) {
            xMousePos += offsetX;
            yMousePos += offsetY;
        }
        visibleProduct.popupRef.style.left = xMousePos + 20 + "px";
        visibleProduct.popupRef.style.top = yMousePos - 76 + "px";
    }
}

function fnTrapKD(btn, e) {
    if (e) {
        if (e.keyCode == 13) {
            btn.click();
            e.cancel = true;
            e.returnValue = false;
        }
    } else {
        if (window.event.keyCode == 13) {
            btn.click();
            window.event.returnValue = false;
        }
    }
}


/* ----------------------------------------------------------------------------------------- */
/*  inform user that he / she is leaving an essential page                                   */
/* ----------------------------------------------------------------------------------------- */
function ConfirmNavigateFromPage(e, msg) {
    if (window.event) {
        window.event.returnValue = msg;
        return false;
    } else {
        e.preventDefault();
    }
    return msg;
}

/* ----------------------------------------------------------------------------------------- */
/*  print order from order history                                                           */
/* ----------------------------------------------------------------------------------------- */
function printOrder(elmDivId) {
    var orderCode = null;

    window.open("/layouts/print_order_history.html?id=" + elmDivId, "orderHistory", "width=800,height=600,resizable,scrollbars")
    /*
    if (elm = document.getElementById(elmDiv)) {
    orderCode = "<table>" + elm.innerHTML + "</table>";
    }
    */
}

/* ----------------------------------------------------------------------------------------- */
/*  show cart contents                                                                       */
/* ----------------------------------------------------------------------------------------- */
function showCartContents() {
    obj = document.getElementById("ItemsInCart");
    posX = findPos(obj)[0];
    posY = findPos(obj)[1];

    if (elm = document.getElementById("CartContents")) {
        elm.style.left = (posX - 62) + "px";
        elm.style.top = (posY + 25) + "px";
        elm.style.display = "block";
    }
}

/* ----------------------------------------------------------------------------------------- */
/*  expands the sub menu in main navigation                                                  */
/* ----------------------------------------------------------------------------------------- */
function expandMainNavSubmenu(obj) {
   //EFSEMASTJ 2009-03-30 start
   //Reset all menus to hidden before opening a new one.
   contractMainNavSubmenu();
   //EFSEMASTJ 2009-03-30 stop

   var elmMenuItems = document.getElementById("MenuItems");
   var elmLogo = document.getElementById("Logo");  /*kubi*/
   var elmMenuBottom = document.getElementById("MenuBottom");  /*kubi*/

    // !!! adjust height of menuitem layer
    elmListToExpand = obj.parentNode.getElementsByTagName("ul")[0];
    elmListToExpand.style.display = "block"

    elmMenuItems.className = "expanded";
  //  elmMenuItems.style.height = findPos(document.getElementById("MenuBottom"))[1] - 128 + "px"; 
    elmMenuItems.style.height = 41 + "px";
    
    elmLogo.className = "expanded";
    elmMenuBottom.style.display = "block";
 

    /*
    if (obj = document.getElementById("MainNavViewMore")) {
    for (i = 0; i < obj.childNodes.length; i++) {
    if (obj.childNodes[i].tagName == "UL") {
    obj.childNodes[i].style.display = "block";
    elmMenuItems.className = "expanded";
    elmMenuItems.style.height = findPos(document.getElementById("BottomNav"))[1] - 158 + "px";
    elmLogo.className = "expanded";
    elmMenuBottom.style.display = "block";
    break;
    }
    }
    }
    */
    return 0;
}

function AttachToSelects() {
    if (formSelectElms = document.getElementsByTagName("select")) {
        if (typeof (balloon) != "undefined") {
            (function loop2(l) { /* in order to de-reference l in each iteration */
                if (l < formSelectElms.length) {
                    if (balloon[formSelectElms[l].id]) {
                        formSelectElms[l].helpPopupCreated = false;
                        if (formSelectElms[l].id.indexOf("drpDeliveryDateDay") >= 0) {
                            formSelectElms[l].onfocus = function() { showBalloon(this, 79) }
                        }
                        else if (formSelectElms[l].id.indexOf("drpDeliveryDate") >= 0) {
                            formSelectElms[l].onfocus = function() { showBalloon(this, 123) }
                        }
                        else
                            formSelectElms[l].onfocus = function() { showBalloon(this, 20) }
                        //formElms[i].onblur  = function() { hideBalloon(this) }
                        addEvent(formSelectElms[l], "blur", function() { hideBalloon(formSelectElms[l].id) });
                    }
                    loop2(l + 1);
                }
            })(0);
        }
    }
}

/* ----------------------------------------------------------------------------------------- */
/*  things to do at page load                                                                */
/* ----------------------------------------------------------------------------------------- */
function init() {
    var elm, elms;

    if (elm = document.getElementById("ScrollArea")) {
        clipBottom = parseInt(elm.offsetHeight);
    }

    if (document.all) {
        document.onmousemove = captureMousePosition;
    } else if (document.getElementById) {
        document.onmousemove = captureMousePosition;
    }

    // remove IE6Visibility class from images
    if (elms = document.getElementsByTagName("img")) {
        for (i = 0; i < elms.length; i++) {
            if (elms[i].className.indexOf("IE6Visibility") >= 0) {
                elms[i].className = elms[i].className.replace("IE6Visibility", "");
            }
        }
    }

    // scroller
    if (elm = document.getElementById("ScrollArea")) {
        scrollDiv = elm;
    }

    // display payments options
    if (elm = document.getElementById("displayPaymentOptionsLink")) {
        elm.onclick = displayPaymentOptionsPopup;
    }

    // hide payments options
    if (elm = document.getElementById("PaymentOptionsPopup")) {
        elm.onmouseout = function(e) {
            e = e ? e : window.event;
            if (checkMouseLeave(this, e)) {
                hidePaymentOptionsPopup();
            }
        }
    }

    // zoom in and out buttons
    if (elm = document.getElementById("ProductZoomIn")) elm.onclick = zoomIn;
    if (elm = document.getElementById("ProductZoomOut")) elm.onclick = zoomOut;

    // expand main nav sub menu
    // find menu elements with sub menus
    if (elm = document.getElementById("MenuItems")) {
        //alert(elm.childNodes.length)
        for (i = 0; i < elm.childNodes.length; i++) {
            if (elm.childNodes[i].tagName == "UL") {
                if (elms = elm.childNodes[i].getElementsByTagName("ul")) {
                    for (j = 0; j < elms.length; j++) {
                        elmAnchor = elms[j].parentNode.childNodes[0];
                        elmAnchor.href = "javascript:void(0)"
                        elmAnchor.onclick = function() { expandMainNavSubmenu(this) };
                    }
                }
            }
        }
    }

//    // contract main nav sub menu
//    if (elm = document.getElementById("MainNav")) {
//        elm.onmouseout = function(e) {
//            e = e ? e : window.event;
//            if (checkMouseLeave(this, e)) {
//                contractMainNavSubmenu();
//            }
//        }
//    }

    //PageContainer
    // contract main nav sub menu
    if (elm = document.getElementById("PageContainer")) {
        elm.onmouseout = function(e) {
            e = e ? e : window.event;
            if (checkMouseLeave(this, e)) {
                contractMainNavSubmenu();
            }
        }
    }

    // attach events to form elements (help balloon)
    if (formElms = document.getElementsByTagName("input")) {
        if (typeof (balloon) != "undefined") {
            (function loop(k) { /* in order to de-reference k in each iteration */
                if (k < formElms.length) {
                    if (balloon[formElms[k].id]) {
                        formElms[k].helpPopupCreated = false;
                        formElms[k].onfocus = function() { showBalloon(this, 20) }
                        //formElms[i].onblur  = function() { hideBalloon(this) }
                        addEvent(formElms[k], "blur", function() { hideBalloon(formElms[k].id) });
                    }
                    loop(k + 1);
                }
            })(0);
        }
    }

    if (formElms2 = document.getElementsByTagName("textarea")) {
        for (i = 0; i < formElms2.length; i++) {
            if (balloon[formElms2[i].id]) {
                formElms2[i].onfocus = function() { showBalloon(this) }
                formElms2[i].onblur = function() { hideBalloon(this.id) }
            }
        }
    }

    AttachToSelects();

    // attach events to "what's this" links (help balloon)
    elms = document.getElementsByTagName("a");
    for (i = 0; i < elms.length; i++) {
        if (elms[i].className == "WhatIsThis") {
            elms[i].onmouseover = function() {
                showBalloon(this);
            }
            elms[i].onmouseout = function() {
                hideBalloon(this.id);
            }
        }
    }

    // attach events to "what's this" links (help balloon)
    elms = document.getElementsByTagName("table");
    for (i = 0; i < elms.length; i++) {
        if (elms[i].className.indexOf("WhatIsThis") >= 0) {
            elms[i].onmouseover = function() { showBalloon(this) }
            elms[i].onmouseout = function() { hideBalloon(this.id) }
        }
    }

    /*
    // select credit card / invoice form on payment method
    if (elm = document.getElementById("CreditCardRadio")) {
    elm.onclick = function() {
    displayElement("CreditCardForm");
    hideElement("InvoiceForm");
    }
    }
    if (elm = document.getElementById("InvoiceRadio")) {
    elm.onclick = function() {
    displayElement("InvoiceForm");
    hideElement("CreditCardForm");
    }
    }
    */
    // register Private or Company
    if (elm = document.getElementById("VIPRegisterPrivate")) {
        elm.onclick = function() {
            displayElement("FormRegisterPrivate");
            hideElement("FormRegisterCompany");
        }
    }
    if (elm = document.getElementById("VIPRegisterCompany")) {
        elm.onclick = function() {
            displayElement("FormRegisterCompany");
            hideElement("FormRegisterPrivate");
        }
    }

    // access address book
    if (elm = document.getElementById("FormAccessAddressBookLink")) elm.onclick = function() { toggleLoginForm("Form") }

    // access address book (for invoice, step4)
    if (elm = document.getElementById("FormAccessAddressBookLinkInvoice")) elm.onclick = function() { toggleLoginForm("FormInvoice") }

    // Help with card text
    if (elm = document.getElementById("HelpWithCardtextLink")) elm.onclick = function() { toggleCardtextForm() }

    // access address billing
    if (elm = document.getElementById("FormCCAccessBillingAddressLink")) elm.onclick = function() { toggleLoginForm("FormCC") }
    if (elm = document.getElementById("FormInvoiceAccessBillingAddressLink")) elm.onclick = function() { toggleLoginForm("FormInvoice") }

    // lost password link
    if (elm = document.getElementById("FormForgotPasswordLink")) elm.onclick = function() { displayElement("FormForgotPassword") }
    if (elm = document.getElementById("FormCCForgotPasswordLink")) elm.onclick = function() { displayElement("FormCCForgotPassword") }
    if (elm = document.getElementById("FormInvoiceForgotPasswordLink")) elm.onclick = function() { displayElement("FormInvoiceForgotPassword") }

    // product search results mouseovers
    if (elms = document.getElementsByTagName("tr")) {
        for (i = 0; i < elms.length; i++) {
            if (elms[i].title.indexOf("ProductSearchResult_") >= 0) {
                elms[i].onmouseover = function() {
                    showSearchResultPopup(this);
                }
                /*
                elms[i].onmouseover = function(e) {
                e = e ? e : window.event;
                if (checkMouseEnter(this, e)) {
                showSearchResultPopup(this);
                }
                }
                */
                /*				elms[i].onmouseout = function(e) {
                e = e ? e : window.event;
                if (checkMouseLeave(this, e)) {
                hideSearchResultPopup(this);
                }
                }*/
                elms[i].onmouseout = function() {
                    hideSearchResultPopup(this);
                }
            }
        }
    }

    // attach onclick event to calendar icon
    if (elm = document.getElementById("calendardivimg")) {
        elm.onclick = function() {
            if (x = document.getElementById("calendardiv")) {
                z = findPos(document.getElementById("calendardivimg"));
                x.style.left = (z[0] - 255) + "px";
                x.style.top = z[1] + "px";
                x.style.visibility = "visible";
            }
        }
    }

    // card text counter
    if (typeof (cardTextboxClientId) != "undefined") {
        if (elmCardText = document.getElementById(cardTextboxClientId)) {
            if (elmTextCounter = document.getElementById("CardTextCharacterCount")) {
                elmTextCounter.innerHTML = 272 - elmCardText.value.length;
                if (elmTextCounter.innerHTML == -1) {
                    elmTextCounter.innerHTML == "0"
                }
            }
            elmCardText.onkeypress = function() { cardTextCount(this) }
            elmCardText.onkeyup = function() { cardTextCount(this) }
        }
    }

    // attach onclick event to calendar icon
    if (elm = document.getElementById("calendarimg")) {
        elm.onclick = function() {
            if (x = document.getElementById("calendardiv")) {
                x.style.visibility = "visible";
            }
        }
    }

    // check if scroll arrows should be hidden
    if (elm = document.getElementById("ProductDisplay")) {
        if (elm.className == "list_all") {
            if (x = document.getElementById("ScrollTriggerLeft")) x.style.visibility = "hidden";
            if (x = document.getElementById("ScrollTriggerRight")) x.style.visibility = "hidden";
        }
    }
    // immediately load next product group for smoother scrolling
    loadNextProductGroup();

    if (elm = document.getElementById("ItemsInCart")) {
        elm.onmouseover = showCartContents;
    }

    // mouse over on scroll arrows on category page
    if (elm = document.getElementById("ScrollTriggerLeft")) {
        elmImg = elm.getElementsByTagName("img")[0];
        elmImg.onmouseover = function() {
            this.src = this.src.substring(0, this.src.lastIndexOf("/"));
            this.src += "/arrow_left_MouseOver.jpg";
        }
        elmImg.onmouseout = function() {
            this.src = this.src.substring(0, this.src.lastIndexOf("/"));
            this.src += "/arrow_left.jpg";
        }
    }

    if (elm = document.getElementById("ScrollTriggerRight")) {
        elmImg = elm.getElementsByTagName("img")[0];
        elmImg.onmouseover = function() {
            this.src = this.src.substring(0, this.src.lastIndexOf("/"));
            this.src += "/arrow_right_MouseOver.jpg";
        }
        elmImg.onmouseout = function() {
            this.src = this.src.substring(0, this.src.lastIndexOf("/"));
            this.src += "/arrow_right.jpg";
        }
    }

    return;
}

/* attach event / add event listener */
if (window.attachEvent) {
    window.attachEvent("onload", init); // the IE way
} else if (window.addEventListener) {
    window.addEventListener("load", init, false); // W3C compliant browsers
}
