// 一些通用的 popup
// author 陈侃

// 流程定义选取
TriggerProcessDefPopup = function(Trigger, Options) {
  Options.page = '/framework/common/selects/process_def_select.jsp';
  TriggerIFramePopup(Trigger, Options);
}

// 部门选取
TriggerDepartmentPopup = function(Trigger, Options) {
  Options.page = '/framework/common/selects/department_select.jsp';
  TriggerIFramePopup(Trigger, Options);
}

// 用户选取
TriggerUserPopup = function(Trigger, Options) {
  Options.jspPage = "/framework/common/selects/user_select.jsp";
  Options.width = 260;
  Options.height = 280;
  Options.caption = '<img src=\"' + ResourcePath + 'images/user.gif\" align=\"absmiddle\"/>&nbsp;用户选取';
  Options.onComplete = function(popup) {
    var UserSelect = $('UserSelect');
    UserSelect.ondblclick = function() {
      if (Options.onclick) {
        if (Options.onclick()) {
          HidePopupWidget(popup);
        }
      }
    }
  }
  TriggerPagePopup(Trigger, Options);
}

// 信息类目选取
TriggerInfoCatalogPopup = function(Trigger, Options) {
  Options.page = '/application/cms/info/info_catalog_select.jsp';
  TriggerIFramePopup(Trigger, Options);
}

function DepartmentString(Doc) {
  if (!Doc) {
    return;
  }
  var cbs = Doc.getElementsByName('cbox');
  if (!cbs) {
    return;
  }
  var ids = '', dnames = '';
  for (var i = 0; i < cbs.length; i++) {
    if (cbs[i].checked) {
      var arr = cbs[i].value.split(';');
      if (arr) {
        ids += ';' + arr[0].trim();
        dnames += '; ' + arr[1].trim();
      }
    }
  }
  ids = ids.length > 0 ? ids.substring(1) : "";
  dnames = dnames.length > 1 ? dnames.substring(2) : "";
  return [ids, dnames];
}

function DoMsgBoardSend(To) {
  var _params;
  if (To) {
    _params = "to=" + To;
  }
  GetWindowWidget('_msg_board_send', {
    title      :      '留言',
    jspPage    :      '/framework/tools/msgboard/user_message.jsp',
    params     :      _params,
    width      :      415,
    height     :      380,
    mode       :      true,
    align      :      'center',
    resizeDisabled :  true
  }).show();
}

TriggerMenuPopup = function(Trigger, Items) {
  if (!Trigger) {
    return;
  }
  var popup = CreatePopupWidget();
  if (!popup) {
    return;
  }
  popup.onmouseout = function(e) {
    if (!e) {
      e = event;
    }
    var within = Position.within(popup, Event.pointerX(e), Event.pointerY(e));
    if (!within) {
      setTimeout(hide, 500);
    }
  };

  var innerHTML = "";
  if (Items.length > 0) {
    innerHTML += "<table width='100%' border='0' cellpadding='0' cellspacing='0' style='margin:3px;'>";
    for (var i = 0; i < Items.length; i++) {
      if (Items[i] == '-' || Items[i].caption == '-') {
        innerHTML += "<td height='2px;'></td></tr>";
        innerHTML += "<td height='1px;' class='bg-line'></td></tr>";
        innerHTML += "<td height='2px;'></td></tr>";
      }
      else {
        var tip = Items[i].tip ? Items[i].tip : "";
        innerHTML += "<tr><td nowrap valign='baseline' id='Menu_Td_" + i + "' title='" + tip + "' class='outlook-menu' style='cursor:pointer;padding-left:2px;' onmouseout='this.className=\"outlook-menu\";' onmouseover='this.className=\"outlook-menu-over\";'>";
        var icon = !Items[i].icon ? ResourcePath + "/images/dot/2.gif" : Items[i].icon;
        innerHTML += "<img src='" + icon + "' style='width:12px;height:12px;' align='absmiddle'><span style='width:6px;'></span>";
        innerHTML += Items[i].caption + "&nbsp;";
        innerHTML += "</td></tr>";
      }
    }
    innerHTML += "</table>";

    popup.innerHTML = innerHTML;
    innerHTML.evalScripts();

    for (var i = 0; i < Items.length; i++) {
      if (Items[i].onclick) {
        $('Menu_Td_' + i).onclick = (function() {
          hide();
          this.onclick();
        }).bind(Items[i]);
      }
    }
  }

  var Options = {
    width : 70,
    height : 5
  };

  UpdatePosition(Trigger, popup, Options);

  function hide() {
    HidePopupWidget(popup);
  }
}

