text: YUI.add('moodle-core-languninstallconfirm', function (Y, NAME) {
  
  /**
   * Home for a Confirmation class.
  *
  * @module moodle-core-languninstallconfirm
  */
  
  /**
  * A class for a language uninstall confirmation.
  *
  * @class M.core.languninstallconfirm
  * @constructor
  * @extends Base
  */
  function Confirmation() {
      Confirmation.superclass.constructor.apply(this, arguments);
  }
  
  var SELECTORS = {
          UNINSTALLBUTTON: '#languninstallbutton',
          UNINSTALLSELECT: '#menuuninstalllang option',
          ENGLISHOPTION:   '#menuuninstalllang option[value=\'en\']'
  };
  
  Confirmation.NAME = NAME;
  Confirmation.ATTRS = {
      /**
       * Uninstall url
       *
       * @property uninstallUrl
       * @type string
       */
      uninstallUrl: {
          validator: Y.Lang.isString
      }
  };
  Y.extend(Confirmation, Y.Base, {
          /**
           * Initializer.
           * Registers onclicks.
           *
           * @method initializer
           */
          initializer: function() {
              Y.one(SELECTORS.UNINSTALLBUTTON).on('click', this._confirm, this);
          },
          /**
           * Confirmation.
           * Displays the confirmation dialogue.
           *
           * @method _confirm
           * @protected
           * @param {EventFacade} e
           */
          _confirm: function(e) {
              e.preventDefault();
              var selectedLangCodes = [];
              var selectedLangNames = [];
  
              Y.all(SELECTORS.UNINSTALLSELECT).each(function(option){
                  if (option.get('selected')){
                      selectedLangCodes.push(option.getAttribute('value'));
                      selectedLangNames.push(option.get('text'));
                  }
              });
              // Nothing was selected, show warning.
              if (selectedLangCodes.length === 0){
                  new M.core.alert({ message: M.util.get_string('selectlangs', 'tool_langimport') }).show();
                  return;
              } else if (selectedLangCodes.indexOf('en')> -1) { // Don't uninstall english.
                  Y.one(SELECTORS.ENGLISHOPTION).set('selected',false);
                  new M.core.alert({ message: M.util.get_string('noenglishuninstall', 'tool_langimport') }).show();
                  return;
              }
              var confirmationConfig = {
                  modal:  true,
                  visible  :  false,
                  centered :  true,
                  title :  M.util.get_string('uninstall','tool_langimport'),
                  question :  M.util.get_string('uninstallconfirm','tool_langimport', selectedLangNames.join(", "))
              };
              new M.core.confirm(confirmationConfig)
                  .show()
                  .on('complete-yes', this._uninstall, this, selectedLangCodes);
          },
          /**
           * Uninstall.
           * Redirects to an uninstall process.
           *
           * @method _uninstall
           * @protected
           * @param {EventFacade} e
           * @param {Array} langCodes array of lang codes to be uninstalled
           */
          _uninstall : function(e, langCodes) {
              Y.config.win.location.href = this.get('uninstallUrl') + '?mode=4' +
                                           '&sesskey=' + M.cfg.sesskey +
                                           '&confirmtouninstall=' + langCodes.join('-');
          }
  
  });
  
  Y.namespace('M.core.languninstallconfirm').Confirmation = Confirmation;
  Y.namespace('M.core.languninstallconfirm').init = function(config) {
      return new Confirmation(config);
  };
  
  }, '@VERSION@', {"requires": ["base", "node", "moodle-core-notification-confirm", "moodle-core-notification-alert"]});
  