function addLoadEvent(func) {
  var oldonload = window.onload;
  if (window.attachEvent) {
	window.attachEvent("onload", func); 
  } else if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

navSelect = function() {
	var navEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<navEls.length; i++) {
		var hrefEls = navEls[i].getElementsByTagName('a');
		if (!hrefEls[0].className && hrefEls[0].href == document.location) {
			hrefEls[0].className += " selected";
		}
	}
}
navSelectChain = function() {
	var rootFiles = ['', 'index.htm', 'index.html', 'index.php', 'default.asp', 'default.aspx'];
	var navEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<navEls.length; i++) {
		var hrefEls = navEls[i].getElementsByTagName('a');
		var loc = document.location.href;
		if (loc.indexOf("#") > -1)
			loc = loc.split("#")[0];
		if (hrefEls[0].href == loc || ( rootFiles.inArray(hrefEls[0].href.substring(hrefEls[0].href.lastIndexOf('/')+1)) && rootFiles.inArray(loc.substring(loc.lastIndexOf('/')+1))  ) ) {
			var thisElm = navEls[i];
			while (thisElm.parentNode) {
				thisElm = thisElm.parentNode;
				if (thisElm.childNodes[0].nodeType==1) {
					thisElm.childNodes[0].className += " selected";
				}
			}
			hrefEls[0].className += " selected";
		}
	}
}

Array.prototype.inArray = function(valeur) {
	for (var i in this) {
		if (this[i] === valeur)
			return true;
		}
	return false;
}

sfHover = function() {
	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"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover); 
addLoadEvent(navSelectChain);
