if (window.addEventListener) window.addEventListener("load", onload2, false);
else if (window.attachEvent) window.attachEvent("onload", onload2);
else if (document.getElementById) window.onload = onload2;
var containerHeight;

function onload2() {
    if ($("bulkdrop") != null) {
        containerHeight = new fx.Height("bulkdrop", {
            duration: 800
        });
        containerHeight.hide();
        $("bulkdrop").innerHTML = $("bulkhold").innerHTML;
    };
    var LoadingSWF = new Image();
    LoadingSWF.src = "/assets/animation.swf";
    return true;
};
document.write("<style>#bulkhold {display:none;};</style>");
var ns4 = document.layers;
var ie4 = document.all;
var ns6 = document.getElementById && !document.all;
var dragswitch = 0;
var nsx;
var nsy;
var nstemp;

function drag_dropns(name) {
    if (!ns4) return;
    temp = eval(name);
    temp.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP);
    temp.onmousedown = gons;
    temp.onmousemove = dragns;
    temp.onmouseup = stopns;
};

function gons(e) {
    temp.captureEvents(Event.MOUSEMOVE);
    nsx = e.x;
    nsy = e.y;
};

function dragns(e) {
    if (dragswitch == 1) {
        temp.moveBy(e.x - nsx, e.y - nsy);
        return false;
    }
};

function stopns() {
    temp.releaseEvents(Event.MOUSEMOVE);
};

function drag_drop(e) {
    if (ie4 && dragapproved) {
        crossobj.style.left = tempx + event.clientX - offsetx;
        crossobj.style.top = tempy + event.clientY - offsety;
        return false;
    } else if (ns6 && dragapproved) {
        crossobj.style.left = tempx + e.clientX - offsetx + "px";
        crossobj.style.top = tempy + e.clientY - offsety + "px";
        return false;
    }
};

function initializedrag(e) {
    crossobj = ns6 ? $("showimage") : document.all.showimage;
    var firedobj = ns6 ? e.target : event.srcElement;
    var topelement = ns6 ? "html" : document.compatMode && document.compatMode != "BackCompat" ? "documentElement" : "body";
    while (firedobj.tagName != topelement.toUpperCase() && firedobj.id != "dragbar") {
        firedobj = ns6 ? firedobj.parentNode : firedobj.parentElement;
    };
    if (firedobj.id == "dragbar") {
        offsetx = ie4 ? event.clientX : e.clientX;
        offsety = ie4 ? event.clientY : e.clientY;
        tempx = parseInt(crossobj.style.left);
        tempy = parseInt(crossobj.style.top);
        dragapproved = true;
        document.onmousemove = drag_drop;
    }
};
document.onmouseup = new Function("dragapproved=false");

function showbox() {
    crossobj = ns6 ? $("showimage") : document.all.showimage;
    if (ie4 || ns6) crossobj.style.visibility = "visible";
    else if (ns4) document.showimage.visibility = "visible";
};

function hidebox() {
    crossobj = ns6 ? $("showimage") : document.all.showimage;
    if (ie4 || ns6) crossobj.style.visibility = "hidden";
    else if (ns4) document.showimage.visibility = "hide";
};

