/*

Folks, addLoadEvent is a function made by Simon Willison that serves as a manageable window.onload replacement.  Jeremy Keith gave it a thumbs up in his book, DOM Scripting, and it's difficult to walk away from that book without incorporating it into every project.

*/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}


/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

/*

Below are the functions that let me add and remove classes, which I'm using to get the hover effect.  "hovering" is the class that is added or removed, and you can see in the style sheet how .hovering is defined.


*/

function addClassName(oElm, strClassName){
	var strCurrentClass = oElm.className;
	if(!new RegExp(strClassName, "i").test(strCurrentClass)){
		oElm.className = strCurrentClass + ((strCurrentClass.length > 0)? " " : "") + strClassName;
	}
}


function removeClassName(oElm, strClassName){
	var oClassToRemove = new RegExp((strClassName + "\s?"), "i");
	oElm.className = oElm.className.replace(oClassToRemove, "").replace(/^\s?|\s?$/g, "");
}


/*

Here's the part I wrote that uses the functions above to create our "link boxes".

*/


function prepareBoxes() {
	var boxes = getElementsByClassName(document, "*", "l2_news_button");
	for (var i=0; i<boxes.length; i++){
		var fullstories = getElementsByClassName(document, "*", "openlink");
		for (var k=0; k<fullstories.length; k++){
			fullstories[k].parentNode.tabIndex = k+1;
			fullstories[k].parentNode.onmouseover = function() {
				addClassName(this, "l2_news_button_hover");
			}
			fullstories[k].parentNode.onmouseout = function() {
				removeClassName(this, "l2_news_button_hover");
			}
			fullstories[k].parentNode.onclick = function() {
				var destin = this.getElementsByTagName("a");
				window.location = destin[0].href;
			}
			fullstories[k].parentNode.onkeypress = fullstories[k].parentNode.onclick;
		}
	}
}
addLoadEvent(prepareBoxes);


function prepareMenuBoxes() {
	var boxes = getElementsByClassName(document, "*", "topmenu_button_in");
	for (var i=0; i<boxes.length; i++){
		var fullstories = getElementsByClassName(document, "*", "openlink2");
		for (var k=0; k<fullstories.length; k++){
			fullstories[k].parentNode.parentNode.tabIndex = k+1;
			fullstories[k].parentNode.parentNode.onmouseover = function() {
				addClassName(this, "topmenu_button_hover");
			}
			fullstories[k].parentNode.parentNode.onmouseout = function() {
				removeClassName(this, "topmenu_button_hover");
			}
			fullstories[k].parentNode.parentNode.onclick = function() {
				var destin = this.getElementsByTagName("a");
				window.location = destin[0].href;
			}
			fullstories[k].parentNode.parentNode.onkeypress = fullstories[k].parentNode.parentNode.onclick;
		}
	}
}
addLoadEvent(prepareMenuBoxes);


function prepareMagBoxes() {
	var boxes = getElementsByClassName(document, "*", "mag_icon_cnt");
	for (var i=0; i<boxes.length; i++){
		var fullstories = getElementsByClassName(document, "*", "openlink3");
		for (var k=0; k<fullstories.length; k++){
			fullstories[k].parentNode.tabIndex = k+1;
			fullstories[k].parentNode.onmouseover = function() {
				addClassName(this, "mag_icon_cnt_hover");
			}
			fullstories[k].parentNode.onmouseout = function() {
				removeClassName(this, "mag_icon_cnt_hover");
			}
			fullstories[k].parentNode.onclick = function() {
				var destin = this.getElementsByTagName("a");
				window.location = destin[0].href;
			}
			fullstories[k].parentNode.onkeypress = fullstories[k].parentNode.onclick;
		}
	}
}
addLoadEvent(prepareMagBoxes);

function prepareMagMenuBoxes() {
	var boxes = getElementsByClassName(document, "*", "l2_mag_button");
	for (var i=0; i<boxes.length; i++){
		var fullstories = getElementsByClassName(document, "*", "openlink4");
		for (var k=0; k<fullstories.length; k++){
			fullstories[k].parentNode.tabIndex = k+1;
			fullstories[k].parentNode.onmouseover = function() {
				addClassName(this, "l2_mag_button_hover");
			}
			fullstories[k].parentNode.onmouseout = function() {
				removeClassName(this, "l2_mag_button_hover");
			}
			fullstories[k].parentNode.onclick = function() {
				var destin = this.getElementsByTagName("a");
				window.location = destin[0].href;
			}
			fullstories[k].parentNode.onkeypress = fullstories[k].parentNode.onclick;
		}
	}
}
addLoadEvent(prepareMagMenuBoxes);


function prepareDirections() {
	var boxes = getElementsByClassName(document, "*", "direction");
	for (var i=0; i<boxes.length; i++){
		var fullstories = getElementsByClassName(document, "*", "openlink5");
		for (var k=0; k<fullstories.length; k++){
			fullstories[k].parentNode.tabIndex = k+1;
			fullstories[k].parentNode.onmouseover = function() {
				addClassName(this, "direction_hover");
			}
			fullstories[k].parentNode.onmouseout = function() {
				removeClassName(this, "direction_hover");
			}
			fullstories[k].parentNode.onclick = function() {
				var destin = this.getElementsByTagName("a");
				window.location = destin[0].href;
			}
			fullstories[k].parentNode.onkeypress = fullstories[k].parentNode.onclick;
		}
	}
}
addLoadEvent(prepareDirections);
