Description: load accessibility-menu.js from local extensions directory
 This extension was loaded from external source, which is considered a privacy
 breach. Instead we can install it and load from a local path.
 .
 This file is copied from MathJax-a11y repository, the changes are:
 - replacing the file path in loadComplete call;
 - using *['default'] instead of *.default to make yui-compressor happy.
Author: Dmitry Shachnev <mitya57@debian.org>
Forwarded: not-needed
Last-Update: 2017-02-28

--- /dev/null
+++ b/unpacked/extensions/accessibility-menu.js
@@ -0,0 +1,185 @@
+/*************************************************************
+ *
+ *  [Contrib]/a11y/accessibility-menu.js
+ *  
+ *  A thin extension to add opt-in menu items for the accessibility
+ *  extensions in the a11y contributed directory.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2016 The MathJax Consortium
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function(HUB,EXTENSIONS) {
+  var SETTINGS = HUB.config.menuSettings;
+  var ITEM, MENU; // filled in when MathMenu extension loads
+  
+  var BIND = (Function.prototype.bind ? function (f,t) {return f.bind(t)} :
+              function (f,t) {return function () {f.apply(t,arguments)}});
+  var KEYS = Object.keys || function (obj) {
+    var keys = [];
+    for (var id in obj) {if (obj.hasOwnProperty(id)) keys.push(id)}
+    return keys;
+  };
+  
+  //
+  //  Set up the a11y path,if it isn't already in place
+  //
+  var PATH = MathJax.Ajax.config.path;
+  if (!PATH.a11y) PATH.a11y =
+      (PATH.Contrib ? PATH.Contrib + "/a11y" : 
+      (String(location.protocol).match(/^https?:/) ? "" : "http:") + 
+        "//cdn.mathjax.org/mathjax/contrib/a11y");
+
+  var Accessibility = EXTENSIONS["accessibility-menu"] = {
+    version: '1.1',
+    prefix: '', //'Accessibility-',
+    'default': {},
+    modules: [],
+    MakeOption: function(name) {
+      return Accessibility.prefix + name;
+    },
+    GetOption: function(option) {
+      return SETTINGS[Accessibility.MakeOption(option)];
+    },
+    AddDefaults: function() {
+      var keys = KEYS(Accessibility['default']);
+      for (var i = 0, key; key = keys[i]; i++) {
+        var option = Accessibility.MakeOption(key);
+        if (typeof(SETTINGS[option]) === 'undefined') {
+          SETTINGS[option] = Accessibility['default'][key];
+        }
+      }
+    },
+    // Attaches the menu items;
+    AddMenu: function() {
+      var items = Array(this.modules.length);
+      for (var i = 0, module; module = this.modules[i]; i++) items[i] = module.placeHolder;
+      var menu = MENU.FindId('Accessibility');
+      if (menu) {
+        items.unshift(ITEM.RULE());
+        menu.submenu.items.push.apply(menu.submenu.items,items);
+      } else {
+        var renderer = (MENU.FindId("Settings","Renderer")||{}).submenu;
+        if (renderer) {
+          // move AssitiveMML and InTabOrder from Renderer to Accessibility menu
+          items.unshift(ITEM.RULE());
+          items.unshift(renderer.items.pop());
+          items.unshift(renderer.items.pop());
+        }
+        items.unshift("Accessibility");
+        var menu = ITEM.SUBMENU.apply(ITEM.SUBMENU,items);
+        var locale = MENU.IndexOfId('Locale');
+        if (locale) {
+          MENU.items.splice(locale,0,menu);
+        } else {
+          MENU.items.push(ITEM.RULE(), menu);
+        }
+      }
+    },
+    Register: function(module) {
+      Accessibility['default'][module.option] = false;
+      Accessibility.modules.push(module);
+    },
+    Startup: function() {
+      ITEM = MathJax.Menu.ITEM;
+      MENU = MathJax.Menu.menu;
+      for (var i = 0, module; module = this.modules[i]; i++) module.CreateMenu();
+      this.AddMenu();
+    },
+    LoadExtensions: function () {
+      var extensions = [];
+      for (var i = 0, module; module = this.modules[i]; i++) {
+        if (SETTINGS[module.option]) extensions.push(module.module);
+      }
+      return (extensions.length ? HUB.Startup.loadArray(extensions) : null);
+    }
+  };
+
+  var ModuleLoader = MathJax.Extension.ModuleLoader = MathJax.Object.Subclass({
+    option: '',
+    name: ['',''],
+    module: '',
+    placeHolder: null,
+    submenu: false,
+    extension: null,
+    Init: function(option, name, module, extension, submenu) {
+      this.option = option;
+      this.name = [name.replace(/ /g,''),name];
+      this.module = module;
+      this.extension = extension;
+      this.submenu = (submenu || false);
+    },
+    CreateMenu: function() {
+      var load = BIND(this.Load,this);
+      if (this.submenu) {
+        this.placeHolder =
+          ITEM.SUBMENU(this.name,
+            ITEM.CHECKBOX(["Activate","Activate"],
+                          Accessibility.MakeOption(this.option), {action: load}),
+            ITEM.RULE(),
+            ITEM.COMMAND(["OptionsWhenActive","(Options when Active)"],null,{disabled:true})
+          );
+      } else {
+        this.placeHolder = ITEM.CHECKBOX(
+          this.name, Accessibility.MakeOption(this.option), {action: load}
+        );
+      }
+    },
+    Load: function() {
+      HUB.Queue(["Require",MathJax.Ajax,this.module,["Enable",this]]);
+    },
+    Enable: function(menu) {
+      var extension = MathJax.Extension[this.extension];
+      if (extension) {
+        extension.Enable(true,true);
+        MathJax.Menu.saveCookie();
+      }
+    }
+  });
+
+  Accessibility.Register(
+    ModuleLoader(
+      'collapsible', 'Collapsible Math', '[a11y]/collapsible.js', 'collapsible'
+    )
+  );
+  Accessibility.Register(
+    ModuleLoader(
+      'autocollapse', 'Auto Collapse', '[a11y]/auto-collapse.js', 'auto-collapse'
+    )
+  );
+  Accessibility.Register(
+    ModuleLoader(
+      'explorer', 'Explorer', '[a11y]/explorer.js', 'explorer', true
+    )
+  );
+
+  Accessibility.AddDefaults();
+  
+  HUB.Register.StartupHook('End Extensions', function () {
+    HUB.Register.StartupHook('MathMenu Ready', function () {
+      Accessibility.Startup();
+      HUB.Startup.signal.Post('Accessibility Menu Ready');
+    },5);   // run before other extensions' menu hooks even if they are loaded first
+  },5);
+  
+  MathJax.Callback.Queue(
+    ["LoadExtensions",Accessibility],
+    ["loadComplete",MathJax.Ajax,"[MathJax]/extensions/accessibility-menu.js"]
+  );
+
+})(MathJax.Hub,MathJax.Extension);
+
+
