function addEventDelegate(object, eventName, delegate) {
   if (object[eventName] == null) {
      object[eventName] = function() {
         for (var i = 0; i < this[eventName].delegates.length; i++) {
            this[eventName].delegates[i][eventName]();
         }
      }
   }
   if (object[eventName].delegates == null) {
      object[eventName].delegates = new Array();
   }
   object[eventName].delegates.push(delegate);
}

function removeEventDelegate(object, eventName, delegate) {
   if (object[eventName].delegates == null) {
      return;
   }
   for (var i = 0; i < object[eventName].delegates.length; i++) {
      if (object[eventName].delegates[i] == delegate) {
         object[eventName].delegates.splice(i, 1);
         break;
      }
   }
}

