/**
 * @purpose            : Get the (x,y) coordinate of a DOM element
 * @param  object elem : a DOM element or null
 * @return object      : an associative array, where indicies "x"
 *                       and "y" hold their respective coordinates
 * @note               : function is recursive
 */
function getXYpos(elem) {
   if (!elem) {
      return {"x":0,"y":0};
   }
   var xy={"x":elem.offsetLeft,"y":elem.offsetTop}
   var par=getXYpos(elem.offsetParent);
   for (var key in par) {
      xy[key]+=par[key];
   }
   return xy;
}

/**
 * Positions the tertiary navigation under the selected secondary menu option by finding out
 * the position of the selected item and working out a new left margin
 * @return
 */
function positionTertiaryNav()
{
	doPositionNav(getElementsByClassName('active'));
	doPositionNav(getElementsByClassName('trail'));
}

function doPositionNav(elements)
{
	for ( var i = 0; i < elements.length; i++) 
	{
		if(elements[i].parentNode.className=='level2')
		{
			var x = getXYpos(elements[i]).x - getXYpos(document.getElementById('content')).x;
			document.getElementById('tertiaryMenu').style.marginLeft=(x-10)+'px';
		}
	}
}

function panelHoverOn(elementId)
{
	var el = document.getElementById(elementId);
	el.className='hover';
}

function panelHoverOff(elementId)
{
	var el = document.getElementById(elementId);
	el.className='';
}

/* ------------------------------------------------------------------------------------------------------
Developed by Robert Nyman, http://www.robertnyman.com
Code/licensing: http://code.google.com/p/getelementsbyclassname/
------------------------------------------------------------------------------------------------------ */
var getElementsByClassName = function (className, tag, elm){
if (document.getElementsByClassName) {
    getElementsByClassName = function (className, tag, elm) {
        elm = elm || document;
        var elements = elm.getElementsByClassName(className),
            nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
            returnElements = [],
            current;
        for(var i=0, il=elements.length; i<il; i+=1){
            current = elements[i];
            if(!nodeName || nodeName.test(current.nodeName)) {
                returnElements.push(current);
            }
        }
        return returnElements;
    };
}
else if (document.evaluate) {
    getElementsByClassName = function (className, tag, elm) {
        tag = tag || "*";
        elm = elm || document;
        var classes = className.split(" "),
            classesToCheck = "",
            xhtmlNamespace = "http://www.w3.org/1999/xhtml",
            namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
            returnElements = [],
            elements,
            node;
        for(var j=0, jl=classes.length; j<jl; j+=1){
            classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
        }
        try {
            elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
        }
        catch (e) {
            elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
        }
        while ((node = elements.iterateNext())) {
            returnElements.push(node);
        }
        return returnElements;
    };
}
else {
    getElementsByClassName = function (className, tag, elm) {
        tag = tag || "*";
        elm = elm || document;
        var classes = className.split(" "),
            classesToCheck = [],
            elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
            current,
            returnElements = [],
            match;
        for(var k=0, kl=classes.length; k<kl; k+=1){
            classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
        }
        for(var l=0, ll=elements.length; l<ll; l+=1){
            current = elements[l];
            match = false;
            for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
                match = classesToCheck[m].test(current.className);
                if (!match) {
                    break;
                }
            }
            if (match) {
                returnElements.push(current);
            }
        }
        return returnElements;
    };
}
return getElementsByClassName(className, tag, elm);
};