// 設定系統使用參數
var iQryNum_=100;       // 主作業查詢預設筆數
var iSelNum_=100;       // Select 作業查詢預設筆數
var bAltKeyDown_=false; // 是否按下 ALT 鍵, 以作 ALT-F4 判斷
var bDebug_=false;      // 是否需於 emis_save.jsp , emis_data.jsp 作 Debug且不將視窗關閉
var sSaveUniqueMsg_;    // 自定儲存後重複資料之訊息
var oRecordset_;        // xmlData Recordset 共用物件

// 2005/08/11 add by andy start
var oRptWin_;     //指向原列印窗體的物件.
var oRptMsgWin_;  //指向列印訊息窗體(僅顯示一個跑馬燈效果)的物件
var bShowRptMsg_ = true; //是否顯示列印訊息視窗,開發階段建議不顯示.
// 2005/08/11 add by andy end

//add by Harry 2007/01/09 專用於7D報表顯示信息
var s7DMsg_ = "";

var isShow_ = true;  // 是否開啟右鍵功能表

// 將 recordset 為空資料時, 新增一筆之空資料刪除
// 使 recordset 為空資料時 addnew 後 recordcount 不會還是空的
// oRecordset: xmlData Recordset 物件
function emisXmlDataInit(oRecordset) {
  // 將 Recordset 設於共用物件

  oRecordset_ = oRecordset;

  // 只有一筆且第一、二、三欄位是空白
  if (oRecordset.recordcount==1 && emisXmlDataEmpty(oRecordset)) {
    oRecordset.Delete();
    idTBLspanCurRecord.innerText = 0;
    idTBLspanRecord.innerText = 0;
    if (typeof(idTBLspanTotalPage) != "undefined")
      idTBLspanTotalPage.innerText = 0;
  }
}

// 判斷 xmlData 所有欄位是否為空資料
// oRecordset: xmlData Recordset 物件
function emisXmlDataEmpty(oRecordset) {
  var _bEmpty=false;
  var iRecordCnt_=oRecordset.fields.count;

  for (var i=0; i<iRecordCnt_-1; i++) {

    _bEmpty=emisEmpty(oRecordset.fields(i).value)? true: false;
    if (!_bEmpty) break;
  }
  return _bEmpty;
}

// recordset 新增時重新顯示筆數及頁數
// oRecordset: xmlData Recordset 物件
function emisXmlShowCount(oRecordset) {
  if (typeof(idTBLspanCurRecord) != "undefined") {
    var _iCurrRecNum =oRecordset.AbsolutePosition;
    var _iTotalRecNum=oRecordset.recordcount;
    if (_iCurrRecNum>_iTotalRecNum) _iTotalRecNum=_iCurrRecNum;
    document.all.idTBLspanCurRecord.innerText=_iCurrRecNum<0? 0: _iCurrRecNum;
    document.all.idTBLspanRecord.innerText   =_iTotalRecNum<0? 0: _iTotalRecNum;
  }

  // 重新顯示頁數
  if (typeof(idTBLspanTotalPage) != "undefined") {
    var nRecordCount = oRecordset.recordcount;
    var nPages = nRecordCount / idTBL.dataPageSize ;
    nPages = Math.ceil( nPages );
    document.all.idTBLspanTotalPage.innerText = nPages;
  }
}

// 自動於所有 Form 上產生 TITLE Hidden 物件 For Business
function emisGenTitle() {
  for (var i=0; i<document.forms.length; i++) {
    var _oObject = document.createElement("<input type='hidden' name='TITLE' value='" + sBusiTitle_ + "'>");
    document.forms[i].insertBefore(_oObject);
  }
}

// 設定 Button 新增、修改...權限
function emisButtonRights() {
  if (sAddRights_=="false") emisDisable(aAddButton_);
  if (sUpdRights_=="false") emisDisable(aUpdButton_);
  if (sDelRights_=="false") emisDisable(aDelButton_);
  if (sRptRights_=="false") emisDisable(aRptButton_);
  // 不可新增及修改時, 儲存功能 Disable
  if (sAddRights_=="false" && sUpdRights_=="false")
    emisDisable(["document.all.btnSave"]);
}

// 設定 Flow Disable Button 新增、修改...權限
// sFlowNo: 流程編號
// sFlowDButtons: Flow Disable Button 字串
function emisFlowDButtons(sFlowNo, sFlowDButtons) {
  var _aFlow = sFlowDButtons.split("|");
  var _aData, _aButtons;
  for (var i=0; i<_aFlow.length; i++) {
    _aData = _aFlow[i].split(";");
    if (_aData[0]==sFlowNo) {
      // 將以 "," 設定之 Button Disable
      _aButtons = _aData[1].split(",");
      if (!emisEmpty(_aButtons)) {
        for (var j=0; j<_aButtons.length; j++)
          _aButtons[j] = "document.all." + _aButtons[j];
        emisDisable(_aButtons);
      }
      break;
    }
  }
}

// 將輸入之起迄欄位補起迄範圍
// oObject1, oObject2: 起迄欄位物件
// iLength:  自動補入之長度
// sValue :  自動補入字元, 不傳入則預設為 "9"
// sDefault: 自動補入起始欄位字元, 不傳入則預設為 "0"
function emisNumAll(oObject1, oObject2, iLength, sValue, sDefault,btn) {
  if (oObject1.value != '') {  //Jerry 2004/08/25
    oObject1.value = '';
    oObject2.value = '';
    oObject1.focus();
    return true;
  }
  sValue=emisEmpty(sValue)? "9": sValue;
  if (emisEmpty(sDefault))
    oObject1.value=emisReplicate("0", iLength);
  else
    oObject1.value=emisReplicate(sDefault, iLength);
  oObject2.value=emisReplicate(sValue.toUpperCase(), iLength);
  return true;
}

// 將輸入之起始值送至結束值, 並作 select 反白
// oObject1, oObject2: 起迄欄位物件
// sType : 特殊欄位處理, "D":日期格式, "M":年月格式
function emisQrySel(oObject1, oObject2, sType) {
  // 判斷日期是否正確, 以免造成 dead lock
  if (sType=="D" && !emisChkDate(oObject1.value))
    return false;
  if (sType=="M" && !emisChkMonth(oObject1.value))
    return false;

  if (oObject2.value=="") {
    oObject2.value=oObject1.value;
    try {
      oObject2.select();
    } catch(e) {}
  }
  return true;
}

// emis 儲存處理
// sURL: 傳入之 URL 字串
// bRetStr: 是否傳回 emis_save() return 值, 預設不傳, 以 emisSaveMsg() 處理
function emisSave(sURL, bRetStr) {
  var _sRetStr="";
  var _oWin;
  var _sURL = "../emis_save.jsp?" + sURL
            + (sURL.indexOf("&TITLE=")>0?"": "&TITLE=" + emisGetTitle())
            + (emisEmpty(bDebug_)?"": "&DEBUG=true");

  _sURL += emisCompConfURL();  // 加入結案或確認檢核的URL 2005/07/02 add by andy

  if (emisEmpty(bDebug_))
    _sRetStr=emisShowModal(_sURL);
  else {
    _oWin=window.open(_sURL);
    _oWin.focus();
  }

  return emisEmpty(bRetStr)? emisSaveMsg(_sRetStr): _sRetStr;
}

