function activateMenu(name)
{
    var items = document.getElementById(name).getElementsByTagName("li");
    var loc = new String(window.location);

    if(loc == "http://www.malthousetheatre.com.au/" || loc == "http://malthouse-staging.york.workingsoftware.com.au/")
        var home_page_override = true;

    for(var i = 0; i < items.length;i++)
    {
        var first_link = getFirstLink(items[i]);
        if(!first_link)
            continue;

        var t1 = first_link.href.indexOf(loc);
        var t2 = loc.indexOf(first_link.href);
        
        if((t1 != -1)||(t2 != -1))
            do_set_none = false;
        else
            do_set_none = true;

        var subs = items[i].getElementsByTagName("ul");
        var do_add_event = 0;
        
        if(subs.length)
        {
            for(var j = 0; j < subs.length; j++)
            {
                var lis = subs[j].getElementsByTagName("li");
                
                if(lis.length)
                {
                    if(do_set_none||home_page_override)
                        subs[j].style["display"] = "none";

                    do_add_event = 1;
                    
                    for(var k = 0; k < lis.length;k++)
                    {
                        addEvent(lis[k],"click",sendMeAway.bind(lis[k]));
                        var a = getFirstLink(lis[k]);

                        if(a)
                        {
                            var t1 = a.href.indexOf(loc);
                            var t2 = loc.indexOf(a.href);
                            
                            if(((t1 != -1)||(t2 != -1))&&!home_page_override)
                                lis[k].parentNode.style["display"] = "block";
                        }
                    }
                }
            }
            
            if(do_add_event)
                addEvent(items[i],"click",toggleMenu.bind(items[i]));
        }
    }
}

function getFirstLink(li)
{
    var as = li.getElementsByTagName("a");
    
    if(as.length)
        ret = as[0];
    else
        ret = false;
    
    return ret;
}

function sendMeAway(evt)
{
    stopPropagation(evt);
    preventDefault(evt);
    var as = this.getElementsByTagName("a");
    
    if(as.length)
        window.location = as[0].href;
}

function toggleMenu(evt)
{
/*    stopPropagation(evt);
    preventDefault(evt);*/
/*    var subs = this.getElementsByTagName("ul");
    
    for(var i = 0;i < subs.length;i++)
    {
        if(subs[i].style["display"] == "block")
            subs[i].style["display"] = "none";
        else
            subs[i].style["display"] = "block";
    }*/
}

if(!Function.prototype.bind)
{
    Function.prototype.bind = function(obj)
    {   
        if(this.cache_obj == null)
            this.cache_obj = new Array();
        if(this.cache_func == null)
            this.cache_func = new Array();
    
        var existing = this.cache_obj.search(obj);
    
        if(existing == -1)
        {
            var method = this,
            ret = function() {return method.apply(obj, arguments);};
            /*this.cache_obj.push(obj);
            this.cache_func.push(ret);*/
        }
        
        else
        {   
            ret = this.cache_func[existing];
        }
    
        return ret;
    }
     
    Function.prototype.cache_obj = null;
    Function.prototype.cache_func = null;
    
    Array.prototype.search =
    function(search_term)
    {
        var i = this.length;
        if (i > 0)
        {   
            do{if (this[i] === search_term){ return i;} }
            while (i--);
        }
    
        return -1;
    }
}
    
if(!window.addEvent)
{
    function addEvent(el, evType, handle)
    {
        if(el.addEventListener)el.addEventListener(evType, handle, false); 
    
        else if(el.attachEvent)
        { 
            el["e" + evType + handle] = handle; 
            el[evType + handle] = function(){el["e" + evType + handle](window.event)} 
            el.attachEvent("on" + evType, el[evType + handle]); 
        } 
    } 
    
    function removeEvent(el,evType,handle)
    { 
        if(el.removeEventListener)el.removeEventListener(evType, handle, false); 
    
        else if(el.detachEvent)
        { 
            el.detachEvent("on" + evType, el[evType + handle]) 
            el[evType + handle] = null 
            el["e" + evType + handle] = null; 
        } 
    } 
    
    function preventDefault(evt)
    { 
        var e = evt ? evt : window.event; 
    
        if(e.preventDefault)
            e.preventDefault(); 
        else
            e.returnValue = false; 
    } 
    
    function stopPropagation(evt)
    {
        var e = evt ? evt : window.event; 
    
        if(e.stopPropagation)
            e.stopPropagation(); 
        else
            e.cancelBubble = true; 
    }
    
    function intOrZero(value)
    {
        var ret = parseInt(value);
        return (isNaN(ret)) ? 0 : ret;
    }
    
    /*
        Written by Jonathan Snook, http://www.snook.ca/jonathan
        Add-ons by Robert Nyman, http://www.robertnyman.com
    */
    
    function getElementsByClassName(oElm, strTagName, strClassName)
    {
        var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
        var arrReturnElements = new Array();
        strClassName = strClassName.replace(/\-/g, "\\-");
        var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
        var oElement;
    
        for(var i=0; i<arrElements.length; i++)
        {
            oElement = arrElements[i];
    
            if(oRegExp.test(oElement.className))
                arrReturnElements.push(oElement);
        }
    
        return (arrReturnElements)
    }
}
