function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function addEvent( obj, type, fn ) {
	if ( obj.attachEvent ) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent( 'on'+type, obj[type+fn] );
	} else
		obj.addEventListener( type, fn, false );
}

function removeEvent( obj, type, fn ) {
	if ( obj.detachEvent ) {
		obj.detachEvent( 'on'+type, obj[type+fn] );
		obj[type+fn] = null;
	} else
		obj.removeEventListener( type, fn, false );
}

function sfHover() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}

function adjustTable() {
	// check if an with the classname table1 exists
	var content = document.getElementById("content");
	var pattern1 = new RegExp("class=\"Table1\"");
	var pattern2 = new RegExp("class=Table1");

	if ((pattern1.test(content.innerHTML)) || (pattern2.test(content.innerHTML))) {
		tableelements = getElementsByClass("Table1", content, "table");
		for (counter = 0; counter < tableelements.length; counter++) {
			stripeTable(tableelements[counter]);
		}
	}
}

function stripeTable(table) {
	// the flag we'll use to keep track of
	// whether the current row is odd or even
	var even = true;

	// by definition, tables can have more than one tbody
	// element, so we'll have to get the list of child
	// <tbody>
	var tbodies = table.getElementsByTagName("tbody");

	// and iterate through them...
	for (var h = 0; h < tbodies.length; h++) {

		// find all the <tr> elements...
		var trs = tbodies[h].getElementsByTagName("tr");

		// ... and iterate through them
		for (var i = 0; i < trs.length; i++) {
			if (!even) {
				trs[i].className = "odd";
			}

			// flip from odd to even, or vice-versa
			even = ! even;
		}
	}
}

function addExternalLinkClass() {
	if (navigator.userAgent.toLowerCase().indexOf('msie') != -1) {
		aa = document.getElementsByTagName('a');
		for (i = 0; i < aa.length; i++) {
			if (aa[i].target == "_blank") {
				aa[i].className += ' external';
			}
		}
	}
}

addEvent(window, 'resize', adjustLayoutLoad);
addEvent(window, 'load', adjustLayoutLoad);
addEvent(window, 'load', adjustTable);
addEvent(window, 'load', addExternalLinkClass);

if (window.attachEvent) addEvent(window, 'load', sfHover);