// emis 儲存訊息處理
// sRetStr: 傳入之儲存訊息字串, "OK"=儲存成功, 其他則為失敗
function emisSaveMsg(sRetStr) {
  if (sRetStr=="OK" || sRetStr=="0")
    return true;
  else {
    // ORACLE: unique
    // MSSQL : Violation PRIMARY KEY
    /* 2001.6.20 by robert
    if (sRetStr.indexOf("unique")>=0 ||
        sRetStr.indexOf("Violation of PRIMARY KEY")>=0)
       alert("編號重複，請重新輸入！");
    else
       alert("資料無法儲存！\n\n[錯誤訊息]:\n"+sRetStr);   // 顯示錯誤訊息
    */
    // 修改為若有自定重複資料之訊息則依自定訊息 alert
    if (!emisEmpty(sSaveUniqueMsg_) && sRetStr.indexOf("編號重覆")>=0)
      alert(sSaveUniqueMsg_);   // 顯示錯誤訊息
    else
      alert("資料無法儲存！\n\n[錯誤訊息]:\n"+sRetStr);   // 顯示錯誤訊息
    return false;
  }
}

// emis 刪除訊息處理
// sRetStr: 傳入之刪除訊息字串, "OK"=刪除成功, 其他則為失敗
function emisDelMsg(sRetStr) {
  if (sRetStr=="OK" || sRetStr=="0")
    return true;
  else {
    alert("資料無法刪除！\n\n[錯誤訊息]:\n"+sRetStr);   // 顯示錯誤訊息
    return false;
  }
}

// emis 列印處理, 預設使用 Submit
// sURL: 傳入之 URL 字串
// sMode: 開啟列印時之視窗型態, 不傳則用 winodw.open, "get"=showModal
// sAlert: 列印完成之訊息, 若傳入 "NOMESSAGE" 則無資料時不會顯示訊息
// 2005/06/02 andy 修改:加入一個參數sFun作為列印後調用的函數
function emisRpt(sURL, sMode, sAlert, sFun) {
  // 顯示列印訊息
  var _sMessage="";
  if (typeof(eval("document.all.spaMessage"))!="undefined") {
    emisMarquee(document.all.spaMessage);
    _sMessage="Yes";
  }

  var _sRetStr="";
  //var _oWin;
  var _sURL = "../emis_data.jsp?" + sURL +
              (sURL.indexOf("&TITLE=")>0?"": "&TITLE=" + emisGetTitle()) +
              (emisEmpty(bDebug_)?"": "&DEBUG=true") + "&MESSAGE=" + _sMessage +
              (emisEmpty(sFun)?"":"&FUN=" + sFun) +    // 2005/06/02 andy :加入此行
              (emisEmpty(sAlert)?"": "&ALERT=" + sAlert);

  if (emisEmpty(sMode) || sMode!="get") {
    // 2005/08/11 add by andy start:列印時顯示一個跑馬燈效果的信息視窗,因為資料多時,原列印視窗不能顯示信息
    //_oWin=emisOpen(_sURL);       // 使用 Submit Open
    //_oWin.focus();
    if(bShowRptMsg_){
//      oRptMsgWin_ = emisOpen("../emis_rpt.htm");
      oRptMsgWin_ = emisWinOpen("../emis_rpt.htm", 310, 130,((screen.availHeight-200)/2), ((screen.availWidth-400)/2));
    }
    oRptWin_ = emisOpen(_sURL);
    // 2005/08/11 add by andy end
  }
  else if (sMode=="get") {
    _sRetStr=emisShowModal(_sURL);
    if (typeof(eval("document.all.spaMessage"))!="undefined")
      emisMarquee(document.all.spaMessage,"end");


    //2004/11/19 [1494] Jacky 修正若以"get"方式處理的錯誤
    try {
      if (_sRetStr=="") {
        return true;
      }
    }catch(e) {
      if (_sRetStr[0]=="") {
        return true;
      }
    }
    if (sAlert.toUpperCase()!="NOMESSAGE"){
      alert(_sRetStr);
      return false;
    } else {  //加入else檢核，沒有資料時應返回false;
      try{
        if(_sRetStr == "NoData") {
          return false;
        }
      } catch(e){ ; }
    }
  }
  return true;
}

// emis 列印處理 Header
// sHead: Head 之每一欄位之列印抬頭,各欄位以 ","隔開
// sSize: Head 之每一欄位之列印寬度,各欄位以 ","隔開
// sHead: Head 之每一欄位之列印間隔,各欄位以 ","隔開
// oHead: 組好之列印 Head 物件
// oHeadLine: 組好之列印 Head 底線物件
function emisRptHead(sHead, sSize, sGap, oHead, oHeadLine) {
  var _aHead=sHead.split(",");
  var _aSize=sSize.split(",");
  var _aGap =sGap.split(",");
  oHead.value="";
  oHeadLine.value="";
  for (var i=0; i<_aHead.length; i++) {
    oHead.value    +=emisPadc(_aHead[i], _aSize[i]) + emisReplicate(" ", _aGap[i]);
    oHeadLine.value+=emisReplicate("-", _aSize[i]) + emisReplicate(" ", _aGap[i]);
  }
}

// E_MAIL 處理
// sMsg: 處理訊息
function emisMail(sMsg) {
  var _oWin;
  var _sURL = "../emis_mail.jsp?" +
              (emisEmpty(sMsg)?"": "MESSAGE=" + sMsg) + (emisEmpty(bDebug_)?"": "&DEBUG=true");
  _oWin=emisOpen(_sURL);
  _oWin.focus();

  return true;
}

// E_MAIL 訊息處理
// sRetStr: 傳入之郵寄訊息字串, ""=成功, 其他則為失敗
// sMsg: 寄出成功後 alert 之訊息
function emisMailMsg(sRetStr, sMsg) {
  if (sRetStr=="") {
    if (emisEmpty(sMsg))
      alert("郵件寄出成功！");
    else {
      if (sMsg=="NOMESSAGE")
        return true;
      else
        alert(sMsg);
    }
    return true;
  }
  else {
    alert("郵件無法寄出！\n\n[錯誤訊息]:\n"+sRetStr);   // 顯示錯誤訊息
    return false;
  }
}

// BarCode 列印處理
function emisBarCode() {
  var _sRetStr="";
  var _oWin;
  var _sURL = "../emis_data.jsp?ACT=barcode" + "&TITLE=" + emisGetTitle() +
              (emisEmpty(bDebug_)?"": "&DEBUG=true");
  _oWin=emisOpen(_sURL);
  _oWin.focus();

  return _sRetStr;
}

