/* nath.js */
var gHooks = new Array();
// --------------------------------------------------------

// the global callback functions used in window.on<eventname>=<eventhandler>
function doLoadHooks(ev) { doHooks('onload', ev); }
function doMouseOverHooks(ev) { doHooks('onmouseover', ev); }
function doMouseOutHooks(ev) { doHooks('onmouseout', ev); }

// the one function called by the global callbacks
function doHooks(eventName, ev)
{
    var hooks = gHooks[eventName];
    var size = hooks.length;
    for(var i=0; i<size; i++)
    {
        eval(hooks[i] + '(ev)');
    }
}

// function called to add specific callbacks
function addHook(eventName, functionName)
{
    if(typeof(gHooks[eventName])=='undefined')
        gHooks[eventName] = new Array();
    gHooks[eventName].push(functionName);
}

window.onload = doLoadHooks;
window.onmouseover = doMouseOverHooks;
window.onmouseout = doMouseOutHooks;

// --------------------------------------------------------
function init()
{
    // preload images for each item in main-menu
    var menuItems = document.getElementById('main-menu').getElementsByTagName('A');
    for(var i=0; i<menuItems.length; i++)
    {
        var imgOn = new Image();
        imgOn.src = '../images/btn_' + nameArray[i] + '_on.jpg';
        imgOnArray.push(imgOn);

        var imgOff = new Image();
        imgOff.src = '../images/btn_' + nameArray[i] + '.jpg';
        imgOffArray.push(imgOff);
    }
}

// --------------------------------------------------------
function rollOn(e)
{
    if(e!=null)
    {
        // "standards-compliant" browsers
        event=e;
        event.srcElement = e.target;
    }
    var a = event.srcElement.parentNode;
    if(a.tagName!='A' || a.className!='main-menu-link')return;

    // count previous siblings, that's my index
    var index = 0;
    while(a.previousSibling!=null)
    {
        if(a.tagName=='A' && a.className=='main-menu-link')index++;
        a = a.previousSibling;
    }
    event.srcElement.src = imgOnArray[index-1].src;
    return true;
}

// --------------------------------------------------------
function rollOff(e)
{
    if(e!=null)
    {
        // "standards-compliant" browsers
        event=e;
        event.srcElement = e.target;
    }
    var a = event.srcElement.parentNode;
    if(a.tagName!='A' || a.className!='main-menu-link')return;

    // count previous siblings, that's my index
    var index = 0;
    while(a.previousSibling!=null)
    {
        if(a.tagName=='A' && a.className=='main-menu-link')index++;
        a = a.previousSibling;
    }
    event.srcElement.src = imgOffArray[index-1].src;
    return true;
}

// --------------------------------------------------------
var nameArray = new Array('home', 'forum', 'story', 'library', 'photo', 'link');
var imgOnArray = new Array();
var imgOffArray = new Array();

addHook('onload', 'init');
addHook('onmouseover', 'rollOn');
addHook('onmouseout', 'rollOff');