TriggerIFramePopup = function(Trigger, Options) {
  if (!Trigger) {
    return;
  }
  var popup = CreatePopupWidget();
  if (!popup) {
    return;
  }

  var Caption = Options.caption ? Options.caption : '无标题';
  if (!Options.page) {
    Options.page = '';
  }
  if (!Options.params) {
    Options.params = '';
  }
  var Height = Options.height ? Options.height : 240;
  var Border = Options.border ? Options.border : 0;
  var IFrameSrcParams = '&page=' + Options.page + Options.params;
  var innerHTML = "";
  innerHTML += "<table width='100%' border='0' cellpadding='0' cellspacing='0' style='padding-left:4;padding-right:6;'>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'>";
  innerHTML += "      <img border='0' align='absmiddle' src='" + SkinPath + "/images/dot_caption.gif'/>";
  innerHTML +=        '&nbsp;' + Caption;
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'>";
  innerHTML += "      <iframe width='100%' id='Trigger.IFrame.Id' frameborder='" + Border + "' height='" + Height + "' scrolling='auto' src='" + ContextPath + "/index.do?__action=pop_iframe_src" + IFrameSrcParams + "'>";
  innerHTML += "      </iframe>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  if (Options.desc) {
    innerHTML += "  <tr>";
    innerHTML += "    <td style='padding-top:4;'>" + Options.desc + "</td>";
    innerHTML += "  </tr>";
  }
  innerHTML += "  <tr>";
  innerHTML += "    <td align='right' style='padding-top:6;padding-bottom:6;'>";
  innerHTML += "      <input id='Trigger.ok' type='button' value='确定'>";
  innerHTML += "      <input id='Trigger.close' type='button' value='关闭'>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "</table>";

  popup.innerHTML = innerHTML;

  eval("StyleInit();"); // 样式
  innerHTML.evalScripts();

  var TriggerClose = $('Trigger.close');
  if (TriggerClose) {
    TriggerClose.onclick = hide;
  }

  var TriggerOk = $('Trigger.ok');
  if (TriggerOk && Options.OkClick) {
    TriggerOk.onclick = function() {
      if (Options.OkClick($('Trigger.IFrame.Id'))) {
        hide();
      }
    };
  }

  UpdatePosition(Trigger, popup, Options);

  function hide() {
    HidePopupWidget(popup);
  }
}

TriggerPagePopup = function(Trigger, Options) {
  if (!Trigger) {
    return;
  }
  var popup = CreatePopupWidget(Options.id);
  if (!popup) {
    return;
  }

  var Caption = Options.caption ? Options.caption : '无标题';
  var innerHTML = "";
  innerHTML += "<table width='100%' height='100%' border='0' cellpadding='0' cellspacing='0' style='padding-left:4;padding-right:6;'>";
  innerHTML += "<tr><td height='19' style='padding-top:4px;'><strong>" + Caption + "</strong></td><td align='right' style='padding-top:4px;'>";
  innerHTML += "<img id='Close.Btn." + popup.id + "' border='0' alt='关闭' align='absmiddle' src='" + SkinPath + "/images/close.gif'/ style='cursor:pointer;'>";
  innerHTML += "</td></tr>";
  innerHTML += "<tr><td valign='top' colspan='2' id='Content.Td." + popup.id + "' style='padding-top:4px;'>";
  innerHTML += "</td></tr>";
  if (Options.onclick) {
    innerHTML += "<tr><td colspan='2' id='button." + popup.id + "' style='padding-top:4px;padding-bottom:6px;'>";
    innerHTML += "<input type='button' value='确定' >";
    innerHTML += "</td></tr>";
  }
  if (Options.resizeEnabled) {
    innerHTML +=   "<tr>";
    innerHTML +=     "<td height='14' align='right' colspan='2'>";
    innerHTML +=       "<img id='Resize." + popup.id +"' alt='拉伸窗体'  src='" + SkinPath + "/images/resize.gif' style='cursor:se-resize;' />";
    innerHTML +=     "</td>";
    innerHTML +=   "</tr>";
  }
  innerHTML += "</table>";
  popup.innerHTML = innerHTML;

  eval("StyleInit();"); // 样式
  innerHTML.evalScripts();

  var Content = $('Content.Td.' + popup.id);
  var innerHTML = "正在获取数据...";
  innerHTML += "<img border='0' align='absmiddle' src='" + ResourcePath + "images/waiting.gif'/>";
  Content.innerHTML = innerHTML;
  if (Options.jspPage) {
    var Params = "__action=load_assistant&page=" + Options.jspPage;
    if (Options.params) {
      Params += "&" + Options.params;
    }
    new AjaxInvoker(ContextPath + "/index.do", {
      method: 'post',
      postBody: Params,
      asynchronous: true,
      evalScripts: true,
      onComplete: function(transport) {
        if (Options.onComplete) {
          Options.onComplete(popup);
        }
      }
    }, Content);
  }

  UpdatePosition(Trigger, popup, Options);
  var closeImg = $('Close.Btn.' + popup.id);
  if (closeImg) {
    closeImg.onmouseover = function() {
      closeImg.src = SkinPath + "/images/close_over.gif";
    };
    closeImg.onmouseout = function() {
      closeImg.src = SkinPath + "/images/close.gif";
    };
    closeImg.onclick = function() {
      if (Options.onclose) {
        Options.onclose();
      }
      HidePopupWidget(popup);
    };
  }

  if (Options.onclick) {
    var OkBtn = $('button.' + popup.id);
    if (OkBtn) {
      OkBtn.onclick = function() {
        if (Options.onclick()) {
          HidePopupWidget(popup);
        }
      }
    }
  }

  if (Options.resizeEnabled) {
    var resizeImg = $('Resize.' + popup.id);
    if (resizeImg) {
      InitResizeEvent(resizeImg, popup);
    }
  }
  return popup;
}