// UpLoad 上載處理
// sURL: 傳入之 URL 字串
function emisUpload(sURL) {
  var _sRetStr="";
  var _oWin;

  sURL=(emisEmpty(sURL)? "../": sURL +"jsp/" ) + "emis_upload.jsp";
  var _sURL = sURL + "?" + (emisEmpty(bDebug_)?"": "&DEBUG=true");
  _oWin=emisOpen(_sURL);
  _oWin.focus();

  return _sRetStr;
}

// UpLoad 訊息處理
// sRetStr: 傳入之上載訊息字串, ""=成功, 其他則為失敗
function emisUploadMsg(sRetStr) {
  if (sRetStr=="") {
    alert("檔案上載成功！");
    return true;
  }
  else {
    alert("檔案無法上載！\n\n[錯誤訊息]:\n"+sRetStr);   // 顯示錯誤訊息
    return false;
  }
}

// 取得郵遞區號
// sAddr   : 地址
// oZipCode: 郵遞區號欄位
function emisZipCode(sAddr, oZipCode) {
  if (!emisEmpty(oZipCode) && emisEmpty(oZipCode.value)) {
    var _sURL = "../emis_zipcode.jsp?ADDR=" + sAddr;
    var _sZipCode=emisShowModal(_sURL);
    if (!emisEmpty(oZipCode))
      oZipCode.value=_sZipCode;
  }
  return _sZipCode;
}

// 資料選擇共用程式
// sURL : 傳入之 URL 字串
// aRetStr     : 傳回接收之欄位, 其個數須與URL傳入FIELD?數相同
// oNoDataFocus: 無資料之Focus欄位物件
// oNextFocus  : 選擇後之下一欄位物件
// iWidth : 視窗寬度
// iHeigth: 視窗高度
function emisSelectS(sURL, aRetStr, oNoDataFocus, oNextFocus, sMsg, iWidth, iHeight) {
  // 當 oNoDataFocus 即輸入之欄位有被改為 readOnly 或 Disable, 則不處理

  if (oNoDataFocus.readOnly || oNoDataFocus.disabled)
    return true;

  iWidth =emisEmpty(iWidth)? 760: iWidth;
  iHeight=emisEmpty(iHeight)? 520: iHeight;

  var _aRetStr="";
  var _oWin;
  // emis_sel.jsp 會由外部傳入, 若不傳入會取 select.xml
  var _sURL = "../emis_sel.jsp?" + sURL +
              (emisEmpty(bDebug_)?"": "&DEBUG=true");
  if (emisEmpty(bDebug_))
    _aRetStr=emisShowModal(_sURL, iWidth, iHeight);
  else {
    _oWin=window.open(_sURL);
    _oWin.focus();
  }
/*
  if (_aRetStr[0]=="?????")
    alert((emisEmpty(sMsg)?"":"「" + sMsg + "」欄位輸入錯誤，\n\n") + "無任何查詢資料，請重新輸入！")
*/
  // 未選取或無任何查詢資料
  if (_aRetStr[0]=="" || _aRetStr[0]=="?????" || _aRetStr[0] == "cancel") {
    // 將值清空
   // for (var i=0; i<aRetStr.length; i++)
   //   eval(aRetStr[i] + "=''");

    // onchange 時須先移至下一欄位輸入,再移回無資料之欄位
    oNextFocus.focus();
    if(_aRetStr[0] == "cancel"){
    	oNoDataFocus.focus();
    	return "cancel";
    }
    if (!emisEmpty(oNoDataFocus)){
   		oNoDataFocus.focus();
    	return false;
    }
  }

  // 有選取資料將值回傳
  for (var i=0; i<aRetStr.length; i++) {
    // 處理單引號
    _aRetStr[i]=_aRetStr[i].replace(new RegExp("'", "g"),"\\'");
    eval(aRetStr[i] + "='" + _aRetStr[i] +"'");
  }

  oNextFocus.focus();    // 移至下一欄位輸入
  return true;
}

// 資料選擇共用程式
// sURL : 傳入之 URL 字串
// aRetStr     : 傳回接收之欄位, 其個數須與URL傳入FIELD?數相同
// oNoDataFocus: 無資料之Focus欄位物件
// oNextFocus  : 選擇後之下一欄位物件
// iWidth : 視窗寬度
// iHeigth: 視窗高度
function emisSelect(sURL, aRetStr, oNoDataFocus, oNextFocus, sMsg, iWidth, iHeight) {
  // 當 oNoDataFocus 即輸入之欄位有被改為 readOnly 或 Disable, 則不處理
  if (oNoDataFocus.readOnly || oNoDataFocus.disabled)
    return true;

  iWidth =emisEmpty(iWidth)? 760: iWidth;
  iHeight=emisEmpty(iHeight)? 520: iHeight;

  var _aRetStr="";
  var _oWin;

  // add by Harry 2006/06/15 對商品選擇，貨號-100  往下找100筆,改成 貨號 -1000 往下找100筆
  var sPnoStr = "";
  var iPnoSta = (sURL.indexOf("&QRYNO=") - 0) + 7;
  var iPnoEnd = sURL.indexOf("&L_QRYNUM=");
  var iPnoEnd2 = sURL.indexOf("&TITLE=");
  if (sURL.indexOf("part_sel_next&") > 0 || sURL.indexOf("partEan_sel_next&") > 0) {
    sPnoStr = sURL.substring(iPnoSta, iPnoEnd);
    if (emisChkNum(sPnoStr) != "") sPnoStr = sURL.substring(iPnoSta, iPnoEnd2);
    if (emisChkNum(sPnoStr) == "") {
      sURL = sURL.replace(new RegExp("QRYNO=" + sPnoStr, "g"), "QRYNO=" + ((sPnoStr * 1) - 900));
    }
  }

  // emis_sel.jsp 會由外部傳入, 若不傳入會取 select.xml
  var _sURL = "../emis_sel.jsp?" + sURL +
              (emisEmpty(bDebug_)?"": "&DEBUG=true");
  if (emisEmpty(bDebug_))
    _aRetStr=emisShowModal(_sURL, iWidth, iHeight);
  else {
    _oWin=window.open(_sURL);
    _oWin.focus();
  }

  if (_aRetStr[0]=="?????")
  if (sMsg=="Cashier")
    alert("訂貨資料限定[店經理]才有權限結案!")
    else {
    alert((emisEmpty(sMsg)?"":"「" + sMsg + "」欄位輸入錯誤1，\n\n") + "無任何查詢資料，請重新輸入！")
    }
  // 未選取或無任何查詢資料  //未選取時傳合cancel,為適合WTN商品的選擇.update by andy 2005/03/17
  if (_aRetStr[0]=="" || _aRetStr[0]=="?????" || _aRetStr[0] == "cancel") {
    // 將值清空
    for (var i=0; i<aRetStr.length; i++)
      eval(aRetStr[i] + "=''");

    // onchange 時須先移至下一欄位輸入,再移回無資料之欄位
    oNextFocus.focus();
    if (!emisEmpty(oNoDataFocus)) oNoDataFocus.focus();
    return false;
  }

  // 有選取資料將值回傳
  for (var i=0; i<aRetStr.length; i++) {
    // 處理單引號
    _aRetStr[i]=_aRetStr[i].replace(new RegExp("'", "g"),"\\'");
    eval(aRetStr[i] + "='" + _aRetStr[i] +"'");
  }

  oNextFocus.focus();    // 移至下一欄位輸入
  return true;
}

