// JavaScript Document
function addEvent(elm, evType, fn, useCapture) {
    // cross-browser event handling for IE5+, NS6 and Mozilla
    // By Scott Andrew
    if (elm.addEventListener) {
      //alert("Event type: " + evType + ", Function: " + fn);
	  elm.addEventListener(evType, fn, useCapture);
	  
      return true;
    } else if (elm.attachEvent) {
      var r = elm.attachEvent('on' + evType, fn);
	  //alert("Event type: " + evType + ", Function: " + fn);
      return r;
    } else {
      elm['on' + evType] = fn;
    }	
}
	  
function findTarget(e) {
	
	var e1;	  
	if(window.event && window.event.srcElement) {		
		e1 = window.event.srcElement;
	}
		
	if(e && e.target) {		
		e1 = e.target;	
	}

	if(!e1) {		
		return;	
	}
	else		
		return e1;	
}

function cancelClick(e) {
	if(window.event && window.event.returnValue) {
		window.event.returnValue = false;	
	}
	
	if(e && e.preventDefault) {
		e.preventDefault();
	}
}

function cancelClickSafari() {
	return false;	
}

function linkTraverse(e) {
	while(e.nodeName.toLowerCase() != 'a' && e.nodeName.toLowerCase() != 'body') {
			e = e.parentNode;
	}	
	return e;
}

function ascendDOM(e, target) {	
  while (e.nodeName.toLowerCase() != target && e.nodeName.toLowerCase() != 'html')
    e = e.parentNode;
  
  return (e.nodeName.toLowerCase() == 'html') ? null : e;
}