function addOnLoadEvent(func) {
  if (window.addEventListener) {
    window.addEventListener("load", func, false);
  } else if (window.attachEvent) {  // IE
    window.attachEvent("onload", func);
  } else  {
    window.onload = func;
  }
}

var highLightSelection=function(){
var $=function(x){return document.getElementById(x);}
	if($("lNav")){
	lNavs=$("lNav").getElementsByTagName("a");
		for(var i=0; i<lNavs.length; i++){
			var selected=new RegExp(lNavs[i]+"$");
			if(String(document.location).split("#")[0].match(selected)){
			lNavs[i].parentNode.className+=" selected";
			}
		}
	}
}
addOnLoadEvent(highLightSelection);

function traverseNodes(root, callback){
  var kids = root.childNodes;
  for (var i = 0, l = kids.length; i < l; i++){
      if (callback(kids[i])) continue;
      if (kids[i].hasChildNodes()) arguments.callee(kids[i], callback);
  }
}

function hstripe(classname){
        traverseNodes(document.getElementsByTagName('body')[0], function(node){
                if (node.className != classname) return;
                var count = 0;
                traverseNodes(node, function(node){
                        if (node.nodeName.toLowerCase() != 'tr') return;
                        node.className = classname + '-' + ['even','odd'][count++ % 2];
                });
        });
}

function vstripe(classname){
        traverseNodes(document.getElementsByTagName('body')[0], function(node){
                if (node.className != classname) return;
                traverseNodes(node, function(node){
                        if (node.nodeName.toLowerCase() != 'tr') return;
                        var count = 0;
                        traverseNodes(node, function(node){
                                if (node.nodeName.toLowerCase() != 'td') return;
                                node.className = classname + '-' + ['even','odd'][count++ % 2];
                        });
                });
        });
}