function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}

var http = getHTTPObject(); // We create the HTTP Object

function addHandler( Target , theEvent , Handler, useCapture ) {
    // (c) Mark Lennox of http://www.webpusher.ie 2004
    eval( "var onTarget = Target.on" + theEvent + ";" );
    if ( Target.addEventListener ) {
        Target.addEventListener( theEvent , Handler , useCapture );
    } else if ( Target.attachEvent ) {
        Target.attachEvent( "on" + theEvent , Handler );
    } else if ( onTarget ) { // theory start
        onTarget = function piggyback() {
            onTarget();
            Handler();
        };
    } else { onTarget = Handler(); } // theory end
    return true; // for Netscape 6
}

function checkNode(obj) {
	var trueLink = obj;
	if ( trueLink.nodeName.toLowerCase() == 'a' ) {
		return trueLink;
	}
	while ( trueLink.nodeName.toLowerCase() != 'a' && trueLink.nodeName.toLowerCase() != 'body' )
	{
		trueLink = trueLink.parentNode;
	}
	return trueLink;
}