/*lib.js*/

function addEvent(elm,evType,fn,useCapture) {
  //cross browser event handling for IE5+,NS6+, and Mozilla
    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['on' + evType] = fn;
 }
}
	  
	  
function findTarget(e,elm) {
 /* will traverse the DOM tree to find a given element */
 var target;
 //alert (e);
	 if ( window.event && window.event.srcElement )  {
	    target = window.event.srcElement;
	} else if ( e && e.target ) {
	    target = e.target;
	}
	
	if ( !target ) {
	  return null;
	}
	
	while ( target != document.body && target.nodeName.toLowerCase() != elm ) {
	  target  = target.parentNode;
	}
	
	if ( target.nodeName.toLowerCase() != elm ) {
	  return null;
	}
	
   return target;
}

function cancelClick(e) {
  // will prevent the default action for an object from occurring
  if ( window.event && window.event.returnValue ) {
     window.event.returnValue = false;
  } else if ( e && e.preventDefault ) {
     e.preventDefault;
  } else {
    return false;
  }
}

 function setParents(el) {
 //will set all link parent elements into an array
   arrParents = document.getElementsByTagName(el);

   return arrParents;

 }
 /*This will spit out the contents of the object (and nested objects) to an indented string, which is useful when trying to inspect the contents of DOM, etc.  Note that a recursive method like this can be dangerous, so I’ve included a maximum depth flag, MAX_DUMP_DEPTH, to ensure your browser doesn’t get locked up in an infinite nested loop.
http://weblogs.asp.net/skillet/archive/2006/03/23/440940.aspx
*/
 var MAX_DUMP_DEPTH = 10;
 function dumpObj(obj, name, indent, depth) {

              if (depth > MAX_DUMP_DEPTH) {

                     return indent + name + ": <Maximum Depth Reached>\n";

              }

              if (typeof obj == "object") {

                     var child = null;

                     var output = indent + name + "\n";

                     indent += "\t";

                     for (var item in obj)

                     {

                           try {

                                  child = obj[item];

                           } catch (e) {

                                  child = "<Unable to Evaluate>";

                           }

                           if (typeof child == "object") {

                                  output += dumpObj(child, item, indent, depth + 1);

                           } else {

                                  output += indent + item + ": " + child + "\n";

                           }

                     }

                     return output;

              } else {

                     return obj;

              }

       }

      