// 透過 emis_data 傳入 act 以取 SQL Data
// 依所傳入 sURL 之 ACT action, 及  FIELD? 欄位, 僅傳回第一筆資料
// 未傳入欄位則回傳目前記錄之所有欄位
// 有傳入欄位則依傳入之欄位傳出 Data
function emisGetData(sURL) {
  var _sURL = "../emis_data.jsp?" + sURL +
              (sURL.indexOf("&TITLE=")>0?"": "&TITLE=" + emisGetTitle()) +
              (emisEmpty(bDebug_)?"": "&DEBUG=true");
  if (emisEmpty(bDebug_))
    return emisShowModal(_sURL);
  else
    return window.open(_sURL)
}

// 取得 Select Option 物件之 Name 值
// oOption: select option 物件
// oObj   : 取得之 Name 值之物件
// bAll   : 是否取全部 Text 值
// 傳回為所取之 select option 物件以空白之 Name 值
// 用於 SqlCache 所產生之 select 為 NO + " " +NAME, 而取出 Name
function emisOptionName(oOption, oObj, bAll) {
  var _iSelIndex = oOption.selectedIndex;
  if (_iSelIndex<0)
    return "";

  var _sName = new String(oOption.options[_iSelIndex].text);
  if (emisEmpty(bAll)) {
    var _aName = _sName.split(" ");
    _sName="";
    for (var i=1; i<_aName.length; i++)
      _sName=_sName + (i==1? "": " ") + _aName[i];

    if (!emisEmpty(oObj))
      oObj.value= _sName;
  }

  return _sName;
}

// 設定 Select Option 物件之預設值
// oOption: select option 物件
// sValue : 預設之值
function emisOptionSet(oOption, sValue) {
  var _iLength = oOption.length;
  for (var i=0; i<_iLength; i++) {
    if (oOption.options[i].value==sValue) {
      oOption.options[i].selected=true;
      break;
    }
  }

  return true;
}

// 自動尋找 Select Option 物件之值
// oOption: select option 物件
// sValue : 輸入之值
function emisOptionSearch(oOption, sValue) {
  var _iLength = oOption.length;
  var _sOpValue;
  oOption.value=null;   // 將 Option 清空
  for (var i=0; i<_iLength; i++) {
    _sOpValue=oOption.options[i].value;
    if (sValue==_sOpValue.substring(0,sValue.length)) {
      oOption.value=oOption.options[i].value;
      break;
    }
  }
}

// 切換多層次下拉選項處理
// oSurOption: 來源 select option 物件
// oTarOption: 目的 select option 物件
// sValue1 : 起始過濾 oSurOption value 之值
// sValue2 : 結束過濾 oSurOption value 之值
// iStart  : 取得 oSurOption value 之值之起始 Byte
// iEnd    : 取得 oSurOption value 之值之結束 Byte
// bNoEmpty: 是否不產生第一筆為空白
// iValueStart  : value 取得 oSurOption value 之值之起始 Byte
// iValueEnd    : value 取得 oSurOption value 之值之結束 Byte
function emisOptionMutiSel(oSurOption, oTarOption, sValue1, sValue2, iStart, iEnd, bNoEmpty, iValueStart, iValueEnd) {
  oTarOption.length = 0;
  // 將 Option 清空
  // sValue1 is Empty, or sValue1 > sValue2 則不處理
  if (emisEmpty(sValue1) || (!emisEmpty(sValue2) && sValue1 > sValue2)) {
    return true;
  }
  var _iSurLength = oSurOption.length;
  var _sStr = "";
  var _iStart = emisEmpty(iStart)? 0: iStart;
  var _iEnd = emisEmpty(iEnd)? sValue1.length: iEnd;
  var _iValueStart = emisEmpty(iValueStart)? 0: iValueStart;
  var _iValueEnd = emisEmpty(iValueEnd)? sValue1.length: iValueEnd;
  var _oOption;
  // 預設新增一筆空白
  if (emisEmpty(bNoEmpty)) {
   _oOption= $("<OPTION value=''></OPTION>")
    _oOption.appendTo(oTarOption);

  }
  for (var i = 0; i < _iSurLength; i++) {
    _sStr = new String(oSurOption.options[i].value).substring(_iStart, _iEnd);
    if ((emisEmpty(sValue2) && _sStr == sValue1) ||
        (!emisEmpty(sValue2) && _sStr >= sValue1 && _sStr <= sValue2)) {
      _oOption = $("<OPTION value=''></OPTION>")
      if (emisEmpty(_iValueStart))
        _oOption.attr("value",oSurOption.options[i].value);
      else
        _oOption.attr("value",oSurOption.options[i].value.substring(_iValueStart, _iValueEnd));
      _oOption.html(oSurOption.options[i].text);
     _oOption.appendTo(oTarOption);
    }
  }
  return true;
}
// 複製下拉選項物件
// oSurOption: 來源 select option 物件
// oTarOption: 目的 select option 物件
function emisOptionCopy(oSurOption, oTarOption) {
  oTarOption.length=0;   // 將 Option 清空
  var _iSurLength = oSurOption.length;
  var _oOption;
  for (var i=0; i<_iSurLength; i++) {
    _oOption = document.createElement("OPTION");
    _oOption.value = oSurOption.options[i].value;
    _oOption.text  = oSurOption.options[i].text;
    oTarOption.add(_oOption);
  }
  return true;
}

// 判斷 recordset 是否有重複編號
// sAct: 編輯之 action: add 或 upd
// oRecordset: xmlData Recordset 物件
// sFieldName: 欲判斷之 recordset 欄位
// sValue    : 欲判斷之值
// sMsg      : 重複時之訊息
// oFocus    : 重複時之 Focus 物件
function emisChkReplNo(sAct, oRecordset, sFieldName, sValue, sMsg, oFocus) {
  if (oRecordset.recordcount==0) return true;

  var _bReturn=true;
  var _iXmlPosition = oRecordset.AbsolutePosition;   // 保留目前記錄位置
  var _iRecordCnt = oRecordset.recordcount;
  oRecordset.movefirst();
  for (var i=1; i<=_iRecordCnt; i++) {
    // 目前記錄位置不判斷 For 修改資料
    if ((sAct.indexOf("add")>=0 || (sAct.indexOf("upd")>=0 && oRecordset.AbsolutePosition !=_iXmlPosition)) &&
        oRecordset.fields(sFieldName).value==sValue) {
      alert(sMsg + "重複，請重新輸入！");
      if (!emisEmpty(oFocus)) oFocus.focus();
      _bReturn=false;
      break;
    }
    oRecordset.movenext();
  }
  oRecordset.AbsolutePosition = _iXmlPosition;   // 還原目前記錄位置
  return _bReturn;
}

