code: function _VirtualDom_makeCallback(eventNode, initialHandler)
  {
  	function callback(event)
  	{
  		var handler = callback.__handler;
  		var result = __Json_runHelp(handler.a, event);
  
  		if (!__Result_isOk(result))
  		{
  			return;
  		}
  
  		var tag = __VirtualDom_toHandlerInt(handler);
  
  		// 0 = Normal
  		// 1 = MayStopPropagation
  		// 2 = MayPreventDefault
  		// 3 = Custom
  
  		var value = result.a;
  		var message = !tag ? value : tag < 3 ? value.a : value.__$message;
  		var stopPropagation = tag == 1 ? value.b : tag == 3 && value.__$stopPropagation;
  		var currentEventNode = (
  			stopPropagation && event.stopPropagation(),
  			(tag == 2 ? value.b : tag == 3 && value.__$preventDefault) && event.preventDefault(),
  			eventNode
  		);
  		var tagger;
  		var i;
  		while (tagger = currentEventNode.__tagger)
  		{
  			if (typeof tagger == 'function')
  			{
  				message = tagger(message);
  			}
  			else
  			{
  				for (var i = tagger.length; i--; )
  				{
  					message = tagger[i](message);
  				}
  			}
  			currentEventNode = currentEventNode.__parent;
  		}
  		currentEventNode(message, stopPropagation); // stopPropagation implies isSync
  	}
  
  	callback.__handler = initialHandler;
  
  	return callback;
  }
docs: EVENT HANDLERS