/**
  *  Extensions to Prototype's Event object,
  *  for cleanly creating and dispatching custom events
  *  
  *  Called from Event.Publisher
  **/
Object.extend( Event,
{
    create: function( target, event_data, can_bubble, cancelable, fl_dispatch )
    {
        var event;
        
        if ( document.createEvent )  // gecko, safari
        {
            if ( ! can_bubble ) can_bubble = false;
            if ( ! cancelable ) cancelable =  false; 
            if ( /Konqueror|Safari|KHTML/.test( navigator.userAgent ) ) { 
				event = document.createEvent( 'HTMLEvents' ) 
				event.initEvent( 'click', can_bubble, cancelable ); 
			} else { 
				event = document.createEvent( 'MouseEvents' ) 
				event.initMouseEvent( "click", can_bubble, cancelable, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null ); 
			} 
		} else { // msie 
			event = document.createEventObject(); 
		} 
		event.event_data = event_data; 
		if ( fl_dispatch ) Event.dispatch( target, event ); 
		return event; 
	}, 
	dispatch: function( target, event ) { 
		if ( document.createEvent ) return target.dispatchEvent( event ); 
		else return target.fireEvent( 'onclick', event ); 
	} 
} );