function swapThumb(imgID) {
    var imgIDsrc = $(imgID).src;
    var imgToThumbSrc = $("img1").src;
    $("img1").src = imgIDsrc;
    $("imgL").src = imgIDsrc.replace(".jpg", "L.jpg");
    $("product_shot").href = imgIDsrc.replace(".jpg", "L.jpg");
    $(imgID).src = imgToThumbSrc;
};
var cNeonYellow = "<img src=\'/assets/colors/NeonYellow.jpg\' width=\'54\' height=\'150\' title=\'Neon Yellow\' />";
var cNeonOrange = "<img src=\'/assets/colors/NeonOrange.jpg\' width=\'54\' height=\'150\' title=\'Neon Orange\' />";
var cNeonPink = "<img src=\'/assets/colors/NeonPink.jpg\' width=\'54\' height=\'150\' />";
var cNeonGreen = "<img src=\'/assets/colors/NeonGreen.jpg\' width=\'54\' height=\'150\' />";
var cIvory = "<img src=\'/assets/colors/Ivory.jpg\' width=\'54\' height=\'150\' />";
var cMaize = "<img src=\'/assets/colors/Maize.jpg\' width=\'54\' height=\'150\' />";
var cYellow = "<img src=\'/assets/colors/Yellow.jpg\' width=\'54\' height=\'150\' />";
var cGold = "<img src=\'/assets/colors/Gold.jpg\' width=\'54\' height=\'150\' />";
var cLightOrange = "<img src=\'/assets/colors/LightOrange.jpg\' width=\'54\' height=\'150\' />";
var cOrange = "<img src=\'/assets/colors/Orange.jpg\' width=\'54\' height=\'150\' />";
var cRust = "<img src=\'/assets/colors/Rust.jpg\' width=\'54\' height=\'150\' />";
var cLightPink = "<img src=\'/assets/colors/LightPink.jpg\' width=\'54\' height=\'150\' />";
var cOrchidPink = "<img src=\'/assets/colors/OrchidPink.jpg\' width=\'54\' height=\'150\' />";
var cScarletRed = "<img src=\'/assets/colors/ScarletRed.jpg\' width=\'54\' height=\'150\' />";
var cRed = "<img src=\'/assets/colors/Red.jpg\' width=\'54\' height=\'150\'>";
var cFuchsia = "<img src=\'/assets/colors/Fuchsia.jpg\' width=\'54\' height=\'150\'>";
var cMagenta = "<img src=\'/assets/colors/Magenta.jpg\' width=\'54\' height=\'150\'>";
var cMaroon = "<img src=\'/assets/colors/Maroon.jpg\' width=\'54\' height=\'150\'>";
var cRubine = "<img src=\'/assets/colors/Rubine.jpg\' width=\'54\' height=\'150\'>";
var cLilac = "<img src=\'/assets/colors/Lilac.jpg\' width=\'54\' height=\'150\'>";
var cLavender = "<img src=\'/assets/colors/Lavender.jpg\' width=\'54\' height=\'150\'>";
var cViolet = "<img src=\'/assets/colors/Violet.jpg\' width=\'54\' height=\'150\'>";
var cPurple = "<img src=\'/assets/colors/Purple.jpg\' width=\'54\' height=\'150\'>";
var cMintGreen = "<img src=\'/assets/colors/MintGreen.jpg\' width=\'54\' height=\'150\'>";
var cDustyGreen = "<img src=\'/assets/colors/DustyGreen.jpg\' width=\'54\' height=\'150\'>";
var cOliveGreen = "<img src=\'/assets/colors/OliveGreen.jpg\' width=\'54\' height=\'150\'>";
var cKellyGreen = "<img src=\'/assets/colors/KellyGreen.jpg\' width=\'54\' height=\'150\'>";
var cEmerald = "<img src=\'/assets/colors/Emerald.jpg\' width=\'54\' height=\'150\'>";
var cSpruceGreen = "<img src=\'/assets/colors/SpruceGreen.jpg\' width=\'54\' height=\'150\'>";
var cAqua = "<img src=\'/assets/colors/Aqua.jpg\' width=\'54\' height=\'150\'>";
var cTurquoise = "<img src=\'/assets/colors/Turquoise.jpg\' width=\'54\' height=\'150\'>";
var cBabyBlue = "<img src=\'/assets/colors/BabyBlue.jpg\' width=\'54\' height=\'150\'>";
var cSkyBlue = "<img src=\'/assets/colors/SkyBlue.jpg\' width=\'54\' height=\'150\'>";
var cMediumBlue = "<img src=\'/assets/colors/MediumBlue.jpg\' width=\'54\' height=\'150\'>";
var cRoyal = "<img src=\'/assets/colors/Royal.jpg\' width=\'54\' height=\'150\'>";
var cLightGrey = "<img src=\'/assets/colors/LightGrey.jpg\' width=\'54\' height=\'150\'>";
var cGrey = "<img src=\'/assets/colors/Grey.jpg\' width=\'54\' height=\'150\'>";
var cBrown = "<img src=\'/assets/colors/Brown.jpg\' width=\'54\' height=\'150\'>";
var cBlack = "<img src=\'/assets/colors/Black.jpg\' width=\'54\' height=\'150\'>";
var cPeach = "<img src=\'/assets/colors/Peach.jpg\' width=\'54\' height=\'150\'>";
var cPastelMint = "<img src=\'/assets/colors/PastelMint.jpg\' width=\'54\' height=\'150\'>";
var cScoutGreen = "<img src=\'/assets/colors/ScoutGreen.jpg\' width=\'54\' height=\'150\'>";
var cHunterGreen = "<img src=\'/assets/colors/HunterGreen.jpg\' width=\'54\' height=\'150\'>";
var cNavy = "<img src=\'/assets/colors/Navy.jpg\' width=\'54\' height=\'150\'>";
var cLightTan = "<img src=\'/assets/colors/LightTan.jpg\' width=\'54\' height=\'150\'>";
var cTeal = "<img src=\'/assets/colors/Teal.jpg\' width=\'54\' height=\'150\'>";
var cMocha = "<img src=\'/assets/colors/Mocha.jpg\' width=\'54\' height=\'150\'>";
var cNeonBlue = "<img src=\'/assets/colors/NeonBlue.jpg\' width=\'54\' height=\'150\'>";
var cElectricBlue = "<img src=\'/assets/colors/ElectricBlue.jpg\' width=\'54\' height=\'150\'>";
var cCharcoal = "<img src=\'/assets/colors/Charcoal.jpg\' width=\'54\' height=\'150\'>";
var cAmethyst = "<img src=\'/assets/colors/Amethyst.jpg\' width=\'54\' height=\'150\'>";
var cWhite = "";
var c7202 = "<img src=\'/assets/colors/7202.jpg\' width=\'54\' height=\'150\'>";
var c7205 = "<img src=\'/assets/colors/7205.jpg\' width=\'54\' height=\'150\'>";
var c7214 = "<img src=\'/assets/colors/7214.jpg\' width=\'54\' height=\'150\'>";
var c7306 = "<img src=\'/assets/colors/7306.jpg\' width=\'54\' height=\'150\'>";
var c7318 = "<img src=\'/assets/colors/7318.jpg\' width=\'54\' height=\'150\'>";
var c7411 = "<img src=\'/assets/colors/7411.jpg\' width=\'54\' height=\'150\'>";
var c7001 = "<img src=\'/assets/colors/7001.jpg\' width=\'54\' height=\'150\'>";
var c2105 = "<img src=\'/assets/colors/2105.jpg\' width=\'54\' height=\'150\'>";
var c2132 = "<img src=\'/assets/colors/2132.jpg\' width=\'54\' height=\'150\'>";
var c2153 = "<img src=\'/assets/colors/2153.jpg\' width=\'54\' height=\'150\'>";
var c2305 = "<img src=\'/assets/colors/2305.jpg\' width=\'54\' height=\'150\'>";
var cSilverLurex = "<img src=\'/assets/colors/SilverLurex.jpg\' width=\'54\' height=\'150\'>";
var cGoldLurex = "<img src=\'/assets/colors/GoldLurex.jpg\' width=\'54\' height=\'150\'>";
var cFishnetSilverLurex = "<img src=\'/assets/colors/FishnetSilverLurex.jpg\' width=\'54\' height=\'150\'>";
var cSilverSplash = "<img src=\'/assets/colors/SilverSplash.jpg\' width=\'54\' height=\'150\'>";
var cGoldSplash = "<img src=\'/assets/colors/GoldSplash.jpg\' width=\'54\' height=\'150\'>";
var cSilverNGoldRain = "<img src=\'/assets/colors/SilverNGoldRain.jpg\' width=\'54\' height=\'150\'>";
var cGreen = '';
var requesterAddToCart = null;
var formRequesterAddToCart = null;
var addQty = null;
var addPrice = null;