// 依傳入之xmlData寫入傳入欄位Array之物件
// aFieldName:recordset field Name 以供增修時寫回 recordset 欄位
// oRecordset: xmlData Recordset 物件
function emisCompRepl(aFieldName, oRecordset) {
  if (oRecordset.recordcount==0) return;

  for (var i=0; i<aFieldName.length; i++) {
    var _oObject=eval("document.all." + aFieldName[i]);
    if (typeof(_oObject)!="undefined") {
      try {
        // if 是 span id 物件則用 innerText
        if (_oObject.id!="") {
          _oObject.innerText = oRecordset.fields(aFieldName[i]).value;
        }
      } catch(e) {}
      _oObject.value = oRecordset.fields(aFieldName[i]).value;
    } else {
      _oObject = eval("document.all.spa" + aFieldName[i]);
      if(typeof(_oObject) != "undefined" ){
        _oObject.innerText = oRecordset.fields(aFieldName[i]).value;
      }
    }
  }
}

// 依傳入之欄位Array之物件產生 URL, 以供 Save 處理
// aFieldName:recordset field Name 以供增修時寫回 recordset 欄位
function emisCompURL(aFieldName) {
  var _sURL="";
  var _sData;
  for (var i=0; i<aFieldName.length; i++) {
    // 處理資料中 "%" 符號而無法透過 URL 傳過
    if (typeof(eval("document.all." + aFieldName[i]))!="undefined") {
      _sData=eval("document.all." + aFieldName[i]).value;
      //if (_sData.indexOf("%")>=0 || _sData.indexOf("&")>=0)
        _sData=escape(_sData)

      _sURL = _sURL + "&" + aFieldName[i] + "=" + _sData;
    } // 2005/07/02 add by andy start
    else if (typeof(eval("document.all.spa" + aFieldName[i]))!="undefined") {
      _sData = escape(eval("document.all.spa" + aFieldName[i]).innerText);

      _sURL = _sURL + "&" + aFieldName[i] + "=" + _sData;
    } // 2005/07/02 add by andy end

  }
  return _sURL;
}

// 依傳入之欄位Array之物件產生此 Value 之 Array, 以供 tabUpdRecord() 使用
// aFieldName:recordset field Name 以供增修時寫回 recordset 欄位
function emisCompArray(aFieldName) {
  var _aValue=new Array(aFieldName.length);
  for (var i=0; i<aFieldName.length; i++) {
    if (typeof(eval("document.all." + aFieldName[i]))!="undefined")
      _aValue[i]=eval("document.all." + aFieldName[i]).value;
    // 2005/07/02 add by andy start
    else if (typeof(eval("document.all.spa" + aFieldName[i]))!="undefined")
      _aValue[i]=eval("document.all.spa" + aFieldName[i]).innerText;
    // 2005/07/02 add by andy end
  }
  return _aValue;
}

// 依傳入之欄位Array之物件欄位清空
// aFieldName:recordset field Name 以供增修時寫回 recordset 欄位
function emisCompClear(aFieldName) {
  for (var i=0; i<aFieldName.length; i++) {
    if (typeof(eval("document.all." + aFieldName[i]))!="undefined")
      eval("document.all." + aFieldName[i]).value = "";
    // 2005/07/02 add by andy start
    if (typeof(eval("document.all.spa" + aFieldName[i]))!="undefined")
      eval("document.all.spa" + aFieldName[i]).innerText = "";
    // 2005/07/02 add by andy end
  }
}

// 傳回xmlData欄位值之Array
function emisSaveXMLData() {
  var _iRecordCnt=xmlData.recordset.fields.count;
  _aRecordSet=new Array(iRecordCnt_);
  for (var i=0; i<_iRecordCnt-1; i++) {
    _aRecordSet[i]=xmlData.recordset.fields(i).value;
  }
  return _aRecordSet;
}

// 依傳入之Array, 寫回各欄位值
// aRecordSet: 傳入之 Array
function emisRestXMLData(aRecordSet) {
  var _iRecordCnt=aRecordSet.length;
  for (var i=0; i<_iRecordCnt-1; i++) {
    if (aRecordSet[i]==null)
      xmlData.recordset.fields(i)="";
    else
      xmlData.recordset.fields(i)=aRecordSet[i];
  }
}

// ************************** 物件顯示處理 *********************************

// 隱藏傳入之物件陣列(會占物件位置)
// aObj: 處理之物件 Array
function emisHide(aObj) {
  for (var i=0; i < aObj.length; i++) {
    var _oObj=eval(aObj[i])
    if (typeof(_oObj)!="undefined") _oObj.style.visibility = "hidden";
  }
} // emisHide( )

// 顯示傳入之物件陣列(會占物件位置)
// aObj: 處理之物件 Array
function emisShow(aObj) {
  for (var i=0; i < aObj.length; i++) {
    var _oObj=eval(aObj[i])
    if (typeof(_oObj)!="undefined") _oObj.style.visibility = "visible";
  }
} // emisShow( )

// 不顯示傳入之物件陣列(不佔物件位置)
// aObj: 處理之物件 Array
function emisNonDisplay(aObj) {
  for (var i=0; i < aObj.length; i++) {
    var _oObj=eval(aObj[i])
    if (typeof(_oObj)!="undefined") _oObj.style.display = "none";
  }
} // emisNonDisplay( )

// 顯示傳入之物件陣列(不佔物件位置)
// aObj: 處理之物件 Array
function emisDisplay(aObj) {
  for (var i=0; i < aObj.length; i++) {
    var _oObj=eval(aObj[i])
    if (typeof(_oObj)!="undefined") _oObj.style.display = "";
  }
} // emisDisplay( )

// Disable傳入之物件陣列
// aObj  : 處理之物件 Array
// bColor: 是否將物件於 Disable 時改變背景顏色
function emisDisable(aObj, bColor) {
  for (var i=0; i < aObj.length; i++) {
    var _oObj=eval(aObj[i])
    if (typeof(_oObj)!="undefined") {
      _oObj.disabled = true;

      // 判斷是否有 image 檔顯示時作處理, 將 image 圖檔變 Disable
      var _sIObj=aObj[i].replace(new RegExp("btn", "g"),"img");
      var _oIObj=eval(_sIObj);
      if (_sIObj.indexOf("img")>=0 && typeof(_oIObj)!="undefined") {
        _oIObj.style.filter="alpha(opacity=30)";
      }

      // 將顏色設為淺藍色
      if (!emisEmpty(bColor) && _oObj.type!="button")
        _oObj.style.backgroundColor = "#CCFFFF";
    }
  }
} // emisDisabled( )

