
document.getElementsByTagName('html')[0].className = "menuClosed";
/*-------------------------------------------------------*/

String.prototype.toRegWord = function(flags){
    return new RegExp('\\b'+this+'\\b',flags)
}

String.prototype.trim  = function(){
    return this.replace(/^\s+|\s+$/g,'')
}

// Cross-browser event helper
getEventSrc = window.Event
? function(e){var targ=e.target;return targ.nodeType==1?targ:targ.parentNode}
: function() {return event.srcElement}

function list_onclick(e)
{
    var elm = getEventSrc(e);
    if(! (elm = getHeader(elm)) ) return ;
    // IF   currently open, close
    // ELSE toggle
    var curr = list_onclick.currOpen;
    if(elm == curr)
    {
        removeClass(elm,'open');
        list_onclick.currOpen = null;
    }
    else
    {
        moveClass( curr, elm,'open' );
        list_onclick.currOpen = elm;
    }
}

/* Check that elm is, or is a child of, toggling header,
   and that it is not child of sublist */
function getHeader(elm)
{
    do{
        var tag = elm.tagName.toLowerCase()
        if ( /li|ul/.test(tag) ) return tag=='li'? elm:false;
    }
    while(elm = elm.parentNode);
}

function moveClass(fromElm, toElm, className)
{
    if(fromElm) removeClass(fromElm, className);
    appendClass(toElm, className);
}

/* Doesn't append if className already present */
function appendClass(elm, appClass)
{
    var currClass = elm.className;
    if(! appClass.toRegWord().test(currClass) )
        elm.className += (currClass? ' ':'') + appClass;
}

function removeClass(elm, remClass)
{
    elm.className = elm.className
       .replace(new RegExp('\\s*'+remClass+'\\s*'),' ')
       .trim();
}






