
var lib = {};
lib.event = {};

lib.event.addListener = function(elm, act, fn, cap) {
	
  if (!elm) { return false;}
  if (!cap) { cap = false;}
  
  if (elm.addEventListener) {
    elm.addEventListener(act, fn, false);
  }
  else if (elm.attachEvent) {
    elm.attachEvent('on' + act, fn);
  }
  else {
    return false;
  }
}

lib.event.removeListener = function(elm, act, fn, cap) {
	
  if (!elm) { return false;}
  if (!cap) { useCapture = false;}
  
  if (elm.removeEventListener) {
    elm.removeEventListener(act, fn, false);
  }
  else if (elm.detachEvent) {
    elm.detachEvent('on'+type, fn);
  }
  else {
    return false;
  }
}

lib.event.target = function(evt) {
	
	if (evt && evt.target) {
		if (evt.target.nodeType == 3) {
			return evt.target.parentNode;
		}
		else {
			return evt.target;
		}
	}
	else if (window.event && window.event.srcElement) {
		return window.event.srcElement;
	}
	else {
		return false;
	}
}

lib.event.preventDefault = function(evt) {
	
	if (evt && evt.preventDefault) {
		evt.preventDefault();
		evt.currentTarget['on' + evt.type] = function() { return false;}
	}
	else if (window.event) {
		window.event.returnValue = false;
	}
	else {
		return false;
	}
}

lib.event.stopPropagation = function(evt) {
	
	if (evt && evt.stopPropagation) {
		evt.stopPropagation();
	}
	else if (window.event) {
		window.event.cancelBubble = true;
	}
	else {
		return false;
	}
}
