function IsUndefOrNull(arg) { return (typeof (arg) == "undefined" || arg == null); } function str2var(str) { if (IsUndefOrNull(str) || ('' == str)) { return ''; } return eval('(' + str + ')'); } function str2int(str){return parseInt(str,10);} function formDataGet(formId){var _data=$("#"+formId).serialize(); var data = '_ds=1&' + ((IsUndefOrNull(_data)||""==_data)?"empty=1":_data) + '&_de=1';return data;} function urlDataGen(data){var __data = '_ds=1&' + ((IsUndefOrNull(data)||""==data)?"empty=1":data) + '&_de=1';return __data;} function dataAppend(data, key, value){var _data = data; _data += '&'+key+'='+value; return _data;} function convertLineBreaksToHTML(i_str){var res; res = i_str.split(/\r\n|\r|\n/g).join("
"); return res;} function strncmp(a, b, n){return a.substring(0, n) == b.substring(0, n);} function numberFormatted(num) {return num;} /* Do nothing now. Just Warrper API for later use */ var isSafari = (navigator.vendor && (navigator.vendor.toLowerCase().indexOf('apple') != -1) ) ? true : false; var isFF = (navigator.userAgent && (navigator.userAgent.toLowerCase().indexOf('firefox') != -1) ) ? true : false; var isChrome = (navigator.userAgent && (navigator.userAgent.toLowerCase().indexOf('chrome') != -1) ) ? true : false; var isHTTP = (top.location.protocol.indexOf('http:') != -1) ? true : false; var isHTTPS = (top.location.protocol.indexOf('https:') != -1) ? true : false; function isIE() { var rv = -1; if (navigator.appName == 'Microsoft Internet Explorer') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } else if (navigator.appName == 'Netscape') { var ua = navigator.userAgent; var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } if (-1 == rv) return false; else return rv; } /* IE8 or below version do not support indexOf on Array type, implement it here */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; } function get_cookie(name_to_get) { var cookie_pair var cookie_name var cookie_value var cookie_array = document.cookie.split("; ") for (var counter = 0; counter < cookie_array.length; counter++) { cookie_pair = cookie_array[counter].split("=") cookie_name = cookie_pair[0] cookie_value = cookie_pair[1] if (cookie_name == name_to_get) { return unescape(cookie_value) } } return null } function delete_cookie(cookie_name, cookie_path, cookie_domain, cookie_secure) { if(cookie_path == null) cookie_path = "/"; var delCookieDate = new Date(); delCookieDate.setDate(delCookieDate.getDate() - 1); set_cookie(cookie_name, "", delCookieDate, cookie_domain, cookie_secure); } function set_cookie(cookie_name, cookie_value, cookie_expire, cookie_path, cookie_domain, cookie_secure) { var expire_string; var cookie_string = cookie_name + "=" + cookie_value; if (cookie_expire) { if( typeof(cookie_expire)!="string") { expire_string=cookie_expire.toGMTString(); }else{ var expire_date = new Date(); var ms_from_now = cookie_expire * 24 * 60 * 60 * 1000; expire_date.setTime(expire_date.getTime() + ms_from_now) expire_string = expire_date.toGMTString(); } cookie_string += "; expires=" + expire_string; } if (cookie_path) { cookie_string += "; path=" + cookie_path; } if (cookie_domain) { cookie_string += "; domain=" + cookie_domain; } if (cookie_secure) { cookie_string += "; true" } top.document.cookie = cookie_string; } function getCookiePaging() { var id = document.location.href.substring(document.location.href.lastIndexOf('/') + 1); if (-1 != id.indexOf('?')) id = id.substring(0, id.indexOf('?')); if(IsUndefOrNull(get_cookie(id))) return 10; else return get_cookie(id); } function getCookieIntfPaging() { var id = document.location.href.substring(document.location.href.lastIndexOf('/') + 1); if (-1 != id.indexOf('?')) id = id.substring(0, id.indexOf('?')); if(IsUndefOrNull(get_cookie(id))) return 0; else return get_cookie(id); } function setCookiePaging(val) { var id = document.location.href.substring(document.location.href.lastIndexOf('/') + 1); if (-1 != id.indexOf('?')) id = id.substring(0, id.indexOf('?')); set_cookie(id, val); } function lang(category, item, args1, args2) { /* Final format will be "_top.defLang.lang_category.item" */ var langKey = '_top.'; var selectedLang = get_cookie("cookie_language"); var msg; //if (!IsUndefOrNull(args)) // console.log(args); if (IsUndefOrNull(selectedLang)) selectedLang = "defLang"; langKey += selectedLang; langKey += ".lang_"; langKey += category+'.'; langKey += item; msg = str2var(langKey); /* Re-read default lang again, read default message. */ if (IsUndefOrNull(msg)) { langKey = '_top.defLang.lang_'; langKey += category+'.'; langKey += item; msg = str2var(langKey); } //console.log(langKey); /* null again, popup warning message */ if (IsUndefOrNull(msg)) { alert(langKey + " is not defined."); return msg; } var cnt = 1; if (!IsUndefOrNull(args1)) { _.each(args1, function(t) { var dollar = msg.indexOf('$'+cnt); if (-1 != dollar) msg = msg.replace('$'+cnt, t); else alert("message " + msg + " parameter number not match."); cnt++; }); } if (!IsUndefOrNull(args2)) { _.each(args2, function(t) { var dollar = msg.indexOf('$'+cnt); if (-1 != dollar) msg = msg.replace('$'+cnt, t); else alert("message " + msg + " parameter number not match."); cnt++; }); } if (-1 != msg.indexOf('$'+cnt)) alert("message " + msg + " parameter number not match."); //if (item[0] == 't' && item[1] =='i' && item[2] == 'p') // msg = '"'+msg+'"'; //console.log(msg); return msg; } function show(txt) { if (IsUndefOrNull(txt)) return ''; if (strncmp(txt,'lang(',5)) return str2var(txt); else { /* repalce & to ? first. To avoid matching error */ while (-1 != txt.indexOf("&")) txt = txt.replace("&", "???"); while (-1 != txt.indexOf(">")) txt = txt.replace(">", ">"); while (-1 != txt.indexOf("<")) txt = txt.replace("<", "<"); while (-1 != txt.indexOf(" ")) txt = txt.replace(" ", " "); while (-1 != txt.indexOf("???")) txt = txt.replace("???", "&"); //console.log(txt); return txt; } } function helplink(_link) { var link = ''; if (isExtLangSelected()) { link = 'extHelp/'; } else { link = 'help/'; } link += 'index.html?'+_link; return link; } function url(action) { var txtUrl = '_top.url_'; txtUrl += action; return str2var(txtUrl); } function dataGet(_url) { var __url; if(IsUndefOrNull(_url.split('?')[1])) __url = _url+'?dummy='+(new Date().getTime()); else __url = _url+'&dummy='+(new Date().getTime()); var Datas = Backbone.Model.extend({url: __url}); return new Datas(); } function logoutCheck(resp, dialogWindow) { if (!IsUndefOrNull(resp.logout)) { var _url = "../login.html" if (!IsUndefOrNull(resp.reason)) _url = _url + "?reason=" + resp.reason; _top.location.href = _url; if (!IsUndefOrNull(dialogWindow)) { dialogWindow.close(); } return true; } return false; } function _resp_status_print(status, isOkKeepDialog) { var txt = ''; var img = ''; var msg = ''; var msgClass = ''; switch(status.msgType) { case "save_success": msg = lang('common','msgNotifySave'); break; case "success": msg = lang('common','msgSuccess'); break; case "user_org": case "user_lang": case "sys_org": msg = show(status.msg); break; default: break; } switch(status.status) { case "ok": if (!(!IsUndefOrNull(isOkKeepDialog) && isOkKeepDialog)) { if (isIE() && isIE() > 10 && !IsUndefOrNull(_opener)) _opener.ShowStatusSuccess(msg); CloseDialog(); } ShowStatusSuccess(msg); break; case "error": if (!IsUndefOrNull(status.errMsgs)) { var _msg = ''; for (var i = 0; i < status.errMsgs.length; i++) { if (strncmp(txt,'lang(',5)) _msg += str2var(status.errMsgs[i]); else _msg += status.errMsgs[i]; _msg += '
'; } ShowStatusError(_msg); } else { ShowStatusError(msg); } break; case "warning": ShowStatusWarning(msg); break; case "info": ShowStatusNotice(msg); break; case "none": return; default: break; } return; } var mainFrame; var mainFrameGetUrl; function dataSet(_url, data, isOkKeepDialog, action) { var __url; _top.progressEnable(); if (_top.MockupMode) { __url = _url; if (isIE() != 8) console.log(data); var Datas = Backbone.Model.extend({url: __url}); dataGet(__url).fetch({ success: function(model, resp){ if (!IsUndefOrNull(mainFrame)) { _top.progressDisable(); _resp_status_print(resp, isOkKeepDialog); if(IsUndefOrNull(mainFrameGetUrl)) mainFrame.render(); else mainFrame.render(mainFrameGetUrl); if (!IsUndefOrNull(action)) action(resp); } }, error: function(model, resp){ //console.log(resp); _top.progressDisable(); } }); } else { __url = _url+'&dummy='+(new Date().getTime()); //if (!isIE()) // console.log(__url); var Datas = Backbone.Model.extend({ url: __url, parse: function(resp, xhr){ _top.progressDisable(); if (!IsUndefOrNull(_opener)) { if(IsUndefOrNull(_opener.mainFrameGetUrl)) _opener.mainFrame.render(); else _opener.mainFrame.render(_opener.mainFrameGetUrl); } _resp_status_print(resp, isOkKeepDialog); if (!IsUndefOrNull(mainFrame)) { if(IsUndefOrNull(mainFrameGetUrl)) mainFrame.render(); else mainFrame.render(mainFrameGetUrl); } if (!IsUndefOrNull(action)) action(resp); return; }, error: function(resp, xhr) { _top.progressDisable(); } }); var dataModel = new Datas(); dataModel.save(data, {}); } } function urlAppend(url, str) { var _url = url; if(IsUndefOrNull(url)) return ""; if(IsUndefOrNull(url.split('?')[1])) { if (isIE()) _url += '?_ds=1&'+str; else _url += '?'+str; } else { _url += '&'+str; } return _url; } function paramAppend( string ,key, value) { //Don't encodeURIComponent in this function let val; if (typeof value === "undefined") { val = "" } else val = value; if (string) return string += '&' + key + '=' + val; else return key + '=' + val; } function genPOST_FormData( data ) { let str; let formData = {}; str = paramAppend("", "_ds", 1); str += '&' + data; str = paramAppend(str, "_de", 1); formData[str] = {}; return formData; } function urlParamAppend(url, key, value) { var _url = url; if(IsUndefOrNull(url)) return ""; if(IsUndefOrNull(url.split('?')[1])) { _url += '?'+key+'='+encodeURIComponent(value); } else { _url += '&'+key+'='+encodeURIComponent(value) } return _url; } function urlParamGetByName(name, _url) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"); var results; if (IsUndefOrNull(_url)) results = regex.exec(decodeURIComponent(location.search)); else results = regex.exec(decodeURIComponent(_url)); return results == null ? "" : results[1].replace(/\+/g, " "); } function urlGetSelSouce(url) { var val = '_src=' val += urlParamGetByName('_src',url); return val; } function urlParamGetVals(key, url) { var _url = (IsUndefOrNull(url)) ? location.search : url; var vals = _url.split('&'); var strTok; var first = true; var results = ''; if ('?' == _url.charAt(0)) _url = _url.substring(1, _url.length); vals = _url.split('&'); if (!IsUndefOrNull(vals) && vals.length > 0) { for (i = 0; i < vals.length; i++) { strTok = decodeURIComponent(vals[i]).split('='); if (strTok[0] == key) { if (first) first = false; else results += ','; results += strTok[1]; } } } return results; } function urlGetPortList(key, url, isLagOnly) { var vals = urlParamGetVals(key, url); var strTok = vals.split(','); var results = ''; var start = -1; var curr = -1; var end = -1; var isRange = false; var portNum = (isLagOnly) ? _top.devLagNum : (_top.devPortNum + _top.devLagNum); if (!(!IsUndefOrNull(strTok) && strTok.length > 0)) return results; function _getPortId(idx) { return (isLagOnly) ? getLagIdStr(idx) : getPortId(idx) } for (var i = 0; i < strTok.length; i++) { curr = str2int(strTok[i]); next = (strTok.length - 1 == i) ? -1 : str2int(strTok[i + 1]); if (curr < portNum && next < portNum) { start = curr; while (next > 0 && (next == curr + 1) && curr < portNum && next < portNum){ curr = next; i++; next = (strTok.length - 1 <= i) ? -1 : str2int(strTok[i + 1]); if (next >= portNum) break; if (_getPortId(curr).charAt(0) != _getPortId(next).charAt(0)) break; } end = curr; if (start == end) { results += _getPortId(curr) + ','; } else if (_getPortId(start).charAt(0) != _getPortId(start + 1).charAt(0)) { if (start + 1 == end) results += _getPortId(start) + ',' + _getPortId(end) + ','; else results += _getPortId(start) + ',' + _getPortId(start+1) + '-' + _getPortId(end) + ','; } else { results += _getPortId(start) + '-' + _getPortId(end) + ','; } } else { start = curr; while (next > 0 && (next == curr + 1)){ curr = next; i++; next = (strTok.length - 1 <= i) ? -1 : str2int(strTok[i + 1]); } end = curr; if (start == end) results += _getPortId(curr) + ','; else results += _getPortId(start) + '-' + _getPortId(end) + ','; } } if (results.charAt(results.length - 1) == ',') { results = results.substring(0,results.length - 1); } return results; } function urlGetVlanList(key, url) { var vals = urlParamGetVals(key, url); var strTok = vals.split(','); var results = ''; var start = -1; var curr = -1; var end = -1; var isRange = false; if (!(!IsUndefOrNull(strTok) && strTok.length > 0)) return results; for (var i = 0; i < strTok.length; i++) { curr = str2int(strTok[i]); next = (strTok.length - 1 == i) ? -1 : str2int(strTok[i + 1]); if (start == -1) start = curr; if (next == -1) { if (start == curr) results += curr; else results += start + '-' + curr; break; } if (next == curr +1) continue; else if (start == curr) results += curr + ','; else results += start + '-' + curr + ','; start = -1; } //console.log(results); return results; } function dataVlanList(key, value) { return "vlanList=" + urlGetVlanList(key, value); } function dataVlanListSrc(key, value) { return "vlanList=" + urlGetVlanList(key, value) +'&' + urlGetSelSouce(value); } function dataMultiSelectVlanList(key, hiddenFormId) { MultiSelectApplySelect(key); //console.log($('#' + key).serialize()); if (IsUndefOrNull(hiddenFormId)) $('#vlanList').val(urlGetVlanList(key, $('#' + key).serialize())); else $('#'+ hiddenFormId).val(urlGetVlanList(key, $('#' + key).serialize())); MultiSelectDeselectAll(key); } function tableGetPortList(portstring, isLagOnly) { var vals = portstring; var strTok = vals.split(','); var results = ''; var start = -1; var curr = -1; var end = -1; var isRange = false; var portNum = (isLagOnly) ? _top.devLagNum : _top.devPortNum; if (!(!IsUndefOrNull(strTok) && strTok.length > 0)) return results; function _getPortId(idx) { return (isLagOnly) ? getLagIdStr(idx) : getPortId(idx) } for (var i = 0; i < strTok.length; i++) { curr = str2int(strTok[i]); next = (strTok.length - 1 == i) ? -1 : str2int(strTok[i + 1]); if (curr < portNum && next < portNum) { start = curr; while (next > 0 && (next == curr + 1) && curr < portNum && next < portNum){ curr = next; i++; next = (strTok.length - 1 <= i) ? -1 : str2int(strTok[i + 1]); if (next >= portNum) break; } end = curr; if (start == end) results += _getPortId(curr) + ','; else results += _getPortId(start) + '-' + _getPortId(end) + ','; } else { start = curr; while (next > 0 && (next == curr + 1)){ curr = next; i++; next = (strTok.length - 1 <= i) ? -1 : str2int(strTok[i + 1]); } end = curr; if (start == end) results += _getPortId(curr) + ','; else results += _getPortId(start) + '-' + _getPortId(end) + ','; } } if (results.charAt(results.length - 1) == ',') { results = results.substring(0,results.length - 1); } return results; } function showList(list, groupNum) { var tok; var cnt = 0; var result = ''; var group = (IsUndefOrNull(groupNum) ? 10 : groupNum) if (IsUndefOrNull(list)) return result; tok = list.split(','); for (var i = 0; i < tok.length; i++) { result += tok[i]; if (i != (tok.length - 1)) result += ','; cnt++; if (cnt == group) { result += '
'; cnt = 0; } } return result; } function writeFormattedNumber (value) { /* Do formated by language number format later */ return value; } function selectOption(selectId, entries, selectVal) { var txt=''; var msg; txt += ''; return txt; } function printPortSelectOption (selectId, value) { var txt = ""; txt += ''; return txt; } function printNormalPortSelectOption (selectId, value) { var txt = ""; var p = _top.data.ports.length - _top.data.lags.length; txt += ''; return txt; } function printLAGSelectOption (value) { var txt = ""; _.each(_top.data.lags, function(n){ txt += "