function UpdatePosition(Trigger, Popup, Options) {
  Popup.style.width = (Options && Options.width) ? Options.width : "160px";
  Popup.style.height = (Options && Options.height) ? Options.height : "230px";

  var cWidth = document.body.scrollLeft + document.body.clientWidth;
  var Pos = Position.cumulativeOffset(Trigger);
  if (Pos[0] + Popup.clientWidth > cWidth - 10) {
    var pointX = Pos[0] - Popup.clientWidth + Trigger.clientWidth + 2;
    if (pointX <= 0) {
      pointX = 20;
    }
    Popup.style.left = pointX + "px";
  }
  else {
    Popup.style.left = Pos[0] + "px";
  }

  var cHeight = document.body.scrollTop + document.body.clientHeight;
  var Top = Pos[1] + Element.getHeight(Trigger) + 1;
  if (Top +  Popup.clientHeight > cHeight) {
    var pointY = Top +  Popup.clientHeight - cHeight;
    Popup.style.top = (Top - pointY - 25) + "px";
  }
  else {
    Popup.style.top =  Top + "px";
  }

  InitShim(Popup);
}

function CreatePopupWidget(ID) {
  if (!ID) {
    ID = 'Trigger.popup';
  }
  var popup = $(ID);
  if (popup) {
    HidePopupWidget(popup);
    return;
  }

  popup = document.createElement("DIV");
  document.body.appendChild(popup);

  popup.id = ID;
  popup.className = "msg-info-div";
  popup.style.position = "absolute";
  popup.style.background = "white";
  popup.style.zIndex = 1009;

  InitMoveEvent(popup);
  return popup;
}

function HidePopupWidget(Popup) {
  if (!Popup) {
    Popup = $('Trigger.popup');
    if (!Popup) {
      return;
    }
  }

  var Shim = $('Shim.' + Popup.id);
  if (Shim != null) {
    Shim.style.display = "none";
  }
  Element.remove(Popup);
}

function InitSelectDescChanged(select) {
  var TriggerDesc = $('Trigger.desc');
  if (TriggerDesc) {
    select.onchange = function(e) {
      var Index = select.selectedIndex;
      if (Index != -1) {
        if (select.options[Index].desc && select.options[Index].desc.length > 0) {
          TriggerDesc.innerHTML = select.options[Index].desc;
        }
        else {
          TriggerDesc.innerHTML = '';
        }
      }
    };
  }
}

