text: /*==================================================
   *  DOM Utility Functions
   *==================================================
   */
  
  Timeline.DOM = new Object();
  
  Timeline.DOM.registerEventWithObject = function(elmt, eventName, obj, handler) {
      Timeline.DOM.registerEvent(elmt, eventName, function(elmt2, evt, target) {
          return handler.call(obj, elmt2, evt, target);
      });
  };
  
  Timeline.DOM.registerEvent = function(elmt, eventName, handler) {
      var handler2 = function(evt) {
          evt = (evt) ? evt : ((event) ? event : null);
          if (evt) {
              var target = (evt.target) ? 
                  evt.target : ((evt.srcElement) ? evt.srcElement : null);
              if (target) {
                  target = (target.nodeType == 1 || target.nodeType == 9) ? 
                      target : target.parentNode;
              }
              
              return handler(elmt, evt, target);
          }
          return true;
      }
      
      if (Timeline.Platform.browser.isIE) {
          elmt.attachEvent("on" + eventName, handler2);
      } else {
          elmt.addEventListener(eventName, handler2, false);
      }
  };
  
  Timeline.DOM.getPageCoordinates = function(elmt) {
      var left = 0;
      var top = 0;
      
      if (elmt.nodeType != 1) {
          elmt = elmt.parentNode;
      }
      
      while (elmt != null) {
          left += elmt.offsetLeft;
          top += elmt.offsetTop;
          
          elmt = elmt.offsetParent;
      }
      return { left: left, top: top };
  };
  
  Timeline.DOM.getEventRelativeCoordinates = function(evt, elmt) {
      if (Timeline.Platform.browser.isIE) {
          return {
              x: evt.offsetX,
              y: evt.offsetY
          };
      } else {
          var coords = Timeline.DOM.getPageCoordinates(elmt);
          return {
              x: evt.pageX - coords.left,
              y: evt.pageY - coords.top
          };
      }
  };
  
  Timeline.DOM.cancelEvent = function(evt) {
      evt.returnValue = false;
      evt.cancelBubble = true;
      if ("preventDefault" in evt) {
          evt.preventDefault();
      }
  };
  
  