function addEvent( obj, type, fn )
{
  if (obj.addEventListener)
  {
    obj.addEventListener( type, fn, false );
  }
  else if (obj.attachEvent)
  {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() { obj["e"+type+fn](window.event); }
    obj.attachEvent( "on"+type, obj[type+fn] );
  }
}

function addEventParams( obj, type, fn, p ){  
  obj["e"+type+fn] = fn;
  if (obj.addEventListener){
    eval( 'obj.addEventListener( type, function(event){obj["e"+type+fn](event, ' + p + ')}, false );' );
  }  else if (obj.attachEvent){
    obj[type+fn] = function() { 
      eval ( 'obj["e"+type+fn](window.event, ' + p + ')' ); 
      }
    obj.attachEvent("on"+type, obj[type+fn]);
  }
}