var rateTable_300M = new Array("1Mbps", 1, "2Mbps", 1, "5.5Mbps", 1, "6Mbps", 6, "7Mbps", 8, "9Mbps", 6, "11Mbps", 1, "12Mbps", 6, "13Mbps", 8, "15Mbps", 16, "18Mbps", 6, "21Mbps", 8, "24Mbps", 6, "26Mbps", 8, "30Mbps", 16, "36Mbps", 6, "39Mbps", 8, "45Mbps", 16, "48Mbps", 6, "52Mbps", 8, "54Mbps", 6, "60Mbps", 16, "65Mbps", 8, "72Mbps", 8, "78Mbps", 8, "90Mbps", 16, "104Mbps", 8, "117Mbps", 8, "120Mbps", 16, "130Mbps", 8, "135Mbps", 16, "150Mbps", 16, "180Mbps", 16, "240Mbps", 16, "270Mbps", 16, "300Mbps", 16, 0, 0); var rateTable_450M = new Array("1Mbps", 5, "2Mbps", 5, "5.5Mbps", 1, "6Mbps", 6, "9Mbps", 6, "11Mbps", 1, "12Mbps", 6, "18Mbps", 6, "19.5Mbps", 8, "21.7Mbps", 8, "24Mbps", 6, "36Mbps", 6, "39Mbps", 8, "40.5Mbps", 16, "43.3Mbps", 8, "45Mbps", 16, "48Mbps", 6, "54Mbps", 6, "58.5Mbps", 8, "65Mbps", 8, "78Mbps", 8, "81Mbps", 16, "86.7Mbps", 8, "90Mbps", 16, "117Mbps", 8, "121.5Mbps", 16, "130Mbps", 8, "135Mbps", 16, "156Mbps", 8, "162Mbps", 16, "173.3Mbps", 8, "175.5Mbps", 8, "180Mbps", 16, "195Mbps", 8, "216.7Mbps", 8, "243Mbps", 16, "270Mbps", 16, "324Mbps", 16, "360Mbps", 16, "364.5Mbps", 16, "405Mbps", 16, "450Mbps", 16, 0, 0); var operModeNum = 9; var minOperMode = 0; var maxOperMode = operModeNum; var operModeList = new Array(0, 1, "Точка доступа", 1, 1, "Multi-SSID", 2, 0, "Multi-Bss Plus VLAN", 3, 1, "Client", 4, 1, "Усилитель сигнала", 5, 1, "Усилитель сигнала", 6, 1, "Bridge with AP", 7, 0, "Bridge with AP", 8, 0, "Debug"); function getOperModeName(a) { if (a < minOperMode || a > maxOperMode) { return null } if (operModeList[a * 3 + 1] == 0) { return null } else { return operModeList[a * 3 + 2] } } function operModeEnable(a) { if (a < minOperMode || a > maxOperMode) { return null } if (operModeList[a * 3 + 1] == 0) { return false } else { return true } } function getOperModeValue(a) { if (a < minOperMode || a > maxOperMode) { return null } if (operModeList[a * 3 + 1] == 0) { return null } else { return operModeList[a * 3] } } function getOperModeIdxByValue(b) { for (var a = 0; a < operModeNum; a++) { if (operModeList[a * 3] == b) { return a } } return null } function disableTag(g, a, d) { try { var b = g.getElementsByTagName(a) } catch (f) { return } if (d == undefined) { for (var c = 0; c < b.length; c++) { b[c].disabled = true } } else { for (var c = 0; c < b.length; c++) { if (b[c].type == d) { b[c].disabled = true } } } } var str_pages = parent.pages_js; var str_main = parent.str_main; function setTagStr(g, d) { var f, a; var c, h; var b; if ((undefined == str_pages) || (undefined == str_main)) { return } if ((undefined == g) || (undefined == d)) { return } for (tag in str_pages[d]) { try { if (!window.ActiveXObject) { b = g.getElementsByName(tag); if (b.length > 0) { for (c = 0; c < b.length; c++) { b[c].innerHTML = str_pages[d][tag] } } else { g.getElementById(tag).innerHTML = str_pages[d][tag] } } else { b = g.all[tag]; if (undefined != b.length && b.length > 0) { for (c = 0; c < b.length; c++) { b[c].innerHTML = str_pages[d][tag] } } else { b.innerHTML = str_pages[d][tag] } } } catch (f) { continue } } for (btn in str_main.btn) { try { if (!window.ActiveXObject) { b = g.getElementsByName(btn); if (b.length > 0) { for (c = 0; c < b.length; c++) { b[c].value = str_main.btn[btn] } } else { g.getElementById(btn).value = str_main.btn[btn] } } else { b = g.all[btn]; if (undefined != b.length && b.length > 0) { for (c = 0; c < b.length; c++) { b[c].value = str_main.btn[btn] } } else { b.value = str_main.btn[btn] } } } catch (f) { continue } } } function GetMinWidth() { var a = Math.ceil((window.screen.width - 182) * 0.55) - 6; return a } function LoadHelp(a) { if (window.parent != window) { if (window.parent.topFrame.hl != a) { window.parent.topFrame.hl = a; window.parent.helpFrame.location.href = "/help/" + a } } return true } function resize(b) { var a = GetMinWidth(); if (window.document.body.offsetWidth > a) { b.document.getElementById("autoWidth").style.width = "100%" } else { b.document.getElementById("autoWidth").style.width = a } return true } function resizeHelp(a) { if (window.document.body.offsetWidth > 290) { a.document.getElementById("autoWidth").style.width = "100%" } else { a.document.getElementById("autoWidth").style.width = 290 } return true } function elementDisplay(d, a, b) { try { if (!window.ActiveXObject) { items = d.getElementsByName(a); if (items.length > 0) { for (i = 0; i < items.length; i++) { items[i].style.display = b } } else { d.getElementById(a).style.display = b } } else { items = d.all[a]; if (undefined != items.length && items.length > 0) { for (i = 0; i < items.length; i++) { items[i].style.display = b } } } } catch (c) { return } } function enableTag(g, a, d) { try { var b = g.getElementsByTagName(a) } catch (f) { return } if (d == undefined) { for (var c = 0; c < b.length; c++) { b[c].disabled = false } } else { for (var c = 0; c < b.length; c++) { if (b[c].type == d) { b[c].disabled = false } } } } function LoadNext(a) { if (window.parent != window) { window.parent.mainFrame.location.href = a } return true } function lastipverify(e, a, f) { var h; var g = 0; var d = "0123456789"; if (e.length == 0) { return false } for (var b = 0; b < e.length; b++) { h = e.charAt(b); if (d.indexOf(h) == -1) { return false } } if (parseInt(e, 10) < a || parseInt(e, 10) > f) { return false } return true } function is_lastip(b, a, c) { if (b.length == 0) { alert(str_pages.ntw_common_js.js_input_ip); return false } if (!lastipverify(b, a, c)) { alert(str_pages.ntw_common_js.js_bad_ip); return false } return true } function maskipverify(b) { var h; var g = 0; var d = ".0123456789"; if (b.length < 7 || b.length > 15) { return false } for (var a = 0; a < b.length; a++) { h = b.charAt(a); if (d.indexOf(h) == -1) { return false } else { if (h == ".") { if (b.charAt(a + 1) != ".") { g++ } else { return false } } } } if (g != 3) { return false } if (b.indexOf(".") == 0 || b.lastIndexOf(".") == (b.length - 1)) { return false } szarray = [0, 0, 0, 0]; var f; var a; for (a = 0; a < 3; a++) { var g = b.indexOf("."); szarray[a] = b.substring(0, g); f = b.substring(g + 1); b = f } szarray[3] = b; var e = { 128: 1, 192: 1, 224: 1, 240: 1, 248: 1, 252: 1, 254: 1, 255: 1, 0: 1 }; for (a = 0; a < 4; a++) { if (!(szarray[a] in e)) { return false } } if ((szarray[0] == 0) || (szarray[0] != 255 && szarray[1] != 0) || (szarray[1] != 255 && szarray[2] != 0) || (szarray[2] != 255 && szarray[3] != 0)) { return false } return true } function ipverify(b) { var g; var f = 0; var d = ".0123456789"; if (b.charAt(0) == "0") { return false } if (b.length < 7 || b.length > 15) { return false } for (var a = 0; a < b.length; a++) { g = b.charAt(a); if (d.indexOf(g) == -1) { return false } else { if (g == ".") { if (b.charAt(a + 1) != ".") { f++ } else { return false } } } } if (f != 3) { return false } if (b.indexOf(".") == 0 || b.lastIndexOf(".") == (b.length - 1)) { return false } szarray = [0, 0, 0, 0]; var e; var a; for (a = 0; a < 3; a++) { var f = b.indexOf("."); szarray[a] = b.substring(0, f); e = b.substring(f + 1); b = e } szarray[3] = e; for (a = 0; a < 4; a++) { if (szarray[a] < 0 || szarray[a] > 255) { return false } } if (szarray[0] == 127) { return false } if (szarray[0] >= 224 && szarray[0] <= 239) { return false } return true } function is_ipaddr(a) { if (a.length == 0) { alert(str_pages.ntw_common_js.js_input_ip_2); return false } if (!ipverify(a)) { alert(str_pages.ntw_common_js.js_bad_ip_2); return false } return true } function is_gatewayaddr(a) { if (a.length == 0) { alert(str_pages.ntw_common_js.js_input_gateway); return false } if (!ipverify(a)) { alert(str_pages.ntw_common_js.js_bad_gateway); return false } return true } function is_dnsaddr(a) { if (a.length == 0) { alert(str_pages.ntw_common_js.js_input_dns); return false } if (maskipverify(a)) { alert(str_pages.ntw_common_js.js_bad_dns); return false } if (!ipverify(a)) { alert(str_pages.ntw_common_js.js_bad_dns); return false } return true } function is_domain(a) { var e; var d = "-.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var b = 0; b < a.length; b++) { e = a.charAt(b); if (d.indexOf(e) == -1) { alert(str_pages.ntw_common_js.js_illegal_input); return false } } return true } function is_digit(a) { var e; var d = "0123456789"; for (var b = 0; b < a.length; b++) { e = a.charAt(b); if (e == " " && b == 1) { continue } if (b > 0) { if (a.charAt(b - 1) == " " && e == " ") { continue } if (a.charAt(b - 1) != " " && e == " ") { alert(str_pages.ntw_common_js.js_illegal_input); return false } } if (d.indexOf(e) == -1) { if (e != " ") { alert(str_pages.ntw_common_js.js_illegal_input); return false } } } return true } function portverify(d) { var e; var b = "0123456789"; if (d.length == 0) { return false } for (var a = 0; a < d.length; a++) { e = d.charAt(a); if (b.indexOf(e) == -1) { return false } } if (parseInt(d, 10) <= 0 || parseInt(d, 10) > 65535) { return false } return true } function is_port(a) { if (a.length == 0) { alert(str_pages.ntw_common_js.js_input_port); return false } if (!portverify(a)) { alert(str_pages.ntw_common_js.js_bad_port); return false } return true } function is_number(f, a, e) { var g; var d = "0123456789"; if (f.length == 0) { return false } for (var b = 0; b < f.length; b++) { g = f.charAt(b); if (d.indexOf(g) == -1) { return false } } if (parseInt(f, 10) < a || parseInt(f, 10) > e) { return false } return true } function is_maskaddr(a) { if (a.length == 0) { alert(str_pages.ntw_common_js.js_input_mask); return false } if (!maskipverify(a)) { alert(str_pages.ntw_common_js.js_bad_mask); return false } return true } function macverify(b) { var f; var e = "0123456789abcdef"; var d = b.toLowerCase(); if (d == "ff-ff-ff-ff-ff-ff") { alert(str_pages.ntw_common_js.js_broadcast_mac); return false } if (d == "00-00-00-00-00-00") { alert(str_pages.ntw_common_js.js_invalid_mac); return false } if (b.length != 17) { alert(str_pages.ntw_common_js.js_bad_mac_format); return false } for (var a = 0; a < d.length; a++) { f = d.charAt(a); if (a % 3 == 2) { if (f != "-") { alert(str_pages.ntw_common_js.js_bad_mac_format); return false } } else { if (e.indexOf(f) == -1) { alert(str_pages.ntw_common_js.js_invalid_mac); return false } } } f = d.charAt(1); if (e.indexOf(f) % 2 == 1) { alert(str_pages.ntw_common_js.js_multi_mac); return false } return true } function is_macaddr(a) { if (a.length == 0) { alert(str_pages.ntw_common_js.js_input_mac); return false } if (!macverify(a)) { return false } return true } function charCompare(f, b) { var g; var a = 0; var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@^-_.><,[]{}?/+=|\\'\":;~!#$%()` & "; if (f.length > b) { return false } for (var d = 0; d < f.length; d++) { g = f.charAt(d); if (e.indexOf(g) == -1) { a += 2 } else { a += 1 } if (a > b) { return false } } return true } function is_hostname(a, b) { if (!charCompare(a, b)) { alert(str_pages.ntw_common_js.js_input_msg); return false } else { return true } } function is_port_range(a) { if (a < 0 || a > 65535) { alert(str_pages.ntw_common_js.js_bad_port); return false } else { return true } } var tipMsgArray = new Array("Start", "Working Mode", "Internet Access", "WAN / 3G/4G", "WAN Connection Type", "3G/4G", "Wireless operMode", "Dual Band Selection", "Wireless  2.4G", "Wireless  5G", "Wireless", "Network Settings", "Finish"); var startIdx = 0; var sysModeIdx = 1; var netInIdx = 2; var wanOr3gIdx = 3; var wanTypeIdx = 4; var net3gIdx = 5; var wlanModeIdx = 6; var wlanBandIdx = 7; var wlan2gIdx = 8; var wlan5gIdx = 9; var wlanIdx = 10; var wiredIdx = 11; var endIdx = 12; var startStep = 0; var sysModeStep = 1; var netInStep = 2; var wanOr3gStep = 3; var wanTypeStep = 4; var net3gStep = 5; var wlanModeStep = 6; var wlanBandStep = 7; var wlan2gStep = 8; var wlan5gStep = 9; var wlanStep = 10; var netWorkStep = 11; var endStep = 12; var standardRouterMode = 1; var normal3gMode = 2; var apcMode = 4; var apMode = 8; var pure3gMode = 16; var pureApMode = 7; var repeaterMode = 6; var clientMode = 3; var type3gFirst = 0; var type3gOnly = 1; var typeWanFirst = 2; var typeWanOnly = 3; function showTipMsg(j, f, a, h, b, c) { var e = ""; var d = 0; var g = 0; for (d = startIdx; d <= endIdx; d++) { g = 0; switch (d) { case sysModeIdx: if (j != 1) { g = 1 } break; case netInIdx: if (f != normal3gMode) { g = 1 } break; case wanOr3gIdx: if (f != normal3gMode || c > d) { g = 1 } break; case wanTypeIdx: if (f != standardRouterMode && f != normal3gMode && f != apcMode) { g = 1 } if (f == normal3gMode && (c <= netInIdx || a == type3gOnly)) { g = 1 } break; case net3gIdx: if (f != normal3gMode && f != pure3gMode) { g = 1 } if (f == normal3gMode && a == typeWanOnly) { g = 1 } break; case wlanModeIdx: if (f != apMode) { g = 1 } break; case wlanBandIdx: case wlan2gIdx: case wlan5gIdx: if (h != 1) { g = 1 } break; case wlanIdx: if (h == 1) { g = 1 } break; case wiredIdx: if ((f != apMode) && (f != pureApMode) && (f != repeaterMode) && (f != clientMode)) { g = 1 } break; default: break } if (g) { continue } if (d != 0) { e += " >> " } if (c == d) { e += '' + tipMsgArray[d] + "" } else { e += tipMsgArray[d] } } e += ""; document.getElementById(b).innerHTML = e } function checkIpAddressFormat(a) { var d = 0, b = 0; var e = 0; var c = /[^a-fA-F0-9:]/ig; if (a[a.length - 1] == ":") { return false } if (a.match(c) != null) { return false } if (a.indexOf(":::") != -1) { return false } addrParts = a.split(":"); if (addrParts.length < 3 || addrParts.length > 8) { return false } for (d = 0; d < addrParts.length; d++) { if (addrParts[d].length > 4) { return false } if (addrParts[d] != "") { if (d == 8) { return false } } else { if ((d != 0) && (d != (addrParts.length - 1))) { e += 1 } if (e > 1) { return false } } } if (e == 0) { if (addrParts.length != 8) { return false } } else { if (addrParts.length > 9) { return false } } return true } function isValidIPv6Prefix(d) { var f; var a; var c = /[^a-fA-F0-9:]/ig; var e = 0; var b = 0; if (d.length == 0) { alert("Префикс не указан, укажите префикс IPv6-адреса."); return false } if (d.indexOf(":::") != -1) { alert('"' + d + '" неверный формат префикса IPv6-адреса, исправьте его.'); return false } if (d.match(c) != null) { alert('"' + d + '" содержит недопустимые символы, пожалуйста, исправьте.'); return false } if (d.charAt(d.length - 1) != ":" || d.charAt(d.length - 2) != ":") { alert('"' + d + '" неверный формат префикса IPv6-адреса, исправьте его.'); return false } addrParts = d.split("::"); if (addrParts.length >= 3) { alert('"' + d + '" не может содержать более двух символов "::", исправьте.'); return false } addrParts = d.split(":"); if (addrParts.length >= 7 || addrParts.length < 3) { alert('"' + d + '" неверный формат префикса IPv6-адреса, исправьте его.'); return false } if (addrParts[0] == "2002") { alert('Префикс, начинающийся с "2002", зарезервирован для использования в сети 6to4. Проверьте вводимое значение.'); return false } for (b = 0; b < addrParts.length; b++) { if (addrParts[b].length > 4) { alert('"' + d + '" содержит неверный раздел ' + addrParts[b] + ", исправьте!."); return false } } e = parseInt(addrParts[0], 16); if (e >> 13 != 1) { alert('"' + d + '" не является префиксом IPv6-адреса, исправьте.'); return false } if (11520 == e || 11776 == e || 12288 == e) { alert('"' + d + '" является зарезервированным префиксом публичного IPv6-адреса, укажите допустимый адрес.'); return false } return true } function isGlobalUnicastAddressesPrefix(a) { var d; var b; var c = 0; addrParts = a.split(":"); c = parseInt(addrParts[0], 16) >> 13; if (c != 1) { return false } else { return true } } function isValidPart(b) { var a = /[^a-fA-F0-9:]/ig; if (0 == parseInt(b, 16) || 65535 == parseInt(b, 16)) { return false } if (b.match(a) != null) { return false } else { return true } } function isPubIPv6Addr(a) { var e; var b; var c = /[^a-fA-F0-9:]/ig; var d = 0; addrParts = a.split(":"); if (addrParts[0] == "" & addrParts[1] == "") { if (addrParts.length == 2) { return false } if (parseInt(addrParts[2], 16) == 1) { return false } if (parseInt(addrParts[2], 16) == 65535) { return false } } if (addrParts[addrParts.length - 1] == "" && addrParts[addrParts.length - 2] == "") { return false } d = parseInt(addrParts[0], 16); if (d == 256 || d == 512 || d == 1024 || d == 2048 || d == 4096 || (d >= 16384 && d <= 49152) || d == 57344 || d == 61440 || d == 63488 || d == 64512 || d == 65024 || d == 65152 || d == 65216 || d == 65280) { return false } if ((parseInt(addrParts[0], 16) >> 6) == 24320) { return false } if ((parseInt(addrParts[0], 16) >> 6) == 1018) { return false } if ((parseInt(addrParts[0], 16) >> 9) == 126) { return false } if ((parseInt(addrParts[0], 16) >> 8) == 255) { return false } if (parseInt(addrParts[0], 16) == 100 & parseInt(addrParts[1], 16) == 65435 & addrParts[2] == "") { if (addrParts.length <= 5) { return false } } return true } function isReservedIpAddress(a) { var d; var b; var c = 0; addrParts = a.split(":"); c = parseInt(addrParts[0], 16); if (11520 == c || 11776 == c || 12288 == c) { return true } return false } function isUnusedIpAddress(a) { var d; var b; var c = 0; addrParts = a.split(":"); c = parseInt(addrParts[0], 16); return false } function isGlobalIPv6Addr(a) { var b; b = a.split(":"); if (b[0] == "2002") { alert('"' + a + '" является адресом туннеля 6to4, его нельзя настраивать вручную. Укажите другой адрес.'); return false } if (false == checkIpAddressFormat(a)) { alert('"' + a + '" не является публичным IPv6-адресом, укажите допустимый адрес.'); return false } else { if (false == isPubIPv6Addr(a)) { alert('"' + a + '" является зарезервированным публичным IPv6-адресом, укажите допустимый адрес.'); return false } else { if (false == isGlobalUnicastAddressesPrefix(a)) { alert('"' + a + '" является зарезервированным публичным IPv6-адресом, укажите допустимый адрес.'); return false } else { if (true == isReservedIpAddress(a)) { alert('"' + a + '" является зарезервированным публичным IPv6-адресом, укажите допустимый адрес.'); return false } else { if (true == isUnusedIpAddress(a)) { alert('"' + a + '" является неиспользуемым IPv6-адресом, укажите допустимый адрес.'); return false } } } } } return true } var transMatrixHTML = new Array(/&/g, "&", /\\/g, "\", /'/g, "'", /"/g, """, //g, ">", / /g, " "); function escapeHtml(c) { var b = c.toString(); for (var a = 0; a < transMatrixHTML.length; a += 2) { b = b.replace(transMatrixHTML[a], transMatrixHTML[a + 1]) } return b };