function add_handler(elt, name, handler, atEnd){
	name = name.replace(/^(on)?/, 'on'); 
	var prev = elt[name];
	var tmp = '__tmp';
	elt[name] = function(e) {
		if (!e) e = window.event;
		var result;
		if (!atEnd) {
		  elt[tmp] = handler; result = elt[tmp](e); elt[tmp] = null; // delete() does not work in IE 5.0 (???!!!)
		  if (result === false) return result;
		}
		if (prev) {
		  elt[tmp] = prev; result = elt[tmp](e); elt[tmp] = null;
		}
		if (atEnd && result !== false) {
		  elt[tmp] = handler; result = elt[tmp](e); elt[tmp] = null;
		}
		return result;
	}
	return handler;
}
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;
}
