// array containing images to preload (mostly mouseover images)
var preloadimages = new Array('/images/a_bul011.gif');

function swapBgImage(node, src)
{
    if (node != '' && src != '') node.style.backgroundImage = 'url(' + src + ')';
}

function externalLinks()
{
    var anchor, anchors, onclick;

    anchors = document.getElementsByTagName("a");
    onclick = 'popup(this); return false;';

    if (!document.getElementsByTagName) return;

    for (var i = 0; i < anchors.length; i++) {
        anchor = anchors[i];
        if (anchor.getAttribute('href') && anchor.getAttribute('rel') == "external") {
            anchor.setAttribute('target', '_blank');

            var img = document.createElement('img');
            img.setAttribute('width', 16);
            img.setAttribute('height', 16);
            img.setAttribute('src', '/images/i_exlink.gif');
//            anchor.appendChild(img);
        }
    }

    // preload images
    if (preloadimages.length > 0) {
        for (var i = 0; i < preloadimages.length; i++) {
            preloadImg(preloadimages[i]);
        }
    }

    // get productvisuals (if any)
    var divs = document.getElementsByTagName('div');
    if (divs && (divs.length > 0)) {
        for (var i = 0; i < divs.length; i++) {

            if ((new RegExp('\\bproductvisuals\\b', 'i')).test(divs.item(i).className)) {

                // get all anchors
                anchors = divs.item(i).getElementsByTagName("a");
                for (var j = 0; j < anchors.length; j++) {
                    anchor = anchors[j];

                    if (window.addEventListener) {
                        anchor.addEventListener('click', onPopup, false);
                    } else {
                        anchor.onclick = onPopup;
                    }
                }
            }
        }
    }

}

function onPopup(e)
{
    if (!e) e = window.event;

    var target = e['srcElement'] || e['target'];

    if (target) {

        // bubble up to <a> node, if necessary
        while (target && (target.nodeName.toLowerCase() != 'a')) target = target.parentNode;

        popup(target, 500, 400, 'no', 'no', 'no', 'yes');
    }

    if (e.cancelable) {
        e.preventDefault();
        e.stopPropagation();
    } else {
        e.returnValue = false;
        e.cancelBubble = true;
    }}

function popup(what, w, h, location, menubar, toolbar, status)
{
    var width    = w ? w : screen.width * 0.8;
    var height   = h ? h : screen.height * 0.8;
    var features = 'width=' + width + ',height=' + height + ',location=' + location + ',menubar=' + menubar + ',toolbar=' + toolbar + ',status=' + status;

    var win      = window.open(what.getAttribute('href'), win, features);
    win.focus();

    return win;
}

function redirect(where)
{
    if (where.value != '') {
        window.location.href = where.value + ( (where.value.indexOf('?') > 0) ? '&redir=1' : '?redir=1');
        return false;
    } else {
        return false;
    }
}

/**
 * Applies hover event to element after rendering page. used for dynamic content, such as dynamic menu images
 */
function applyHoverEvent(id, mouseout, mouseover)
{
    var node = document.getElementById(id);

    if (node && mouseout && mouseover) {

        node.over = mouseover;
        node.out = mouseout;
        node.el = node;

        if (window.addEventListener) {
            node.addEventListener('mouseover', over, false);
            node.addEventListener('mouseout', out, false);
        } else {
            node.attachEvent('onmouseover', over);
            node.attachEvent('onmouseout', out);
        }

        // add images to preload array
        preloadimages.push(mouseout);
        preloadimages.push(mouseover);
    }
}

function over(node)
{
    var target = node['target'] ? 'target' : 'srcElement'; // Gecko uses target to access element properties, IE uses srcElement
    swapBgImage(node[target]['el'], node[target]['over']);
}

function out(node)
{
    var target = node['target'] ? 'target' : 'srcElement'; // Gecko uses target to access element properties, IE uses srcElement
    swapBgImage(node[target]['el'], node[target]['out']);
}

/**
 * Enable scrolling for overflow:auto elements in Mozilla
 */
function scrollMe(e)
{
    var scrollTop = e.currentTarget.scrollTop + (e.detail * 12);
    e.currentTarget.scrollTop = scrollTop < 0 ? 0 : scrollTop;
    e.preventDefault();
}

function scroll(e)
{
    if (document.body.addEventListener) {
        try {
            document.getElementById(e).addEventListener('DOMMouseScroll', scrollMe, false);
        } catch (ex) {
        }
    }
}

function preloadImg(src)
{
    var img = document.createElement('img');
    img.setAttribute('src', src);
    img.setAttribute('width', 0);
    img.setAttribute('height', 0);
    img.style.display = 'none';

    document.getElementsByTagName('body').item(0).appendChild(img);
}

window.onload = externalLinks;