
function Timer() {
	this.obj = (arguments.length) ? arguments[0] : window;
	return this;
}

// The set functions should be called with:
// - The name of the object method (as a string) (required)
// - The millisecond delay (required)
// - Any number of extra arguments, which will all be
//   passed to the method when it is evaluated.
Timer.prototype.setInterval = function (func, msec) {
	var i = Timer.getNew();
	var t = Timer.buildCall(this.obj, i, arguments);
	Timer.set[i].timer = window.setInterval(t, msec);
	return i;
};
Timer.prototype.setTimeout = function (func, msec) {
	var i = Timer.getNew();
	Timer.buildCall(this.obj, i, arguments);
	Timer.set[i].timer = window.setTimeout("Timer.callOnce(" + i + ");", msec);
	return i;
};

// The clear functions should be called with
// the return value from the equivalent set function.
Timer.prototype.clearInterval = function (i) {
	if (!Timer.set[i]) {
		return;
	}
	window.clearInterval(Timer.set[i].timer);
	Timer.set[i] = null;
};
Timer.prototype.clearTimeout = function (i) {
	if (!Timer.set[i]) {
		return;
	}
	window.clearTimeout(Timer.set[i].timer);
	Timer.set[i] = null;
};

// Private data
Timer.set = new Array();
Timer.buildCall = function (obj, i, args) {
	var t = "";
	Timer.set[i] = new Array();
	if (obj != window) {
		Timer.set[i].obj = obj;
		t = "Timer.set[" + i + "].obj.";
	}
	t += args[0] + "(";
	if (args.length > 2) {
		Timer.set[i][0] = args[2];
		t += "Timer.set[" + i + "][0]";
		for (var j = 1; (j + 2) < args.length; j++) {
			Timer.set[i][j] = args[j + 2];
			t += ", Timer.set[" + i + "][" + j + "]";
		}
	}
	t += ");";
	Timer.set[i].call = t;
	return t;
};
Timer.callOnce = function (i) {
	if (!Timer.set[i]) {
		return;
	}
	eval(Timer.set[i].call);
	Timer.set[i] = null;
};
Timer.getNew = function () {
	var i = 0;
	while (Timer.set[i]) {
		i++;
	}
	return i;
};
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"), "");
		}
	}
}
sfHover1 = function() {
	var sfEls = document.getElementById("nav1").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);
if (window.attachEvent) window.attachEvent("onload", sfHover1);
/* ****************************************************** 
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.timer = new Timer(this);
			this.timer.setTimeout("out", 100);
		};
		sfEls[i].out = function () {
			this.className = this.className.replace(new RegExp("\\bsfhover\\b"), "");
		};
	}
};
if (window.attachEvent) {
	window.attachEvent("onload", sfHover);
}
if (window.addEventListener) {
	window.addEventListener("load", sfHover, false);
}*/
/* ****************************************************** */