function onAddToCart() {
    var ErrorMessage = '';
    var MessageAddingToCart = $("MessageAddingToCart");
    var Error = false;
    var SelectSize = $("SizeSelect");
    var SelectSizeLabel = $("SizeSelectLabel");
    var SelectColor = $("ColorSelect");
    var SelectColorLabel = $("ColorSelectLabel");
    if (SelectSize.value == "None" && SelectColor.value == "None") {
        ErrorMessage = "Please select a Size/Color.";
        SelectSize.style.cssText = "border:1px solid #B81215;background:#FFDDDD!important;";
        SelectSizeLabel.style.cssText = "font-weight:bold;color:#BF0101";
        SelectColor.style.cssText = "border:1px solid #B81215;background:#FFDDDD!important;";
        SelectColorLabel.style.cssText = "font-weight:bold;color:#BF0101";
        Error = true;
        ErrorMessage = '<div style=\"background: #FFDDDD url(/assets/icon_error.gif) no-repeat 20px; center;	border-top: 1px solid #B81215;border-bottom: 1px solid #B81215;padding: 15px 0;margin-bottom: 10px;"><p style=\"padding:0;margin:0;text-indent:65px;font-weight: bold;color: #BF0101;\">' + ErrorMessage + '</p></div>';
    } else {
        if (SelectSize.value == "None") {
            ErrorMessage = "Please select a Size.";
            SelectSize.style.cssText = "border:1px solid #B81215;background:#FFDDDD!important;";
            SelectSizeLabel.style.cssText = "font-weight:bold;color:#BF0101";
            SelectColor.style.cssText = "";
            SelectColorLabel.style.cssText = "";
            Error = true;
            ErrorMessage = '<div style=\"background: #FFDDDD url(/assets/icon_error.gif) no-repeat 20px; center;	border-top: 1px solid #B81215;border-bottom: 1px solid #B81215;padding: 15px 0;margin-bottom: 10px;"><p style=\"padding:0;margin:0;text-indent:65px;font-weight: bold;color: #BF0101;\">' + ErrorMessage + '</p></div>';
        };
        if (SelectColor.value == "None") {
            ErrorMessage = "Please select a Color.";
            SelectColor.style.cssText = "border:1px solid #B81215;background:#FFDDDD!important;";
            SelectColorLabel.style.cssText = "font-weight:bold;color:#BF0101";
            SelectSize.style.cssText = "";
            SelectSizeLabel.style.cssText = "";
            Error = true;
            ErrorMessage = '<div style=\"background: #FFDDDD url(/assets/icon_error.gif) no-repeat 20px; center;	border-top: 1px solid #B81215;border-bottom: 1px solid #B81215;padding: 15px 0;margin-bottom: 10px;"><p style=\"padding:0;margin:0;text-indent:65px;font-weight: bold;color: #BF0101;\">' + ErrorMessage + '</p></div>';
        }
    };
    var Qty = parseInt($("Qty").value);
    var QtyLabel = $("QtyLabel");
    var QtyTextBox = $("Qty");
    if (Qty < 1 || isNaN(Qty)) {
        QtyLabel.style.cssText = "font-weight:bold;color:#BF0101";
        QtyTextBox.style.cssText = "border:1px solid #B81215;background:#FFDDDD!important;";
        ErrorMessage += '<div style=\"background: #FFDDDD url(/assets/icon_error.gif) no-repeat 20px; center;	border-top: 1px solid #B81215;border-bottom: 1px solid #B81215;padding: 15px 0;margin-bottom: 10px;"><p style=\"padding:0;margin:0;text-indent:65px;font-weight: bold;color: #BF0101;\">Please enter a valid Qty.</p></div>';
        Error = true;
    } else {
        QtyLabel.style.cssText = "";
        QtyTextBox.style.cssText = "";
    };
    if (Error == true) {
        $("MessageAddingToCart").innerHTML = ErrorMessage;
        return false;
    } else {
        $("MessageAddingToCart").innerHTML = "";
        SelectColor.style.cssText = "";
        SelectColorLabel.style.cssText = "";
        SelectSize.style.cssText = "";
        SelectSizeLabel.style.cssText = "";
    };
    onAddToCartStep2();
    return false;
};