function TriggerImageSelectedPopup(Trigger, Options) {
  var popup = CreatePopupWidget();
  if (!popup) {
    return;
  }

  if (!Options.images || !Options.imagePath) {
    return;
  }

  var Caption = Options.caption ?
    Options.caption : '图片选择';
  var innerHTML = "<table width='100%' border='0' cellpadding='0' cellspacing='0' style='padding-left:4;padding-right:6;'>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'>";
  innerHTML += "      <img border='0' align='absmiddle' src='" + SkinPath + "/images/dot_caption.gif'/>";
  innerHTML +=        '&nbsp;' + Caption;
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'>";
  innerHTML += "      <table width='100%' border='0' cellpadding='0' cellspacing='0'>";
  for (var i = 1; i <= Options.images + 1; i++) {
    if (i % 6 == 1) {
      innerHTML += "        <tr>";
    }
    innerHTML += "          <td align='center'>";
    if (i == 1) {
      innerHTML += "            <img width='12' id='_img_0' height='12' align='absmiddle' src='' style='cursor:pointer;'/>";
    }
    else {
      innerHTML += "            <img align='absmiddle' id='_img_" + (i - 1) + "' src='" + Options.imagePath + (i - 1) + ".gif' style='cursor:pointer;'/>";
    }
    innerHTML += "          </td>";
    if (i % 6 == 0) {
      innerHTML += "        </tr>";
    }
  }
  innerHTML += "      </table>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "</table>";
  popup.innerHTML = innerHTML;

  eval("StyleInit();"); // 样式
  innerHTML.evalScripts();

  for (var i = 0; i <= Options.images; i++) {
    var Obj = $('_img_' + i);
    Obj.onclick = (function() {
      if (Options.okclick(this.id.substring(5))) {
        HidePopupWidget(popup);
      }
    }).bind(Obj);
  }

  UpdatePosition(Trigger, popup, Options);
}

function DoOptionsPopup(Trigger, Options) {
  var popup = CreatePopupWidget();
  if (!popup) {
    return;
  }

  var Caption = Options.caption ? Options.caption : '无标题';

  var innerHTML = "";
  innerHTML += "<table width='100%' border='0' cellpadding='0' cellspacing='0' style='padding-left:4;padding-right:6;'>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'>";
  innerHTML += "      <img border='0' align='absmiddle' src='" + SkinPath + "/images/dot_caption.gif'/>";
  innerHTML +=        '&nbsp;' + Caption;
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'>";
  innerHTML += "      <div><select id='Trigger.select' size='11' style='width:150px;'></select></div>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:6;'>";
  innerHTML += "      <div id='Trigger.desc'></div>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  if (Options.desc) {
    innerHTML += "  <tr>";
    innerHTML += "    <td style='padding-top:4;'>" + Options.desc + "</td>";
    innerHTML += "  </tr>";
  }
  innerHTML += "  <tr>";
  innerHTML += "    <td align='right' style='padding-top:6;padding-bottom:6;'>";
  innerHTML += "      <input id='Trigger.ok' type='button' value='确定'>";
  innerHTML += "      <input id='Trigger.close' type='button' value='关闭'>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "</table>";

  popup.innerHTML = innerHTML;

  eval("StyleInit();"); // 样式
  var TriggerClose = $('Trigger.close');
  if (TriggerClose) {
    TriggerClose.onclick = hide;
  }

  var select = $('Trigger.select');

  if (Options.OkClick) {
    SelectFunc = function() {
      if (Options.OkClick(select)) {
        hide();
      }
    }
  }
  else {
    SelectFunc = function() {}
  }

  var TriggerOk = $('Trigger.ok');
  if (TriggerOk) {
    TriggerOk.onclick = SelectFunc;
  }
  select.ondblclick = SelectFunc;

  InitSelectDescChanged(select);
  // 装载数据
  if (Options.url) {
    var Params = Options.params ? Options.params : '';
    new AjaxInvoker(
      ContextPath + Options.url,
      {
        method: 'post',
        postBody: Params,
        asynchronous: true,
        evalScripts: true,
        showLoadingPane: true,
        onComplete: function(transport) {
          BindFromAjax(select, transport.responseXML);

          // 数据装后
          if (Options.DataLoaded) {
            Options.DataLoaded(select);
          }
        }
      }
    );
  }
  UpdatePosition(Trigger, popup, Options);

  function hide() {
    HidePopupWidget(popup);
  }
}

