text: /**
   * @memberOf Util
   * @class Menu
   * @classdesc Menu メニュー
   *            <p>
   *            メニューを操作する
   * @param {String}
   *            menuId メニューのID（メニュー要素をユニークに指定するID）
   * @param {String}
   *            [menuLabel=""] メニューのラベル
   * @param {String}
   *            funcName メニュー要素選択時に発行する関数名
   * 
   * @example // TopHogeBottom と表示するサブウィンドウを表示し、閉じる<br>
   *          var menu1 = new Util.Menu( "Usage of TAT log diver", divMenuId +
   *          "_HelpUsage", "HJN.init.Usage"); menu1.mekeAsDialog(
   *          "HJN.dialogUsage", 50 , 40);
   */
  export default (function() { // #95
      /** @constructor */
      function Menu(menuId, menuLabel, funcName){ 
          if(!(this instanceof Menu)) return new Menu(id, label, funcName);
  
          this.menuId = menuId;
          this.menuLabel = menuLabel;
          this.funcName = funcName;
      }
  
      // private
      // クラス変数
      
      // メソッド
      
      // public
      /**
       * アコーディオンラベル用タグを取得する
       * 
       * @memberOf Util.Menu
       * @param {Object}
       *            that ラベル押下時のアコーディオン開閉ラジオボタン連動用の接頭語
       * @param {String}
       *            id ラベル押下時のアコーディオン開閉ラジオボタン連動用の接尾語（ユニークな英数字）
       * @param {String}
       *            labelText ラベル表示文字列
       * @param {Boolean}
       *            [isChecked=閉じた状態て初期表示] trueを指定したとき展開して初期表示
       * @return {String} html アコーディオンラベル用HTMLテキスト
       */
      Menu.getAccordionTag = function(that, id, labelText, isChecked) { // #31
          var isAccordion = true, // true:アコーディオン型 false:折りたたみ型 #21
          typeStr = isAccordion ? ' type="checkbox" name="accordion" '
                  : ' type="radio" name="accordion" ', //
          checkedStr = ' checked="checked" ';
  
          return ''
                  + '<input id="ac-' + that.chartIdName + id + '"' // 
                  + typeStr + (isChecked ? checkedStr : '') + '">' // 
                  + '<label for="ac-' + that.chartIdName + id + '">' //
                  + labelText + '</label>';
      };
  
      /**
       * File Open用タグを取得する
       * 
       * @example
       * <ol>
       * <a><label>Child Menu<input type="file" id="xxx" multiple/></label></a>
       * </ol>
       * @memberOf Util.Menu
       * @param {String}
       *            [preLabel=""] ラベルの先頭文字列
       * @return {String} html メニュー要素の表示用HTMLテキスト
       */
      Menu.prototype.getFileOpenTag = function(preLabel) {
          preLabel = preLabel || "";
  
          return ''
                  + '<ol><a><label class="hjnButton4Input">' + this.menuLabel // #51
                  + '<input type="file" id="' + this.menuId + '"  multiple />'
                  + '</label></a></ol>';
      };
      
      /**
       * ダウンロード処理に対応する
       * 
       * @memberOf Util.Menu
       * @param {String}
       *            [fileName="HJN_download"] ダウンロードファイル名
       * @return {Object} this
       */
      Menu.prototype.makeDownloadable = function(fileName) {
          this["fileName"] = fileName || "HJN_download";
  
          return this;
      };
      /**
       * ダウンロード用アンカータグを取得する
       * 
       * @example
       * <li><a id="xxx" href="#">Child Menu</a><li/>
       * @memberOf Util.Menu
       * @param {String}
       *            [preLabel=""] ラベルの先頭文字列
       * @return {String} html メニュー要素の表示用HTMLテキスト
       */
      Menu.prototype.getATag = function(preLabel) {
          preLabel = preLabel || "";
  
          return '' + '<li><a id="' + this.menuId + '" '
                  + 'class="hjnButton4Input" href="#" ' // #51
                  + 'download="' + this.fileName + '" ' //
                  + 'onclick="' + this.funcName + '(' + "'" + this.menuId + "', '"
                  + this.fileName + "'" + ')" ' + '>' + preLabel + this.menuLabel
                  + '</a></li>';
      };
  
      /**
       * グローバルメソッド呼出用アンカータグを取得する
       * 
       * @example
       * <li><a id="xxx" href="#" onclick="funcName()">Child Menu</a></li>
       * @memberOf Util.Menu
       * @param {String}
       *            [preLabel=""] ラベルの先頭文字列
       * @return {String} html メニュー要素の表示用HTMLテキスト
       */
      Menu.prototype.getFuncTag = function(preLabel) { // #34
          preLabel = preLabel || "";
          
          return ''
                  + '<li><a id="' + this.menuId + ' "'
                  + 'class="hjnButton4Input" href="#" ' // #51
                  + 'onclick="' + this.funcName + '()">' //
                  + preLabel + this.menuLabel + '</a></li>';
      };
      
      
      /**
       * ポップアップダイアログ処理に対応する
       * 
       * @memberOf Util.Menu
       * @param {String}
       *            dialogId ダイアログのID（同一IDのダイアログは上書きされる）
       * @param {Number}
       *            [w=40] ダイアログの幅
       * @param {Number}
       *            [h=40] ダイアログの高さ
       * @return {Object} this
       */
      Menu.prototype.makePopupable = function(dialogId, w, h) {
          this["dialogId"] = dialogId;
          this["w"] = w || 40;
          this["h"] = h || 40;
  
          return this;
      };
      /**
       * ダイアログ用タグを取得する
       * 
       * @example
       * <ol>
       * <a id="xxx" class="hjnButton4Input"
       * onclick="HJN.init.ShowDialog(FUNC_NAME(), 'DIALOG_ID', w , h)">
       * <label>Child Menu</label></a>
       * </ol>
       * @memberOf Util.Menu
       * @param {String}
       *            [preLabel=""] ラベルの先頭文字列
       * @return {String} html メニュー要素の表示用HTMLテキスト
       */
      Menu.prototype.getDialogTag = function(preLabel) {
          preLabel = preLabel || "";
  
          return ''
              + '<ol><a id="' + this.menuId + '" '
              + 'class="hjnButton4Input" ' // #51
              + ' onclick="HJN.Util.Element.createDialog(' // #95
                  + this.funcName + "()"+ ", " // #84
                  + "false, " 
                  + "'" + this.dialogId + "',"
                  + this.w + ","
                  + this.h +")" 
              + '"' + '>' // #79
              + '<label>' + preLabel + this.menuLabel + '</label></a></ol>';
      };
      /**
       * サブウィンドウ用タグを取得する
       * 
       * @example
       * <ol>
       * <a id="xxx" class="hjnButton4Input"
       * onclick="HJN.init.ShowDialog(FUNC_NAME(), 'DIALOG_ID', w , h)">
       * <label>Child Menu</label></a>
       * </ol>
       * @memberOf Util.Menu
       * @param {String}
       *            [preLabel=""] ラベルの先頭文字列
       * @return {String} html メニュー要素の表示用HTMLテキスト
       */
      Menu.prototype.getSubWindowTag = function(preLabel) { // #95
          preLabel = preLabel || "";
  
          return ''
          + '<ol><a id="' + this.menuId + '" '
          + 'class="hjnButton4Input" ' // #51
          + ' onclick="HJN.Util.SubWindow.createSubWindow(' // #95
              + this.funcName + "()"+ ", " // #84
              + "false, " 
              + "'" + this.dialogId + "',"
              + this.w + ","
              + this.h +")" 
          + '"' + '>' // #79
          + '<label>' + preLabel + this.menuLabel + '</label></a></ol>';
      };
  
  
      /* new */
      return Menu;
  }());