function onAddToCartStep2() {
    $("options").style.display = "none";
    $("MessageAddingToCart").innerHTML = 'Please wait, adding item to your cart...<object width=\"260\" height=\"65\"><param name=\"movie\" value=\"animation.swf\"><embed src=\"/assets/animation.swf\" width=\"260\" height=\"65\"></embed></object>';
    $("continue").style.display = "none";
    if (requesterAddToCart != null && requesterAddToCart.readyState != 0 && requesterAddToCart.readyState != 4) {
        requesterAddToCart.abort();
    };
    var oForm = $("AddItem");
    try {
        requesterAddToCart = new XMLHttpRequest();
    } catch (error) {
        try {
            requesterAddToCart = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (error) {
            oForm.submit();
            requesterAddToCart = null;
            return false;
        }
    };
    addQty = $("Qty").value;
    addPrice = $("PPrice").value;
    var oForm = $("AddItem");
    try {
        requesterAddToCart = new XMLHttpRequest();
    } catch (error) {
        try {
            requesterAddToCart = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (error) {
            oForm.submit();
            requesterAddToCart = null;
            return false;
        }
    };
    addQty = $("Qty").value;
    addPrice = $("PPrice").value;
    var sParams = "";
    if ($("sale") != null) {
        if ($("sale").value != null) sParams = addPostParam(sParams, "sale", $("sale").value);
    }

    sParams = addPostParam(sParams, "AA", "true");
    sParams = addPostParam(sParams, "ItemID", $("ItemID").value);
    sParams = addPostParam(sParams, "PLabel", $("PLabel").value);
    sParams = addPostParam(sParams, "Qty", addQty);
    sParams = addPostParam(sParams, "SizeSelect", $("SizeSelect").value);
    sParams = addPostParam(sParams, "ColorSelect", $("ColorSelect").value);
    sParams = addPostParam(sParams, "PPrice", addPrice);
    sParams = addPostParam(sParams, "cid", get_cookie("cid"));
    sParams = addPostParam(sParams, "Cookies", $("Cookies").value);
    requesterAddToCart.onreadystatechange = onreadystateAddToCart;
    try {
        requesterAddToCart.open("POST", "/Cart/Cart.aspx", true)
    } catch (error) {
        alert("error opening file");
    };
    requesterAddToCart.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    try {
        requesterAddToCart.send(sParams);
    } catch (error) {
        alert("error sending");
    }
};

function onreadystateAddToCart() {
    if (requesterAddToCart.readyState == 4) {
        try {
            if (requesterAddToCart.status == 200) {
                var response = requesterAddToCart.responseText; 
                $("continue").style.display = "block";
                $("options").style.display = "block";
                $("MessageAddingToCart").innerHTML = "Your item was successfully added to your cart.";
                //alert("item added");
                //alert(response);
                var curTotalCart = 0; ///parseFloat($("TotalCart").innerHTML) + parseFloat(addQty * addPrice);
                var curTotalItems = 0; //parseInt($("TotalItems").innerHTML) + parseInt(addQty);
                if (response != null && response.indexOf("|") > 0) {
                    var result = response.split("|");
                    curTotalCart = result[1];
                    curTotalItems = result[0];

                }
                else {
                     curTotalCart = parseFloat($("TotalCart").innerHTML) + parseFloat(addQty * addPrice);
                     curTotalItems = parseInt($("TotalItems").innerHTML) + parseInt(addQty);

                }
     
//                var curTotalCart = parseFloat($("TotalCart").innerHTML) + parseFloat(addQty * addPrice);
//                var curTotalItems = parseInt($("TotalItems").innerHTML) + parseInt(addQty);
                $("TotalCart").innerHTML = curTotalCart;
                $("TotalItems").innerHTML = curTotalItems;
                set_cookie("TotalItems", curTotalItems.toString(), 14, "/");
                set_cookie("TotalCart", curTotalCart.toString(), 14, "/");
                var hmCL = $("hmCheckoutLink");
                if (hmCL.href.indexOf("cid") == -1) {
                    $("hmCheckoutLink").href = $("hmCheckoutLink").href + "?cid=" + get_cookie("cid");
                }
            } else if (requesterAddToCart.status != 0) {
                $("AddItem").submit();
                alert("There was an error while retrieving the URL: " + requesterAddToCart.statusText);
            }
        } catch (error) {
            alert("error inside readystate:" + requesterAddToCart.statusText);
            $("AddItem").submit();
        }
    };
    return true;
};

function addPostParam(sParams, sParamName, sParamValue) {
    if (sParams.length > 0) {
        sParams += "&";
    };
    return sParams + encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
};
//function selectColorOption(num) { var selObj = $("ColorSelect"); selObj.selectedIndex = num; };

function selectColorOption(num) {

    var selColor = $("cs" + num);
    if (selColor != null) {
        selColor.selected = true;

    } else {
        var selObj = $("ColorSelect");
        selObj.selectedIndex = num;
    }
    if (!(typeof ColorChanged == "undefined")) ColorChanged();

};


var loadingImage = 'loading.gif';
var closeButton = 'close.gif';
//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//


function getPageScroll() {

    var yScroll;

    if (self.pageYOffset) {
        yScroll = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
        yScroll = document.documentElement.scrollTop;
    } else if (document.body) { // all other Explorers
        yScroll = document.body.scrollTop;
    }

    arrayPageScroll = new Array('', yScroll)
    return arrayPageScroll;
}



//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//


function getPageSize() {

    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
        xScroll = document.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }

    var windowWidth, windowHeight;
    if (self.innerHeight) { // all except Explorer
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }

    // for small pages with total height less then height of the viewport
    if (yScroll < windowHeight) {
        pageHeight = windowHeight;
    } else {
        pageHeight = yScroll;
    }

    // for small pages with total width less then width of the viewport
    if (xScroll < windowWidth) {
        pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }


    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
    return arrayPageSize;
}


//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602
//


function pause(numberMillis) {
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime) return;
    }
}

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//