// Enable傳入之物件陣列
// aObj  : 處理之物件 Array
// bColor: 是否將物件於 Enable 時還原背景顏色
function emisEnable(aObj, bColor) {
  for (var i=0; i < aObj.length; i++) {
    var _oObj=eval(aObj[i])
    if (typeof(_oObj)!="undefined") {
      _oObj.disabled = false;

      // 判斷是否有 image 檔顯示時作處理, 將 image 圖檔變 Enable
      var _sIObj=aObj[i].replace(new RegExp("btn", "g"),"img");
      var _oIObj=eval(_sIObj);
      if (_sIObj.indexOf("img")>=0 && typeof(_oIObj)!="undefined") {
        _oIObj.style.filter="";
      }

      // 將顏色還原
      if (!emisEmpty(bColor) && _oObj.type!="button")
        _oObj.style.backgroundColor = "#FFFFFF";
    }
  }
} // emisEnable( )


// 處理 Form 之物件 Enable, Disable
// oFormObj: Form 物件
// sAttrib : ENABLE, DISABLE
// sEnColor, sEnBgColor: Enable 之前,背景顏色
// sDisColor, sDisBgColor: Disable 之前,背景顏色
function emisFormAttrib(oFormObj, sAttrib,
                        sEnColor, sEnBgColor, sDisColor, sDisBgColor) {
  sEnColor   =emisEmpty(sEnColor)? "": sEnColor;
  sEnBgColor =emisEmpty(sEnBgColor)? "": sBgEnColor;
  sDisColor  =emisEmpty(sDisColor)? "": sDisColor;
  sDisBgColor=emisEmpty(sDisBgColor)? "#CCFFFF": sBgDisColor;

  var _oElement=new Object;
  var _sEleType="";
  for (var i=0; i<oFormObj.elements.length; i++) {
    _oElement=oFormObj.elements[i];
    _sEleId  =_oElement.id.toUpperCase();
    _sEleType=_oElement.type;

    // 僅處理不是 Button 及 Hidden 物件
    if (_sEleType.indexOf("button")<0 && _sEleType.indexOf("hidden")<0 &&
        _sEleId.indexOf("PAGESIZE")<0) {
      if (sAttrib.toUpperCase()== "DISABLE") {
        // 瀏覽模式, Disable
        if (_sEleType.indexOf("select")>=0 || _sEleType.indexOf("checkbox")>=0)
           _oElement.disabled = true;    // type: select, checkboc 無 readOnly 屬性
        else {
           _oElement.disabled = false;
           _oElement.readOnly = true;
        }
        _oElement.style.color = sDisColor;
        _oElement.style.backgroundColor = sDisBgColor;
      }
      else {
        // 編輯模式, Enable
        _oElement.disabled = false;
        _oElement.readOnly = false;
        _oElement.style.color = sEnColor;
        _oElement.style.backgroundColor = sEnBgColor;
      }
      // 將字體強迫改為 9pt
      //_oElement.style.fontSize = "9pt";
    }
  }
}

// 判斷 Form 之所有物件 是否有輸入值
// oFormObj : Form 物件
// oFocusObj: 無任何物件有輸入值之 Focus 物件
// sMsg     : 無任何物件有輸入值之訊息
function emisFormEmpty(oFormObj, oFocusObj, sMsg) {
  // 判斷是否有輸入值
  var bEmpty=true;
  var _oElement=new Object;
  for (var i=0; i<oFormObj.elements.length; i++) {
    _oElement=oFormObj.elements[i]
    // Check 不是 Button, Hidden 物件
    if (_oElement.type.indexOf("button")<0 &&
        _oElement.type.indexOf("hidden")<0 &&
        _oElement.type.indexOf("reset")<0 &&
        _oElement.name.indexOf("L_QRYNUM")<0 &&
        _oElement.value!=">" && _oElement.value!="=" && _oElement.value!="<" &&
        !emisEmpty(_oElement.value)) {
      bEmpty=false;
      break;
    }
  }
  if (bEmpty) {
    alert(emisEmpty(sMsg)? "請輸入欲查詢之條件 ！": sMsg);
    oFocusObj.focus();
    return false;
  }
  return true;
}

// *********************** 各功能按鍵按下處理 ******************************

// 按鍵被按後之 Return 處理
function emisKeyReturn() {
  window.event.returnValue = false;
  return true;
}

// 按鍵被按後之 KeyCode 處理
// aObj    : 欲處理之 Button event
// aKeyCode: KeyCode Array
function emisKeyProce(aObj, aKeyCode) {
  var _iKeyCode = window.event.keyCode;
  //alert(_iKeyCode);

  for (var i=0; i < aObj.length; i++) {
    // 若 aObj[i] 無值則不處理
    var _oObj=eval(aObj[i])
    if (typeof(_oObj)!="undefined" && _iKeyCode==aKeyCode[i]) {
      // 若有 Disable 則不處理
      if (!_oObj.disabled && _oObj.style.display!="none" &&
          typeof(eval(aObj[i] + ".onclick()"))=="function")
        _oObj.onclick();

      // F6 需特別處理, 否則 Focus 會移開
      if (_iKeyCode==117) window.event.keyCode=9;

      return emisKeyReturn();
    }
  }
  return false;
}

// 功能模式
// 45=Insert, 13=Enter, 46=Del, 115:F4 Print
// 113=F2:Query, 117=F6:Copy, 119:F8 QQry, 121=F10:DownRec
// 113=F2:Bat 表身之整批帶入
// 117=F6:SQry 單品資料維護門市查詢
// 117=F6:Conf 進貨驗收之確認驗收
// 118=F7:Invo 進貨驗收之發票補登
// 117=F6:Settle 撥出單之結案
//  = F12:read 讀盤點機資料
// aObj: 處理之物件 Array
// aKeyCode: 處理之物件對應 KeyCode Array
function emisFuncOnKeyDown(aObj, aKeyCode) {
  // 判斷是否為每頁筆數 document.all.idTBLspanPageSize 欄位按 ENTER 之處理
  if (typeof(document.all.idTBLspanPageSize)!="undifined") {
    if (window.event.keyCode==13 && window.event.srcElement==document.all.idTBLspanPageSize) {
      window.event.keyCode=9;
      return true;
    }
  }

  // 按下 ALT-F4 鍵作關閉視窗
  if (window.event.altKey && window.event.keyCode==115) {
    return emisKeyReturn();
  }

  if (emisEmpty(aObj)) {
    aObj = [ "document.all.btnAdd",  "document.all.btnUpd",
             "document.all.btnDel",  "document.all.btnRpt",
             "document.all.btnQry",  "document.all.btnCopy",
             "document.all.btnQQry", "document.all.btnF10",
             "document.all.btnBat",  "document.all.btnSQry",
             "document.all.btnConf", "document.all.btnInvo",
             "document.all.btnSettle"
             ,"document.all.btnF6","document.all.btnF7"
             ,"document.all.btnF8","document.all.btnF9"
             ,"document.all.btnF10","document.all.btnF11"
             ,"document.all.btnF12"];
    aKeyCode = [ 45, 13, 46, 115, 113, 117, 119, 121, 113, 117, 117, 118, 117
                ,117,118,119,120,121,122,123];
  }

  return emisKeyProce(aObj, aKeyCode);
} // emisFunOnKeyDown()

