/**
  * AjaxAddScript hook
  * Adds scripts
  */
 public static function addResources($out)
 {
     global $wgExtensionAssetsPath, $wgJsMimeType;
     global $wgUsabilityInitiativeResourceMode;
     global $wgEnableJS2system, $wgEditToolbarRunTests;
     global $wgStyleVersion;
     wfRunHooks('UsabilityInitiativeLoadModules');
     if (!self::$doOutput) {
         return true;
     }
     // Default to raw
     $mode = $wgUsabilityInitiativeResourceMode;
     // Just an alias
     if (!isset(self::$scriptFiles['base_sets'][$mode])) {
         $mode = 'raw';
     }
     // Include base-set of scripts
     self::$scripts = array_merge(self::$scriptFiles['base_sets'][$mode], self::$scriptFiles['modules'][$mode], self::$scripts);
     // Provide enough support to make things work, even when js2 is not
     // in use (eventually it will be standard, but right now it's not)
     if (!$wgEnableJS2system) {
         $out->includeJQuery();
     }
     // Include base-set of styles
     self::$styles = array_merge(self::$styleFiles['base_sets'][$mode], self::$styles);
     if ($wgEditToolbarRunTests) {
         // Include client side tests
         self::$scripts = array_merge(self::$scripts, self::$scriptFiles['tests']);
     }
     // Loops over each script
     foreach (self::$scripts as $script) {
         // Add javascript to document
         if ($script['src'][0] == '/') {
             // Path is relative to $wgScriptPath
             global $wgScriptPath;
             $src = "{$wgScriptPath}{$script['src']}";
         } else {
             // Path is relative to $wgExtensionAssetsPath
             $src = "{$wgExtensionAssetsPath}/UsabilityInitiative/{$script['src']}";
         }
         $version = isset($script['version']) ? $script['version'] : $wgStyleVersion;
         $out->addScriptFile($src, $version);
     }
     // Transforms messages into javascript object members
     foreach (self::$messages as $i => $message) {
         $escapedMessageValue = Xml::escapeJsString(wfMsg($message));
         $escapedMessageKey = Xml::escapeJsString($message);
         self::$messages[$i] = "'{$escapedMessageKey}':'{$escapedMessageValue}'";
     }
     // Add javascript to document
     if (count(self::$messages) > 0) {
         $out->addScript(Xml::tags('script', array('type' => $wgJsMimeType), 'mw.usability.addMessages({' . implode(',', self::$messages) . '});'));
     }
     // Loops over each style
     foreach (self::$styles as $style) {
         // Add css for various styles
         $out->addLink(array('rel' => 'stylesheet', 'type' => 'text/css', 'href' => $wgExtensionAssetsPath . "/UsabilityInitiative/" . "{$style['src']}?{$style['version']}"));
     }
     return true;
 }