function AttachEventListener(object, event, handler, useCapture)
{
    if( !useCapture )
    {
        useCapture = false;
    }

    if( object.addEventListener )
    {
        object.addEventListener(event, handler, useCapture);
    }
    else
    {
        object.attachEvent('on' + event, handler);
    }
}

function GetEventTarget(event)
{
    return (event.target)? event.target : event.srcElement;
}

//borrowed from quirksmode. Stops event bubbling.
function StopEventPropagation(event)
{
    if(!event) { event = window.event; }

    //MSIE
    event.cancelBubble = true;

    //w3c
    if(event.stopPropagation) { event.stopPropagation(); }
}

function StopEventDefault(event)
{
    if(!event) { event = window.event; }

    //MSIE
    event.returnValue = false;

    //w3c
    if(event.preventDefault) { event.preventDefault() };
}

//does both StopEventPropogation and StopEventDefault
function StopEvent(event)
{
    StopEventDefault(event);
    StopEventPropagation(event);
}

function mouseOverFromElement(event)
{
    return (event.relatedTarget)? event.relatedTarget : event.fromTarget;
}

function mouseOutToElement(event)
{
    return (event.relatedTarget)? event.relatedTarget : event.toTarget;
}


function switchImage(event)
{

    var link = GetEventTarget(event);
    // go up until we hit the link (the default event target may be the image)
    while (link && link.tagName != 'A')
    {
        link = link.parentNode;
    }
    if (link.href)
    {
        var result = link.href.match(/(\?|&)view=(\d+)/);
        if (result.length >= 3)
        {
            var id = result[2];
            var img = document.getElementById("bigImage");
            if (img && id && imageURLs[id])
            {
                img.src = imageURLs[id];
                StopEventDefault(event)
            }
        }
    } 
}

var links = document.getElementsByName("imageViewerLink");
for (var i = 0; i < links.length; i++)
{
    AttachEventListener(links[i], 'click', switchImage);
}