// 瀏覽模式
// 36=HOME:第一頁, 35=END :最末頁
// 33=PgUp:上一頁, 34=PgDn:下一頁,
// 38=↑  :上一筆, 40=↓  :下一筆,
// aObj: 處理之物件 Array
// aKeyCode: 處理之物件對應 KeyCode Array
function emisNaviOnKeyDown(aObj, aKeyCode) {
  if (emisEmpty(aObj)) {
    aObj = [ "document.all.idTBLNaviFirstRec", "document.all.idTBLNaviLastRec",
             "document.all.idTBLNaviPrevPage", "document.all.idTBLNaviNextPage",
             "document.all.idTBLNaviPrevRec",  "document.all.idTBLNaviNextRec"]
    aKeyCode = [ 36, 35, 33, 34, 38, 40 ];
  }

  return emisKeyProce(aObj, aKeyCode);
} // emisNaviOnKeyDown()

// 單筆瀏覽模式
// 36=HOME:第一筆, 35=END:最末筆,
// 38=↑  :上一筆, 40=↓ :下一筆
// aObj: 處理之物件 Array
// aKeyCode: 處理之物件對應 KeyCode Array
function emisBrowOnKeyDown(aObj, aKeyCode) {
  if (emisEmpty(aObj)) {
    aObj = [ "document.all.idTBLBrowFirstRec", "document.all.idTBLBrowLastRec",
             "document.all.idTBLBrowPrevRec",  "document.all.idTBLBrowNextRec"]
    aKeyCode = [ 36, 35, 38, 40];
  }

  return emisKeyProce(aObj, aKeyCode);
} // emisBrowOnKeyDown()

// 編輯模式
// aObj: 處理之物件 Array
function emisEditOnKeyDown(aObj) {
  if (emisEmpty(aObj)) {
    aObj = [ document.all.btnSave, document.all.btnCancel ];
  }

  var _iKeyCode = window.event.keyCode;
  //alert(_iKeyCode);
  // 不是 Button 按 ENTER, TAB 至下一欄位
  if ((_iKeyCode==13 || _iKeyCode==9)
      && window.event.srcElement.type!="button" && window.event.srcElement.type!="textarea") {
    window.event.keyCode = 9;
    return true;
  }
  else if (_iKeyCode == 121) {       // F10: 儲存
    if (emisAnswer("是否確定欲儲存？ <Y/N>",1)=="Yes") {
      // 解決 F10 按鍵, 最後一個輸入欄位無法將值寫回 xmlData
      var _oObject=window.event.srcElement;
      try {
        if (_oObject.type!="button") {
          var _oRecordset=xmlData.recordset;
          var _iRecordCnt=_oRecordset.fields.count;
          for (var i=_iRecordCnt-1; i>=0; i--) {
            if (_oRecordset.fields(i).name==_oObject.name) {
              _oRecordset.fields(i).value=_oObject.value;
              break;
            }
          }
        }
      } catch(e) {}

      if (typeof(aObj[0])!="undefined")
        aObj[0].onclick();
    }
    return emisKeyReturn();
  }
  else if (_iKeyCode==27) {
    if (typeof(aObj[1])!="undefined")
      aObj[1].onclick();
    return emisKeyReturn();
  }
  return false;
} // emisEditOnKeyDown()

// 查詢模式
// aObj: 處理之物件 Array
function emisQryOnKeyDown(aObj) {
  if (emisEmpty(aObj)) {
    aObj = [ document.all.btnOK, document.all.btnClose ];
  }

  var _iKeyCode = window.event.keyCode;
  //alert(_iKeyCode);
  // 不是 Button 按 ENTER, TAB 至下一欄位
  if ((_iKeyCode==13 || _iKeyCode==9) && window.event.srcElement.type!="button") {
    window.event.keyCode = 9;
    return true;
  }
  else if (_iKeyCode == 121) {       // F10: 確定
    if (typeof(aObj[0])!="undefined")
      aObj[0].onclick();
  }
  else if (_iKeyCode==27) {
    if (typeof(aObj[1])!="undefined")
      aObj[1].onclick();
    return emisKeyReturn();
  }
  return false;
} // emisEditOnKeyDown()

// 取得 Business TITLE 值
function emisGetTitle() {
  var _sTitle="window.sBusiTitle_";
  var _sBusiTitle=_sTitle;

  // 先取得本網頁之 sBusiTitle_
  if (typeof(eval(_sBusiTitle))!="undefined")
    return eval(_sBusiTitle);

  // 取得父網頁之 sBusiTitle_
  var _sBusiTitle="window.parent." + _sTitle;
  if (typeof(eval(_sBusiTitle))!="undefined")
    return eval(_sBusiTitle);

  try {
    // 取得 Opener 網頁之 sBusiTitle_
    _sBusiTitle="window.opener." + _sTitle;
    if (typeof(eval(_sBusiTitle))!="undefined")
      return eval(_sBusiTitle);
  } catch(e) {
    try {
      // 取得 dialog 網頁之 sBusiTitle_
      _sBusiTitle="dialogArguments." + _sTitle;
      if (typeof(eval(_sBusiTitle))!="undefined")
        return eval(_sBusiTitle);
    } catch(e) {}
  }

  return "";
}

  // 開啟...選擇視窗, 並填所選值到元件欄位內.
  // @param oField 輸入的元件
  // @param iLen 欄寬
  // @param sChar 左補零的字元("0")
  // @param _true
  // @author Jerry
  // @version 2004/08/27
  // 2005/03/23 ANDY 從標準版移至WTN
  function emisOpenSelectWindow(oField, iLen, sChar, _true) {
    if(emisEmpty(oField.value)) return true;  //為空時不補零  update by andy
    // onblur的欄位是oField, 其activeElement則是被操作的下一個元件, 如...視窗
    var _sName = oField.document.activeElement.name;
    var _sValue = oField.value;
    // alert(_sName);

    //2004/10/11 [1175] Jacky 判斷若內容有%則補零
    if (oField.value.indexOf("%") < 0 )
      oField.value = emisPadl(oField.value, iLen, sChar, _true);

    if (_sName == "btn" + oField.name) {  // 元件是btnQRY_P_NO1才要開啟...視窗
      if (typeof(eval("document.all.btn" + oField.name) == "object")) {
        eval("document.all.btn" + oField.name + ".onclick()");
        return true;
      }
    }
    return true;
  }

  /**
   * 組結案檢核的URL 字串 (這樣只需在主jsp頁面定義一個setConfInf的函數,其他頁面可不作其他修改)
   * 2005/07/02 add by andy
   */
  function emisCompConfURL(){
    var sConfURL = "";

    if( typeof(setConfInf) == "function" ) {
      setConfInf();
      sConfURL = "&CONF_TABLE=" + document.all.CONF_TABLE.value
               + "&CONF_WHERE=" + document.all.CONF_WHERE.value
    } else if ( typeof(window.parent.setConfInf) == "function" ) {
      window.parent.setConfInf();
      sConfURL = "&CONF_TABLE=" + window.parent.document.all.CONF_TABLE.value
               + "&CONF_WHERE=" + window.parent.document.all.CONF_WHERE.value
    } else if ( typeof(dialogArguments) == "object"
        && typeof(dialogArguments.setConfInf) == "function" ) {
      dialogArguments.setConfInf();
      sConfURL = "&CONF_TABLE=" + dialogArguments.document.all.CONF_TABLE.value
               + "&CONF_WHERE=" + dialogArguments.document.all.CONF_WHERE.value
    } else if ( typeof(dialogArguments) == "object"
        && typeof(dialogArguments.window.parent.setConfInf) == "function" ) {
      dialogArguments.window.parent.setConfInf();
      sConfURL = "&CONF_TABLE=" + dialogArguments.window.parent.document.all.CONF_TABLE.value
               + "&CONF_WHERE=" + dialogArguments.window.parent.document.all.CONF_WHERE.value
    }
    return sConfURL ;
  }