function getKey(e) {
    if (e == null) { // ie
        keycode = event.keyCode;
    } else { // mozilla
        keycode = e.which;
    }
    key = String.fromCharCode(keycode).toLowerCase();

    if (key == 'x') {
        hideLightbox();
    }
}


//
// listenKey()
//


function listenKey() {
    document.onkeypress = getKey;
}


//
// showLightbox()
// Preloads images. Pleaces new image in lightbox then centers and displays.
//


function showLightbox(objLink) {
    //alert("objLink="+objLink);
    // prep objects
    var objOverlay = document.getElementById('overlay');
    var objLightbox = document.getElementById('lightbox');
    var objCaption = document.getElementById('lightboxCaption');
    var objImage = document.getElementById('lightboxImage');
    var objLoadingImage = document.getElementById('loadingImage');
    var objLightboxDetails = document.getElementById('lightboxDetails');


    var arrayPageSize = getPageSize();
    var arrayPageScroll = getPageScroll();

    // center loadingImage if it exists
    if (objLoadingImage) {
        objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');
        objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');
        objLoadingImage.style.display = 'block';
    }

    // set height of Overlay to take up whole page and show
    objOverlay.style.height = (arrayPageSize[1] + 'px');
    objOverlay.style.display = 'block';

    // preload image
    imgPreload = new Image();

    imgPreload.onload = function() {
        objImage.src = objLink.href;

        // center lightbox and make sure that the top and left values are not negative
        // and the image placed outside the viewport
        var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
        var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);

        objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
        objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";


        objLightboxDetails.style.width = imgPreload.width + 'px';

        if (objLink.getAttribute('title')) {
            objCaption.style.display = 'block';
            //objCaption.style.width = imgPreload.width + 'px';
            objCaption.innerHTML = objLink.getAttribute('title');
        } else {
            objCaption.style.display = 'none';
        }

        // A small pause between the image loading and displaying is required with IE,
        // this prevents the previous image displaying for a short burst causing flicker.
        if (navigator.appVersion.indexOf("MSIE") != -1) {
            pause(250);
        }

        if (objLoadingImage) {
            objLoadingImage.style.display = 'none';
        }

        // Hide select boxes as they will 'peek' through the image in IE
        selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
            selects[i].style.visibility = "hidden";
        }


        objLightbox.style.display = 'block';

        // After image is loaded, update the overlay height as the new image might have
        // increased the overall page height.
        arrayPageSize = getPageSize();
        objOverlay.style.height = (arrayPageSize[1] + 'px');

        // Check for 'x' keypress
        listenKey();

        return false;
    }

    imgPreload.src = objLink.href;

}





