/** * @fileoverview validation */ (function (dj) { function getSelAllChkObj_ (chkPrefix) { return dj.get(chkPrefix + "0"); } function getCheckedChkNum_ (chkPrefix, chkMax) { var i = 1, checkedChkNum = 0, currObj; for (; i <= chkMax; i++) { currObj =dj.get(chkPrefix + i); if (currObj) { if (currObj.disabled === true) { continue; } if (currObj.checked === true) { checkedChkNum++; } } } return checkedChkNum; } function getColumnData_ (columnInfo, dataI) { var dataObj = columnInfo["data"][dataI], key = columnInfo["key"], strMap = columnInfo["strMap"], transFunc = columnInfo["transFunc"], data = dataObj[key]; if (strMap) { data = strMap[data]; } else if (transFunc) { data = transFunc(dataI, data); } return data || ""; } function addEventListenerToChk_ (chkPrefix, chkMax, changeBtnsStatusImp, startRowIndex, isRadioBtn) { var i = 1, checkedChkNum = 0, selAllChkObj = getSelAllChkObj_(chkPrefix), toogle, currObj; if (selAllChkObj) { selAllChkObj.onclick = function () { if (isRadioBtn) { toogle = true; } else { toogle = selAllChkObj.checked; } for (i = 1; i <= chkMax; i++) { currObj = dj.get(chkPrefix + i); if (currObj && currObj.disabled != true) { dj.get(chkPrefix + i).checked = toogle; } } changeBtnsStatusImp(); }; } for (i = 1; i <= chkMax; i++) { if (dj.get(chkPrefix + i)) { dj.get(chkPrefix + i).onclick = clickChk_(chkPrefix, chkMax, changeBtnsStatusImp); } } for (i = 1, j = startRowIndex; i <= chkMax; i++, j++) { if (dj.get(chkPrefix + i)) { dj.get(chkPrefix + "Tr" + j).onclick = clickTr_(chkPrefix, i, chkMax, changeBtnsStatusImp); } } function clickChk_(chkPrefix, chkMax, changeBtnsStatusImp) { return function (e) { e = e || window.event; if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } changeBtnsStatusImp(); if (selAllChkObj) { checkedChkNum = getCheckedChkNum_(chkPrefix, chkMax); if (checkedChkNum == chkMax) { selAllChkObj.checked = true; } else { selAllChkObj.checked = false; } } }; } function clickTr_(chkPrefix, index, chkMax, changeBtnsStatusImp) { return function (e) { var chkObj = dj.get(chkPrefix + index); e = e || window.event; if (chkObj.disabled != true) { if (chkObj.type.toLowerCase() === "radio") { chkObj.checked = true; } else { chkObj.checked = !chkObj.checked; } changeBtnsStatusImp(); if (selAllChkObj) { checkedChkNum = getCheckedChkNum_(chkPrefix, chkMax); if (checkedChkNum == chkMax) { selAllChkObj.checked = true; } else { selAllChkObj.checked = false; } } } }; } } function initListTable_ (chkPrefix, chkMax, changeBtnsStatusImp) { var selAllChkObj = getSelAllChkObj_(chkPrefix); if (selAllChkObj) { selAllChkObj.checked = false; } for (var i = 1; i <= chkMax; i++) { if (dj.get(chkPrefix + i)) { dj.get(chkPrefix + i).checked = false; } } changeBtnsStatusImp(); } function changeBtnsStatus_ (chkPrefix, chkMax, btnsForSingleChk, btnsForMultiChks, btnsForUpChk, btnsForDownChk) { return function () { var indx = 1, currObj; var checkedChkNum = getCheckedChkNum_(chkPrefix, chkMax); if (checkedChkNum == 1) { for (; indx <= chkMax; indx++) { currObj =dj.get(chkPrefix + indx); if (currObj) { if (currObj.checked === true) { break; } } } } if (btnsForSingleChk) { if (checkedChkNum == 0) { dj.disableEls(btnsForSingleChk); } else if (checkedChkNum == 1) { dj.enableEls(btnsForSingleChk); } else { dj.disableEls(btnsForSingleChk); } } if (btnsForMultiChks) { if (checkedChkNum == 0) { dj.disableEls(btnsForMultiChks); } else if (checkedChkNum == 1) { dj.enableEls(btnsForMultiChks); } else { dj.enableEls(btnsForMultiChks); } } if (btnsForUpChk) { if (checkedChkNum == 1) { if (indx == 1) { dj.disableEls(btnsForUpChk); } else { dj.enableEls(btnsForUpChk); } } else { dj.disableEls(btnsForUpChk); } } if (btnsForDownChk) { if (checkedChkNum == 1) { if (indx == chkMax) { dj.disableEls(btnsForDownChk); } else { dj.enableEls(btnsForDownChk); } } else { dj.disableEls(btnsForDownChk); } } }; } function insertRowToTable_ (tblObj, rowIndex) { var rowObj = tblObj.insertRow(rowIndex); rowObj.className = rowIndex % 2 ? "list-content odd" : "list-content even"; return rowObj; } function insertCheckboxToRow_ (rowObj, chkId, chkVal) { var colObj = rowObj.insertCell(-1), chkObj = document.createElement("input"); chkObj.type = "checkbox"; chkObj.id = chkId; chkObj.name = chkId; chkObj.value = chkVal; colObj.appendChild(chkObj); return colObj; } function insertRadioToRow_ (rowObj, chkName, chkId, chkVal) { var colObj = rowObj.insertCell(-1), chkObj; try { chkObj = document.createElement(''); } catch (err) { chkObj = document.createElement("input"); } chkObj.type = "radio"; chkObj.id = chkId; chkObj.name = chkName; chkObj.value = chkVal; colObj.appendChild(chkObj); return colObj; } function insertTextToRow_ (rowObj, text) { var colObj = rowObj.insertCell(-1), textNode = document.createTextNode(text); colObj.appendChild(textNode); return colObj; } function insertExtColToRow_ (rowObj) { var colObj = rowObj.insertCell(-1); colObj.className = "ext-col"; return colObj; } function appendMaxCnt_(tblObj, maxCnt) { var cntObj = document.createElement("input"); cntObj.type = "hidden"; cntObj.name = tblObj.id + "MaxCnt"; cntObj.id = cntObj.name; cntObj.value = maxCnt; tblObj.parentNode.appendChild(cntObj); } dj.completeListedForm = function (tbl) { var tblObj = tbl["obj"], tblColumns = tbl["columns"], columnI, columnMax = tblColumns.length | 0, dataI, dataMax = tblColumns[0]["data"].length | 0, extraRow = tbl["extraRow"], rowObj, rowIndex, chkIndex, startRowIndex, isRadioBtn = tbl["isRadioBtn"] || false; var chkPrefix, btnsForSingleChk = tbl["btnsForSingleChk"], btnsForMultiChks = tbl["btnsForMultiChks"], btnsForUpChk = tbl["btnsForUpChk"], btnsForDownChk = tbl["btnsForDownChk"], changeBtnsStatusImp; if (extraRow == undefined) { extraRow = 1; } if (tblObj) { chkPrefix = tblObj.id + "Chk"; changeBtnsStatusImp = changeBtnsStatus_(chkPrefix, dataMax, btnsForSingleChk, btnsForMultiChks, btnsForUpChk, btnsForDownChk); startRowIndex = rowIndex = tblObj.rows.length - extraRow; chkIndex = 1; dataI = 0; for (; dataI < dataMax; dataI++, rowIndex++, chkIndex++) { rowObj = insertRowToTable_(tblObj, rowIndex); rowObj.id = chkPrefix + "Tr" + rowIndex; if (!isRadioBtn) { insertCheckboxToRow_(rowObj, chkPrefix + chkIndex, getColumnData_(tblColumns[0], dataI)); } else { insertRadioToRow_(rowObj, chkPrefix + "Grp", chkPrefix + chkIndex, getColumnData_(tblColumns[0], dataI)); } for (columnI = 1; columnI < columnMax; columnI++) { insertTextToRow_(rowObj, getColumnData_(tblColumns[columnI], dataI)); } insertExtColToRow_(rowObj); } appendMaxCnt_(tblObj, dataMax); addEventListenerToChk_(chkPrefix, dataMax, changeBtnsStatusImp, startRowIndex, isRadioBtn); initListTable_(chkPrefix, dataMax, changeBtnsStatusImp); } }; dj.completeListedSummary = function (tbl) { var tblObj = tbl["obj"], tblColumns = tbl["columns"], columnI, columnMax = tblColumns.length | 0, dataI, dataMax = tblColumns[0]["data"].length | 0, rowObj, rowIndex; if (tblObj) { rowIndex = tblObj.rows.length - 1 ? tblObj.rows.length - 1 : 1; dataI = 0; for (; dataI < dataMax; dataI++, rowIndex++) { rowObj = insertRowToTable_(tblObj, rowIndex); for (columnI = 0; columnI < columnMax; columnI++) { insertTextToRow_(rowObj, getColumnData_(tblColumns[columnI], dataI)); } insertExtColToRow_(rowObj); } } }; dj.getParamByName = function (name) { var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); }; dj.getTblDataByParam = function (tblDataArr) { var param = "_INDEX_", index = dj.getParamByName(param), i = 0, iMax = tblDataArr.length, found = 0; if (index) { for (; i < iMax; i++) { if (index == tblDataArr[i][param]) { found = 1; break; } } return (found) ? tblDataArr[i] : null; } }; dj.removeSelAllOpts = function (selId) { var selObj = dj.get(selId), i; if (selObj) { for (i = selObj.options.length - 1; i >= 0; i--) { selObj.remove(i); } } }; dj.addSelOptsValAndText = function (selId, jsonArr, keyOfValue, keyOfText, testFunc) { var selObj = dj.get(selId), optObj, i, iMax; if (!testFunc) { testFunc = function (index) { return true; }; } if (selObj && jsonArr) { i = 0; iMax = jsonArr.length; for (; i < iMax; i++) { if (testFunc(i)) { optObj = document.createElement("option"); optObj.value = jsonArr[i][keyOfValue]; optObj.text = jsonArr[i][keyOfText]; try { selObj.add(optObj, selObj.options[null]); } catch (e) { selObj.add(optObj, null); } } } } }; dj.optionsGetAll = function (selId) { var sel, opt, result = []; sel = dj.get(selId); for (var i = 0, j = sel.length; i < j; i++) { opt = sel.options[i]; result.push(opt.value); } return result.join("&"); }; dj.optionsMove = function (srcId, distId) { var src = dj.get(srcId), srcOpt, dist = dj.get(distId), distOpt, result = [], resultLen; for (var i =0, j = src.length; i < j; i++) { srcOpt = src.options[i]; if (srcOpt.selected) { result.push(i); distOpt = document.createElement("option"); distOpt.value = srcOpt.value; distOpt.text = srcOpt.text; try { dist.add(distOpt, dist.options[null]); } catch (e) { dist.add(distOpt, null); } } } resultLen = result.length; for (var k = resultLen - 1; k >= 0; k--) { src.remove(result.pop()); } return resultLen; }; dj.alertCheckErrCode = function (errMsgObj) { var errCode = dj.getParamByName("errcode"); if (errCode) { dj.alertShowErrMsg(errMsgObj[errCode]); } }; dj.alertShowErrMsg = function (msg) { var div = dj.get("alertError"), span = dj.get("alertErrorSpan"); if (div) { if (!span) { span = document.createElement("span"); span.id = "alertErrorSpan"; div.appendChild(span); } span.innerHTML = msg; dj.showEls([div]); dj.click("closeAlertError", function () { dj.hideEls([div]); }); } }; dj.alertHideErrMsg = function () { var div = dj.get("alertError"); if (div) { dj.hideEls([div]); } }; dj.alertShowInfoMsg = function (msg) { var div = dj.get("alertInfo"), span = dj.get("alertInfoSpan"); if (div) { if (!span) { span = document.createElement("span"); span.id = "alertInfoSpan"; div.appendChild(span); } span.innerHTML = msg; dj.showEls([div]); } }; dj.alertHideInfoMsg = function () { var div = dj.get("alertInfo"); if (div) { dj.hideEls([div]); } }; dj.replaceFormActionValue = function (fid, name, newVal) { var fm = document.getElementById(fid); var action = fm.getAttribute("action").split("?"); var regexp = new RegExp("[&?]+" + name + "="); if (regexp.test(action[1])) { var arr = action[1].split("&"); regexp.compile("^" + name + "="); for (var i = 0, n = arr.length; i < n; i++) { if (regexp.test(arr[i])) { arr[i] = name + "=" + newVal; break; } } action[1] = arr.join("&"); action = action.join("?"); } else { action = action.join("?"); action += "&" + name + "=" + newVal; } fm.setAttribute("action", action); }; dj.strToUniToHex = function (str) { var uni = "", temp = ""; for (var i = 0; i < str.length; i++) { temp = str.charCodeAt(i).toString(16) + ","; uni += temp; } return uni; }; dj.hexToUniToStr = function (uni) { var str = "", tempArray; tempArray = uni.split(","); for (var i = 0; i < tempArray.length - 1; i++) { str += String.fromCharCode(parseInt(tempArray[i], 16)); } return str; }; dj.ifObjArrHasDuplicateValue = function (objArr, objKey, testIndex, testValue) { var obj; for (var i = 0, n = objArr.length; i < n; i++) { obj = objArr[i]; if (testIndex && testIndex == obj["_INDEX_"]) { continue; } if (testValue === obj[objKey]) { return true; } } return false; }; dj.appendSessionId = function (id) { var sidObj, fms = document.getElementsByTagName("form"); for (var i = 0, j = fms.length; i < j; i++) { sidObj = document.createElement("input"); sidObj.name = "fsid"; sidObj.id = (function () { if (!dj.get("fsid")) return "fsid"; for (var i = 2, maxCnt = 10; i < maxCnt; i++) { if (!dj.get("fsid" + i)) return "fsid" + i; } return "fsid999"; }()); sidObj.type = "hidden"; sidObj.value = id; fms[i].appendChild(sidObj); } }; dj.appendSessionId("6694904767"); dj.addThousandSeparator = function (n) { var rx = /(\d+)(\d{3})/; return String(n).replace(/^\d+/, function(w){ while(rx.test(w)){ w= w.replace(rx, '$1,$2'); } return w; }); } function ConnectDetector () { if (!(this instanceof ConnectDetector)) { return new ConnectDetector(); } this.alertTimer; this.alertTime = 15000; this.detectTimer; this.detectTime = 5000; this.currStatus = "init"; this.previousStatus = "init"; }; ConnectDetector.fn = ConnectDetector.prototype; ConnectDetector.fn.init = function () { this.startAlertTimer.call(this); this.startDetectTimer.call(this); }; ConnectDetector.fn.startAlertTimer = function () { this.alertTimer = setTimeout((function (that) { return function () { that.currStatus = "disconnected"; if (that.previousStatus === "connected") { dj.alertShowErrMsg("Network disconnected!"); } }; }(this)), this.alertTime); }; ConnectDetector.fn.restartAlertTimer = function () { clearTimeout(this.alertTimer); this.startAlertTimer.call(this); }; ConnectDetector.fn.startDetectTimer = function () { this.detectTimer = setInterval((function (that) { return function () { var xhr = dj.xhrGet(); xhr("/js/connection_resp.js", (function (that) { return function (text) { that.previousStatus = that.currStatus; if (text) { that.currStatus = "connected"; that.restartAlertTimer.call(that); if (that.previousStatus === "disconnected") { dj.hideEls([dj.get("alertError")]); } } }; }(that))); }; }(this)), this.detectTime); }; ConnectDetector.fn.stopDetectTimer = function () { clearInterval(this.detectTimer); }; dj.connectDetector = ConnectDetector; })(window.dj);