function AppendLoadEvent(f) {
  var oldonload = window.onload;
  
  if (typeof window.onload != "function") {
    window.onload = f;
  } else {
    window.onload = function() {
      oldonload();
      f();
    }
  }
}

function AddEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent("on" + evType, fn);
		return r;
	} else {
		elm.setAttribute("on" + evType, fn);
	}
}

function PreventDefault(e) {
	if (!e) var e = window.event;
	if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; }
}

function StopEventProp(e) {
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return true;
}

function GetTotalOffset(elm, off) {
	var totalOffset = 0;
	var item = eval("elm");
	
	do {
		totalOffset += eval("item." + off);
		item = eval("item.offsetParent");
	} while (item != null);
	return totalOffset;
}

function Overlap(a, b) {
	var ax = GetTotalOffset(a, "offsetLeft");
	var ay = GetTotalOffset(a, "offsetTop");
	var aw = a.offsetWidth;
	var ah = a.offsetHeight;
	var bx = GetTotalOffset(b, "offsetLeft");
	var by = GetTotalOffset(b, "offsetTop");
	var bw = b.offsetWidth;
	var bh = b.offsetHeight;

  if (((ax + aw) < bx) || (ax > (bx + bw)) || ((ay + ah) < by) || (ay > (by + bh))) return false;
  else return true;
}