//
// hideLightbox()
//


function hideLightbox() {
    // get objects
    objOverlay = document.getElementById('overlay');
    objLightbox = document.getElementById('lightbox');

    // hide lightbox and overlay
    objOverlay.style.display = 'none';
    objLightbox.style.display = 'none';

    // make select boxes visible
    selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) {
        selects[i].style.visibility = "visible";
    }

    // disable keypress listener
    document.onkeypress = '';
}




//
// initLightbox()
// Function runs on window load, going through link tags looking for rel="lightbox".
// These links receive onclick events that enable the lightbox display for their targets.
// The function also inserts html markup at the top of the page which will be used as a
// container for the overlay pattern and the inline image.
//


function initLightbox() {

    if (!document.getElementsByTagName) {
        return;
    }
    var anchors = document.getElementsByTagName("a");

    // loop through all anchor tags
    for (var i = 0; i < anchors.length; i++) {
        var anchor = anchors[i];

        if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lb")) {
            anchor.onclick = function() {
                showLightbox(this);
                return false;
            }
        }
    }

    // the rest of this code inserts html at the top of the page that looks like this:
    //
    // <div id="overlay">
    //		<a href="#" onclick="hideLightbox(); return false;"><img id="loadingImage" /></a>
    //	</div>
    // <div id="lightbox">
    //		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">
    //			<img id="closeButton" />		
    //			<img id="lightboxImage" />
    //		</a>
    //		<div id="lightboxDetails">
    //			<div id="lightboxCaption"></div>
    //			<div id="keyboardMsg"></div>
    //		</div>
    // </div>
    var objBody = document.getElementsByTagName("body").item(0);

    // create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
    var objOverlay = document.createElement("div");
    objOverlay.setAttribute('id', 'overlay');
    objOverlay.onclick = function() {
        hideLightbox();
        return false;
    }
    objOverlay.style.display = 'none';
    objOverlay.style.position = 'absolute';
    objOverlay.style.top = '0';
    objOverlay.style.left = '0';
    objOverlay.style.zIndex = '90';
    objOverlay.style.width = '100%';
    objBody.insertBefore(objOverlay, objBody.firstChild);

    var arrayPageSize = getPageSize();
    var arrayPageScroll = getPageScroll();

    // preload and create loader image
    var imgPreloader = new Image();

    // if loader image found, create link to hide lightbox and create loadingimage
    imgPreloader.onload = function() {

        var objLoadingImageLink = document.createElement("a");
        objLoadingImageLink.setAttribute('href', '#');
        objLoadingImageLink.onclick = function() {
            hideLightbox();
            return false;
        }
        objOverlay.appendChild(objLoadingImageLink);

        var objLoadingImage = document.createElement("img");
        objLoadingImage.src = loadingImage;
        objLoadingImage.setAttribute('id', 'loadingImage');
        objLoadingImage.style.position = 'absolute';
        objLoadingImage.style.zIndex = '150';
        objLoadingImageLink.appendChild(objLoadingImage);

        imgPreloader.onload = function() { }; //	clear onLoad, as IE will flip out w/animated gifs
        return false;
    }

    imgPreloader.src = loadingImage;

    // create lightbox div, same note about styles as above
    var objLightbox = document.createElement("div");
    objLightbox.setAttribute('id', 'lightbox');
    objLightbox.style.display = 'none';
    objLightbox.style.position = 'absolute';
    objLightbox.style.zIndex = '100';
    objBody.insertBefore(objLightbox, objOverlay.nextSibling);

    // create link
    var objLink = document.createElement("a");
    objLink.setAttribute('href', '#');
    objLink.setAttribute('title', 'Click to close');
    objLink.onclick = function() {
        hideLightbox();
        return false;
    }
    objLightbox.appendChild(objLink);

    // preload and create close button image
    var imgPreloadCloseButton = new Image();

    // if close button image found, 
    imgPreloadCloseButton.onload = function() {

        var objCloseButton = document.createElement("img");
        objCloseButton.src = closeButton;
        objCloseButton.setAttribute('id', 'closeButton');
        objCloseButton.style.position = 'absolute';
        objCloseButton.style.zIndex = '200';
        objLink.appendChild(objCloseButton);

        return false;
    }

    imgPreloadCloseButton.src = closeButton;

    // create image
    var objImage = document.createElement("img");
    objImage.setAttribute('id', 'lightboxImage');
    objLink.appendChild(objImage);

    // create details div, a container for the caption and keyboard message
    var objLightboxDetails = document.createElement("div");
    objLightboxDetails.setAttribute('id', 'lightboxDetails');
    objLightbox.appendChild(objLightboxDetails);

    // create caption
    var objCaption = document.createElement("div");
    objCaption.setAttribute('id', 'lightboxCaption');
    objCaption.style.display = 'none';
    objLightboxDetails.appendChild(objCaption);

    // create keyboard message
    var objKeyboardMsg = document.createElement("div");
    objKeyboardMsg.setAttribute('id', 'keyboardMsg');
    objKeyboardMsg.innerHTML = 'press <a href="#" onclick="hideLightbox(); return false;"><kbd>x</kbd></a> to close';
    objLightboxDetails.appendChild(objKeyboardMsg);


}




//
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//


function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }

}



addLoadEvent(initLightbox); // run initLightbox onLoad