function displayMenu() {
  whichDiv = event.srcElement;
  var menu1 = document.getElementById("menu1");
  if (menu1 == null) {
    makeMenu();
    menu1 = document.getElementById("menu1");
  }
  if (menu1 == null) {
    alert("menu1 is null");
    return;
  }
  menu1.style.display = "";
  menu1.style.leftPos += 10;
  menu1.style.posLeft = event.clientX;
  menu1.style.posTop = event.clientY;
  menu1.setCapture();

  // 超出底部時往上移動
  if (event.clientY+menu1.clientHeight > screen.availHeight) {
    menu1.style.posTop = event.clientY - menu1.clientHeight;
    if (menu1.style.posTop < 0) menu1.style.posTop = 0;
  }
  if (event.clientX+200 > screen.availWidth-10)
    menu1.style.posLeft = event.clientX - 200;
}

function switchMenu() {
  el = event.srcElement;
  if (el.className == "menuItem") {
    el.className = "highlightItem";
  } else if (el.className == "highlightItem") {
    el.className = "menuItem";
  }
}

function clickMenu() {
  var _sID = event.srcElement.id;  // menu_btnAdd, ...
  isShow_ = false;
  menu1.releaseCapture();
  menu1.style.display = "none";

  if (_sID == "IE") {
    isShow_ = true;
    return;
  } else if (_sID == "F5") {
    window.location.reload();
    return;
  } else if (_sID == "Info") {
    alert(window.location);
    return;
  }

  //alert(_sID+","+_sID.substring(5));
  _sID = _sID.substring(5);
  try {
    var obj = eval("document.all." + _sID);
    //alert(_sID+","+obj.disabled+",upd="+document.all.btnUpd.disabled);
    var _isDisabled = obj.disabled;
    if (!_isDisabled) {
      obj.onclick();
    }
  } catch (e) {
    //alert(e.message);
  }
  return true;
}

function makeMenu() {
  var _oElement, _sEleId, _sEleType, _sEleName, _sImg, _iIndex;
  var _oDiv = document.createElement("DIV");  // 動態建立DIV
  _oDiv.id = "menu1";
  _oDiv.className = "menuDiv";
  _oDiv.onclick = clickMenu;
  _oDiv.onmouseover = switchMenu;
  _oDiv.onmouseout = switchMenu;
  _oDiv.style.display = "none";
  _oDiv.zIndex = 1;
  document.body.appendChild(_oDiv);  // 把Menu加入body

  var _oChildDiv = document.createElement("DIV");
  _oChildDiv.id = "F5";
  _oChildDiv.className = "menuItem";
  _oChildDiv.innerText = "重新整理";
  _oDiv.appendChild(_oChildDiv);

  if (window.history.length>1) {
    _oChildDiv = document.createElement("DIV");
    _oChildDiv.id = "Info";
    _oChildDiv.className = "menuItem";
    _oChildDiv.innerText = "內容";
    _oDiv.appendChild(_oChildDiv);
  }

  for (var i = 0; i < document.all.tags("button").length; i++) {
    _oElement = document.forms[0].elements[i];
    _sEleId = _oElement.id.toUpperCase();
    _sEleType = _oElement.type;
    _sEleName = _oElement.name;
    //alert("id="+_sEleId + ",type="+_sEleType+",name="+_oElement.name+","+_oElement.disabled);

    if (_sEleType.indexOf("button") >= 0 && !_oElement.disabled && _oElement.style.display=='') {
      //alert(_oElement.innerHTML+","+_oElement.innerText);
      // innerHTML是<img>
      _sImg = _oElement.innerHTML;
      if (_sImg != '') {
        _iIndex = _sImg.indexOf(" src=");
        _sImg = _sImg.substring(_iIndex);
        _sImg = '<img ' + _sImg + " ";
      }
      try {
      _oChildDiv = document.createElement("DIV");
      _oChildDiv.id = "menu_" + _sEleName;
      _oChildDiv.className = "menuItem";
      _oChildDiv.innerHTML = _sImg+_oElement.title;
      _oDiv.appendChild(_oChildDiv);
      } catch (e) {
        alert(e.message);
      }
    }
  }
}

// 傳回的是字串才要繼續查詢
function selectAgain(value) {
  return typeof(value) == "string";
}

//調整iframe適應高度 begin
function getSize(pid) {
  try {
  parent.document.getElementById(pid).height = 250;
  } catch (e) { }
  var xScroll, yScroll;
  if (window.innerHeight && window.scrollMaxY) {
    xScroll = document.body.scrollWidth;
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight) {       // all but Explorer Mac
    xScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
  } else {       // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    xScroll = document.body.offsetWidth;
    yScroll = document.body.offsetHeight;
  }

  var windowWidth, windowHeight;
  if (self.innerHeight) {       // all except Explorer
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) {       // Explorer 6 Strict Mode
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) {       // other Explorers
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  }

  // for small pages with total height less then height of the viewport
  if (yScroll < windowHeight) {
    pageHeight = windowHeight;
    y = pageHeight;
  } else {
    pageHeight = yScroll;
    y = pageHeight;
  }

  if (xScroll < windowWidth) {
    pageWidth = windowWidth;
  } else {
    pageWidth = xScroll;
  }

  arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
  return arrayPageSize;
}

function autoHeight(pid) {
  try {
    var x = new getSize(pid);
    parent.document.getElementById(pid).height = x[1];
  } catch (e) { }
}
//調整iframe適應高度 end

//function logout() {
//  var _sRetStr = window.showModalDialog("../../logout.jsp", window,
//      "dialogWidth=300px;dialogHeight=100px;" +
//      "center=yes;border=thin;help=no; menubar=no;toolbar=no;location=no;directories=no;status=no;resizable=0; scrollbars=0");
//
//  if (_sRetStr != "")
//    alert("無法登出，錯誤訊息:" + _sRetStr);
//  else
//    window.parent.location.href = "../../index.jsp";
//}
