whole_func_string: function createHandler(event, callback, context, dontWrapCallback) {
          if (!dontWrapCallback) {
              var _callback = callback,
                  noArg;
              if (typeof callback === 'object') {
                  // use the "callback" attribute to get the callback function.  useful if you need to reference the component as "this"
                  /*jshint validthis:true */
                  _callback = callback.callback.call(this);
              }
              if (typeof callback === 'string') {
                  noArg = (noArgMethods.indexOf(callback) >= 0);
                  _callback = context[callback];
              }
              if (!_callback) {
                  throw 'no callback function exists for "' + callback + '"';
              }
              callback = function() {
                  return _callback.apply(context, noArg ? [] : arguments);
              };
          }
  
          // check for special wrapper function
          var match = event.match(specialWrapper);
          if (match) {
              var specialMethodName = match[1],
                  /*jshint evil: true */
                  args = eval('[' + match[2] + ']'),
                  rest = match[3],
                  specialHandler = eventManager.specials[specialMethodName];
              if (specialHandler) {
                  if (args.length === 1 && args[0] === '') {
                      args = [];
                  }
                  callback = specialHandler.call(context, callback, args);
                  return createHandler(rest, callback, context, true);
              } else {
                  throw new Error('invalid special event handler "' + specialMethodName + "'");
              }
          }
  
          var parts = event.match(splitter),
              handlerName = parts[1],
              path = parts[2],
              handler = handlers[handlerName];
  
          // check pattern handlers if no match
          for (var i = 0; !handler && i < patternHandlers.length; i++) {
              if (handlerName.match(patternHandlers[i].pattern)) {
                  handler = patternHandlers[i].handler;
              }
          }
          if (!handler) {
              throw new Error('no handler registered for "' + event + '"');
          }
  
          return handler.call(context, {
              key: handlerName,
              path: path
          }, callback);
      }
func_code_string: function createHandler(event, callback, context, dontWrapCallback) {
          if (!dontWrapCallback) {
              var _callback = callback,
                  noArg;
              if (typeof callback === 'object') {
                  // use the "callback" attribute to get the callback function.  useful if you need to reference the component as "this"
                  /*jshint validthis:true */
                  _callback = callback.callback.call(this);
              }
              if (typeof callback === 'string') {
                  noArg = (noArgMethods.indexOf(callback) >= 0);
                  _callback = context[callback];
              }
              if (!_callback) {
                  throw 'no callback function exists for "' + callback + '"';
              }
              callback = function() {
                  return _callback.apply(context, noArg ? [] : arguments);
              };
          }
  
          // check for special wrapper function
          var match = event.match(specialWrapper);
          if (match) {
              var specialMethodName = match[1],
                  /*jshint evil: true */
                  args = eval('[' + match[2] + ']'),
                  rest = match[3],
                  specialHandler = eventManager.specials[specialMethodName];
              if (specialHandler) {
                  if (args.length === 1 && args[0] === '') {
                      args = [];
                  }
                  callback = specialHandler.call(context, callback, args);
                  return createHandler(rest, callback, context, true);
              } else {
                  throw new Error('invalid special event handler "' + specialMethodName + "'");
              }
          }
  
          var parts = event.match(splitter),
              handlerName = parts[1],
              path = parts[2],
              handler = handlers[handlerName];
  
          // check pattern handlers if no match
          for (var i = 0; !handler && i < patternHandlers.length; i++) {
              if (handlerName.match(patternHandlers[i].pattern)) {
                  handler = patternHandlers[i].handler;
              }
          }
          if (!handler) {
              throw new Error('no handler registered for "' + event + '"');
          }
  
          return handler.call(context, {
              key: handlerName,
              path: path
          }, callback);
      }
func_documentation_string: /*
  wrapper for event implementations - includes on/off methods