
$.extend({
  modules: function(object) {
    var array = [];
    $.each(object, function(property, names_only) {
      if (property.match(/^[ABCDEFGHIJKLMNOPQRSTUVWXYZ][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]+$/)) {
        array.push(names_only === true ? property : object[property]);
      }
    });
    return array;
  },
  initModules: function(namespace) {
    $(function() {
      $.each($.modules(namespace), function(i, module) {
        if (module.init) {
          module.init();
        }
        $.initModules(module);
      });
    });
  }
});