// 触发一个弹出式字典选择框
TriggerDictionayPopup = function(Trigger, Options) {
  if (!Trigger) {
    return;
  }
  var popup = CreatePopupWidget();
  if (!popup) {
    return;
  }

  var caption = Options.caption || '请选择';
  var multiple = '';
  if (Options.multiple == 'true') {
    multiple = 'multiple';
  }

  var innerHTML = "";
  innerHTML += "<table id='DictionayTable' width='100%' border='0' cellpadding='0' cellspacing='0' style='padding-left:4;padding-right:6;'>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'>";
  innerHTML += "      <img border='0' align='absmiddle' src='" + SkinPath + "/images/dot_caption.gif'/>";
  innerHTML +=        caption;
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:4;'><div><select id='Trigger.select' size='11' " + multiple + " style='width:150px;'></select></div></td>";
  innerHTML += "  </tr>";
  if (Options.editable) {
    innerHTML += "  <tr>";
    innerHTML += "    <td style='padding-top:6;'>";
    innerHTML += "      <img id=\"EditableImgBtn\" align=\"absmiddle\"/>";
    innerHTML += "      增加或者删除条目";
    innerHTML += "    </td>";
    innerHTML += "  </tr>";
    innerHTML += "  <tr id='EditableTr' style='display:none;'>";
    innerHTML += "    <td style='padding-top:2;'>";
    innerHTML += "      <input id='Trigger.text' type='text' style='width:120px;'>";
    innerHTML += "      <img id='Trigger.add' border='0' align='absmiddle' style='cursor:pointer;' alt='增加字典条目' src='" + SkinPath + "/images/menus/_new.gif'/>";
    innerHTML += "      <img id='Trigger.delete' border='0' align='absmiddle' style='cursor:pointer;' alt='删除所选' src='" + SkinPath + "/images/menus/_delete.gif'/>";
    innerHTML += "    </td>";
    innerHTML += "  </tr>";
  }
  innerHTML += "  <tr>";
  innerHTML += "    <td style='padding-top:6;'>";
  innerHTML += "      <div id='Trigger.desc'></div>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "  <tr>";
  innerHTML += "    <td align='right' style='padding-top:6;padding-bottom:6;'>";
  innerHTML += "      <input id='Trigger.ok' type='button' value='确定'>";
  innerHTML += "      <input id='Trigger.close' type='button' value='关闭'>";
  innerHTML += "    </td>";
  innerHTML += "  </tr>";
  innerHTML += "</table>";
  innerHTML += "<script language='javascript' type='text/javascript'>";
  innerHTML += "   StyleInit($('DictionayTable'));";
  innerHTML += "   PlusBtnInit('EditableImgBtn', 'EditableTr');";
  innerHTML += "</script>";
  popup.innerHTML = innerHTML;

  innerHTML.evalScripts();

  var select = $('Trigger.select');
  loading();

  var TriggerClose = $('Trigger.close');
  if (TriggerClose) {
    TriggerClose.onclick = hide;
  }

  InitSelectDescChanged(select);

  var TriggerOk = $('Trigger.ok');
  if (TriggerOk) {
    TriggerOk.onclick = SelectFunc;
  }
  select.ondblclick = SelectFunc;

  var TriggerAdd = $('Trigger.add');
  if (TriggerAdd) {
    TriggerAdd.onclick = ItemAdd;
  }

  var TriggerDelete = $('Trigger.delete');
  if (TriggerDelete) {
    TriggerDelete.onclick = ItemDelete;
  }

  popup.style.visibility = "visible";

  // 函数装载数据
  function loading() {
    if (Trigger.options) {
      // 缓存options在Trigger对象上, 不必每次都从服务器端获取
      var Opt;
      for (var i = 0; i < Trigger.options.length; i++) {
        Opt = new Option();
        var Topt = Trigger.options[i];
        Opt.text = Topt.text;
        Opt.value = Topt.value;
        if (Topt.desc) {
          Opt.desc = Topt.desc;
        }
        select.options.add(Opt);
      }
    }
    else { // 异步装载数据
      var Params = '__action=dict_list_asyn&dict=' + Options.dict +
         "&catalog=" + Options.catalog;
      new AjaxInvoker(
        ContextPath + '/dict.do',
        {
          method: 'post',
          postBody: Params,
          asynchronous: true,
          evalScripts: true,
          onComplete: function(transport) {
            BindFromAjax(select, transport.responseXML);
            Trigger.options = new Array();
            for (var i = 0; i < select.options.length; i++) {
              Trigger.options.push(select.options[i]);
            }
          }
        }
      );
    }
  }

  // 选择当前的条目
  function SelectFunc() {
    if (!Options.textId) {
      return;
    }
    var Text = $(Options.textId);
    if (Text) {
      _SelectFunc(Text, $(Options.valueId));
      hide();
    }
  }

  function _SelectFunc(Text, Key) {
    var i = 0;
    var Opt;
    if (Text.type == 'text' || Text.tagName.toLowerCase() == 'textarea') {
      // 对于text类型的表单元素, 其值一般放在Options.valueId的隐藏域中
      var tmpText = '', tmpKey = '';
      while (true) {
        Opt = select.options[i++];
        if (!Opt) {
          break;
        }
        if (Opt.selected) {
          if (Key) {
            tmpText += ";" + Opt.text;
            tmpKey += ";" + Opt.value;
          }
          else {
            tmpText += ";" + Opt.text;
          }
        }
      }
      if (tmpText.length > 0) {
        Text.value = tmpText.substring(1);
      }
      if (Key && tmpKey.length > 0) {
        Key.value = tmpKey.substring(1);
      }
    }
    else if (Text.tagName.toLowerCase() == 'select') {
      Text.options.length = 0;
      while (true) {
        Opt = select.options[i++];
        if (!Opt) {
          break;
        }
        if (Opt.selected) {
          var option = new Option();
          option.text = Opt.text;
          option.value = Opt.value ? Opt.value : Opt.text;
          Text.options.add(option);
        }
      }
    }
  }

  // 增加一个条目
  function ItemAdd() {
    var TriggerText = $('Trigger.text');
    if (TriggerText) {
      var value = TriggerText.value;
      if (value == null || value.trim() == '') {
        alert('条目不能为空！');
        return;
      }
      if (!confirm('确实想添加条目 \"' + value + '\" 到个人字典库中吗？')) {
        return;
      }
      var Params = '__action=dict_new_myitem&dict=' + Options.dict +
        "&catalog=" + Options.catalog + "&item=" + value;
      new AjaxInvoker(
        ContextPath + '/dict.do',
        {
          method: 'post',
          postBody: Params,
          asynchronous: true,
          evalScripts: true,
          requestHeaders: ['uri-encoding', 'utf-8'],
          showLoadingPane: true,
          onComplete: function(transport) {
            if (AjaxOperateSuccess(transport.responseXML)) {
              var Opt = new Option();
              Opt.text = value;
              Opt.value = value;
              select.options.add(Opt);
              // 清除缓存
              TriggerText.value = '';
              Trigger.options = null;
              alert('成功添加条目！');
            }
            else {
              alert('添加条目失败！可能已经存在');
            }
          }
        }
      );
    }
  }

  // 删除一个条目
  function ItemDelete() {
    var Index = select.selectedIndex;
    if (Index == -1) {
      alert('请选择一个需要删除的条目！');
      return;
    }

    if (!confirm('您确实想从个人字典库中删除所选条目吗？')) {
      return;
    }

    var Dels = new Array();
    var Opt, i = 0, value = '';
    while (true) {
      Opt = select.options[i++];
      if (!Opt) {
        break;
      }
      if (Opt.selected) {
        if (Opt.publicDict == 'true') {
          alert('公共字典条目 \"' + Opt.text + '\" 不能被删除！');
          Opt.selected = false;
          continue;
        }
        value += ';' + Opt.value;
        Dels.push(Opt);
      }
    }
    if (value.length > 0) {
      value = value.substring(1);
    }
    if (value.length == 0) {
      alert('没有可选的删除项！');
      return;
    }
    var Params = '__action=dict_delete_myitem&dict=' + Options.dict +
      "&catalog=" + Options.catalog + "&item=" + value;
    new AjaxInvoker(
      ContextPath + '/dict.do',
      {
        method: 'post',
        postBody: Params,
        asynchronous: true,
        evalScripts: true,
        requestHeaders: ['uri-encoding', 'utf-8'],
        showLoadingPane: true,
        onComplete: function(transport) {
          if (AjaxOperateSuccess(transport.responseXML)) {
            var Opt;
            while (Opt = Dels.pop()) {
              select.options[Opt.index] = null;
            }
            // 清除缓存
            Trigger.options = null;
          }
          else {
            alert('删除条目失败！');
          }
        }
      }
    );
  }

  UpdatePosition(Trigger, popup, Options);

  function hide() {
    HidePopupWidget(popup);
  }
};

