// Add the special andThen for signal/slots
Function.prototype.andThen=function(g) {
 var f=this;
 return function(ev) {
  f(ev); 
  g(ev);
 }
};
// Signal/slot stuff

// IE. hell
//var eventtable = new Object();
function Signal() {
 var me = this;
 this.callback=function (ev) { return false; }; // do nothing
 this.connect=function(callbackFunction) {
  this.callback=(this.callback).andThen(callbackFunction);
 }
 this.emit = function (ev) { me.callback(ev); return true; }
 // on event (event) from element with id (id) emit this signal
 this.bind = function (id, event) {
  var elm = document.getElementById(id);
  if (elm.addEventListener) {
   elm.addEventListener(event, me.emit, false);
  } else {
   // Grrr. IE hell. Fake the addEventListener functionallity.
   if (!elm.myhandler) {
    elm.myhandler = function (ev) { return true; }
   }
   elm.detachEvent("on" + event, elm.myhandler);
   elm.myhandler = (elm.myhandler).andThen(me.emit);
   elm.attachEvent("on" + event, elm.myhandler);
  }
 }
}

