182.52.164.114
{
"scan_id": 1764431206,
"ip": "182.52.164.114",
"is_ipv4": true,
"is_ipv6": false,
"location": {
"network": "182.52.164.0/22",
"postal_code": "76000",
"coordinates": {
"latitude": "13.0672",
"longitude": "100.0552"
},
"geo_point": "13.0672, 100.0552",
"locale_code": "en",
"continent": "Asia",
"country_code": "TH",
"country_name": "Thailand",
"city": "Phetchaburi"
},
"location_updated_at": "2025-11-29T00:43:02Z",
"asn": {
"number": "AS23974",
"organization": "Ministry of education",
"country_code": ""
},
"asn_updated_at": "0001-01-01T00:00:00Z",
"whois": {
"network": "182.52.128.0/17",
"organization": "TOT Public Company Limited",
"descr": "TOT Public Company Limited",
"_encoding": {
"raw": "BASE64"
}
},
"whois_updated_at": "2024-12-09T11:26:54Z",
"tags": [
{
"name": "is_anonymous_proxy",
"pretty_name": "Anonymous Proxy",
"value": false,
"last_updated_at": "2025-11-29T00:43:02Z"
},
{
"name": "is_cdn",
"pretty_name": "CDN",
"value": false,
"last_updated_at": "2025-11-29T05:22:57Z"
},
{
"name": "is_satellite_provider",
"pretty_name": "Satellite Provider",
"value": false,
"last_updated_at": "2025-11-29T00:43:02Z"
}
],
"hostnames": [
{
"name": "node-whe.pool-182-52.dynamic.nt-isp.net",
"last_updated_at": "2025-12-02T10:17:42.618935535Z"
}
],
"services": [
{
"port": 80,
"protocol": "tcp",
"name": "http",
"version": "",
"product": "ZTE web server 1.0 ZTE corp 2015.",
"extra_info": "",
"tunnel": "",
"modules": {
"http": {
"body": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"format-detection\" content=\"telephone=no,email=no,address=no\">\n<link rel=\"shortcut icon\" href=\"/img/favicon.ico\" />\n<title>H8102E</title>\n<style type=\"text/css\">\nhtml, body {\nmin-height:101%;\n}\nbody {\ntext-align: center;\nbackground: #F2F2F2;\noverflow-y: scroll;\n}\nbody, input, textarea, select, label, td, th {\nfont-size: 12px;\ncolor: #313131;\nfont-family: \"Microsoft YaHei\",Arial,SimSun,Verdana,Helvetica,Sans-Serif,Geneva;\n}\nbody, form, h1, h3, h4, p, ul, ol {\nmargin: 0;\n}\nul, ol {\npadding-left: 0;\nlist-style-type: none;\n}\na img {border: 0;}\ntable {\nborder-collapse: collapse;\nborder-spacing: 0;\n}\n#page_container {\nposition: relative;\nwidth: 960px;\nmargin: 0 auto;\npadding: 0 30px 15px 30px;\ntext-align: left;\nbackground: url(../img/site_holder.gif) repeat-y scroll center top;\n}\n#page_header {\npadding-bottom: 20px;\n}\n#banner {\nposition: relative;\nwidth: 100%;\nheight: 74px;\noverflow: hidden;\npadding-bottom: 5px;\n}\n#mainNavigator {\nwidth: 100%;\nheight: 38px;\ntext-align: center;\nmargin: 0 auto;\noverflow:hidden;\nbackground: #737373;\n}\n#page_content {\nposition: relative;\nmin-height: 510px;\nheight: auto !important;\nheight: 480px;\noverflow: visible;\ntext-align: center;\n}\n#page_footer {\nheight: 43px;\nline-height: 43px;\ntext-align: left;\nbackground-color: #F4F4F4;\nmargin-top: 15px;\npadding: 0 10px;\nborder-top: 1px solid #D7D7D7;\n}\n.logo {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_ZTE.png) no-repeat 5px 30px;\n}\n#banner_switchArea {\nwidth: 500px;\nheight: 25px;\nline-height: 25px;\nposition: absolute;\nbottom: 2px;\nright: 0px;\n}\n.AttentionMessage {\nleft:140px;\ntop:20px;\ncolor:red;\nfont-weight:bold;\nposition:absolute;\n}\n.timeArea {\nwidth: 300px;\nheight: 25px;\nline-height: 25px;\nposition: absolute;\nbottom: 2px;\nleft: 140px;\n}\n#banner_switchArea div {\nfloat: right;\ntext-align: center;\nmargin: 0 8px;\n}\n#banner_switchArea div.logUser{\npadding: 0px;\ntext-align: right;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\nmax-width: 180px;\n}\n.clickable {\ncursor: pointer;\n}\n#mainNavigator ul,li {\nmargin:0;\npadding:0;\nlist-style: none;\n}\n#mainNavigator {\nposition: relative;\n}\n#mainNavigator ul {\nposition: relative;\nleft: 50%;\nfloat: left;\n}\n#mainNavigator li {\nfloat: left;\nposition: relative;\nright: 50%;\nline-height: 34px;\n}\n#homeLi {\n}\n#mainNavigator a {\ndisplay: block;\nwidth: 100%;\nheight: 100%;\nbackground: url(../img/nv_middle.gif) repeat-x;\ntext-decoration: none;\n}\n#mainNavigator a:link,\n#mainNavigator a:visited {\ncolor: #FFFFFF;\n}\n#mainNavigator a.SelectMenuItem {\ncolor: #FFFFFF;\nbackground: url(../img/nv_s.gif) repeat-x;\n}\n#mn_first, #mn_last {\nheight: 100%;\nwidth: 5px;\nposition: absolute;\n}\n#mn_li {\nbackground: url(../img/nv_middle.gif) repeat-x;\nheight: 100%;\n}\n#mn_first {\nbackground: url(../img/nv_left.gif) no-repeat;\ntop: 0px;\nleft: 0px;\n}\n#mn_last {\nbackground: url(../img/nv_right.gif) no-repeat;\ntop: 0px;\nright: 0px;\n}\n#slogan {\nwidth: 200px;\nfloat: right;\nmargin: 0px;\ntext-align: right;\n}\n.caption2,\nh1 {\nborder-bottom: 1px dotted #313131;\nfont-size: 16px;\nfont-weight: normal;\npadding-bottom: 8px;\nmargin-bottom: 10px;\n}\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"file\"],\ntextarea,\nselect {\n-moz-box-sizing: border-box;\n-webkit-box-sizing: border-box;\nbox-sizing: border-box;\nheight: 26px;\n*height: 20px;\npadding: 2px;\nmargin: 2px 0;\nborder: 1px solid;\nborder-color: #AAAAAA #CCCCCC #CCCCCC #AAAAAA;\nborder-radius: 3px;\nbox-shadow: 0 1px 2px #CCCCCC inset;\n}\nselect {\n*height: 26px;\n}\ntextarea {\nmargin: 0;\nwidth: 100%;\n*width: 99%;\nresize: none;\nheight: 180px;\noverflow: auto;\n}\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"file\"]:focus,\ntextarea:focus {\nborder-color: #FF8040;\n-webkit-box-shadow: 0 0 3px rgba(255, 128, 64, 0.7);\n-moz-box-shadow: 0 0 3px rgba(255, 128, 64, 0.7);\nbox-shadow: 0 0 3px rgba(255, 128, 64, 0.7);\n}\nselect:focus {\nborder-color: #FF8040;\n}\ninput[type=\"text\"]:disabled,\ninput[type=\"password\"]:disabled,\ninput[type=\"file\"]:disabled,\ntextarea:disabled,\nselect:disabled {\ncolor: #898989;\nbackground-color: #ECE9D8;\n}\ninput[type=\"checkbox\"] {\nmargin-left: 0;\nmargin-top: 9px;\n}\ninput[type=\"radio\"] {\nmargin-left: 0;\n}\n.Button,\n.button,\n.longBtn ,\n.disableBtn,\n.disableLongBtn,\n.BrowseBtn {\ncursor: pointer;\nheight: 28px;\nborder: none;\npadding: 0 15px;\nmin-width: 100px;\nborder-radius: 3px;\n}\n.Button,\n.button,\n.longBtn {\nbackground-color: #0099cc;\nbackground-image: -moz-linear-gradient(top , #34c3f9, #0099cc);\nbackground-image: -webkit-gradient(linear,0% 0%, 0% 100%, from(#34c3f9), to(#0099cc));\nbackground-image: -webkit-linear-gradient(top, #34c3f9, #0099cc);\nbackground-image: -o-linear-gradient(top, #34c3f9, #0099cc);\nbackground-image: -ms-linear-gradient(top, #34c3f9, #0099cc);\nbackground-image: linear-gradient(top, #34c3f9, #0099cc);\nfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#34c3f9', endColorstr='#0099cc', GradientType=0);\ncolor: #fff;\n}\n.Button:hover,\n.button:hover,\n.longBtn:hover,\n.Button:focus,\n.button:focus,\n.longBtn:focus {\nfont-weight: bold;\nfont-style: oblique;\n}\n.disableBtn,\n.disableLongBtn,\n.BrowseBtn {\nborder: 1px solid #878889;\nbackground-color: #ddd;\nbackground-image: -moz-linear-gradient(top , #ebebeb 15%, #ddd 45%, #cdcdcd 85%);\nbackground-image: -webkit-gradient(linear,0% 0%, 0% 100%, from(#ebebeb), to(#cdcdcd),color-stop(45%,#ddd));\nbackground-image: -webkit-linear-gradient(top, #ebebeb 15%, #ddd 45%, #cdcdcd 85%);\nbackground-image: -o-linear-gradient(top, #ebebeb 15%, #ddd 45%, #cdcdcd 85%);\nbackground-image: -ms-linear-gradient(top, #ebebeb, #cdcdcd);\nbackground-image: linear-gradient(top, #ebebeb, #cdcdcd);\nfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb', endColorstr='#cdcdcd', GradientType=0);\n}\n.BrowseBtn\n{\ncolor: #000;\n}\n.disableBtn,\n.disableLongBtn {\ncursor: default;\ncolor: #898989;\n}\n.disableBtn:hover,\n.disableBtn:focus,\n.disableLongBtn:hover,\n.disableLongBtn:focus {\nfont-weight: normal;\nfont-style: normal;\n}\n.mac {\nwidth: 23px;\n}\n.ip {\nwidth: 32px;\n}\n.port {\nwidth: 67px;\n}\n.w37 {\nwidth: 37px;\n}\n.w40 {\nwidth: 40px;\n}\n.w45 {\nwidth: 45px;\n}\n.w50 {\nwidth: 50px;\n}\n.w60 {\nwidth: 60px;\n}\n.w70 {\nwidth: 70px;\n}\n.w75 {\nwidth: 75px;\n}\n.w80 {\nwidth: 80px;\n}\n.w100, .inputShort {\nwidth: 100px;\n}\n.w120 {\nwidth: 120px;\n}\n.w130 {\nwidth: 130px;\n}\n.w140 {\nwidth: 140px;\n}\n.w150, .inputNorm , .selectNorm {\nwidth: 150px;\n}\n.w160 {\nwidth: 160px;\n}\n.w165 {\nwidth: 165px;\n}\n.w170 {\nwidth: 170px;\n}\n.w175 {\nwidth: 175px;\n}\n.w180 {\nwidth: 180px;\n}\n.w200 {\nwidth: 200px;\n}\n.w210 {\nwidth: 210px;\n}\n.w217 {\nwidth: 217px;\n}\n.w220 {\nwidth: 220px;\n}\n.w230 {\nwidth: 230px;\n}\n.w250, .inputLong, .selectLong {\nwidth: 250px;\n}\n.w280 {\nwidth: 280px;\n}\n.w400 {\nwidth: 400px;\n}\n.emColor {\ncolor: #0099cc;\n}\n.bgColorRow {\nbackground-color: #F2F2F2;\n}\n.green {\ncolor:#385401;\nfont-weight: bold;\n}\n.red {\ncolor:#6c0101;\nfont-weight: bold;\n}\n.emFont {\nfont-weight: bold;\n}\n.ctrlFont,\n.link2More {\ntext-decoration: underline;\ncursor: pointer;\n}\n.ctrlFont {\ntext-decoration: none;\n}\n.sdRightPos{\nfloat:right;\nmargin-right:10px;\n}\n.disableFont {\ncursor: default;\ntext-decoration: none;\ncolor: #898989;\n}\n.readonlyInputBg {\nbackground-color: #ECE9D8;\n}\n.alignLeft {\ntext-align: left;\n}\n.alignRight {\ntext-align: right;\n}\n.alignCenter {\ntext-align: center;\n}\n.caption1 {\nfont-size: 1.1em;\nfont-weight: bold;\n}\n.caption3 {\nfont-size: 1em;\nfont-weight: bold;\n}\n.statusRow {\nwidth: 100%;\nheight: 24px;\n}\n.statusRow div {\nfloat: left;\nborder: 1px solid #BDBDBD;\npadding: 3px;\ntext-align: center;\noverflow: hidden;\n}\n.redFont {\ncolor: red;\n}\n.instCfgArea {\nmargin: 0;\npadding: 0 0 50px 0;\n}\n.buttongroup,\n.unfloatBtnGroup {\npadding: 25px 25px 20px 25px;\nheight: 30px;\n}\n.buttongroup input {\nfloat: right;\nmargin-left: 15px;\n}\n.unfloatBtnGroup input {\nmargin: 0;\n}\n.radioInput {\nwidth: auto;\nfloat: left;\n}\n.submitArea {\ntext-align: right;\npadding: 20px 0;\n}\n.externErrorHint,\n.succHint,\n.errorHint,\n.warnHint,\n.infoHint,\n.waitHint {\nmargin: 30px 0;\ntext-align: left;\npadding: 10px 10px 10px 70px;\n}\n.externErrorHint,\n.errorHint {\ncolor: #6c0101;\nbackground: #FFEBE4 url(../img/err_m.png) no-repeat 15px;\n}\n.succHint {\ncolor: #385401;\nbackground: #E7FFE4 url(../img/succ_m.png) no-repeat 15px;\n}\n.warnHint {\ncolor: #443500;\nbackground: #FFF9E4 url(../img/warn_m.png) no-repeat 15px;\n}\n.infoHint {\ncolor: #012f4c;\nbackground: #E4EFFF url(../img/info_m.png) no-repeat 15px;\n}\n.waitHint {\ncolor: #012f4c;\nbackground: #E7FFE4 url(../img/waiting_Small.gif) no-repeat 15px;\n}\n.staticInfoHint,\n.staticInfoHintReal {\ndisplay: block;\nbackground: url(../img/info_s.png) no-repeat 25px 1px;\nmargin-bottom: 20px;\ntext-align: left;\npadding: 0 25px;\n}\n.staticInfoHintReal {\nbackground: url(../img/info_s.png) no-repeat 0px 1px;\npadding: 0;\n}\n.staticInfoHint p,\n.staticInfoHintReal p {\nline-height: 18px;\ntext-align: justify;\ntext-indent: 2em;\nmargin-bottom: 5px;\n}\n.sceneTip {\npadding: 0 0 10px 0;\nmargin: 0;\ntext-align: justify;\n}\n.sceneTipLink {\npadding: 0;\n}\n.sceneTip a,\n.sceneTipLink a,\n.sceneTip_close a {\ncolor: #0099CC;\ntext-decoration: underline;\ncursor: pointer;\n}\n.sceneTip_close a {\ntext-decoration: none;\npadding-right: 5px;\n}\n.help_content,\n.sceneTip_container {\nbackground-color: #EFF8FF;\npadding: 5px 0;\n}\n.help_close,\n.sceneTip_close {\ntext-align: right;\n}\n.inlineTip {\nfloat: left;\npadding-left: 60px;\nline-height: 30px;\n}\n.black_overlay\n{\nposition: fixed;\n_position: absolute;\ntop: 0%;\nleft: 0%;\nwidth: 100%;\nheight: 100%;\nbackground-color: #A7A7A7;\nz-index: 100;\n-moz-opacity: 0.5;\n-khtml-opacity: 0.5;\nopacity: 0.5;\nfilter: alpha(opacity=50);\n}\n.white_content\n{\ndisplay: none;\nwidth: 365px;\nmin-height: 195px;\nheight: auto !important;\nheight: 195px;\nbackground: url(../img/waiting.gif) no-repeat center center;\nz-index: 101;\noverflow: auto;\nposition: fixed;\n_position: absolute;\n}\n.white_content_Qos\n{\ndisplay: none;\nwidth: 775px;\nheight: auto !important;\nbackground: #FFFFFF;\nz-index: 101;\noverflow: auto;\nposition: fixed;\nleft: 25%;\ntop: 80px;\n}\n#confirmLayer {\nborder: 8px solid #7D7D7D;\ntext-align: left;\npadding: 0 10px;\nbackground: #FFFFFF;\n}\n#confirmMsg {\nmin-height: 32px;\nheight: auto !important;\nheight: 32px;\npadding: 25px 0;\nbackground: url(\"../img/info_m.png\") no-repeat 20px 50%;\n}\n#confirmMsg p {\npadding-left: 60px;\nfont-size: 1.2em;\nline-height: 24px;\n}\n#waitingImgArea {\nheight: 50px;\npadding-bottom: 25px;\nbackground: url(../img/waiting_w.gif) no-repeat top center;\n}\n#confirmBtnArea {\nheight: 28px;\nborder-top: 1px dotted #313131;\npadding: 10px;\n}\n#confirmBtnArea input {\nfloat: right;\nmargin-left: 20px;\n}\n#dynamicTip {\nposition: absolute;\ndisplay: none;\nfont-size: 11px;\n}\n#dynamicTip div {\nfloat: left;\nheight: 34px;\npadding-top: 5px;\n}\n#dTip_l {\nwidth: 16px;\nbackground: url(../img/dTip_l.gif) no-repeat left top;\n}\n#dTip_m {\npadding: 2px 8px 0 5px;\nbackground: url(../img/dTip_m.gif) repeat-x;\n}\n#dTip_r {\nwidth: 6px;\nbackground: url(../img/dTip_r.gif) no-repeat left top;\n}\ndiv.errorLabelWraper{\nbackground: url(../img/fail_s.png) no-repeat 5px 6px;\ndisplay:inline-block;\npadding-left: 23px;\nline-height: 30px;\n}\nlabel.error{\ncolor: #FF0000;\n}\n.expandArrow {\nbackground: url(../img/expandArrow.png) no-repeat 0px 8px;\n}\n.collapseArrow {\nbackground: url(../img/collapseArrow.png) no-repeat 0px 8px;\n}\n.apStatusRow {\ncursor:pointer\n}\n.apConnectting {\nbackground: url(../img/waiting_Small.gif) no-repeat 0px 8px;\n}\n.qrCodeContainer {\nbottom: 160px;\nposition: fixed;\nright: 0;\nz-index: 1;\n}\n@media screen and (max-width: 1100px) {\n.qrCodeContainer {\ndisplay: none;\n}\n}\n.captchaImg {\nvertical-align: middle;\n}\n.bannerswtch {\ncolor: #0099cc;\n}\n.white_content_security\n{\ndisplay: none;\nwidth: 350px;\nmin-height: 195px;\nheight: auto !important;\nheight: 195px;\nz-index: 99;\noverflow: auto;\nposition: absolute;\n_position: absolute;\nbottom: 0px;\nright: 10px;\n}\n.sercurityNotice {\nborder: 8px solid #7D7D7D;\ntext-align: left;\npadding: 0 10px;\nbackground: #FFFFFF;\n}\n.sercurityNoticeMsg {\nmin-height: 32px;\nheight: auto !important;\nheight: 32px;\npadding: 25px 0;\nbackground: url(\"../img/info_m.png\") no-repeat 20px 50%;\n}\n.sercurityNoticeMsg li {\npadding-left: 60px;\nfont-size: 12px;\nline-height: 24px;\n}\n#commLeft {\nwidth: 197px;\nmargin: 0;\npadding:0;\nfloat: left;\nbackground-color: #EEEFF5;\n}\n#commRight {\nmin-height:415px;\nheight:auto !important;\nheight: 415px;\nmargin-left: 215px;\nmargin-right: 0;\npadding-left: 0px;\ntext-align: left;\n}\n#class2MenuItem {\nwidth: 100%;\nmargin: 0px;\npadding: 0px;\n}\n#class2MenuItem li {\ndisplay: block;\nmargin: -1px 0 0 0;\n}\n#class2MenuItem a {\ndisplay: block;\nheight: 30px;\nline-height: 30px;\ntext-align: left;\ntext-decoration: none;\ncolor: #000;\npadding: 0 20px;\nbackground-color: #fbfbfb;\nborder: 1px solid #d0d0d0;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\n}\n#class2MenuItem a.selectClass2Menu {\nbackground-color: #eee;\nbackground-image: -moz-linear-gradient(top , #f7f7f7, #e6e6e6);\nbackground-image: -webkit-gradient(linear,0% 0%, 0% 100%, from(#f7f7f7), to(#e6e6e6));\nbackground-image: -webkit-linear-gradient(top, #f7f7f7, #e6e6e6);\nbackground-image: -o-linear-gradient(top, #f7f7f7, #e6e6e6);\nbackground-image: -ms-linear-gradient(top, #f7f7f7, #e6e6e6);\nbackground-image: linear-gradient(top, #f7f7f7, #e6e6e6);\nfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7f7f7', endColorstr='#e6e6e6', GradientType=0);\ncolor: #0099CC;\n}\n#class3Menu {\nheight:30px;\nmargin-bottom: 30px;\nborder-bottom: 1px solid #0099CC;\n}\n#scrollLeftBtn,\n#scrollRightBtn {\nheight: 30px;\nwidth: 30px;\nfloat: left;\n}\n.EnableScrollBtn {\ncursor: pointer;\n}\n.scrollRightBtn {\nbackground: url(\"../img/collapse_B.png\") no-repeat scroll right center;\n}\n.scrollLeftBtn {\nbackground: url(\"../img/leftArrow.png\") no-repeat scroll left center;\n}\n.scrollRightBtnDisable {\nbackground: url(\"../img/rightArrowDisable.png\") no-repeat scroll right center;\ncursor: default;\n}\n.scrollLeftBtnDisable {\nbackground: url(\"../img/leftArrowDisable.png\") no-repeat scroll left center;\ncursor: default;\n}\n#scrollLeftBtn p,\n#scrollRightBtn p {\nheight: 30px;\n}\n#class3MenuMainContent {\nwidth:697px;\noverflow:hidden;\nfloat:left;\nmargin-top: -1px;\n}\n#class3MenuMainContent ul {\nwidth: 5000px;\n}\n#class3MenuMainContent li {\nfloat: left;\nlist-style: none outside none;\n}\n#class3MenuMainContent ul p {\ntext-decoration: none !important;\nheight: 30px;\nline-height: 30px;\npadding: 0 30px;\nfloat: left;\ncursor: pointer;\n}\n.AEleMenu3 {\ncolor: #313131;\nborder: 1px solid #D0D0D0;\nborder-bottom: 1px solid #0099CC;\nbackground-color: #F5F5F5;\n}\n.AEleMenu3Selected {\ncolor: #0099CC;\nborder: 1px solid #0099CC;\nborder-bottom: 1px solid #FFFFFF;\n}\n.HeadDIV,\n.fakeHeadDIV {\npadding-top: 20px;\n}\n.pageIntroduce {\nfont-size: 18px;\n}\n.pIntroContent {\npadding: 8px 0;\n}\n.row,\n.rowBox,\n.colorTblRow,\n.segmentRow {\nclear: both;\n}\n.row,\n.rowBox,\n.colorTblRow,\n.outRow,\n.rowWithoutClear {\nmin-height: 30px;\nheight: auto !important;\nheight: 30px;\npadding: 0 25px;\n}\n.rowBox div {\ndisplay: inline-block;\n}\n.rowPaddingClear {\npadding: 0px;\n}\n.outRow {\npadding: 0;\nmargin: 10px 0;\n}\n.selectRow {\nmin-height: 80px;\n}\n.segmentRow {\nheight: 15px;\nbackground-color: #F7F7F7;\n}\n.left,\n.right,\nlabel.cfgLabel {\nfloat: left;\nline-height: 30px;\n}\n.collapBarWithDataTrans,\n.collapsibleBar {\npadding-left: 25px;\ncursor: pointer;\nbackground: url(../img/collapse_B.png) no-repeat 0px 30%;\n}\n.collapsibleBarExp {\nbackground: url(../img/expand_B.png) no-repeat 0px 30%;\n}\n.colorTbl {\nborder: 1px solid #D0D0D0;\nline-height: 30px;\nmargin-top: 10px;\noverflow: auto;\n}\n.colorRow {\nbackground: #EFF8FF;\n}\n.colorTblRow,\n.textareaRow {\npadding: 0 25px;\n}\n.colorTblRow span {\ndisplay:inline-block;\n*display:inline;\n*zoom:1;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\nmargin-right: 3px;\nvertical-align: middle;\n*vertical-align: top;\n}\n.titleRow {\nbackground: #C8E6FE;\n}\n.noDataHint {\nheight: 30px;\nline-height: 30px;\nborder: 1px solid #D0D0D0;\npadding: 0 5px 0 45px;\nbackground: #C8E6FE url(../img/info_s.png) no-repeat 23px 50%;\n}\n.formTblWrap {\nborder: 1px solid #D0D0D0;\nline-height: 30px;\nbackground: #F7F7F7;\nmargin: -1px 0;\nzoom: 1;\n}\n.formTbl {\npadding: 10px 0 0;\noverflow: auto;\n*overflow: hidden;\n}\n.formTblCtrlBar, .addInstBar {\nheight: 30px;\nline-height: 30px;\nborder: 1px solid #D0D0D0;\nbackground: #EEEEEE;\nposition: relative;\n}\n.formTblCtrlBar div {\ndisplay: inline;\n}\n.instName, .instNew {\npadding-left: 25px;\noutline: none;\ncolor: #313131;\nheight: 100%;\ncursor: pointer;\ndisplay: block;\nwidth: 200px;\n}\n.instName {\nbackground: url(../img/collapse.png) no-repeat 0 50%;\nwhite-space: nowrap;\ntext-overflow: ellipsis;\noverflow: hidden;\n}\n.instNew {\nbackground: url(../img/newInst.png) no-repeat 2px 50%;\n}\n.instNameExp {\nbackground: url(../img/expand.png) no-repeat 0 50%;\n}\n.noHand {\ncursor: default;\n}\n.instSwitch {\nposition: absolute;\nleft: 300px;\ntop: 3px;\n}\n.instDelete,\n.closePopLayer {\nposition: absolute;\nright: 20px;\ntop: 7px;\ncursor: pointer;\n}\n.closePopLayer {\ntop: 10px;\n}\n.clear {\nclear: both;\noverflow:hidden;\n}\n.ExceedWidthEllipsis {\nwhite-space: nowrap;\ntext-overflow: ellipsis;\noverflow: hidden;\n}\n.divQoSStatisticsCfg {\npadding: 20px;\ntext-align: left;\n}\n.picQoSTrans {\nbackground: url(../img/uploading.gif) no-repeat;\n}\n.partDivision {\nborder-bottom: 1px dotted #313131;\npadding-bottom: 8px;\nmargin: 10px 0 30px;\n}\n.emptyRow10 {\nmargin: 10px;\n}\n.emptyRow20 {\nmargin: 20px;\n}\n.fontSize {\nfont-size:15px;\n}\n.DMSPathDiv {\nborder: 1px solid #0099CC;\nwidth: 710px;\n*width: 690px;\noverflow: auto;\nmargin: 10px auto;\npadding: 5px;\n}\n.hr0 {\nheight:1px;\nborder:none;\nborder-top:1px solid #D0D0D0;\n}\n.sideShortCut {\nposition: fixed;\nwidth:28px;\nheight:50px;\nbottom:105px;\nright:0px;\n_position:absolute;\n_right:auto;\ncursor:pointer;\nz-index: 1000;\n}\n.BackToTop {\ndisplay: block;\nheight: 50px;\nwidth: 28px;\ntext-decoration:none;\nbackground: url(../img/TOP.gif) no-repeat;\n}\n.pinspan {\ncolor: #313131;\nbackground: #E7FFE4;\n}\n.pin_remain {\ncolor: red;\nfont-size: 1.1em;\nfont-weight: bold;\n}\n._LuQUID_SelAccessDevice{\ncolor: #0099CC;\ncursor: pointer;\ntext-decoration: none;\n}\n._LuQUID_AccessDeviceList{\nmargin-left:150px;\nheight:auto !important;\nmin-height: 30px;\npadding: 0 5px 0 0;\nclear: both;\n}\n._LuQUID_HideAccessDevice{\ncolor: #0099CC;\ncursor: pointer;\ntext-decoration: none;\n}\n.AddIconControl{\ncursor: pointer;\nposition: relative;\ntop: 2px;\n}\n.DelIconControl{\ncursor: pointer;\nposition: relative;\ntop: 2px;\n}\nbody {\ntext-align: center;\noverflow-y: scroll;\n}\n#page_container {\nposition: relative;\nwidth: 960px;\nmargin: 0 auto;\ntop:35px;\npadding: 0 30px 15px 30px;\ntext-align: left;\nbackground: #FFFFFF;\n}\n#loginWrapper {\nwidth: 473px;\nmin-height: 300px;\nheight:auto !important;\nheight: 425px;\nmargin: 50px auto;\nposition: relative;\n}\n.logo {\nwidth: 345px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/catLogo.png) no-repeat 5px 9px;\n}\n.catLogo {\nwidth: 345px;\nheight: 72px;\nfloat:left;\nbackground: url(../img/catLogo.png) no-repeat 5px 9px;\n}\n.zteLogo {\nwidth: 210px;\nheight: 72px;\nfloat:right;\nbackground: url(../img/Logo_ZTE.png) no-repeat 5px 9px;\n}\n.catInternet {\nposition: relative;\nwidth: 180px;\nheight: 140px;\nmargin-left: 400px;\ntop:50px;\n}\n.catText {\nwidth:600px;\nfont-size:14px;\nfont-weight:bold;\nmargin-left:160px;\ntext-align:center;\n}\n.timeArea {\nleft: 342px;\n}\n\n</style>\n<script type=\"text/javascript\" src=\"jquery/common_lib.js\"></script>\n<script type=\"text/javascript\">\nfunction StatusOfLRBtnOf3MenuHandle(nowScrollLocation)\n{\nif (nowScrollLocation == \"\")\n{\nnowScrollLocation = 0;\n}\nvar class3MenuContainerWidth = $(\"#class3MenuMainContent\").width();\nvar totalTabWidth = $(\"#_totalTabWidth\").val();\nif ( nowScrollLocation >= (totalTabWidth - class3MenuContainerWidth) )\n{\n$(\"#scrollRightBtn\").attr(\"class\",\"scrollRightBtnDisable\");\n$(\"#scrollLeftBtn\").attr(\"class\", \"scrollLeftBtn EnableScrollBtn\");\n}\nelse if ( nowScrollLocation == 0 )\n{\n$(\"#scrollLeftBtn\").attr(\"class\", \"scrollLeftBtnDisable\");\n$(\"#scrollRightBtn\").attr(\"class\",\"scrollRightBtn EnableScrollBtn\");\n}\nelse\n{\n$(\"#scrollRightBtn\").attr(\"class\",\"scrollRightBtn EnableScrollBtn\");\n$(\"#scrollLeftBtn\").attr(\"class\", \"scrollLeftBtn EnableScrollBtn\");\n}\n}\nfunction Menu3TabStyleHandle()\n{\nvar class3MenuContainer = $(\"#class3MenuMainContent\");\nvar ContainerWidth = $(\"#commRight\").width()- $(\"#scrollLeftBtn\").width()\n- $(\"#scrollRightBtn\").width();\nclass3MenuContainer.width(ContainerWidth);\nvar tabTotalWidth = 0;\nvar tab = $(\"li\",class3MenuContainer);\nfor (var i=0; i< tab.length; i++)\n{\nvar LiWidth = parseInt(tab[i].offsetWidth);\ntabTotalWidth = tabTotalWidth + LiWidth;\n}\n$(\"#_totalTabWidth\").val(tabTotalWidth);\nvar class3MenuUl = $(\"ul\",class3MenuContainer);\nif ( tabTotalWidth > ContainerWidth )\n{\nclass3MenuUl.css(\"width\", 5000);\n$(\"#scrollLeftBtn,#scrollRightBtn\").addClass(\"EnableScrollBtn\");\nvar nowScrollLocation = $(\"#_Menu3Location\").text();\nif ((tabTotalWidth-ContainerWidth) < nowScrollLocation)\n{\nnowScrollLocation = tabTotalWidth-ContainerWidth;\n}\nclass3MenuContainer.scrollLeft(nowScrollLocation);\nStatusOfLRBtnOf3MenuHandle(nowScrollLocation);\n}\nelse\n{\n$(\"#scrollLeftBtn\").removeClass(\"scrollLeftBtn\");\n$(\"#scrollRightBtn\").removeClass(\"scrollRightBtn\");\n}\n}\nfunction MenuItemClass(menuItemJSON) {\nthis.menuItemJSON = menuItemJSON;\n}\nMenuItemClass.prototype.findMenu = function (menuid) {\nvar menuItemJSON = this.menuItemJSON;\nvar menuItemId = menuItemJSON.id;\nif (menuItemId == menuid)\n{\nreturn menuItemJSON;\n}\nvar children = menuItemJSON.children;\nif ( !children )\n{\nreturn null;\n}\nfor (var i = 0; i < children.length; i++) {\nvar childItem = children[i];\nvar childID = childItem.id;\nif ( menuid == childID )\n{\nreturn childItem;\n}\nif ( childItem.children )\n{\nvar childObj = new MenuItemClass(childItem);\nvar targetMenu = childObj.findMenu(menuid);\nif (targetMenu)\n{\nreturn targetMenu;\n}\n}\n}\nreturn null\n}\nMenuItemClass.prototype.getLeftMostPageJSON = function () {\nvar menuItemJSON = this.menuItemJSON;\nvar menuItemId = menuItemJSON;\nvar children = menuItemJSON.children;\nif ( !children )\n{\nreturn menuItemJSON;\n}\nvar leftMostSon = children[0];\nvar menuObj = new MenuItemClass(leftMostSon);\nreturn menuObj.getLeftMostPageJSON();\n}\nfunction MenuTreeClass(menuTreeJSON)\n{\nthis.menuTreeJSON = menuTreeJSON\n}\nMenuTreeClass.prototype.findMenu = function(menuid) {\nvar menuTreeJSON = this.menuTreeJSON\nfor (var i = 0; i < menuTreeJSON.length; i++) {\nvar menu1table = menuTreeJSON[i];\nvar menu1Obj = new MenuItemClass(menu1table);\nvar targetMenu = menu1Obj.findMenu(menuid);\nif ( targetMenu )\n{\nreturn targetMenu;\n}\n}\nreturn null\n};\nfunction GetLeftMostPageID(menuid)\n{\nvar menuTable = menuTreeObj.findMenu(menuid);\nvar menuObj = new MenuItemClass(menuTable);\nvar pageJSON = menuObj.getLeftMostPageJSON();\nreturn pageJSON.id;\n}\nfunction Class3MenuShow(selectPageID, selectSupId, selectMidId, selectThdId)\n{\nif ( selectThdId == \"\" )\n{\n$(\"#class3Menu\").css(\"display\", \"none\");\nreturn;\n}\nvar class2MenuNode = menuTreeObj.findMenu(selectMidId);\nvar class3MenuJSON = class2MenuNode.children;\nvar class3MenuContent = \"\";\nfor (var index in class3MenuJSON)\n{\nvar menu = class3MenuJSON[index]\nvar class3MenuID = menu.id\nvar class3MenuName = menu.name\nif ( class3MenuID == selectThdId )\n{\nAEleMenu3Class = \"AEleMenu3Selected\";\n}\nelse\n{\nAEleMenu3Class = \"AEleMenu3\";\n}\nclass3MenuContent = class3MenuContent\n+ \"<li><p class='\" + AEleMenu3Class + \"'\"\n+ \"MenuClass='3'\"\n+ \"id='\"+ class3MenuID + \"'\"\n+ \"MenuPage='\"+ GetLeftMostPageID(class3MenuID) +\"'\"\n+ \"href='#\" + class3MenuID + \"'>\"\n+ class3MenuName\n+ \"</p></li>\";\n}\n$(\"#class3MenuMainContent ul\").html(class3MenuContent);\n$(\"#class3MenuMainContent ul li p\").click(function(){\nvar MenuOBJ = $(this);\nif ( !checkDisClickAttr(MenuOBJ) )\n{\nreturn;\n}\nAjaxQuery_ClassMenuClick(MenuOBJ);\n});\nMenu3TabStyleHandle();\n$(window).resize(function(){\nMenu3TabStyleHandle();\n});\nvar t;\n$(\"#scrollRightBtn,#scrollLeftBtn\").mousedown(function(e){\nif ( ! $(this).hasClass(\"EnableScrollBtn\"))\n{\nconsoleLog(\"no scroll button!!\");\nreturn;\n}\nvar step = 10;\nif ( $(this).attr(\"id\") == \"scrollLeftBtn\" )\n{\nstep = 0-step;\n}\nif(1 == e.which)\n{\nt = window.setInterval(function() {\nvar scrollTarget = $(\"#class3MenuMainContent\");\nvar nowPosition = scrollTarget.scrollLeft();\nvar tabWidth = $(\"#_totalTabWidth\").val();\nvar srcollTotalLen = tabWidth - scrollTarget.width();\nif ( (srcollTotalLen - nowPosition) >= step )\n{\nscrollTarget.scrollLeft(nowPosition + step);\n}\nelse if ( (srcollTotalLen - nowPosition) >= 0 )\n{\nscrollTarget.scrollLeft(srcollTotalLen);\n}\nvar afterPosition = scrollTarget.scrollLeft();\nStatusOfLRBtnOf3MenuHandle(afterPosition);\n}, 20);\n}\n});\n$(\"#scrollRightBtn,#scrollLeftBtn\").mouseup(function(e){\nif(1 == e.which)\n{\nwindow.clearInterval(t);\n}\n});\n}\nfunction Class2MenuShow(selectPageID, selectSupId, selectMidId)\n{\nif ( selectMidId == \"\" )\n{\nreturn;\n}\nvar class1MenuNode = menuTreeObj.findMenu(selectSupId);\nvar class2MenuJSON = class1MenuNode.children;\nvar class2MenuContent = \"\";\nvar class2MenuClass = \"\";\nfor (var index in class2MenuJSON)\n{\nvar menu = class2MenuJSON[index]\nvar class2MenuID = menu.id\nvar class2MenuName = menu.name\nif ( class2MenuID == selectMidId )\n{\nclass2MenuClass = \"selectClass2Menu\";\n}\nelse\n{\nclass2MenuClass = \"\";\n}\nclass2MenuContent = class2MenuContent\n+ \"<li>\"\n+ \"<a class='\" + class2MenuClass + \"' \"\n+ \"href='javascript:void(0);' \"\n+ \"MenuClass='2' \"\n+ \"id='\"+ class2MenuID + \"' \"\n+ \"MenuPage='\"+ GetLeftMostPageID(class2MenuID)\n+ \"' title='\" + class2MenuName\n+ \"'>\"\n+ class2MenuName\n+ \"</a></li>\";\n}\n$(\"#class2MenuItem\").html(class2MenuContent);\n$(\"#class2MenuItem li a\").click(function(){\nvar MenuOBJ = $(this);\nif ( !checkDisClickAttr(MenuOBJ) )\n{\nreturn;\n}\nAjaxQuery_ClassMenuClick(MenuOBJ);\n});\n}\nfunction Class1MenuShow(selectPageID, selectSupId)\n{\nvar FirstMenuContent = \"<ul>\";\nvar SupClass = \"\";\nvar SupLiID = \"\";\nvar FirstOne = \"yes\";\nvar navBarWidth = $(\"#mainNavigator\").width();\nvar leftPadWidth = $(\"#mn_first\").width();\nvar rightPadWidth = $(\"#mn_last\").width();\nvar menuAreaWidth = navBarWidth - leftPadWidth - rightPadWidth;\nmenuAreaWidth -= 7;\nvar menuWidth = menuAreaWidth/(menuTreeJSON.length);\nmenuWidth = Math.floor(menuWidth);\nfor (var index in menuTreeJSON)\n{\nvar menu = menuTreeJSON[index]\nvar supId = menu.id\nvar supName = menu.name\nif ( supId == selectSupId )\n{\nSupClass = \"SelectMenuItem\";\n}\nelse\n{\nSupClass = \"MenuItem\";\n}\nif ( FirstOne == \"yes\" )\n{\nSupLiID = \"homeLi\";\nFirstOne = \"no\";\n}\nelse\n{\nSupLiID = \"\";\n}\nFirstMenuContent = FirstMenuContent\n+ \"<li id=\\\"\" + SupLiID + \"\\\">\"\n+ \"<a href=\\\"javascript:void(0);\\\" class=\\\"\" + SupClass\n+ \"\\\" \"\n+ \"style='width:\" + menuWidth + \"px' \"\n+ \"MenuClass='1' \"\n+ \"id='\"+ supId + \"' \"\n+ \"MenuPage='\"+ GetLeftMostPageID(supId) +\"'\"\n+ \">\"\n+ supName\n+ \"</a></li>\";\n}\nFirstMenuContent = FirstMenuContent + \"</ul>\";\n$(\"#mn_li\").html(FirstMenuContent);\n$(\"#mn_li li a\").click(function(){\nvar MenuOBJ = $(this);\nif ( !checkDisClickAttr(MenuOBJ) )\n{\nreturn;\n}\nAjaxQuery_ClassMenuClick(MenuOBJ);\n});\n}\nfunction checkDisClickAttr(obj)\n{\nif (\"off\" == obj.attr(\"EnableClick\"))\n{\nreturn false;\n}\nhandleDisClickAttr(\"off\");\nreturn true;\n}\nfunction handleDisClickAttr(ret)\n{\nvar selectSupId = $(\"#_NowSupIdInfo\",_MenuInfo).text();\nvar selectMidId = $(\"#_NowMidIdInfo\",_MenuInfo).text();\nvar selectThdId = $(\"#_NowThdIdInfo\",_MenuInfo).text();\nif(selectThdId)\n{\nvar objs = [$(\"#\" + selectSupId),$(\"#\" + selectMidId),$(\"#\" + selectThdId)];\n}\nelse\n{\nif(selectMidId)\n{\nvar objs = [$(\"#\" + selectSupId),$(\"#\" + selectMidId)];\n}\nelse\n{\nvar objs = [$(\"#\" + selectSupId)];\n}\n}\nfor (var i = 0; i < objs.length; i++)\n{\nif (objs[i].length > 0)\n{\nobjs[i].attr(\"EnableClick\", ret);\n}\n}\n}\nfunction AjaxPageGet(PageName, MenuClass, Area)\n{\nvar pageContainer = $(\"#commPageContainer\");\npageContainer.succfunction = function(html){\npageContainer.html(html);\nvar _MenuInfo = $(\"#_MenuInfo\");\nvar selectPageID = $(\"#_NextPageInfo\",_MenuInfo).text();\nvar selectSupId = $(\"#_NowSupIdInfo\",_MenuInfo).text();\nvar selectMidId = $(\"#_NowMidIdInfo\",_MenuInfo).text();\nvar selectThdId = $(\"#_NowThdIdInfo\",_MenuInfo).text();\nif ( \"mmHome\" == selectPageID )\n{\n$(document).scrollTop(0);\nreturn;\n}\nif (MenuClass == '1')\n{\nClass1MenuShow(selectPageID, selectSupId);\n}\nClass2MenuShow(selectPageID, selectSupId, selectMidId);\nClass3MenuShow(selectPageID, selectSupId, selectMidId, selectThdId);\n$(document).scrollTop(0);\nhandleDisClickAttr(\"on\");\nvar targetAreaId = Area;\nif (targetAreaId){\nsetTimeout(function(){\nvar thisPage = $(\".instCfgArea\");\nvar areas = $(\"h1\", thisPage);\nvar targetArea = $(\"#\"+targetAreaId, thisPage);\nareas.each(function(){\nif ($(this).hasClass(\"collapsibleBarExp\")) {\n$(this).click();\n}\n});\nif (targetArea.length > 0){\ntargetArea.click();\n$(document).scrollTop(targetArea.offset().top);\n}\n}\n,500);\n}\n};\npageContainer.errorfunction = function(){\nconsoleLog(\"page get fail\");\nshowWaitTip(false);\npageContainer.html(\"Page request failed, please try again!\");\nhandleDisClickAttr(\"on\");\n};\nshowWaitTip(true);\npageContainer.dataTransfer( PageName, \"GET\", pageContainer.succfunction,\npageContainer.errorfunction, false,\nundefined, 'html'\n);\n}\nfunction AjaxQuery_ClassMenuClick(MenuOBJ)\n{\nvar MenuClass = MenuOBJ.attr(\"MenuClass\");\nvar page = MenuOBJ.attr(\"MenuPage\");\nvar scrollTarget = $(\"#class3MenuMainContent\");\nvar Menu3Location = scrollTarget.scrollLeft();\nvar pageFile = \"/?_type=menuView&_tag=\"\n+ page + \"&Menu3Location=0\";\nif ( MenuClass == 3 )\n{\npageFile = \"/?_type=menuView&_tag=\"\n+ page + \"&Menu3Location=\" + Menu3Location;\n}\nAjaxPageGet(pageFile, MenuClass);\n}\nfunction openLink(pageurl, areaId)\n{\nvar PageName = \"/?_type=menuView&_tag=\" + pageurl;\nAjaxPageGet(PageName, 1, areaId);\n}\nfunction MenuShow(Menuclass, selectPageID, selectSupId, selectMidId, selectThdId)\n{\nif (Menuclass == \"ClassAll\")\n{\nClass1MenuShow(selectPageID, selectSupId);\nClass2MenuShow(selectPageID, selectSupId, selectMidId);\nClass3MenuShow(selectPageID, selectSupId, selectMidId, selectThdId);\n}\nelse if (Menuclass == \"ClassOne\")\n{\nClass1MenuShow(selectPageID, selectSupId);\n}\nelse if (Menuclass == \"ClassTwo\")\n{\nClass2MenuShow(selectPageID, selectSupId);\n}\nelse\n{\nconsoleLog(\"[menu_api.lp][MenuShow] Menuclass(\"+ Menuclass + \"filling is not right!!\");\n}\n}\nfunction FakeClass1MenuShow()\n{\nvar FirstMenuContent = \"<ul>\";\nvar SupClass = \"MenuItem\";\nvar SupLiID = \"\";\nvar FirstOne = \"yes\";\nvar navBarWidth = $(\"#mainNavigator\").width();\nvar leftPadWidth = $(\"#mn_first\").width();\nvar rightPadWidth = $(\"#mn_last\").width();\nvar menuAreaWidth = navBarWidth - leftPadWidth - rightPadWidth;\nmenuAreaWidth -= 7;\nvar menuWidth = menuAreaWidth/(menuTreeJSON.length);\nmenuWidth = Math.floor(menuWidth);\nfor (var index in menuTreeJSON)\n{\nvar menu = menuTreeJSON[index]\nvar supId = menu.id\nvar supName = menu.name\nif ( FirstOne == \"yes\" )\n{\nSupLiID = \"homeLi\";\nFirstOne = \"no\";\n}\nelse\n{\nSupLiID = \"\";\n}\nFirstMenuContent = FirstMenuContent\n+ \"<li id=\\\"\" + SupLiID + \"\\\">\"\n+ \"<a href=\\\"javascript:void(0);\\\" class=\\\"\" + SupClass\n+ \"\\\" \"\n+ \"style='width:\" + menuWidth + \"px;\"\n+ \"color:#BFBDBE; cursor:default;'\"\n+ \" hidefocus=\\\"true\\\" onclick=\\\" \\\">\"\n+ supName\n+ \"</a></li>\";\n}\nFirstMenuContent = FirstMenuContent + \"</ul>\";\n$(\"#mn_li\").html(FirstMenuContent);\n}\nfunction showWaitTip(show, TipMsg, StopTag)\n{\nvar TipMsgTmp = TipMsg;\nif( show )\n{\n$(\"#blackMask,#tipLayer,#confirmBtnArea\").css(\"display\", \"block\");\nif (TipMsgTmp == undefined || TipMsgTmp == \"\")\n{\n$(\"#waitingImgArea\").css(\"display\", \"none\");\nif(true==StopTag)\n{\n$(\"#confirmStop\").css(\"display\", \"block\");\n$(\"#confirmCancel,#confirmOK\").css(\"display\", \"none\");\n}\nelse\n{\n$(\"#confirmStop\").css(\"display\", \"none\");\n$(\"#confirmCancel,#confirmOK\").css(\"display\", \"block\");\n}\n}\nelse\n{\n$(\"#confirmLayer, #waitingImgArea\").css(\"display\", \"block\");\n$(\"#confirmMsg p\").text(TipMsgTmp);\nif(true==StopTag)\n{\n$(\"#confirmStop\").css(\"display\", \"block\");\n$(\"#confirmCancel,#confirmOK\").css(\"display\", \"none\");\n}\nelse\n{\n$(\"#confirmCancel,#confirmOK,#confirmStop\").css(\"display\", \"none\");\n}\n}\n$('#confirmLayer :button:visible:first').focus();\n$(\"#page_container\").bind(\"keyup\", function(event){\nif (event.which == 9) {\n$('#confirmLayer :button:visible:first').focus();\n}\n});\nreposition_box(\"tipLayer\");\n}\nelse\n{\n$(\"#blackMask, #tipLayer, #confirmLayer\").css(\"display\", \"none\");\n$(\"#page_container\").unbind(\"keyup\");\n}\n}\nfunction IniConfirm(msg)\n{\nshowWaitTip(true);\nvar confirmLayerOBJ = $(\"#confirmLayer\");\nconfirmLayerOBJ.css(\"display\", \"block\");\n$(\"#confirmMsg p\",confirmLayerOBJ).text(msg);\n$(\"#confirmCancel\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmOK\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmStop\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmCancel\",confirmLayerOBJ).bind(\"click\", function(event){\nshowWaitTip(false);\n});\n$('#confirmLayer :button:visible:first').focus();\nreturn confirmLayerOBJ;\n}\nfunction getStyle(obj,attr)\n{\nif (obj.currentStyle)\n{\nreturn obj.currentStyle[attr];\n}\nelse\n{\nreturn document.defaultView.getComputedStyle(obj,null)[attr];\n}\n}\nfunction reposition_box(divId)\n{\nvar box=document.getElementById(divId);\nif (null!=box)\n{\nvar boxObj = $(\"#\"+divId);\nvar winH = $(window).height();\nvar winW = $(window).width();\nvar divH = boxObj.height();\nvar divW = boxObj.width();\nvar h = (winH-divH)/2;\nh = (h > 0) ? h : 5;\nvar w = (winW-divW)/2;\nw = (w > 0) ? w : 5;\nboxObj.css({top:h, left:w});\nif ( divH > winH || divW > winW)\n{\nboxObj.css(\"position\", \"absolute\");\n}\nelse\n{\nboxObj.css(\"position\", \"fixed\");\n}\n}\n}\n$.validator.setDefaults({\nerrorPlacement: function (error, element) {\nvar tipHTML = \"<div class=\\\"errorLabelWraper\\\"></div>\";\nvar tipObj = $(tipHTML);\nerror.appendTo(tipObj);\nvar rowObj = element.closest(\".row\");\nif ( rowObj.length == 0 )\n{\nconsoleLog(\"element id=[\"+element.attr(\"id\")+\"] is not in row div.\");\nreturn ;\n}\nvar rowWidth = rowObj.width();\nvar usedWidth = 0;\nvar rightObj = undefined;\nrowObj.children().each(function(){\nif (!($(this).hasClass(\"_LuQUID_AccessDeviceList\")||\n$(this).hasClass(\"clear\"))){\nusedWidth += $(this).outerWidth(true);\n}\nif ($(this).hasClass(\"right\")){\nrightObj = $(this);\n}\n});\nvar errWidth = rowWidth - usedWidth;\ntipObj.width(errWidth-5-23);\nif (rightObj != undefined)\n{\ntipObj.insertAfter(rightObj);\n}\nelse\n{\ntipObj.appendTo(rowObj);\n}\n}\n});\njQuery.extend(jQuery.validator.messages, {\nrequired: \"This field is required. \",\nremote: \"Please fix this field. \",\nemail: \"Please enter a valid email address. \",\nurl: \"Please enter a valid URL. \",\ndate: \"Please enter a valid date. \",\ndateISO: \"Please enter a valid date (ISO). \",\nnumber: \"Please enter a valid number. \",\ndigits: \"Please enter an integer. \",\ncreditcard: \"Please enter a valid credit card number. \",\nequalTo: \"Please enter the same value again. \",\nmaxlength: jQuery.validator.format(\"Please enter no more than {0} characters. \"),\nminlength: jQuery.validator.format(\"Please enter at least {0} characters. \"),\nrangelength: jQuery.validator.format(\"Please enter a value with {0} ~ {1} characters. \"),\nrange: jQuery.validator.format(\"Please enter a value between {0} and {1}. \"),\nmax: jQuery.validator.format(\"Please enter a value less than or equal to {0}. \"),\nmin: jQuery.validator.format(\"Please enter a value greater than or equal to {0}. \")\n});\nfunction AsciiPasswordCheck(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif(ch == 9)\n{\nreturn false;\n}\n}\nreturn true;\n}\nfunction AsciiCheck(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif(ch<32 || ch>126)\n{\nreturn false;\n}\n}\nreturn true;\n}\nfunction AsciiCheckWithLen(Key, LenLimit)\n{\nif (Key.length != LenLimit)\n{\nreturn false;\n}\nif ( false == AsciiCheck(Key) )\n{\nreturn false;\n}\nreturn true;\n}\nfunction HexCheck(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif (!((ch >= 65 && ch <= 70)\n||(ch >= 97 && ch <= 102)\n||(ch >= 48 && ch <= 57)))\n{\nreturn false;\n}\n}\nreturn true;\n}\nfunction HexCheckWithLen(Key, LenLimit)\n{\nif (Key.length != LenLimit)\n{\nreturn false;\n}\nif ( false == HexCheck(Key) )\n{\nreturn false;\n}\nreturn true;\n}\nfunction checkIPv4Addr(ipaddr)\n{\nvar re = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nif(re.test(ipaddr) == true)\n{\nvar parts = ipaddr.split(\".\");\nfor(var i=0; i<parts.length; i++)\n{\nif(parts[i].indexOf(\"0\") == 0 && parts[i].length > 1)\nreturn false;\nif (parseInt((parts[i]),10) > 255 || parseInt((parts[i]),10) < 0)\n{\nreturn false;\n}\n}\nreturn true;\n}\nreturn false;\n}\njQuery.validator.addMethod(\n\"IPv4Addr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif(checkIPv4Addr(value) == true)\n{\nreturn true;\n}\nreturn false;\n},\n\"Please enter a valid IPv4 Address. \"\n);\nfunction checkIPv6Addr(ipaddr)\n{\nif (ipaddr.match(\"[^0-9a-fA-F:.]\") != null)\nreturn false;\naddrParts = ipaddr.split(':');\nDoublecolon = ipaddr.split('::');\nipv4Parts = ipaddr.split('.');\nif(addrParts.length<3||addrParts.length>8)\n{\nreturn false;\n}\nelse if(Doublecolon.length==1&&ipv4Parts.length==1&&addrParts.length!=8)\n{\nreturn false;\n}\nelse if(Doublecolon.length==1&&ipv4Parts.length>1&&addrParts.length!=6)\n{\nreturn false;\n}\nelse if(Doublecolon.length>1&&ipv4Parts.length>1&&addrParts.length>6)\n{\nreturn false;\n}\nelse if(Doublecolon.length>2||ipaddr.split(':::').length>1)\n{\nreturn false;\n}\nelse\n{\nif(addrParts[0]==\"\"&&addrParts[1]!=\"\")\n{\nreturn false;\n}\nfor(var i=0;i<addrParts.length;i++)\n{\nif(i==addrParts.length-1&&addrParts[i]==\"\"&&addrParts[i-1]!=\"\")\n{\nreturn false;\n}\nif(addrParts[i].length>4 && addrParts[i].split('.').length<2)\n{\nreturn false;\n}\n}\n}\nvar pos = ipaddr.lastIndexOf(\":\");\nvar ipv4Parts = ipaddr.split('.');\nif(ipv4Parts.length>1)\n{\nvar ipv4=ipaddr.substring(pos+1,ipaddr.length);\nif( false == checkIPv4Addr(ipv4) )\n{\nreturn false;\n}\n}\nreturn true;\n}\njQuery.validator.addMethod(\n\"IPv6Addr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn checkIPv6Addr(value);\n},\n\"Please enter a valid IPv6 Address. \"\n);\njQuery.validator.addMethod(\n\"DomainName\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar len = value.length;\nvar firstChar = value.substr(0,1);\nvar lastChar = value.substr(len-1,1);\nvar maxlen = 64;\nif(len>64||len<1)\n{\nreturn false;\n}\nif (value.match(\"[^0-9a-zA-Z.-]\") != null)\n{\nreturn false;\n}\nif(firstChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nif(lastChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nvar pos = value.lastIndexOf(\".\");\nif(pos == -1)\n{\nvar str = value;\nvar templen = value.length;\nfor(var i=0;i<len;i++)\n{\nvar tempvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tempvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\nelse\n{\nvar str = value.substr(pos+1);\nvar tmplen = value.length - (pos + 1);\nfor(var i=0;i<tmplen;i++)\n{\nvar tmpvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tmpvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\n},\n\"Please enter a valid Domain Name. \"\n);\njQuery.validator.addMethod(\n\"HostName\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar len = value.length;\nvar firstChar = value.substr(0,1);\nvar lastChar = value.substr(len-1,1);\nif (value.match(\"[^0-9a-zA-Z.-]\") != null)\n{\nreturn false;\n}\nif(firstChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nif(lastChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nvar pos = value.lastIndexOf(\".\");\nif(pos == -1)\n{\nvar str = value;\nvar templen = value.length;\nfor(var i=0;i<len;i++)\n{\nvar tempvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tempvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\nelse\n{\nvar str = value.substr(pos+1);\nvar tmplen = value.length - (pos + 1);\nfor(var i=0;i<tmplen;i++)\n{\nvar tmpvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tmpvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\n},\n\"Please enter a valid Host Name. \"\n);\njQuery.validator.addMethod(\n\"url\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar len = value.length;\nif( (len < 1) || (len > 256) )\n{\nreturn false;\n}\nif (value.match(\"[^0-9a-zA-Z.:;,!@%#?_/&=+*'$()\\\\[\\\\]-]\") != null)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter a valid URL. \"\n);\njQuery.validator.addMethod(\n\"PasswordASCII\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value == \"\t\t\t\t\t\t\")\n{\nreturn true;\n}\nif ( false == AsciiPasswordCheck(value) )\n{\nparams = 0;\nreturn false;\n}\nif ( false == AsciiCheck(value) )\n{\nparams = 1;\nreturn false;\n}\nreturn true;\n},\nfunction(param, element)\n{\nvar error = [\"The format of password is wrong. Please clear it and re-enter. \", \"Please enter only ASCII characters. \"];\nvar value = $(element).val();\nvar ret = 0;\nif ( false == AsciiPasswordCheck(value) )\n{\nret = 0;\n}\nelse if( false == AsciiCheck(value) )\n{\nret = 1;\n}\nelse\n{\n}\nif ( ret <= error.length )\n{\nreturn error[ret];\n}\n}\n);\njQuery.validator.addMethod(\n\"PasswordRangeLength\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value == \"\t\t\t\t\t\t\")\n{\nreturn true;\n}\nif ( value.length >= params[0] && value.length <= params[1] )\n{\nreturn true;\n}\nreturn false;\n},\njQuery.validator.format(\"Please enter a value with {0} ~ {1} characters. \")\n);\njQuery.validator.addMethod(\n\"ASCII\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif ( false == AsciiCheck(value) )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter only ASCII characters. \"\n);\nfunction AsciiCheckContainSpace(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif(ch<32 || ch>126)\n{\nreturn false;\n}\n}\nreturn true;\n}\njQuery.validator.addMethod(\n\"ASCII_CONTAINSPACE\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif ( false == AsciiCheckContainSpace(value) )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter only ASCII characters. \"\n);\njQuery.validator.addMethod(\n\"DigitASCII\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar reg = /^[0-9]+$/;\nreturn reg.test(value);\n},\n\"Please enter a value composed of 0 ~ 9.\"\n);\njQuery.validator.addMethod(\n\"utf8\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn true;\n},\n\"Please enter only ASCII characters. \"\n);\njQuery.validator.addMethod(\n\"WEPKey128Bit\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar AsciiLenLimit = 13;\nvar HexLenLimit = 26;\nif ( AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 13 ASCII characters or 26 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"WEPAsciiOrHexLen\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar AsciiLenLimit = 5;\nvar HexLenLimit = 10;\nvar AsciiLenLimit13 = 13;\nvar HexLenLimit26 =26;\nif (AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false\n&& AsciiCheckWithLen(value, AsciiLenLimit13) == false\n&& HexCheckWithLen(value, HexLenLimit26) == false)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 5 or 13 ASCII characters, or enter 10 or 26 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"PasswordWEPAsciiOrHexLen\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value == \"\t\t\t\t\t\t\")\n{\nreturn true;\n}\nvar AsciiLenLimit = 5;\nvar HexLenLimit = 10;\nvar AsciiLenLimit13 = 13;\nvar HexLenLimit26 =26;\nif (AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false\n&& AsciiCheckWithLen(value, AsciiLenLimit13) == false\n&& HexCheckWithLen(value, HexLenLimit26) == false)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 5 or 13 ASCII characters, or enter 10 or 26 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"WEPKey64Bit\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar AsciiLenLimit = 5;\nvar HexLenLimit = 10;\nif ( AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 5 ASCII characters or 10 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"WPAAsciiOrHexLen\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (!(value.length >= 8 && value.length <= 63)\n&& HexCheckWithLen(value, 64) == false)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter a value with 8 ~ 63 characters, or enter 64 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"HEX\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif ( HexCheck(value) == false )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter only hexadecimal characters. \"\n);\njQuery.validator.addMethod(\n\"fixedlength\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value.length != param)\n{\nreturn false;\n}\nreturn true;\n},\njQuery.validator.format(\"Please enter {0} characters. \")\n);\njQuery.validator.addMethod(\n\"fixedValue\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value != param)\n{\nreturn false;\n}\nreturn true;\n},\njQuery.validator.format(\"The only allowed value is {0}.\")\n);\nfunction hexCompare(hexNum, hexRefer)\n{\nvar num = parseInt(hexNum, 16);\nvar refer = parseInt(hexRefer, 16);\nif (num < refer)\n{\nreturn -1;\n}\nelse if (num > refer)\n{\nreturn 1;\n}\nelse\n{\nreturn 0;\n}\n}\njQuery.validator.addMethod(\n\"hexRange\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (typeof(params[0]) == \"object\")\n{\nfor (var i=0; i<params.length; i++)\n{\nvar range = params[i];\nif (typeof(range) == \"object\")\n{\nif (hexCompare(value, range[0]) != -1 && hexCompare(value, range[1]) != 1 )\n{\nreturn true;\n}\n}\n}\n}\nelse\n{\nif (hexCompare(value, params[0]) != -1 && hexCompare(value, params[1]) != 1 )\n{\nreturn true;\n}\n}\nreturn false;\n},\nfunction(params, element){\nvar rangesStr = \"\";\nif (typeof(params[0]) == \"object\")\n{\nvar rangesLen = params.length;\nfor (var i=0; i<rangesLen; i++)\n{\nvar range = params[i];\nif (hexCompare(range[0], range[1]) != 0)\n{\nrangesStr += range[0] + \"~\" + range[1];\n}\nelse\n{\nrangesStr += range[0];\n}\nif ( i < rangesLen-1 )\n{\nrangesStr += \", \";\n}\n}\n}\nelse\n{\nrangesStr = params[0] + \"~\" + params[1];\n}\nreturn $.validator.format(\"Please enter a hexadecimal value in the ranges of {0}. \", rangesStr);\n}\n);\njQuery.validator.addMethod(\n\"ranges\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar rangesLen = param.length;\nfor (var i=0; i<rangesLen; i++)\n{\nvar range = param[i];\nif ( typeof range === 'number' )\n{\nif ( value == range )\n{\nreturn true;\n}\n}\nelse\n{\nif ( value >= range[0] && value <= range[1] )\n{\nreturn true;\n}\n}\n}\nreturn false;\n},\nfunction(param, element){\nvar rangesStr = \"\";\nvar rangesLen = param.length;\nfor (var i=0; i<rangesLen; i++)\n{\nvar range = param[i];\nif ( typeof range === 'number' )\n{\nrangesStr += range;\n}\nelse\n{\nrangesStr += range[0] + \"~\" + range[1];\n}\nif ( i < rangesLen-1 )\n{\nrangesStr += \",\";\n}\n}\nreturn $.validator.format(\"Please enter a value in the ranges of {0}. \", rangesStr);\n}\n);\njQuery.validator.addMethod(\n\"integer\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn /^-?\\d+$/.test(value);\n},\n\"Please enter an integer. \"\n);\njQuery.validator.addMethod(\n\"even\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar mod = (parseInt(value))%2;\nif ( mod != 0)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please input an even number. \"\n);\njQuery.validator.addMethod(\n\"concurrence\",\nfunction(value, element, param)\n{\nif (1 > param.length)\n{\nreturn true;\n}\nvar obj = get_element_obj($(element), param[0]);\nif (obj.is(\":hidden\"))\n{\nreturn true;\n}\nif (\"\" == value && \"\" == obj.val())\n{\nreturn true;\n}\nif (\"\" != value && \"\" != obj.val())\n{\nreturn true;\n}\nreturn false;\n},\n\"Please input valid prefix. \"\n);\nfunction get_element_obj(obj, id)\n{\nvar instTplt = obj.closest(\"[id^=template_]\");\nvar elementID = obj.attr(\"id\");\nvar arr = elementID.split(':');\nvar strId = id;\nif (arr.length > 1)\n{\nvar exNum = arr[arr.length-1];\nstrId = id + \":\" + exNum;\n}\nreturn $(\"[id^='\"+strId+\"']\", instTplt);\n};\nfunction test_greatThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value greater than \\\"{0}\\\". \" : \"Please enter a value greater than the former. \" ,\n\"2\" : param[2].separate ? \"Please enter a value not less than \\\"{0}\\\". \" : \"Please enter a value not less than the former. \" ,\n\"3\" : param[2].separate ? \"Please ensure the difference with the latter not greater than {1}. \" : \"Please ensure the difference with the former not greater than {1}. \"\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) >= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) > Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(value) - Number(tmpvalue) <= Number(param[2].discrepantMode);\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nobj.parent().next().children().hide();\nreturn true;\n}\n};\nfunction test_lessThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value less than \\\"{0}\\\". \" : \"Please enter a value less than the latter. \" ,\n\"2\" : param[2].separate ? \"Please enter a value not greater than \\\"{0}\\\". \" : \"Please enter a value not greater than the latter. \" ,\n\"3\" : param[2].separate ? \"Please ensure the difference with the former not greater than {1}. \" : \"Please ensure the difference with the latter not greater than {1}. \"\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) <= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) < Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(tmpvalue) - Number(value) <= Number(param[2].discrepantMode)\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nobj.parent().next().children().hide();\nreturn true;\n}\n};\njQuery.validator.addMethod(\n\"extremumRange\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (2 > param.length)\n{\nreturn true;\n}\nvar obj = get_element_obj($(element), param[1]);\nif (3 > param.length)\n{\nparam[2] = {};\n}\nparam[2][\"idtext\"] = obj.parent().prev().text();\nif (obj.is(\":hidden\") || \"\" == obj.val())\n{\nreturn true;\n}\nvar selectMode = {\n\"greatThan\" : test_greatThan,\n\"lessThan\" : test_lessThan\n};\nreturn selectMode[param[0]](obj, value, param);\n},\nfunction(param,element)\n{\nvar selectMode = {\n\"greatThan\" : test_greatThan,\n\"lessThan\" : test_lessThan\n};\nreturn selectMode[param[0]](\"\", \"\", param, \"errstring\");\n}\n);\nfunction range_greatThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value greater than \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Please enter a value greater than the former. \" : \"Please enter a value greater than the latter.\" ),\n\"2\" : param[2].separate ? \"Please enter a value not less than \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Please enter a value not less than the former. \" : \"Please enter a value not less than the latter. \" ) ,\n\"3\" : param[2].separate ? \"Please ensure the difference with \\\"{0}\\\" not greater than {1}. \" : ( param[2].objPosition ==\"first\" ? \"Please ensure the difference with the former not greater than {1}. \" : \"Please ensure the difference with the latter not greater than {1}. \")\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nobj.parent().next().children().hide();\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) >= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) > Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(value) - Number(tmpvalue) <= Number(param[2].discrepantMode);\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nreturn true;\n}\n};\nfunction range_lessThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value less than \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Please enter a value less than the former. \" : \"Please enter a value less than the latter. \" ),\n\"2\" : param[2].separate ? \"Please enter a value not greater than \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Please enter a value not greater than the former.\" : \"Please enter a value not greater than the latter. \" ),\n\"3\" : param[2].separate ? \"Please ensure the difference with \\\"{0}\\\" not greater than {1}. \" : ( param[2].objPosition == \"first\" ? \"Please ensure the difference with the former not greater than {1}. \" : \"Please ensure the difference with the latter not greater than {1}. \" )\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nobj.parent().next().children().hide();\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) <= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) < Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(tmpvalue) - Number(value) <= Number(param[2].discrepantMode)\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nreturn true;\n}\n};\njQuery.validator.addMethod(\n\"compareRange\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (2 > param.length)\n{\nreturn true;\n}\nvar obj = get_element_obj($(element), param[1]);\nif (3 > param.length)\n{\nparam[2] = {};\n}\nparam[2][\"idtext\"] = obj.parent().prev().text();\nvar selectMode = {\n\"greatThan\" : range_greatThan,\n\"lessThan\" : range_lessThan\n};\nreturn selectMode[param[0]](obj, value, param);\n},\nfunction(param,element)\n{\nvar selectMode = {\n\"greatThan\" : range_greatThan,\n\"lessThan\" : range_lessThan\n};\nreturn selectMode[param[0]](\"\", \"\", param, \"errstring\");\n}\n);\njQuery.validator.addMethod(\n\"banValue\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar paramLen = param.length;\nfor (var i = 0;i < paramLen;i++)\n{\nvar range = param[i];\nif (typeof range === 'string' )\n{\nif (value == range)\n{\nreturn false;\n}\n}\nelse\n{\nif (value >= range[0] && value <= range[1])\n{\nreturn false;\n}\n}\n}\nreturn true;\n},\nfunction(param, element){\nvar rangesStr = \"\";\nvar paramLen = param.length;\nfor (var i=0; i<paramLen; i++)\n{\nvar paraVal = param[i];\nif ( \"object\" === typeof paraVal )\n{\nrangesStr += paraVal[0] + \"~\" + paraVal[1];\n}\nelse\n{\nrangesStr += paraVal;\n}\nif ( i < paramLen-1 )\n{\nrangesStr += \", \";\n}\n}\nif (paramLen > 1)\n{\nreturn $.validator.format(\"Please ensure the input NOT in the ranges of \\\"{0}\\\". \", rangesStr);\n}\nelse\n{\nreturn $.validator.format(\"Please ensure the input NOT equal to \\\"{0}\\\". \", rangesStr);\n}\n}\n);\njQuery.validator.addClassRules({\nipSepCheck: {\n\"required\": true,\n\"integer\": true,\n\"range\":[0,255]\n},\nmacSepCheck:{\n\"required\": true,\n\"HEX\": true,\n\"fixedlength\": 2\n}\n});\nfunction compareIPv4(firstIP, secondIP)\n{\nvar fIP;\nvar sIP;\nfIP = firstIP.split(\".\");\nsIP = secondIP.split(\".\");\nfor (var i = 0; i < 4; i++)\n{\nif (fIP[i] != \"\" && sIP[i] != \"\")\n{\nfIP[i] = parseInt(fIP[i],10);\nsIP[i] = parseInt(sIP[i],10);\n}\nif (fIP[i] > sIP[i])\n{\nreturn 1;\n}\nelse if (fIP[i] < sIP[i])\n{\nreturn -1;\n}\n}\nreturn 0;\n}\nfunction checkWholeIPv4(k, v, ipValue)\n{\nvar vLen = v.length;\nvar retMsg = \"\";\nfor (var j = 0; j < vLen; j++)\n{\nif (retMsg != \"\")\n{\nretMsg += \", \";\n}\nvar range = v[j];\nif (typeof range === 'string')\n{\nretMsg += range;\n}\nelse\n{\nretMsg += range[0]+\" ~ \"+range[1];\n}\n}\nif (k == \"banValue\")\n{\nretMsg = \" is NOT allowed to input the following value(s): {0}. \".format(retMsg);\nfor (var i = 0; i < vLen; i++)\n{\nvar range = v[i];\nif (typeof range === 'string')\n{\nif (ipValue == range)\n{\nreturn [false, k, retMsg];\n}\n}\nelse\n{\nif (\"-1\" != compareIPv4(ipValue, range[0]) &&\n\"1\" != compareIPv4(ipValue, range[1]))\n{\nreturn [false, k, retMsg];\n}\n}\n}\n}\nelse if (k == \"allowRange\")\n{\nretMsg = \"'s input is invalid. Please ensure the input is in the following range: {0}. \".format(retMsg);\nfor (var i = 0; i < vLen; i++)\n{\nvar range = v[i];\nif (\"-1\" != compareIPv4(ipValue, range[0]) &&\n\"1\" != compareIPv4(ipValue, range[1]))\n{\nreturn [true, \"\", \"\"];\n}\n}\nreturn [false, k, retMsg];\n}\nelse if (k == \"notLessThan\")\n{\n}\nelse if (k == \"notMoreThan\")\n{\n}\nelse\n{\n}\nreturn [true, \"\", \"\"];\n}\nfunction checkWholeMac(k, v, macValue)\n{\nvar vLen = v.length;\nvar retMsg = \"\";\nfor (var j = 0; j < vLen; j++)\n{\nif (retMsg != \"\")\n{\nretMsg += \", \";\n}\nvar range = v[j];\nif (typeof range === 'string')\n{\nretMsg += range;\n}\nelse\n{\nretMsg += range[0]+\" ~ \"+range[1];\n}\n}\nif (k == \"banValue\")\n{\nretMsg = \" is NOT allowed to input the following value(s): {0}. \".format(retMsg);\nfor (var i = 0; i < vLen; i++)\n{\nvar range = v[i];\nif (typeof range === 'string')\n{\nif (macValue.toLowerCase() == range.toLowerCase())\n{\nreturn [false, k, retMsg];\n}\n}\n}\n}\nelse\n{\n}\nreturn [true, \"\", \"\"];\n}\nfunction getMsgofWholeMACIPCheck(checkRetArray, ruleObj, checkValue, checkParaName)\n{\nvar errMsg = \"\";\nswitch (checkRetArray[1])\n{\ncase \"banValue\":\n{\nif (ruleObj.messages.banValue != undefined)\n{\nerrMsg = ruleObj.messages.banValue;\n}\nelse\n{\nif (checkParaName != \"\")\n{\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse\n{\nerrMsg = \"Current operation is invalid, please check configuration parameters. \"+\"[\"+\"Error Input: \"+checkValue+\"]\";\n}\n}\nbreak;\n}\ncase \"allowRange\":\n{\nif (ruleObj.messages.allowRange != undefined)\n{\nerrMsg = ruleObj.messages.allowRange;\n}\nelse\n{\nif (checkParaName != \"\")\n{\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse\n{\nerrMsg = \"Current operation is invalid, please check configuration parameters. \"+\"[\"+\"Error Input: \"+checkValue+\"]\";\n}\n}\nbreak;\n}\ndefault:\n{\nerrMsg = \"error msg undefined!\"\n}\n}\nreturn errMsg;\n}\njQuery.validator.addMethod(\n\"utf8LengthRange\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar valLength = value.length;\nvar param1 = param[0];\nvar param2 = param[1];\nif (param2 < 3)\n{\nalert(\"utf8LengthRange is invalid![\"+param2+\"<\"+3 +\"]\");\n}\nelse\n{\nparam1 = Math.ceil(parseInt(param[0])/ 3);\nparam2 = Math.floor(parseInt(param[1]) / 3);\nif (param1 < param2)\n{\nif (valLength >= param1 && valLength <= param2 )\n{\nreturn true;\n}\n}\nelse if (param1 == param2)\n{\nif (valLength == param2)\n{\nreturn true;\n}\n}\nelse\n{\nalert(\"utf8LengthRange [\"+param1+\",\"+param2+\"] is invalid!\");\n}\n}\nreturn false;\n},\nfunction(param, element){\nvar lengthStr = \"\";\nvar param1 = param[0];\nvar param2 = param[1];\nif (param2 < 3)\n{\nlengthStr = \" Range Error!!!!!![param2<WEB_UTF8_REALBYTE]\";\n}\nelse\n{\nparam1 = Math.ceil(parseInt(param[0])/ 3);\nparam2 = Math.floor(parseInt(param[1]) / 3);\nif (param1 < param2)\n{\nlengthStr = param1 + \" ~ \" + param2;\n}\nelse if (param1 == param2)\n{\nlengthStr = param2;\n}\nelse\n{\nlengthStr = \" Range Error!!!!!![\"+param1+\",\"+param2+\"]\";\n}\n}\nreturn $.validator.format(\"Please enter a value with {0} characters.\", lengthStr);\n}\n);\njQuery.validator.addMethod(\n\"differentWith\",\nfunction(value, element, param) {\nvar target = $(param);\nif (this.settings.onfocusout) {\ntarget.unbind(\".validate-differentWith\").bind(\"blur.validate-differentWith\", function() {\n$(element).valid();\n});\n}\nreturn value != target.val();\n},\nfunction(param, element){\nvar t = $(param).closest(\"[id^=template_]\");\nvar id = $(param).attr(\"id\");\nvar labelObj = $(\"label[for='\"+id+\"']\",t);\nvar label = labelObj.text();\nif($(element).is(\"select\"))\n{\nreturn $.validator.format(\"Please select an option different with \\\"{0}\\\".\", label);\n}\nelse\n{\nreturn $.validator.format(\"Please enter a value different with \\\"{0}\\\".\", label);\n}\n}\n);\nfunction checkTimeHMS(timestr) {\nvar re = /^([0-1]{1}[0-9]{1}|[2]{1}[0-3]{1}):[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/;\nif (re.test(timestr) == true) {\nreturn true;\n}\nreturn false;\n}\njQuery.validator.addMethod(\n\"checkTimeHMS\",\nfunction (value, element, params) {\nif (this.optional(element)) {\nreturn \"dependency-mismatch\";\n}\nif (checkTimeHMS(value) == true) {\nreturn true;\n}\nreturn false;\n},\n\"Please enter the correct time format like HH:MM:SS.\"\n);\nfunction get_element_obj(obj, id) {\nvar instTplt = obj.closest(\"[id^=template_]\");\nvar elementID = obj.attr(\"id\");\nvar arr = elementID.split(':');\nvar strId = id;\nif (arr.length > 1) {\nvar exNum = arr[arr.length - 1];\nstrId = id + \":\" + exNum;\n}\nreturn $(\"[id^='\" + strId + \"']\", instTplt);\n};\nfunction time_earlierThan(obj, value, param, type) {\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] < tmpvaluearr[0]) {\nreturn true;\n} else {\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] < tmpvaluearr[1]) {\nreturn true;\n} else {\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] < tmpvaluearr[2]) {\nreturn true;\n}\n}\nreturn false;\n}\n};\nfunction time_laterThan(obj, value, param, type) {\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] > tmpvaluearr[0]) {\nreturn true;\n} else {\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] > tmpvaluearr[1]) {\nreturn true;\n} else {\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] > tmpvaluearr[2]) {\nreturn true;\n}\n}\nreturn false;\n}\n};\njQuery.validator.addMethod(\n\"timeComparison\",\nfunction (value, element, param) {\nif (this.optional(element)) {\nreturn \"dependency-mismatch\";\n}\nif (2 > param.length) {\nreturn true;\n}\nvar obj = get_element_obj($(element), param[1]);\nif (3 > param.length) {\nparam[2] = {};\n}\nparam[2][\"idtext\"] = obj.parent().prev().text();\nif (obj.is(\":hidden\") || \"\" == obj.val()) {\nreturn true;\n}\nvar selectMode = {\n\"laterThan\": time_laterThan,\n\"earlierThan\": time_earlierThan\n};\nreturn selectMode[param[0]](obj, value, param);\n},\n\"Start time must be earlier than end time.\"\n);\nfunction randomNum(num)\n{\nvar t='';\nfor(var i=0;i<num;i++)\n{\nt+=Math.floor(Math.random()*10);\n}\nreturn t;\n}\nfunction encodeKey(key, iv)\n{\nvar pubKey = \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAodPTerkUVCYmv28SOfRV\\n7UKHVujx/HjCUTAWy9l0L5H0JV0LfDudTdMNPEKloZsNam3YrtEnq6jqMLJV4ASb\\n1d6axmIgJ636wyTUS99gj4BKs6bQSTUSE8h/QkUYv4gEIt3saMS0pZpd90y6+B/9\\nhZxZE/RKU8e+zgRqp1/762TB7vcjtjOwXRDEL0w71Jk9i8VUQ59MR1Uj5E8X3WIc\\nfYSK5RWBkMhfaTRM6ozS9Bqhi40xlSOb3GBxCmliCifOJNLoO9kFoWgAIw5hkSIb\\nGH+4Csop9Uy8VvmmB+B3ubFLN35qIa5OG5+SDXn4L7FeAA5lRiGxRi8tsWrtew8w\\nnwIDAQAB\\n-----END PUBLIC KEY-----\";\nvar str = key + \"+\" + iv;\nvar encrypt = new JSEncrypt();\nencrypt.setPublicKey(pubKey);\nvar encrypted = encrypt.encrypt(str);\nvar encryptkey = encrypted.toString();\nif(encryptkey.length == 0 || encryptkey == \"false\")\n{\nencryptkey = \"\";\n}\nreturn encryptkey;\n}\nfunction encodePara(data, key, iv)\n{\nvar key = CryptoJS.SHA256(key);\nvar iv = CryptoJS.SHA256(iv);\nvar encrypted =CryptoJS.AES.encrypt(data,key,\n{\niv:iv,\nmode:CryptoJS.mode.CBC,\npadding:CryptoJS.pad.ZeroPadding\n});\nreturn encrypted.toString();\n}\nfunction decodePara(encrypted, key, iv)\n{\nif (encrypted == \"\")\n{\nreturn \"\";\n}\ntry {\nvar key = CryptoJS.SHA256(key);\nvar iv = CryptoJS.SHA256(iv);\nvar decrypted = CryptoJS.AES.decrypt(encrypted, key, {\niv: iv,\nmode: CryptoJS.mode.CBC,\npadding: CryptoJS.pad.ZeroPadding\n});\nreturn decrypted.toString(CryptoJS.enc.Utf8);\n} catch (e) {\nconsoleLog(\"secure_common: decode error!!\")\nconsoleLog(e);\nreturn encrypted;\n}\n}\n\nvar menuTreeJSON = [{\"id\":\"homePage\",\"name\":\"Home\",\"area\":[{\"area\":\"home_t.lp\"}]},{\"id\":\"internet\",\"name\":\"Internet\"},{\"id\":\"localnet\",\"name\":\"Local Network\"},{\"id\":\"mgrAndDiag\",\"name\":\"Management & Diagnosis\"}];\nvar menuTreeObj = new MenuTreeClass(menuTreeJSON);\nvar _sessionTmpToken = \"\";\nvar preLoadImg = [];\npreLoadImg[0] = \"/img/nv_s.gif\";\npreLoadImg[1] = \"/img/nv_left.gif\";\npreLoadImg[2] = \"/img/nv_right.gif\";\npreLoadImg[3] = \"/img/nv_middle.gif\";\npreLoadImg[4] = \"/img/waiting.gif\";\npreLoadImg[5] = \"/img/info_m.png\";\npreLoadImg[6] = \"/img/waiting_w.gif\";\nfunction preload(Img)\n{\nvar imgTmp = [];\nfor (var i=0; i<Img.length; i++)\n{\nimgTmp[i] = new Image();\nimgTmp[i].src = Img[i];\n}\n}\npreload(preLoadImg);\n</script>\n</head>\n<body>\n<script type=\"text/javascript\">\nif(top != self)\n{\ndocument.getElementsByTagName(\"body\")[0].style.display = 'none';\ntop.location = self.location;\n}\nfunction LogOff()\n{\nshowWaitTip(true);\n$.post( \"/?_type=loginData&_tag=logout_entry\", {IF_LogOff:1, _sessionTOKEN:_sessionTmpToken}, undefined, \"json\" )\n.done(function( data ) {\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\nelse\n{\nalert(\"This page has expired, please refresh and try again. \");\nshowWaitTip(false);\n}\n});\n}\n</script>\n<div id=\"blackMask\" class=\"black_overlay\" style=\"display:none;\"></div>\n<div id=\"tipLayer\" class=\"white_content\">\n<div id=\"confirmLayer\" style=\"display:none;\">\n<div id=\"confirmMsg\">\n<p>are you sure?</p>\n</div>\n<div id=\"waitingImgArea\" style=\"display:none;\">\n</div>\n<div id=\"confirmBtnArea\" style=\"display:none;\">\n<input type=\"button\" class=\"button\" id=\"confirmCancel\" value=\"Cancel\" />\n<input type=\"button\" class=\"button\" id=\"confirmOK\" value=\"OK\" />\n<input type=\"button\" class=\"button\" id=\"confirmStop\" value=\"Stop\" />\n</div>\n</div>\n</div>\n<div id=\"page_container\">\n<div class=\"white_content_security\">\n<div class=\"sercurityNotice\" >\n<div class=\"sercurityNoticeMsg\">\n<ul>\n<li id=\"LastIP\"></li>\n<li id=\"LastCurrentTime\"></li>\n</ul>\n</div>\n<div id=\"confirmBtnArea\">\n<input type=\"button\" class=\"button\" id=\"sercurityNoticeOK\" value=\"OK\">\n</div>\n</div>\n</div>\n<div id=\"page_header\">\n<div id=\"banner\">\n<div id=\"logo\" class=\"logo\"></div>\n<div class=\"timeArea\" id=\"timeArea\" style=\"display:none;\">\nCurrent Time: <span id=\"_DevCurrTime\">Loading...</span>\n</div>\n<div id=\"banner_switchArea\">\n<div id=\"logOff\" class=\"emColor clickable\" onclick=\"LogOff()\">\n<div id=\"LogOffLnk\"> Logout</div>\n<div id=\"logUser\" class=\"logUser\" title=\"\">\n\n</div>\n</div>\n</div>\n</div>\n<div id=\"mainNavigator\">\n<div id=\"mn_first\"></div>\n<div id=\"mn_li\"></div>\n<div id=\"mn_last\"></div>\n</div>\n</div>\n<div id=\"page_content\">\n\n<script type=\"text/javascript\">\n\nvar loginLockInterval = null;\nvar editableInputs;\nvar dftFcsTaget;\nvar IsAllowedSubmit = true;\nfunction createTimeCountDownMessage(lockingTime, promptMsg)\n{\nif((promptMsg != null && promptMsg.length > 0) || lockingTime > 0 )\n{\n\nvar timeOutHint = promptMsg.concat(\"Please retry after {1} seconds. \");\n$(\"#login_error_waittime\").text(timeOutHint.format(3,lockingTime)).show();\n}\nelse\n{\n$(\"#login_error_waittime\").hide();\n}\n}\nfunction timer(seconds, promptMsg) {\nwindow.setTimeout(function() {\neditableInputs.removeAttr(\"disabled\");\ndftFcsTaget.focus();\n$(\"#LoginId\").removeAttr(\"disabled\").removeClass(\"disableBtn\");\n$(\"#login_error\").hide();\n$(\"#login_error_waittime\").hide().text(\"\");\nif (loginLockInterval) {\nwindow.clearInterval(loginLockInterval);\nconsoleLog(\"timeout to clearInterval!!!\");\n}\n}, seconds * 1000);\nloginLockInterval = window.setInterval((function(sec, msg){\nreturn function () {\nif (sec > 0){\nsec--;\n}\ncreateTimeCountDownMessage(sec, msg);\n}\n})(seconds, promptMsg), 1000);\n}\nfunction showTimeCountDown(lockingTime, promptMsg)\n{\nif(lockingTime > 0)\n{\ncreateTimeCountDownMessage(lockingTime, promptMsg);\n$(\"#LoginId\").attr(\"disabled\",\"true\").addClass(\"disableBtn\");\neditableInputs.attr(\"disabled\",\"true\");\ntimer(lockingTime, promptMsg);\n}\n}\nfunction DisplayLoginErrorTip(loginData)\n{\nvar loginErrMsg = loginData.loginErrMsg;\nvar lockingTime = loginData.lockingTime;\nvar promptMsg = loginData.promptMsg;\nlockingTime = parseInt(lockingTime);\nif ( IsBrowserSupportCookie() == false )\n{\n$(\"#login_error\").show();\n$(\"#login_error_span\").text(\"Your browser's cookie functionality is turned off, please turn it on before login.\");\n}\nelse if(loginErrMsg.length > 0 || promptMsg.length > 0)\n{\n$(\"#login_error\").show();\nif(loginErrMsg.length > 0)\n{\n$(\"#login_error_span\").text(loginErrMsg).show();\n}\nelse\n{\n$(\"#login_error_span\").hide();\n}\nif (lockingTime > 0 || promptMsg.length > 0)\n{\nshowTimeCountDown(lockingTime, promptMsg);\n}\n}\nelse\n{\n$(\"#login_error\").hide();\n}\n}\nfunction g_loginToken(xml)\n{\nvar xmlObj = $(xml).text();\nvar Password =$(\"#Frm_Password\").val();\nvar SHA256Password =sha256(Password+xmlObj);\nvar postData = {};\npostData[\"Password\"] = SHA256Password;\npostData[\"Username\"] = $(\"#Frm_Username\").val();\npostData[\"_sessionTOKEN\"] = $(\"#_sessionTOKEN\").val();\npostData[\"action\"] = \"login\";\npostData[\"captcha\"] = $(\"#Frm_captchaCode\").val();\nPassword = undefined;\nSHA256Password = undefined;\n$.post( \"/?_type=loginData&_tag=login_entry\", postData, undefined, \"json\" )\n.done(function( data ) {\n$(\"#_sessionTOKEN\").val(data.sess_token);\nif ( data.login_need_refresh )\n{\ntop.location.href = top.location.href;\n}\nelse\n{\nDisplayLoginErrorTip(data);\n}\n});\npostData = undefined;\n}\nvar throttle = function (fn, delay, atleast) {\nvar timer = null, previous = null;\nreturn function () {\nvar context = this, args = arguments, now = +new Date();\nif (!previous) {previous = now;}\nif (now - previous > atleast) {\nfn.apply(context, args);\nprevious = now;\n} else {\nclearTimeout(timer);\ntimer = setTimeout(function() {\nfn.apply(context, args);\n}, delay);\n}\n}\n};\nfunction ElementCheck(obj, errormsg)\n{\nvar errorobj = obj.parents(\".row\").find(\".errorLabelWraper\");\nerrorobj.remove();\nobj.removeClass(\"error\");\nif (obj.attr(\"type\") == \"text\")\n{\nif (obj.val() == \"\")\n{\n$(this).addClass(\"error\");\nIsAllowedSubmit = false;\nShowError(obj, errormsg);\n}\nelse\n{\nIsAllowedSubmit = true;\n}\n}\nif (obj.attr(\"type\") == \"checkbox\")\n{\nif (obj.is(\":checked\"))\n{\nIsAllowedSubmit = true;\n}\nelse\n{\n$(this).addClass(\"error\");\nIsAllowedSubmit = false;\nShowError(obj, errormsg);\n}\n}\n}\nfunction ShowError(element, errormsg) {\nvar rowObj = element.closest(\".row\");\nif ( rowObj.length == 0 )\n{\nconsoleLog(\"element id=[\"+element.attr(\"id\")+\"] is not in row div.\");\nreturn ;\n}\nvar id = element.attr(\"id\");\nvar errorHTML = \"<label for='\" + id + \" generated='true' class='error'>\" + errormsg + \" </label>\";\nvar error = $(errorHTML);\nvar tipHTML = \"<div class=\\\"errorLabelWraper\\\"></div>\";\nvar tipObj = $(tipHTML);\nerror.appendTo(tipObj);\nvar rowWidth = rowObj.width();\nvar usedWidth = 0;\nvar rightObj = undefined;\nrowObj.children().each(function(){\nif (!($(this).hasClass(\"_LuQUID_AccessDeviceList\")||\n$(this).hasClass(\"clear\"))){\nusedWidth += $(this).outerWidth(true);\n}\nif ($(this).hasClass(\"right\")){\nrightObj = $(this);\n}\n});\nvar errWidth = rowWidth - usedWidth;\ntipObj.width(errWidth-5-23);\nif (rightObj != undefined)\n{\ntipObj.insertAfter(rightObj);\n}\nelse\n{\ntipObj.appendTo(rowObj);\n}\n}\n$(document).ready(function(){\nvar loginForm = $(\".loginInstCfgArea\");\neditableInputs = $(\"input\",loginForm).not(\":disabled\").not(\"[readonly=readonly]\");\nnew ShowHidePwdClass(\"Frm_Password\", \"loginWrapper\", \"OBJ_USERINFO_ID\");\n$(\"#captchaImg\",loginForm).click(function(){\ngetCaptcha($(this));\n});\n$(\"#Frm_captchaCode\",loginForm).focus(function(){\nvar imgTemp = $(\"#captchaImg\",loginForm);\nif(!imgTemp.hasClass(\"__CheckVaildImgShow\")){\nimgTemp.click();\n}\n});\n$.getJSON(\"/?_type=loginData&_tag=login_entry\")\n.done(function( json ) {\n$(\"#_sessionTOKEN\").val(json.sess_token);\nDisplayLoginErrorTip(json);\n})\n.fail(function( jqxhr, textStatus, error ) {\nvar err = textStatus + \", \" + error;\nconsoleLog( \"Request Failed: \" + err );\n});\neditableInputs.each(function(){\nif ($(this).val() == \"\") {\n$(this).focus();\ndftFcsTaget = $(this);\nreturn false;\n}\n});\n$(\"#LoginId\").bind(\"click\", throttle(function(){\nif ( true == IsAllowedSubmit )\n{\nvar loadAllowAddr = \"/?_type=loginData&_tag=login_token\";\n$(this).dataTransfer(loadAllowAddr, \"GET\", g_loginToken, undefined, false);\n}\n}, 300, 300));\nshowWaitTip(false);\neditableInputs.keydown(function(event){\nif(event.keyCode==13){\nevent.preventDefault();\nevent.stopPropagation();\n$(\"#LoginId\").click();\n}\n});\n});\nString.prototype.format = function(args) {\nvar result = this;\nif (arguments.length > 0)\n{\nfor (var i = 0; i < arguments.length; i++)\n{\nif (arguments[i] != undefined) {\nvar reg = new RegExp(\"({[\" + i + \"]})\", \"g\");\nresult = result.replace(reg, arguments[i]);\n}\n}\n}\nreturn result;\n};\nfunction showOrHideRowDiv(action, RowDiv)\n{\nvar subWidget = RowDiv.find(\"*[id!='']\")\nif ( action == \"show\" )\n{\nRowDiv.showIt(true);\nsubWidget.removeClass(\"PostIgnore\");\n}\nelse\n{\nRowDiv.showIt(false);\nsubWidget.addClass(\"PostIgnore\");\n}\n}\nfunction colonStripping(str)\n{\nvar colonLocation = str.indexOf(\":\");\nif ( colonLocation != -1 )\n{\nreturn str.substring(0, colonLocation);\n}\nreturn str;\n}\nfunction colonStrippingLast(str)\n{\nvar colonLocation = str.lastIndexOf(\":\");\nif ( colonLocation != -1 )\n{\nreturn str.substring(0, colonLocation);\n}\nreturn str;\n}\njQuery.fn.showIt = function(show) {\nif (show)\n{\n$(this).css(\"display\", \"\");\n}\nelse\n{\n$(this).css(\"display\", \"none\");\n}\n};\nfunction GetSuffixedIDorName(oldValue, suffix, splitter, forParaName)\n{\nvar newValue = \"\";\nif ( forParaName == true )\n{\noldValue = oldValue.split(\":\");\noldValue[0] += splitter + suffix;\nnewValue = oldValue.join(\":\");\n}\nelse\n{\nnewValue = oldValue + splitter + suffix;\n}\nreturn newValue;\n}\njQuery.fn.cloneWithSuffix = function(suffix, splitter, forParaName) {\nvar source = $(this);\nvar clone = source.clone(true);\nclone.attr(\"id\", clone.attr(\"id\")+\"_\"+suffix);\nif ( undefined == splitter )\n{\nsplitter = \":\";\n}\nif ( undefined == forParaName )\n{\nforParaName = false;\n}\nvar idElems = clone.find(\"*[id!='']\");\nidElems.each(function(){\nvar idEle = $(this);\nvar oldID = idEle.attr(\"id\");\nif (oldID != undefined)\n{\nvar newID = GetSuffixedIDorName(oldID, suffix, splitter, forParaName);\nidEle.attr(\"id\", newID);\n}\nvar oldName = idEle.attr(\"name\");\nif (oldName != undefined)\n{\nvar newName = GetSuffixedIDorName(oldName, suffix, splitter, forParaName);\nidEle.attr(\"name\", newName);\n}\n});\nlabelForElems = clone.find(\"label\");\nlabelForElems.each(function(){\nvar labelForEle = $(this);\nvar oldFor = labelForEle.attr(\"for\");\nif (oldFor != undefined)\n{\nvar newFor = GetSuffixedIDorName(oldFor, suffix, splitter, forParaName);\nlabelForEle.attr(\"for\", newFor);\n}\n});\nclone.trigger(\"applyPromptCheckJSON\", [clone]);\n$.publish(\"modify_promptcheck\",[clone]);\nreturn clone;\n};\nfunction initial_sceneTip()\n{\n$(\".sceneTip_container\").each(function(){\n$(this).hide();\n});\n$(\".sceneTipLink\").each(function(){\nvar sceneTipLinkContent = $(this).children();\nsceneTipLinkContent.unbind( \"click\" );\nsceneTipLinkContent.click(function(event){\nevent.preventDefault();\n$(this).parent().next().slideToggle(\"normal\");\n});\n});\n$(\".sceneTip_close\").each(function(){\nvar sceneTip_closeLink = $(this).children();\nsceneTip_closeLink.unbind( \"click\" );\nsceneTip_closeLink.click(function(){\n$(this).parent().parent().slideUp(\"normal\");\n});\n});\n}\nfunction succHintShow(template)\n{\nvar PostFeedbackOBJ = $(\".succHint\",template);\nPostFeedbackOBJ.fadeIn(1000);\nwindow.setTimeout(\nfunction() {\nPostFeedbackOBJ.fadeOut(1000);\nPostFeedbackOBJ.hide();\n},\n2000\n);\n}\njQuery.fn.dataTransfer = function(URL, transferType, success_func, error_func, IfShowWaitTip, async, dataType){\nif ( !URL || URL == \"\" )\n{\nconsoleLog(\"[dataTransfer]URL is illegal!\");\nreturn;\n}\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nvar asyncTemp = async;\nif ( asyncTemp == undefined )\n{\nasyncTemp = true;\n}\nif ( !dataType )\n{\nvar dataType = \"xml\";\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\nvar Head = $(this);\n$.ajax({\nurl:URL,\ntype: transferType,\ndataType: dataType,\ntimeout: 30000,\nasync: asyncTemp,\ncache:false,\nerror: function(){\nif ($.isFunction(error_func))\n{\nerror_func();\n}\nelse\n{\nif (Head != undefined)\n{\nvar ajaxTransferFailHint = \"The server is not available now. Please refresh page to reload. \";\nvar externErrorHint = $(\".externErrorHint\",Head);\nif ( externErrorHint != undefined )\n{\n$(\"span\",externErrorHint).text(ajaxTransferFailHint);\nexternErrorHint.showIt(true);\n}\n}\nshowWaitTip(false);\n}\n},\nsuccess: function(xml){\nsuccess_func(xml);\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(false);\n}\n}\n});\n};\nfunction HTMLEnCode(str)\n{\nvar s = \"\";\nif (typeof(str) != \"string\")\n{\nreturn str;\n}\nif(str.length == 0)\n{\nreturn \"\";\n}\ns = str.replace(/&/g, \"&\");\ns = s.replace(/</g, \"<\");\ns = s.replace(/>/g, \">\");\ns = s.replace(/ /g, \" \");\ns = s.replace(/\\'/g, \"'\");\ns = s.replace(/\\\"/g, \""\");\nreturn s;\n}\nfunction addSlash(srcStr)\n{\nvar str = \"\";\nvar ch = \"\";\nif (typeof(srcStr) != \"string\")\n{\nreturn srcStr;\n}\nfor(var i = 0; i < srcStr.length; i++)\n{\nch = srcStr.substr(i, 1);\nif( \"\\\\\" == ch )\n{\nch = \"\\\\\\\\\";\n}\nelse if( \"\\'\" == ch )\n{\nch = \"\\\\\\'\";\n}\nelse if( \"\\\"\" == ch )\n{\nch = \"\\\\\\\"\";\n}\nstr = str + ch;\n}\nreturn str;\n}\nfunction SetSelectValue(SelectElem, data)\n{\n$(\"option[class='_optExpHandle']\", SelectElem).remove();\nvar findOption = 0;\n$(\"option\", SelectElem).removeAttr(\"selected\");\n$(\"option\", SelectElem).each(function(){\nvar OptionObj = $(this);\nif ( OptionObj.val() == data )\n{\nfindOption = 1\nSelectElem.val(data);\nreturn false;\n}\n});\nif ( findOption == 0 )\n{\nSelectElem.append(\"<option value='\"+ HTMLEnCode(data)\n+ \"' title='--Unknown--' class='_optExpHandle'>\"\n+ \"--Unknown--\" + \"</option>\");\nSelectElem.val(addSlash(data));\n}\n}\njQuery.fn.fillDataByType = function(data){\nvar Elems = $(this);\nif (Elems.is(\"input\"))\n{\nswitch (Elems.attr(\"type\"))\n{\ncase \"hidden\":\n{\nElems.val(data);\nif (Elems.attr(\"_LuQUID_splitMACID\") != undefined)\n{\nvar splitMACID = Elems.attr(\"_LuQUID_splitMACID\");\nElems.FillIPorMacDataBySplit(splitMACID, \":\", 6);\n}\nelse if (Elems.attr(\"_LuQUID_splitIPID\") != undefined)\n{\nvar splitIPID = Elems.attr(\"_LuQUID_splitIPID\");\nElems.FillIPorMacDataBySplit(splitIPID, \".\", 4);\n}\nbreak;\n}\ncase \"text\":\ncase \"password\":\n{\nif( Elems.attr(\"encode\") == \"1\")\n{\nvar key = _sessionTmpToken;\nvar iv = key.split(\"\").reverse().join(\"\");\ndata = decodePara(data,key,iv);\n}\nElems.val(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\nbreak;\n}\ncase \"checkbox\":\n{\nif( 1 == data )\n{\nElems.prop(\"checked\", true);\n}\nelse\n{\nElems.prop(\"checked\", false);\n}\nElems.val(data);\nbreak;\n}\ndefault:\n{\nbreak;\n}\n}\n}\nelse if (Elems.is(\"span\"))\n{\nElems.text(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\n}\nelse if (Elems.is(\"a\"))\n{\nElems.text(data);\nElems.attr(\"href\",data);\n}\nelse if (Elems.is(\"select\"))\n{\nSetSelectValue(Elems, data);\n}\nelse if (Elems.is(\"textarea\"))\n{\nElems.val(data);\n}\nelse if (Elems.is(\"label\"))\n{\nElems.text(data);\n}\nelse if (Elems.is(\"div\"))\n{\nvar radioObj = $(\"input[type=radio]\", Elems);\nradioObj.each(function(){\nvar thisObj = $(this);\nif (thisObj.val() == data)\n{\nthisObj.prop(\"checked\", true);\n}\nelse\n{\nthisObj.prop(\"checked\", false);\n}\n});\n}\nelse if (Elems.is(\"td\"))\n{\nElems.text(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\n}\nelse\n{\n}\n};\njQuery.fn.fillDataByOBJID = function(xml, OBJIDs, Clone, suffix, splitter){\nif ( undefined == splitter )\n{\nsplitter = \":\";\n}\n$(xml).find(\"encode\").each(function(){\nvar encodePara= $(this).text().split(\",\");\nfor(var i in encodePara)\n{\n$(\"input[id^=\"+encodePara[i]+\"]\", Clone).attr(\"encode\",\"1\");\n}\n});\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJIDSplit = OBJID.split(\":\");\nvar OBJIDIndex = 0;\nvar isSplitterExist = 0;\nif ( OBJIDSplit.length == 2 )\n{\nOBJID = OBJIDSplit[0];\nOBJIDIndex = parseInt(OBJIDSplit[1]);\nisSplitterExist = 1;\n}\nvar OBJs = $(xml).find(OBJID);\nif ( OBJs.length == 0 )\n{\ncontinue;\n}\nvar OBJ;\nif ( OBJIDIndex < OBJs.length )\n{\nOBJ = OBJs.get(OBJIDIndex);\n}\nelse\n{\ncontinue;\n}\nvar instances;\nif ( 1 == isSplitterExist )\n{\ninstances = $(\"Instance\", OBJ);\n}\nelse\n{\ninstances = $(\"Instance\", OBJs);\n}\nif ( instances.length <= suffix\n|| suffix < 0 )\n{\nconsoleLog(\"suffix off normal upper!!\");\ncontinue;\n}\nvar InstOBJ = instances.eq(suffix);\nInstOBJ.find(\"ParaName\").each(function(){\nvar ParaName = $(this).text();\nvar ParaValue = $(this).next().text();\nvar Elems = $(\"[id^='\"+ParaName+splitter+\"']\", Clone);\nif ( Elems.length == 0 )\n{\nElems = $(\"[id='\"+ParaName+\"']\", Clone);\n}\nif ( Elems.length > 0 )\n{\nif ( Elems.length > 1 )\n{\nconsoleLog(\"this ele id is duplicate[\" +Elems.attr(\"id\")+ \"]\");\n}\nElems.fillDataByType(ParaValue);\n}\nelse\n{\nif ( \"_InstID\" != ParaName )\n{\nconsoleLog(\"XML ParaName(\"+ParaName+\") cannot map to HTML \"\n+ \"by fillDataByType, so it may be useless, \"\n+ \"web security require deleting it!\");\n}\n}\n});\n}\n$(\".SpecialPassword\", Clone).each(function(i){\n$(this).val(\"\t\t\t\t\t\t\");\n});\n};\njQuery.fn.InstantializeForTemplateBox = function(xml, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(xml).find(OBJID);\nif ( OBJs.length == 0 )\n{\ncontinue;\n}\nvar ruleTemplate = $(\"[id='\"+OBJID+\"']._LuQuid_TempalteBox\", container);\nif( ruleTemplate.length == 0 )\n{\ncontinue;\n}\n$(\"[id^='\"+OBJID+\"_']._LuQuid_TempalteBox\", container).remove();\nvar subWidget = ruleTemplate.find(\"*[id!='']\");\nsubWidget.removeClass(\"PostIgnore\");\nvar instances = $(\"Instance\", OBJs);\nvar ruleNum = instances.length;\nfor (var i=0; i<ruleNum; i++)\n{\nvar clone = ruleTemplate.cloneWithSuffix(i, \"_\", true);\nruleTemplate.before(clone);\nvar DataOBJID = [OBJID];\nclone.fillDataByOBJID(xml, DataOBJID, clone, i, \"_\");\nclone.showIt(true);\n}\n$(\"[id='\"+OBJID+\"._OBJ_InstNUM']\", container).val(ruleNum);\nvar templateInstID = $(\"[id='\"+OBJID+\"._OBJ_InstID']\", container);\ntemplateInstID.addClass(\"PostIgnore\");\nsubWidget.addClass(\"PostIgnore\");\n}\n};\njQuery.fn.FillDataOnlyForTemplateBox = function(xml, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(xml).find(OBJID);\nif ( OBJs.length == 0 )\n{\ncontinue;\n}\nvar ruleTemplate = $(\"[id='\"+OBJID+\"']._LuQuid_TempalteBox\", container);\nif( ruleTemplate.length == 0 )\n{\ncontinue;\n}\n$(\"[id^='\"+OBJID+\"_']._LuQuid_TempalteBox\", container).each(function(){\nvar instObj = $(this);\nvar instId = instObj.find(\"[id^='\"+OBJID+\"._OBJ_InstID']\").val();\nvar index = -1;\nvar instances = $(\"Instance\", OBJs);\nvar ruleNum = instances.length;\nfor (var i=0; i<ruleNum; i++)\n{\nvar instIdName = OBJID+\"._OBJ_InstID\";\nvar ToOperParaArray = {};\nToOperParaArray[instIdName] = {\nValueOrigin: \"\"\n};\nxmlParaInInstOperate(xml, OBJID, i, ToOperParaArray);\nvar ruleInstId = ToOperParaArray[instIdName].ValueOrigin;\nif ( instId == ruleInstId )\n{\nindex = i;\nbreak;\n}\n}\nif ( index > -1 )\n{\nvar DataOBJID = [OBJID];\ninstObj.fillDataByOBJID(xml, DataOBJID, instObj, index, \"_\");\n}\nelse\n{\nconsoleLog(\"instId(\"+instId+\") cannot match xml instance\");\n}\n});\n}\n};\njQuery.fn.createPageDataByClone = function(RuleNum,DataOBJID,xml,fillDataByCustom){\nvar Head = $(this);\nvar HeadID = Head.attr(\"id\");\nvar TemplateOBJ = $(\"#template_\"+HeadID , Head);\n$(\"#_InstNum\", Head).val(RuleNum);\nfor (var i=0; i<RuleNum; i++)\n{\nvar clone = TemplateOBJ.cloneWithSuffix(i);\nTemplateOBJ.before(clone);\nclone.fillDataByOBJID(xml ,DataOBJID, clone, i);\nif ( $.isFunction(fillDataByCustom) )\n{\nfillDataByCustom(i,clone);\n}\nelse\n{\nclone.trigger(\"fillDataByCustom\",[i,clone]);\n}\nclone.showIt(true);\n}\n};\njQuery.fn.hasError = function(xml, location, container){\nvar ContentContainer = $(\"#\"+container);\nvar cmapiErrorContainer;\nvar errStr = $(\"IF_ERRORSTR\", $(xml));\nvar errParam = $(\"IF_ERRORPARAM\", $(xml));\nif (errStr.length <= 0 || errParam.length <= 0)\n{\nconsoleLog(\"[hasError:]cannot find IF_ERRORSTR or IF_ERRORPARAM\");\nreturn;\n}\nif(!container)\n{\nContentContainer = $(this);\n}\nif (!location)\n{\nlocation = \"errorHint\";\n}\nif (location == \"externErrorHint\")\n{\ncmapiErrorContainer = $(\".externErrorHint\",ContentContainer);\n}\nelse\n{\ncmapiErrorContainer = $(\".\"+location,ContentContainer);\n}\nvar ErrorString = $(\"IF_ERRORSTR\", $(xml)).text();\nvar ErrorParam = $(\"IF_ERRORPARAM\", $(xml)).text();\nif ( ErrorString == \"SUCC\" )\n{\ncmapiErrorContainer.showIt(false);\nreturn 0;\n}\nelse if ( ErrorString == \"SessionTimeout\" )\n{\nif (typeof(pro_SessionTimeout) == \"function\")\n{\npro_SessionTimeout();\n}\nelse\n{\ntop.location.href = top.location.href;\n}\nreturn 1;\n}\nelse\n{\nvar cmapiErrorContainerHtml = \"\";\nvar paraString = \"\";\nif ( ErrorParam != \"SUCC\")\n{\nvar LabelFindResult = 0;\nErrorString = \"Current operation is invalid, please check whether {0} is legal. \"\nvar paraLabel = ContentContainer.find(\"label[for^='\"+ErrorParam+\"\\\\:']\");\nif ( paraLabel.length <= 0 )\n{\nparaLabel = ContentContainer.find(\"label[for='\"+ErrorParam+\"']\");\n}\nif ( paraLabel.length > 0 )\n{\nparaLabel.each(function(){\nvar labelTmp = $(this);\nif ( !labelTmp.hasClass(\"error\"))\n{\nparaString = labelTmp.text();\nLabelFindResult = 1;\nreturn false;\n}\n});\n}\nif ( LabelFindResult == 0 || paraString.trim() == \"\")\n{\nErrorString = \"Current operation is invalid, please check configuration parameters. \";\n}\ncmapiErrorContainerHtml = ErrorString.format(paraString);\n}\nelse\n{\nif ( \"FAIL\" == ErrorString\n|| \"Current operation is invalid, please check whether {0} is legal. \" == ErrorString )\n{\nErrorString = \"Current operation is invalid, please check configuration parameters. \";\n}\ncmapiErrorContainerHtml = ErrorString;\n}\n$(\"span\",cmapiErrorContainer).html(cmapiErrorContainerHtml);\ncmapiErrorContainer.showIt(true);\nreturn 1;\n}\n};\njQuery.fn.ShouldPostIgnore = function(){\nif($(this).hasClass(\"PostIgnore\"))\n{\nreturn true;\n}\nreturn false;\n};\njQuery.fn.InitialPostData = function(actionType){\nvar AND = \"&\";\nvar template = $(this);\nvar PostData = \"IF_ACTION=\" + actionType;\nvar cryptoKey = randomNum(16);\nvar cryptoIv = randomNum(16);\nvar needEncode = false;\nvar formInputContent = template.find(\"input,select\");\nformInputContent.each(function(key){\nvar Elems = $(this);\nif ( Elems.ShouldPostIgnore() )\n{\nreturn true;\n}\nvar ElemsID = Elems.attr(\"id\");\nif (typeof(ElemsID) != \"string\") {\nreturn true;\n}\nif ( Elems.attr(\"type\") == \"radio\" )\n{\nif ( Elems.is(':checked') )\n{\nElemsID = Elems.attr(\"name\");\n}\nelse\n{\nreturn true;\n}\n}\nvar ElemsMainID = colonStripping(ElemsID);\nvar ElemsValue = \"\";\nif ( Elems.is(\"input\") )\n{\nswitch (Elems.attr(\"type\"))\n{\ncase \"hidden\":\n{\nif (Elems.attr(\"_LuQUID_splitMACID\") != undefined)\n{\nvar splitMACID = Elems.attr(\"_LuQUID_splitMACID\");\nElems.FillIPorMacDataCombination(splitMACID, \":\", 6);\n}\nelse if (Elems.attr(\"_LuQUID_splitIPID\") != undefined)\n{\nvar splitIPID = Elems.attr(\"_LuQUID_splitIPID\");\nElems.FillIPorMacDataCombination(splitIPID, \".\", 4);\n}\nElemsValue = Elems.val();\nvar OriValue = ElemsValue;\nif(Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodePara(ElemsValue,cryptoKey,cryptoIv);\nif (OriValue != ElemsValue)\n{\nneedEncode = true;\n}\n}\nbreak;\n}\ncase \"text\":\ncase \"password\":\ncase \"radio\":\n{\nElemsValue = Elems.val();\nvar OriValue = ElemsValue;\nif(Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodePara(ElemsValue,cryptoKey,cryptoIv);\nif (OriValue != ElemsValue)\n{\nneedEncode = true;\n}\n}\nbreak;\n}\ncase \"checkbox\":\n{\nif( Elems.is(':checked')==true )\n{\nElemsValue = 1;\n}\nelse\n{\nElemsValue = 0;\n}\nbreak;\n}\ndefault:\n{\nbreak;\n}\n}\n}\nelse if ( Elems.is(\"select\") )\n{\nElemsValue = Elems.val();\n}\nelse\n{\nconsoleLog(\"when create post data, find not support elements type!!\");\n}\nvar NameValueJson = {\n\"ElemsMainID\": ElemsMainID,\n\"ElemsValue\": ElemsValue\n};\ntemplate.trigger(\"PostDataChangeByCustom\",[NameValueJson,template]);\nvar RealElemsValue = encodeURIComponent(NameValueJson.ElemsValue);\nPostData += AND + ElemsMainID + \"=\" + RealElemsValue;\n});\nif(needEncode)\n{\nPostData += AND + \"encode=\" + encodeURIComponent(encodeKey(cryptoKey,cryptoIv));\n}\nreturn PostData;\n};\nfunction RefreshClickHandle(Head)\n{\n$(\".Btn_refresh\", Head).each(function(){\n$(this).unbind(\"click\");\n$(this).bind(\"click\", function(){\nvar buttonOBJ = $(this);\nif (buttonOBJ.hasClass(\"disableBtn\")\n||buttonOBJ.hasClass(\"disableLongBtn\"))\n{\nreturn;\n}\nvar HeadID = Head.attr(\"id\");\nHead.find(\"[id^='template_\"+HeadID+\"_']\").each(function(){\n$(this).remove();\n});\nvar ServerAddr = $(\"address span\", Head).text();\nHead.dataTransfer(ServerAddr,\n\"GET\",\nHead.succfunction,\nHead.failfunction,\nundefined,\ntrue);\n});\n})\n}\nfunction initialStatusArea(Head)\n{\nif ( 0 == $(\"._LuQUID_STATUS_OBJID\", Head).length )\n{\nreturn;\n}\nvar OBJID = [];\nvar OBJDOMs = $(\"._LuQUID_STATUS_OBJID>li\", Head);\nOBJDOMs.each(function(){\nvar identity = $(this).text();\nOBJID.push(identity);\n})\nvar isMultiInst = $(\".maxInstNum\", Head).val();\nvar ServerAddr = $(\"address span\", Head).text();\nHead.succfunction = function(xml){\nif (Head.hasError(xml,\"externErrorHint\") == 0)\n{\nHead.trigger(\"changeXMLDataBeforeFillData\", [xml]);\nvar XMLOBJ = $(xml).find(OBJID[0]);\nvar RuleNum = $(\"Instance\", XMLOBJ).length;\nif (RuleNum == 0)\n{\n$(\".noDataHint\",Head).showIt(true);\n$(\".form_content\",Head).showIt(false);\n}\nelse\n{\n$(\".noDataHint\",Head).showIt(false);\n$(\".form_content\",Head).showIt(true);\nif (isMultiInst == 0)\n{\nHead.fillDataByOBJID(xml ,OBJID, Head, 0);\nHead.trigger(\"fillDataByCustom\",[0, Head]);\nvar template = $(\"[id^='template_']\", Head);\ntemplate.trigger(\"fillDataByCustom\",[0, template]);\ntemplate.showIt(true);\n}\nelse\n{\nHead.fillDataByCustom = undefined;\nHead.createPageDataByClone(RuleNum, OBJID, xml,\nHead.fillDataByCustom);\n}\ncolorTblRow(\".colorTbl\", \"even\", Head);\n}\n}\n};\nRefreshClickHandle(Head);\nif ( $(\".collapBarWithDataTrans\",Head).length <= 0 )\n{\nHead.dataTransfer(ServerAddr,\n\"GET\",\nHead.succfunction);\n}\nelse\n{\ninitial_collapBarWithDataTrans(Head);\n}\n}\nfunction initial_special_password(Head)\n{\n$(\".SpecialPassword\", Head).each(function(){\n$(this).mouseup( function(){\nif(this.focused){\nthis.focused=false;\nreturn false;\n}\n});\n});\n$(\".SpecialPassword\", Head).each(function(){\n$(this).focus( function(){\nthis.select();\nthis.focused=true;\n});\n});\n}\nfunction initial_button(buttonType, Head, IfShowWaitTip)\n{\nif ( !Head )\n{\nconsoleLog(\"incoming para:Head is not defined!\");\nreturn;\n}\nvar buttonClass = \"\";\nvar eventHandler = \"\";\nif ( buttonType == \"Apply\" )\n{\nbuttonClass = \"Btn_apply\";\neventHandler = \"fillDataByApplyResult\";\n}\nelse if ( buttonType == \"Cancel\" )\n{\nbuttonClass = \"Btn_cancel\";\neventHandler = \"fillDataByCancelResult\";\n}\nelse if ( buttonType == \"Delete\" )\n{\nbuttonClass = \"Btn_delete\";\neventHandler = \"fillDataByDeleteResult\";\n}\nelse\n{\n}\n$(\".\"+buttonClass, Head).each(function(){\n$(this).unbind(\"click\");\n$(this).bind(\"click\",function(event){\nvar buttonOBJ = $(this);\nif (buttonOBJ.hasClass(\"disableBtn\")\n||buttonOBJ.hasClass(\"disableLongBtn\"))\n{\nreturn;\n}\nvar Head = buttonOBJ.parents(\".HeadDIV\").eq(0);\nvar template = buttonOBJ.parents(\"[id^='template']\");\nvar ActionBeforePostResult = {result: \"Process\"};\ntemplate.trigger(\"ActionBeforePostByCustom\",[template,ActionBeforePostResult]);\nif (ActionBeforePostResult.result != \"Process\")\n{\nreturn;\n}\nvar ThisInstID = $(\"[id^='_InstID']\",template).val();\nif ( ThisInstID == undefined )\n{\nvar luquidObjUl = $(\"._LuQUID_CONFIG_OBJID\", Head);\nvar objId = $(\"li\", luquidObjUl).eq(0).text();\nvar instId = objId + \"\\\\._OBJ_InstID\";\nThisInstID = $(\"[id^='\"+ instId +\"']\",template).val();\n}\nif ( ThisInstID == -1\n&& (buttonType == \"Cancel\" || buttonType == \"Delete\") )\n{\ntemplate.remove();\nreturn;\n}\nvar ServerAddr = $(\"address span\", Head).text();\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nif ( buttonType == \"Apply\" )\n{\nvar formOBJ = $(\".form_content\", template);\nif ( formOBJ.length > 0 && false == formOBJ.valid() )\n{\nreturn;\n}\nelse\n{\nvar IPMACCheckResult = {result: \"checkOK\"};\ntemplate.trigger(\"wholeIPorMACCheck\",[template,IPMACCheckResult]);\nif (IPMACCheckResult.result != \"checkOK\")\n{\nreturn;\n}\nvar formObj = $(\".form_content\", template);\nvar txtInputObjs = $(\"input[type='text']\", formObj);\ntxtInputObjs.each(function(){\nvar obj = $(this);\nvar rules = obj.rules();\nif (rules.integer)\n{\nvar intStr = obj.val();\nvar sign, digits;\nif ( intStr.charAt(0) == '-' )\n{\nsign = \"-\";\ndigits = intStr.substring(1);\n}\nelse\n{\nsign = \"\";\ndigits = intStr;\n}\nwhile(digits.charAt(0) == '0' && digits.length > 1)\n{\ndigits = digits.substring(1);\n}\nintStr = sign + digits;\nobj.val(intStr);\n}\n});\nvar passObj = $(\".passRules\",template);\nfor(var i=0;i<passObj.length;i++)\n{\nif(passObj.eq(i).is(\":visible\"))\n{\nvar passVal = passObj.eq(i).val();\nif(passVal != \"\t\t\t\t\t\t\" &&(!(getPwdLevel(passVal,\"\")) || template.find(\".redFont\").text() == \"Weak\"))\n{\nvar msg = \" Current password is weak,a strong password should contain characters,digits and special symbols. Are you sure to continue?\";\nvar confirmLayerOBJ = IniConfirm(msg);\n$(\"#confirmOK\",confirmLayerOBJ).bind(\"click\", {FuncOBJ: template}, function(event){\ndataPost(buttonType, eventHandler, ServerAddr, template, undefined, IfShowWaitTipTmp);\n});\nreturn;\n}\n}\n}\n}\n}\ndataPost(buttonType, eventHandler, ServerAddr, template, undefined, IfShowWaitTipTmp);\n});\n});\n}\nfunction dataPost(actionType, PostSuccHandler, ServerAddr, template, PostData, IfShowWaitTip, asyncFlag)\n{\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nif (asyncFlag == undefined)\n{\nasyncFlag = true;\n}\nvar PostDataTmp = \"\";\nif (PostData == undefined)\n{\ntemplate.trigger(\"hiddenValueChangeByCustom\",[template, actionType]);\nPostDataTmp = template.InitialPostData(actionType);\n}\nelse\n{\nPostDataTmp = PostData;\n}\nPostDataTmp += \"&_sessionTOKEN=\"+_sessionTmpToken;\nvar procData = true;\nif (PostDataTmp.indexOf(\"%20\") >= 0)\n{\nprocData = false;\n}\nvar selfHeader = {};\nselfHeader[\"Check\"] = sha256(PostDataTmp);\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostDataTmp,\ndataType: 'xml',\nheaders: selfHeader,\nprocessData: procData,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"The server is not available now. Please refresh page to reload. \";\nvar errorContainer = $(\".errorHint\",template);\nvar changeArea = $(\".ChangeArea\",template);\nvar collapsibleInst = $(\".collapsibleInst\",template);\nif (template.data(\"defined_ActionByDataPostError\") != true){\nif ( errorContainer != undefined )\n{\n$(\"span\", errorContainer).text(ajaxPostFailHint);\nerrorContainer.showIt(true);\nif ( changeArea != undefined )\n{\nchangeArea.showIt(true);\n}\nif ( collapsibleInst != undefined )\n{\ncollapsibleInst.addClass(\"instNameExp\");\n}\ntemplate.showIt(true);\n}\nshowWaitTip(false);\n}\nelse\n{\ntemplate.trigger(\"ActionByDataPostError\");\n}\n},\nsuccess: function(xml){\n_LuQUID_setTemplateDefEvents(template, PostSuccHandler);\ntemplate.trigger(PostSuccHandler,[xml,template]);\nif (template.hasError(xml,\"_noExist\") == 0)\n{\n$(\".SpecialPassword\", template).each(function(i){\n$(this).val(\"\t\t\t\t\t\t\");\n});\n}\nvar formObj = $(\".form_content\", template);\nvar errObjs = $(\".errorLabelWraper > .error\", formObj);\nerrObjs.attr(\"style\", \"display:none\");\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(false);\n}\n}\n});\n}\nfunction dataPostJson(PostSuccHandler, ServerAddr, template, PostData, IfShowWaitTip, asyncFlag)\n{\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nif (asyncFlag == undefined)\n{\nasyncFlag = true;\n}\nPostData[\"_sessionTOKEN\"] = _sessionTmpToken;\nvar procData = true;\nvar postDataStr = \"\";\nfor(var key in PostData) {\npostDataStr += key + \"=\" + encodeURIComponent(PostData[key]) + \"&\";\n}\npostDataStr = postDataStr.substring(0,postDataStr.length - 1);\nif (postDataStr.indexOf(\"%20\") >= 0)\n{\nprocData = false;\n}\nvar selfHeader = {};\nselfHeader[\"Check\"] = sha256(postDataStr);\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostData,\ndataType: 'json',\nheaders: selfHeader,\nprocessData: procData,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"The server is not available now. Please refresh page to reload. \";\nvar errorContainer = $(\".errorHint\",template);\nvar changeArea = $(\".ChangeArea\",template);\nvar collapsibleInst = $(\".collapsibleInst\",template);\nif (template.data(\"defined_ActionByDataPostError\") != true){\nif ( errorContainer != undefined )\n{\n$(\"span\", errorContainer).text(ajaxPostFailHint);\nerrorContainer.showIt(true);\nif ( changeArea != undefined )\n{\nchangeArea.showIt(true);\n}\nif ( collapsibleInst != undefined )\n{\ncollapsibleInst.addClass(\"instNameExp\");\n}\ntemplate.showIt(true);\n}\nshowWaitTip(false);\n}\nelse\n{\ntemplate.trigger(\"ActionByDataPostError\");\n}\n},\nsuccess: function(data){\nif(data.tError.IF_ERRORID == 0){\ntemplate.trigger(PostSuccHandler,[data,template]);\n}else{\nvar ajaxFailHint = \"Page request failed, please try again!\";\n$(\".errorHint span\",template).text(ajaxFailHint);\n$(\".errorHint\",template).showIt(true);\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(false);\n}\n}\n});\n}\nfunction focusAndSelectInput(jqObj)\n{\nvar disValue = jqObj.attr(\"disabled\");\nif (disValue != \"disabled\" && disValue != true)\n{\njqObj.focus();\njqObj.select();\n}\n}\nfunction FocusAutoJump(obj,value,e)\n{\nvar objJQ = $(obj);\nvar prevOBJ = objJQ.prev(\"input\");\nvar nextOBJ = objJQ.next(\"input\");\nvar valLen = value.length;\nvar keynum;\nif (window.event)\n{\nkeynum = e.keyCode;\n}\nelse if (e.which)\n{\nkeynum = e.which;\n}\nvar temp = value.substring(valLen-1, valLen);\nif (\".\" == temp && objJQ.hasClass(\"ip\") && 0 != valLen)\n{\nobjJQ.val(value.substring(0, valLen-1))\nif (\".\" != value)\n{\nfocusAndSelectInput(nextOBJ);\n}\n}\nif (valLen == obj.maxLength)\n{\nif (nextOBJ.length <= 0)\n{\nreturn;\n}\nif (9 != keynum && 16 != keynum && 35 != keynum && 36 != keynum &&\n37 != keynum && 38 != keynum && 39 != keynum && 40 != keynum &&\n46 != keynum && 8 != keynum && objJQ.valid() == 1)\n{\nfocusAndSelectInput(nextOBJ);\n}\n}\nelse if (valLen == 0 && 37 == keynum)\n{\nif (prevOBJ.length <= 0)\n{\nreturn;\n}\nfocusAndSelectInput(prevOBJ);\n}\nelse\n{\nreturn;\n}\n}\nfunction autoJumpBack(obj,value,e)\n{\nvar objJQ = $(obj);\nvar prevOBJ = objJQ.prev(\"input\");\nvar nextOBJ = objJQ.next(\"input\");\nvar valLen = value.length;\nvar keynum;\nif (window.event)\n{\nkeynum = e.keyCode;\n}\nelse if (e.which)\n{\nkeynum = e.which;\n}\nif (8 == keynum && valLen == 0)\n{\nif (prevOBJ.length <= 0)\n{\nreturn;\n}\nfocusAndSelectInput(prevOBJ);\n}\n}\njQuery.fn.FillIPorMacDataBySplit = function(subid,Delimiter,length) {\nvar IPOBJ = $(this);\nif ( IPOBJ.length == 0 )\n{\nreturn;\n}\nvar containerOBJ = IPOBJ.parents(\"[id^='template_']\");\nvar value = IPOBJ.val();\nif ( !value )\n{\nreturn;\n}\nvar temp= value.split(Delimiter);\nif (length != temp.length)\n{\nreturn;\n}\nfor(var i=0; i<length; i++)\n{\nvar fillOBJ = $(\"[id^='\"+subid+i+\"']\",containerOBJ);\nfillOBJ.val(temp[i]);\n}\n};\njQuery.fn.FillIPorMacDataToInput = function(subid) {\nvar IPOBJ = $(this);\nif ( IPOBJ.length == 0 )\n{\nreturn;\n}\nvar containerOBJ = IPOBJ.parents(\"[id^='template_']\");\nvar value = IPOBJ.val();\nif ( !value )\n{\nreturn\n}\nvar fillOBJ = $(\"[id^='\"+subid+\"']\",containerOBJ);\nfillOBJ.val(value);\n};\njQuery.fn.FillIPorMacDataCombination = function(subid,Delimiter,length) {\nvar IPOBJ = $(this);\nif ( IPOBJ.length == 0 )\n{\nreturn;\n}\nvar containerOBJ = IPOBJ.parents(\"[id^='template_']\");\nvar temp = \"\";\nfor(var i=0; i<length; i++)\n{\nvar tempObj = $(\"[id^='\"+subid+i+\"']\",containerOBJ);\nif(0!=i)\n{\ntemp += Delimiter;\n}\nvar tempValue = tempObj.val();\nif ( !tempValue )\n{\ntempValue = \"\";\n}\ntemp += tempValue;\ntempObj.addClass(\"PostIgnore\");\n}\nIPOBJ.val(temp);\nreturn temp;\n};\njQuery.fn.checkIPorMACbyApply = function(checkIPorMACObj, template, IPMACCheckResult){\nvar breakFlag = 0;\n$.each(checkIPorMACObj, function(key, value){\nif (breakFlag != 0)\n{\nreturn false;\n}\nif ($(\"[id^='sub_\"+key+\"']\",template).is(\":visible\") != true)\n{\nreturn true;\n}\nvar labelId = value.labelId;\nvar paraName = \"\";\nvar paraNameObj = template.find(\"label[for^='\"+labelId+\"\\\\:']\");\nif ( paraNameObj.length <= 0 )\n{\nparaNameObj = template.find(\"label[for='\"+labelId+\"']\");\n}\nif ( paraNameObj.length > 0 )\n{\nparaNameObj.each(function(){\nvar labelTmp = $(this);\nif (labelTmp.hasClass(\"error\"))\n{\nreturn true;\n}\nparaName = labelTmp.text();\nreturn false;\n});\n}\nvar elementType = value.eleType;\nif (elementType == \"IP\")\n{\nvar IPObj = $(\"[id^='\"+key+\"']\",template);\nIPObj.FillIPorMacDataCombination(\"sub_\"+key, \".\", 4);\nvar ipValue = IPObj.val();\nif (value.rules != undefined)\n{\n$.each(value.rules, function(k, v){\nvar ipRet = checkWholeIPv4(k, v, ipValue);\nif (ipRet[0] == false)\n{\nvar errMsg = getMsgofWholeMACIPCheck(ipRet, value, ipValue, paraName);\n$(\".errorHint\",template).show();\n$(\".errorHint span\",template).text(errMsg);\nIPMACCheckResult.result = \"checkFail\";\nbreakFlag = 1;\nreturn false;\n}\nelse\n{\n$(\".errorHint\",template).hide();\n}\n});\n}\n}\nelse if (elementType == \"MAC\")\n{\nvar MACObj = $(\"[id^='\"+key+\"']\",template);\nMACObj.FillIPorMacDataCombination(\"sub_\"+key, \":\", 6);\nvar macValue = MACObj.val();\nif (value.rules != undefined)\n{\n$.each(value.rules, function(k, v){\nvar macRet = checkWholeMac(k, v, macValue);\nif (macRet[0] == false)\n{\nvar errMsg = getMsgofWholeMACIPCheck(macRet, value, macValue, paraName);\n$(\".errorHint\",template).show();\n$(\".errorHint span\",template).text(errMsg);\nIPMACCheckResult.result = \"checkFail\";\nbreakFlag = 1;\nreturn false;\n}\nelse\n{\n$(\".errorHint\",template).hide();\n}\n});\n}\n}\nelse\n{\nconsoleLog(\"ElementType +'\"+elementType+\"' is not supported now!\")\n}\n});\n};\njQuery.fn.setPromptCheckJSON = function(checkJSONTempObj, template){\nvar templateID = template.attr(\"id\");\nvar instIndex = templateID.match(/\\d+$/);\nvar suffix = \"\";\nif ( instIndex )\n{\nsuffix = \":\"+instIndex;\n}\nvar checkJSONInstObj = {\"groups\":{}, \"rules\":{}, \"messages\":{}};\nif ( checkJSONTempObj.groups != undefined )\n{\n$.each(checkJSONTempObj.groups, function(key, value) {\nvar valJSONStr = value;\nvar idArr = value.split(\" \");\nfor ( var i=0; i<idArr.length; i++ )\n{\nidArr[i] += suffix;\n}\nvalJSONStr = idArr.join(\" \");\nvar parameterJSON = eval(\"({'\"+key+suffix+\"':'\" + valJSONStr + \"'})\");\n$.extend(checkJSONInstObj.groups, parameterJSON);\n});\n}\nif ( checkJSONTempObj.rules != undefined )\n{\n$.each(checkJSONTempObj.rules, function(key, value) {\nvar parameterJSON = {};\nparameterJSON[key + suffix] = value;\n$.ext",
"body_murmur": 2044468638,
"body_sha256": "1dd9d8c1d82b33dfed32ce1e37a4129e175bd32e75db7c097100eaa4fffdfe84",
"content_length": 149583,
"favicon": {
"md5_hash": "5e966bb5036dc2624a0187a91e59d3dd",
"murmur_hash": 459900502,
"path": "http://182.52.164.114:80/img/favicon.ico",
"size": 1150
},
"headers": {
"accept_ranges": [
"bytes"
],
"cache_control": [
"no-cache,no-store"
],
"content_length": [
"149583"
],
"content_security_policy": [
"frame-ancestors 'self' data:"
],
"content_type": [
"text/html; charset=utf-8"
],
"server": [
"ZTE web server 1.0 ZTE corp 2015."
],
"set_cookie": [
"SID=6882cd229b73755fd18a796ed0150127e490790a1861cd0f4b7ded1f117cc37e; PATH=/; HttpOnly",
"_TESTCOOKIESUPPORT=1; PATH=/; HttpOnly"
],
"x_content_type_options": [
"nosniff"
],
"x_frame_options": [
"SAMEORIGIN"
],
"x_xss_protection": [
"1; mode=block"
]
},
"protocol": "HTTP/1.1",
"request": {
"headers": {
"accept": [
"*/*"
],
"user_agent": [
"Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
]
},
"method": "GET",
"url": {
"host": "182.52.164.114",
"path": "",
"scheme": "http"
}
},
"status_code": 200,
"title": "H8102E"
}
},
"url": "http://182.52.164.114/",
"_meta": {
"name": "",
"desc": "",
"category": ""
},
"last_updated_at": "2025-12-02T09:43:24.93Z"
},
{
"port": 443,
"protocol": "tcp",
"name": "https",
"version": "",
"product": "ZTE web server 1.0 ZTE corp 2015.",
"extra_info": "",
"tunnel": "ssl",
"modules": {
"http": {
"body": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"format-detection\" content=\"telephone=no,email=no,address=no\">\n<link rel=\"shortcut icon\" href=\"/img/favicon.ico\" />\n<title>H8102E</title>\n<style type=\"text/css\">\nhtml, body {\nmin-height:101%;\n}\nbody {\ntext-align: center;\nbackground: #F2F2F2;\noverflow-y: scroll;\n}\nbody, input, textarea, select, label, td, th {\nfont-size: 12px;\ncolor: #313131;\nfont-family: \"Microsoft YaHei\",Arial,SimSun,Verdana,Helvetica,Sans-Serif,Geneva;\n}\nbody, form, h1, h3, h4, p, ul, ol {\nmargin: 0;\n}\nul, ol {\npadding-left: 0;\nlist-style-type: none;\n}\na img {border: 0;}\ntable {\nborder-collapse: collapse;\nborder-spacing: 0;\n}\n#page_container {\nposition: relative;\nwidth: 960px;\nmargin: 0 auto;\npadding: 0 30px 15px 30px;\ntext-align: left;\nbackground: url(../img/site_holder.gif) repeat-y scroll center top;\n}\n#page_header {\npadding-bottom: 20px;\n}\n#banner {\nposition: relative;\nwidth: 100%;\nheight: 74px;\noverflow: hidden;\npadding-bottom: 5px;\n}\n#mainNavigator {\nwidth: 100%;\nheight: 38px;\ntext-align: center;\nmargin: 0 auto;\noverflow:hidden;\nbackground: #737373;\n}\n#page_content {\nposition: relative;\nmin-height: 510px;\nheight: auto !important;\nheight: 480px;\noverflow: visible;\ntext-align: center;\n}\n#page_footer {\nheight: 43px;\nline-height: 43px;\ntext-align: left;\nbackground-color: #F4F4F4;\nmargin-top: 15px;\npadding: 0 10px;\nborder-top: 1px solid #D7D7D7;\n}\n.logo {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_ZTE.png) no-repeat 5px 30px;\n}\n#banner_switchArea {\nwidth: 500px;\nheight: 25px;\nline-height: 25px;\nposition: absolute;\nbottom: 2px;\nright: 0px;\n}\n.AttentionMessage {\nleft:140px;\ntop:20px;\ncolor:red;\nfont-weight:bold;\nposition:absolute;\n}\n.timeArea {\nwidth: 300px;\nheight: 25px;\nline-height: 25px;\nposition: absolute;\nbottom: 2px;\nleft: 140px;\n}\n#banner_switchArea div {\nfloat: right;\ntext-align: center;\nmargin: 0 8px;\n}\n#banner_switchArea div.logUser{\npadding: 0px;\ntext-align: right;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\nmax-width: 180px;\n}\n.clickable {\ncursor: pointer;\n}\n#mainNavigator ul,li {\nmargin:0;\npadding:0;\nlist-style: none;\n}\n#mainNavigator {\nposition: relative;\n}\n#mainNavigator ul {\nposition: relative;\nleft: 50%;\nfloat: left;\n}\n#mainNavigator li {\nfloat: left;\nposition: relative;\nright: 50%;\nline-height: 34px;\n}\n#homeLi {\n}\n#mainNavigator a {\ndisplay: block;\nwidth: 100%;\nheight: 100%;\nbackground: url(../img/nv_middle.gif) repeat-x;\ntext-decoration: none;\n}\n#mainNavigator a:link,\n#mainNavigator a:visited {\ncolor: #FFFFFF;\n}\n#mainNavigator a.SelectMenuItem {\ncolor: #FFFFFF;\nbackground: url(../img/nv_s.gif) repeat-x;\n}\n#mn_first, #mn_last {\nheight: 100%;\nwidth: 5px;\nposition: absolute;\n}\n#mn_li {\nbackground: url(../img/nv_middle.gif) repeat-x;\nheight: 100%;\n}\n#mn_first {\nbackground: url(../img/nv_left.gif) no-repeat;\ntop: 0px;\nleft: 0px;\n}\n#mn_last {\nbackground: url(../img/nv_right.gif) no-repeat;\ntop: 0px;\nright: 0px;\n}\n#slogan {\nwidth: 200px;\nfloat: right;\nmargin: 0px;\ntext-align: right;\n}\n.caption2,\nh1 {\nborder-bottom: 1px dotted #313131;\nfont-size: 16px;\nfont-weight: normal;\npadding-bottom: 8px;\nmargin-bottom: 10px;\n}\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"file\"],\ntextarea,\nselect {\n-moz-box-sizing: border-box;\n-webkit-box-sizing: border-box;\nbox-sizing: border-box;\nheight: 26px;\n*height: 20px;\npadding: 2px;\nmargin: 2px 0;\nborder: 1px solid;\nborder-color: #AAAAAA #CCCCCC #CCCCCC #AAAAAA;\nborder-radius: 3px;\nbox-shadow: 0 1px 2px #CCCCCC inset;\n}\nselect {\n*height: 26px;\n}\ntextarea {\nmargin: 0;\nwidth: 100%;\n*width: 99%;\nresize: none;\nheight: 180px;\noverflow: auto;\n}\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"file\"]:focus,\ntextarea:focus {\nborder-color: #FF8040;\n-webkit-box-shadow: 0 0 3px rgba(255, 128, 64, 0.7);\n-moz-box-shadow: 0 0 3px rgba(255, 128, 64, 0.7);\nbox-shadow: 0 0 3px rgba(255, 128, 64, 0.7);\n}\nselect:focus {\nborder-color: #FF8040;\n}\ninput[type=\"text\"]:disabled,\ninput[type=\"password\"]:disabled,\ninput[type=\"file\"]:disabled,\ntextarea:disabled,\nselect:disabled {\ncolor: #898989;\nbackground-color: #ECE9D8;\n}\ninput[type=\"checkbox\"] {\nmargin-left: 0;\nmargin-top: 9px;\n}\ninput[type=\"radio\"] {\nmargin-left: 0;\n}\n.Button,\n.button,\n.longBtn ,\n.disableBtn,\n.disableLongBtn,\n.BrowseBtn {\ncursor: pointer;\nheight: 28px;\nborder: none;\npadding: 0 15px;\nmin-width: 100px;\nborder-radius: 3px;\n}\n.Button,\n.button,\n.longBtn {\nbackground-color: #0099cc;\nbackground-image: -moz-linear-gradient(top , #34c3f9, #0099cc);\nbackground-image: -webkit-gradient(linear,0% 0%, 0% 100%, from(#34c3f9), to(#0099cc));\nbackground-image: -webkit-linear-gradient(top, #34c3f9, #0099cc);\nbackground-image: -o-linear-gradient(top, #34c3f9, #0099cc);\nbackground-image: -ms-linear-gradient(top, #34c3f9, #0099cc);\nbackground-image: linear-gradient(top, #34c3f9, #0099cc);\nfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#34c3f9', endColorstr='#0099cc', GradientType=0);\ncolor: #fff;\n}\n.Button:hover,\n.button:hover,\n.longBtn:hover,\n.Button:focus,\n.button:focus,\n.longBtn:focus {\nfont-weight: bold;\nfont-style: oblique;\n}\n.disableBtn,\n.disableLongBtn,\n.BrowseBtn {\nborder: 1px solid #878889;\nbackground-color: #ddd;\nbackground-image: -moz-linear-gradient(top , #ebebeb 15%, #ddd 45%, #cdcdcd 85%);\nbackground-image: -webkit-gradient(linear,0% 0%, 0% 100%, from(#ebebeb), to(#cdcdcd),color-stop(45%,#ddd));\nbackground-image: -webkit-linear-gradient(top, #ebebeb 15%, #ddd 45%, #cdcdcd 85%);\nbackground-image: -o-linear-gradient(top, #ebebeb 15%, #ddd 45%, #cdcdcd 85%);\nbackground-image: -ms-linear-gradient(top, #ebebeb, #cdcdcd);\nbackground-image: linear-gradient(top, #ebebeb, #cdcdcd);\nfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb', endColorstr='#cdcdcd', GradientType=0);\n}\n.BrowseBtn\n{\ncolor: #000;\n}\n.disableBtn,\n.disableLongBtn {\ncursor: default;\ncolor: #898989;\n}\n.disableBtn:hover,\n.disableBtn:focus,\n.disableLongBtn:hover,\n.disableLongBtn:focus {\nfont-weight: normal;\nfont-style: normal;\n}\n.mac {\nwidth: 23px;\n}\n.ip {\nwidth: 32px;\n}\n.port {\nwidth: 67px;\n}\n.w37 {\nwidth: 37px;\n}\n.w40 {\nwidth: 40px;\n}\n.w45 {\nwidth: 45px;\n}\n.w50 {\nwidth: 50px;\n}\n.w60 {\nwidth: 60px;\n}\n.w70 {\nwidth: 70px;\n}\n.w75 {\nwidth: 75px;\n}\n.w80 {\nwidth: 80px;\n}\n.w100, .inputShort {\nwidth: 100px;\n}\n.w120 {\nwidth: 120px;\n}\n.w130 {\nwidth: 130px;\n}\n.w140 {\nwidth: 140px;\n}\n.w150, .inputNorm , .selectNorm {\nwidth: 150px;\n}\n.w160 {\nwidth: 160px;\n}\n.w165 {\nwidth: 165px;\n}\n.w170 {\nwidth: 170px;\n}\n.w175 {\nwidth: 175px;\n}\n.w180 {\nwidth: 180px;\n}\n.w200 {\nwidth: 200px;\n}\n.w210 {\nwidth: 210px;\n}\n.w217 {\nwidth: 217px;\n}\n.w220 {\nwidth: 220px;\n}\n.w230 {\nwidth: 230px;\n}\n.w250, .inputLong, .selectLong {\nwidth: 250px;\n}\n.w280 {\nwidth: 280px;\n}\n.w400 {\nwidth: 400px;\n}\n.emColor {\ncolor: #0099cc;\n}\n.bgColorRow {\nbackground-color: #F2F2F2;\n}\n.green {\ncolor:#385401;\nfont-weight: bold;\n}\n.red {\ncolor:#6c0101;\nfont-weight: bold;\n}\n.emFont {\nfont-weight: bold;\n}\n.ctrlFont,\n.link2More {\ntext-decoration: underline;\ncursor: pointer;\n}\n.ctrlFont {\ntext-decoration: none;\n}\n.sdRightPos{\nfloat:right;\nmargin-right:10px;\n}\n.disableFont {\ncursor: default;\ntext-decoration: none;\ncolor: #898989;\n}\n.readonlyInputBg {\nbackground-color: #ECE9D8;\n}\n.alignLeft {\ntext-align: left;\n}\n.alignRight {\ntext-align: right;\n}\n.alignCenter {\ntext-align: center;\n}\n.caption1 {\nfont-size: 1.1em;\nfont-weight: bold;\n}\n.caption3 {\nfont-size: 1em;\nfont-weight: bold;\n}\n.statusRow {\nwidth: 100%;\nheight: 24px;\n}\n.statusRow div {\nfloat: left;\nborder: 1px solid #BDBDBD;\npadding: 3px;\ntext-align: center;\noverflow: hidden;\n}\n.redFont {\ncolor: red;\n}\n.instCfgArea {\nmargin: 0;\npadding: 0 0 50px 0;\n}\n.buttongroup,\n.unfloatBtnGroup {\npadding: 25px 25px 20px 25px;\nheight: 30px;\n}\n.buttongroup input {\nfloat: right;\nmargin-left: 15px;\n}\n.unfloatBtnGroup input {\nmargin: 0;\n}\n.radioInput {\nwidth: auto;\nfloat: left;\n}\n.submitArea {\ntext-align: right;\npadding: 20px 0;\n}\n.externErrorHint,\n.succHint,\n.errorHint,\n.warnHint,\n.infoHint,\n.waitHint {\nmargin: 30px 0;\ntext-align: left;\npadding: 10px 10px 10px 70px;\n}\n.externErrorHint,\n.errorHint {\ncolor: #6c0101;\nbackground: #FFEBE4 url(../img/err_m.png) no-repeat 15px;\n}\n.succHint {\ncolor: #385401;\nbackground: #E7FFE4 url(../img/succ_m.png) no-repeat 15px;\n}\n.warnHint {\ncolor: #443500;\nbackground: #FFF9E4 url(../img/warn_m.png) no-repeat 15px;\n}\n.infoHint {\ncolor: #012f4c;\nbackground: #E4EFFF url(../img/info_m.png) no-repeat 15px;\n}\n.waitHint {\ncolor: #012f4c;\nbackground: #E7FFE4 url(../img/waiting_Small.gif) no-repeat 15px;\n}\n.staticInfoHint,\n.staticInfoHintReal {\ndisplay: block;\nbackground: url(../img/info_s.png) no-repeat 25px 1px;\nmargin-bottom: 20px;\ntext-align: left;\npadding: 0 25px;\n}\n.staticInfoHintReal {\nbackground: url(../img/info_s.png) no-repeat 0px 1px;\npadding: 0;\n}\n.staticInfoHint p,\n.staticInfoHintReal p {\nline-height: 18px;\ntext-align: justify;\ntext-indent: 2em;\nmargin-bottom: 5px;\n}\n.sceneTip {\npadding: 0 0 10px 0;\nmargin: 0;\ntext-align: justify;\n}\n.sceneTipLink {\npadding: 0;\n}\n.sceneTip a,\n.sceneTipLink a,\n.sceneTip_close a {\ncolor: #0099CC;\ntext-decoration: underline;\ncursor: pointer;\n}\n.sceneTip_close a {\ntext-decoration: none;\npadding-right: 5px;\n}\n.help_content,\n.sceneTip_container {\nbackground-color: #EFF8FF;\npadding: 5px 0;\n}\n.help_close,\n.sceneTip_close {\ntext-align: right;\n}\n.inlineTip {\nfloat: left;\npadding-left: 60px;\nline-height: 30px;\n}\n.black_overlay\n{\nposition: fixed;\n_position: absolute;\ntop: 0%;\nleft: 0%;\nwidth: 100%;\nheight: 100%;\nbackground-color: #A7A7A7;\nz-index: 100;\n-moz-opacity: 0.5;\n-khtml-opacity: 0.5;\nopacity: 0.5;\nfilter: alpha(opacity=50);\n}\n.white_content\n{\ndisplay: none;\nwidth: 365px;\nmin-height: 195px;\nheight: auto !important;\nheight: 195px;\nbackground: url(../img/waiting.gif) no-repeat center center;\nz-index: 101;\noverflow: auto;\nposition: fixed;\n_position: absolute;\n}\n.white_content_Qos\n{\ndisplay: none;\nwidth: 775px;\nheight: auto !important;\nbackground: #FFFFFF;\nz-index: 101;\noverflow: auto;\nposition: fixed;\nleft: 25%;\ntop: 80px;\n}\n#confirmLayer {\nborder: 8px solid #7D7D7D;\ntext-align: left;\npadding: 0 10px;\nbackground: #FFFFFF;\n}\n#confirmMsg {\nmin-height: 32px;\nheight: auto !important;\nheight: 32px;\npadding: 25px 0;\nbackground: url(\"../img/info_m.png\") no-repeat 20px 50%;\n}\n#confirmMsg p {\npadding-left: 60px;\nfont-size: 1.2em;\nline-height: 24px;\n}\n#waitingImgArea {\nheight: 50px;\npadding-bottom: 25px;\nbackground: url(../img/waiting_w.gif) no-repeat top center;\n}\n#confirmBtnArea {\nheight: 28px;\nborder-top: 1px dotted #313131;\npadding: 10px;\n}\n#confirmBtnArea input {\nfloat: right;\nmargin-left: 20px;\n}\n#dynamicTip {\nposition: absolute;\ndisplay: none;\nfont-size: 11px;\n}\n#dynamicTip div {\nfloat: left;\nheight: 34px;\npadding-top: 5px;\n}\n#dTip_l {\nwidth: 16px;\nbackground: url(../img/dTip_l.gif) no-repeat left top;\n}\n#dTip_m {\npadding: 2px 8px 0 5px;\nbackground: url(../img/dTip_m.gif) repeat-x;\n}\n#dTip_r {\nwidth: 6px;\nbackground: url(../img/dTip_r.gif) no-repeat left top;\n}\ndiv.errorLabelWraper{\nbackground: url(../img/fail_s.png) no-repeat 5px 6px;\ndisplay:inline-block;\npadding-left: 23px;\nline-height: 30px;\n}\nlabel.error{\ncolor: #FF0000;\n}\n.expandArrow {\nbackground: url(../img/expandArrow.png) no-repeat 0px 8px;\n}\n.collapseArrow {\nbackground: url(../img/collapseArrow.png) no-repeat 0px 8px;\n}\n.apStatusRow {\ncursor:pointer\n}\n.apConnectting {\nbackground: url(../img/waiting_Small.gif) no-repeat 0px 8px;\n}\n.qrCodeContainer {\nbottom: 160px;\nposition: fixed;\nright: 0;\nz-index: 1;\n}\n@media screen and (max-width: 1100px) {\n.qrCodeContainer {\ndisplay: none;\n}\n}\n.captchaImg {\nvertical-align: middle;\n}\n.bannerswtch {\ncolor: #0099cc;\n}\n.white_content_security\n{\ndisplay: none;\nwidth: 350px;\nmin-height: 195px;\nheight: auto !important;\nheight: 195px;\nz-index: 99;\noverflow: auto;\nposition: absolute;\n_position: absolute;\nbottom: 0px;\nright: 10px;\n}\n.sercurityNotice {\nborder: 8px solid #7D7D7D;\ntext-align: left;\npadding: 0 10px;\nbackground: #FFFFFF;\n}\n.sercurityNoticeMsg {\nmin-height: 32px;\nheight: auto !important;\nheight: 32px;\npadding: 25px 0;\nbackground: url(\"../img/info_m.png\") no-repeat 20px 50%;\n}\n.sercurityNoticeMsg li {\npadding-left: 60px;\nfont-size: 12px;\nline-height: 24px;\n}\n#commLeft {\nwidth: 197px;\nmargin: 0;\npadding:0;\nfloat: left;\nbackground-color: #EEEFF5;\n}\n#commRight {\nmin-height:415px;\nheight:auto !important;\nheight: 415px;\nmargin-left: 215px;\nmargin-right: 0;\npadding-left: 0px;\ntext-align: left;\n}\n#class2MenuItem {\nwidth: 100%;\nmargin: 0px;\npadding: 0px;\n}\n#class2MenuItem li {\ndisplay: block;\nmargin: -1px 0 0 0;\n}\n#class2MenuItem a {\ndisplay: block;\nheight: 30px;\nline-height: 30px;\ntext-align: left;\ntext-decoration: none;\ncolor: #000;\npadding: 0 20px;\nbackground-color: #fbfbfb;\nborder: 1px solid #d0d0d0;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\n}\n#class2MenuItem a.selectClass2Menu {\nbackground-color: #eee;\nbackground-image: -moz-linear-gradient(top , #f7f7f7, #e6e6e6);\nbackground-image: -webkit-gradient(linear,0% 0%, 0% 100%, from(#f7f7f7), to(#e6e6e6));\nbackground-image: -webkit-linear-gradient(top, #f7f7f7, #e6e6e6);\nbackground-image: -o-linear-gradient(top, #f7f7f7, #e6e6e6);\nbackground-image: -ms-linear-gradient(top, #f7f7f7, #e6e6e6);\nbackground-image: linear-gradient(top, #f7f7f7, #e6e6e6);\nfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7f7f7', endColorstr='#e6e6e6', GradientType=0);\ncolor: #0099CC;\n}\n#class3Menu {\nheight:30px;\nmargin-bottom: 30px;\nborder-bottom: 1px solid #0099CC;\n}\n#scrollLeftBtn,\n#scrollRightBtn {\nheight: 30px;\nwidth: 30px;\nfloat: left;\n}\n.EnableScrollBtn {\ncursor: pointer;\n}\n.scrollRightBtn {\nbackground: url(\"../img/collapse_B.png\") no-repeat scroll right center;\n}\n.scrollLeftBtn {\nbackground: url(\"../img/leftArrow.png\") no-repeat scroll left center;\n}\n.scrollRightBtnDisable {\nbackground: url(\"../img/rightArrowDisable.png\") no-repeat scroll right center;\ncursor: default;\n}\n.scrollLeftBtnDisable {\nbackground: url(\"../img/leftArrowDisable.png\") no-repeat scroll left center;\ncursor: default;\n}\n#scrollLeftBtn p,\n#scrollRightBtn p {\nheight: 30px;\n}\n#class3MenuMainContent {\nwidth:697px;\noverflow:hidden;\nfloat:left;\nmargin-top: -1px;\n}\n#class3MenuMainContent ul {\nwidth: 5000px;\n}\n#class3MenuMainContent li {\nfloat: left;\nlist-style: none outside none;\n}\n#class3MenuMainContent ul p {\ntext-decoration: none !important;\nheight: 30px;\nline-height: 30px;\npadding: 0 30px;\nfloat: left;\ncursor: pointer;\n}\n.AEleMenu3 {\ncolor: #313131;\nborder: 1px solid #D0D0D0;\nborder-bottom: 1px solid #0099CC;\nbackground-color: #F5F5F5;\n}\n.AEleMenu3Selected {\ncolor: #0099CC;\nborder: 1px solid #0099CC;\nborder-bottom: 1px solid #FFFFFF;\n}\n.HeadDIV,\n.fakeHeadDIV {\npadding-top: 20px;\n}\n.pageIntroduce {\nfont-size: 18px;\n}\n.pIntroContent {\npadding: 8px 0;\n}\n.row,\n.rowBox,\n.colorTblRow,\n.segmentRow {\nclear: both;\n}\n.row,\n.rowBox,\n.colorTblRow,\n.outRow,\n.rowWithoutClear {\nmin-height: 30px;\nheight: auto !important;\nheight: 30px;\npadding: 0 25px;\n}\n.rowBox div {\ndisplay: inline-block;\n}\n.rowPaddingClear {\npadding: 0px;\n}\n.outRow {\npadding: 0;\nmargin: 10px 0;\n}\n.selectRow {\nmin-height: 80px;\n}\n.segmentRow {\nheight: 15px;\nbackground-color: #F7F7F7;\n}\n.left,\n.right,\nlabel.cfgLabel {\nfloat: left;\nline-height: 30px;\n}\n.collapBarWithDataTrans,\n.collapsibleBar {\npadding-left: 25px;\ncursor: pointer;\nbackground: url(../img/collapse_B.png) no-repeat 0px 30%;\n}\n.collapsibleBarExp {\nbackground: url(../img/expand_B.png) no-repeat 0px 30%;\n}\n.colorTbl {\nborder: 1px solid #D0D0D0;\nline-height: 30px;\nmargin-top: 10px;\noverflow: auto;\n}\n.colorRow {\nbackground: #EFF8FF;\n}\n.colorTblRow,\n.textareaRow {\npadding: 0 25px;\n}\n.colorTblRow span {\ndisplay:inline-block;\n*display:inline;\n*zoom:1;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\nmargin-right: 3px;\nvertical-align: middle;\n*vertical-align: top;\n}\n.titleRow {\nbackground: #C8E6FE;\n}\n.noDataHint {\nheight: 30px;\nline-height: 30px;\nborder: 1px solid #D0D0D0;\npadding: 0 5px 0 45px;\nbackground: #C8E6FE url(../img/info_s.png) no-repeat 23px 50%;\n}\n.formTblWrap {\nborder: 1px solid #D0D0D0;\nline-height: 30px;\nbackground: #F7F7F7;\nmargin: -1px 0;\nzoom: 1;\n}\n.formTbl {\npadding: 10px 0 0;\noverflow: auto;\n*overflow: hidden;\n}\n.formTblCtrlBar, .addInstBar {\nheight: 30px;\nline-height: 30px;\nborder: 1px solid #D0D0D0;\nbackground: #EEEEEE;\nposition: relative;\n}\n.formTblCtrlBar div {\ndisplay: inline;\n}\n.instName, .instNew {\npadding-left: 25px;\noutline: none;\ncolor: #313131;\nheight: 100%;\ncursor: pointer;\ndisplay: block;\nwidth: 200px;\n}\n.instName {\nbackground: url(../img/collapse.png) no-repeat 0 50%;\nwhite-space: nowrap;\ntext-overflow: ellipsis;\noverflow: hidden;\n}\n.instNew {\nbackground: url(../img/newInst.png) no-repeat 2px 50%;\n}\n.instNameExp {\nbackground: url(../img/expand.png) no-repeat 0 50%;\n}\n.noHand {\ncursor: default;\n}\n.instSwitch {\nposition: absolute;\nleft: 300px;\ntop: 3px;\n}\n.instDelete,\n.closePopLayer {\nposition: absolute;\nright: 20px;\ntop: 7px;\ncursor: pointer;\n}\n.closePopLayer {\ntop: 10px;\n}\n.clear {\nclear: both;\noverflow:hidden;\n}\n.ExceedWidthEllipsis {\nwhite-space: nowrap;\ntext-overflow: ellipsis;\noverflow: hidden;\n}\n.divQoSStatisticsCfg {\npadding: 20px;\ntext-align: left;\n}\n.picQoSTrans {\nbackground: url(../img/uploading.gif) no-repeat;\n}\n.partDivision {\nborder-bottom: 1px dotted #313131;\npadding-bottom: 8px;\nmargin: 10px 0 30px;\n}\n.emptyRow10 {\nmargin: 10px;\n}\n.emptyRow20 {\nmargin: 20px;\n}\n.fontSize {\nfont-size:15px;\n}\n.DMSPathDiv {\nborder: 1px solid #0099CC;\nwidth: 710px;\n*width: 690px;\noverflow: auto;\nmargin: 10px auto;\npadding: 5px;\n}\n.hr0 {\nheight:1px;\nborder:none;\nborder-top:1px solid #D0D0D0;\n}\n.sideShortCut {\nposition: fixed;\nwidth:28px;\nheight:50px;\nbottom:105px;\nright:0px;\n_position:absolute;\n_right:auto;\ncursor:pointer;\nz-index: 1000;\n}\n.BackToTop {\ndisplay: block;\nheight: 50px;\nwidth: 28px;\ntext-decoration:none;\nbackground: url(../img/TOP.gif) no-repeat;\n}\n.pinspan {\ncolor: #313131;\nbackground: #E7FFE4;\n}\n.pin_remain {\ncolor: red;\nfont-size: 1.1em;\nfont-weight: bold;\n}\n._LuQUID_SelAccessDevice{\ncolor: #0099CC;\ncursor: pointer;\ntext-decoration: none;\n}\n._LuQUID_AccessDeviceList{\nmargin-left:150px;\nheight:auto !important;\nmin-height: 30px;\npadding: 0 5px 0 0;\nclear: both;\n}\n._LuQUID_HideAccessDevice{\ncolor: #0099CC;\ncursor: pointer;\ntext-decoration: none;\n}\n.AddIconControl{\ncursor: pointer;\nposition: relative;\ntop: 2px;\n}\n.DelIconControl{\ncursor: pointer;\nposition: relative;\ntop: 2px;\n}\nbody {\ntext-align: center;\noverflow-y: scroll;\n}\n#page_container {\nposition: relative;\nwidth: 960px;\nmargin: 0 auto;\ntop:35px;\npadding: 0 30px 15px 30px;\ntext-align: left;\nbackground: #FFFFFF;\n}\n#loginWrapper {\nwidth: 473px;\nmin-height: 300px;\nheight:auto !important;\nheight: 425px;\nmargin: 50px auto;\nposition: relative;\n}\n.logo {\nwidth: 345px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/catLogo.png) no-repeat 5px 9px;\n}\n.catLogo {\nwidth: 345px;\nheight: 72px;\nfloat:left;\nbackground: url(../img/catLogo.png) no-repeat 5px 9px;\n}\n.zteLogo {\nwidth: 210px;\nheight: 72px;\nfloat:right;\nbackground: url(../img/Logo_ZTE.png) no-repeat 5px 9px;\n}\n.catInternet {\nposition: relative;\nwidth: 180px;\nheight: 140px;\nmargin-left: 400px;\ntop:50px;\n}\n.catText {\nwidth:600px;\nfont-size:14px;\nfont-weight:bold;\nmargin-left:160px;\ntext-align:center;\n}\n.timeArea {\nleft: 342px;\n}\n\n</style>\n<script type=\"text/javascript\" src=\"jquery/common_lib.js\"></script>\n<script type=\"text/javascript\">\nfunction StatusOfLRBtnOf3MenuHandle(nowScrollLocation)\n{\nif (nowScrollLocation == \"\")\n{\nnowScrollLocation = 0;\n}\nvar class3MenuContainerWidth = $(\"#class3MenuMainContent\").width();\nvar totalTabWidth = $(\"#_totalTabWidth\").val();\nif ( nowScrollLocation >= (totalTabWidth - class3MenuContainerWidth) )\n{\n$(\"#scrollRightBtn\").attr(\"class\",\"scrollRightBtnDisable\");\n$(\"#scrollLeftBtn\").attr(\"class\", \"scrollLeftBtn EnableScrollBtn\");\n}\nelse if ( nowScrollLocation == 0 )\n{\n$(\"#scrollLeftBtn\").attr(\"class\", \"scrollLeftBtnDisable\");\n$(\"#scrollRightBtn\").attr(\"class\",\"scrollRightBtn EnableScrollBtn\");\n}\nelse\n{\n$(\"#scrollRightBtn\").attr(\"class\",\"scrollRightBtn EnableScrollBtn\");\n$(\"#scrollLeftBtn\").attr(\"class\", \"scrollLeftBtn EnableScrollBtn\");\n}\n}\nfunction Menu3TabStyleHandle()\n{\nvar class3MenuContainer = $(\"#class3MenuMainContent\");\nvar ContainerWidth = $(\"#commRight\").width()- $(\"#scrollLeftBtn\").width()\n- $(\"#scrollRightBtn\").width();\nclass3MenuContainer.width(ContainerWidth);\nvar tabTotalWidth = 0;\nvar tab = $(\"li\",class3MenuContainer);\nfor (var i=0; i< tab.length; i++)\n{\nvar LiWidth = parseInt(tab[i].offsetWidth);\ntabTotalWidth = tabTotalWidth + LiWidth;\n}\n$(\"#_totalTabWidth\").val(tabTotalWidth);\nvar class3MenuUl = $(\"ul\",class3MenuContainer);\nif ( tabTotalWidth > ContainerWidth )\n{\nclass3MenuUl.css(\"width\", 5000);\n$(\"#scrollLeftBtn,#scrollRightBtn\").addClass(\"EnableScrollBtn\");\nvar nowScrollLocation = $(\"#_Menu3Location\").text();\nif ((tabTotalWidth-ContainerWidth) < nowScrollLocation)\n{\nnowScrollLocation = tabTotalWidth-ContainerWidth;\n}\nclass3MenuContainer.scrollLeft(nowScrollLocation);\nStatusOfLRBtnOf3MenuHandle(nowScrollLocation);\n}\nelse\n{\n$(\"#scrollLeftBtn\").removeClass(\"scrollLeftBtn\");\n$(\"#scrollRightBtn\").removeClass(\"scrollRightBtn\");\n}\n}\nfunction MenuItemClass(menuItemJSON) {\nthis.menuItemJSON = menuItemJSON;\n}\nMenuItemClass.prototype.findMenu = function (menuid) {\nvar menuItemJSON = this.menuItemJSON;\nvar menuItemId = menuItemJSON.id;\nif (menuItemId == menuid)\n{\nreturn menuItemJSON;\n}\nvar children = menuItemJSON.children;\nif ( !children )\n{\nreturn null;\n}\nfor (var i = 0; i < children.length; i++) {\nvar childItem = children[i];\nvar childID = childItem.id;\nif ( menuid == childID )\n{\nreturn childItem;\n}\nif ( childItem.children )\n{\nvar childObj = new MenuItemClass(childItem);\nvar targetMenu = childObj.findMenu(menuid);\nif (targetMenu)\n{\nreturn targetMenu;\n}\n}\n}\nreturn null\n}\nMenuItemClass.prototype.getLeftMostPageJSON = function () {\nvar menuItemJSON = this.menuItemJSON;\nvar menuItemId = menuItemJSON;\nvar children = menuItemJSON.children;\nif ( !children )\n{\nreturn menuItemJSON;\n}\nvar leftMostSon = children[0];\nvar menuObj = new MenuItemClass(leftMostSon);\nreturn menuObj.getLeftMostPageJSON();\n}\nfunction MenuTreeClass(menuTreeJSON)\n{\nthis.menuTreeJSON = menuTreeJSON\n}\nMenuTreeClass.prototype.findMenu = function(menuid) {\nvar menuTreeJSON = this.menuTreeJSON\nfor (var i = 0; i < menuTreeJSON.length; i++) {\nvar menu1table = menuTreeJSON[i];\nvar menu1Obj = new MenuItemClass(menu1table);\nvar targetMenu = menu1Obj.findMenu(menuid);\nif ( targetMenu )\n{\nreturn targetMenu;\n}\n}\nreturn null\n};\nfunction GetLeftMostPageID(menuid)\n{\nvar menuTable = menuTreeObj.findMenu(menuid);\nvar menuObj = new MenuItemClass(menuTable);\nvar pageJSON = menuObj.getLeftMostPageJSON();\nreturn pageJSON.id;\n}\nfunction Class3MenuShow(selectPageID, selectSupId, selectMidId, selectThdId)\n{\nif ( selectThdId == \"\" )\n{\n$(\"#class3Menu\").css(\"display\", \"none\");\nreturn;\n}\nvar class2MenuNode = menuTreeObj.findMenu(selectMidId);\nvar class3MenuJSON = class2MenuNode.children;\nvar class3MenuContent = \"\";\nfor (var index in class3MenuJSON)\n{\nvar menu = class3MenuJSON[index]\nvar class3MenuID = menu.id\nvar class3MenuName = menu.name\nif ( class3MenuID == selectThdId )\n{\nAEleMenu3Class = \"AEleMenu3Selected\";\n}\nelse\n{\nAEleMenu3Class = \"AEleMenu3\";\n}\nclass3MenuContent = class3MenuContent\n+ \"<li><p class='\" + AEleMenu3Class + \"'\"\n+ \"MenuClass='3'\"\n+ \"id='\"+ class3MenuID + \"'\"\n+ \"MenuPage='\"+ GetLeftMostPageID(class3MenuID) +\"'\"\n+ \"href='#\" + class3MenuID + \"'>\"\n+ class3MenuName\n+ \"</p></li>\";\n}\n$(\"#class3MenuMainContent ul\").html(class3MenuContent);\n$(\"#class3MenuMainContent ul li p\").click(function(){\nvar MenuOBJ = $(this);\nif ( !checkDisClickAttr(MenuOBJ) )\n{\nreturn;\n}\nAjaxQuery_ClassMenuClick(MenuOBJ);\n});\nMenu3TabStyleHandle();\n$(window).resize(function(){\nMenu3TabStyleHandle();\n});\nvar t;\n$(\"#scrollRightBtn,#scrollLeftBtn\").mousedown(function(e){\nif ( ! $(this).hasClass(\"EnableScrollBtn\"))\n{\nconsoleLog(\"no scroll button!!\");\nreturn;\n}\nvar step = 10;\nif ( $(this).attr(\"id\") == \"scrollLeftBtn\" )\n{\nstep = 0-step;\n}\nif(1 == e.which)\n{\nt = window.setInterval(function() {\nvar scrollTarget = $(\"#class3MenuMainContent\");\nvar nowPosition = scrollTarget.scrollLeft();\nvar tabWidth = $(\"#_totalTabWidth\").val();\nvar srcollTotalLen = tabWidth - scrollTarget.width();\nif ( (srcollTotalLen - nowPosition) >= step )\n{\nscrollTarget.scrollLeft(nowPosition + step);\n}\nelse if ( (srcollTotalLen - nowPosition) >= 0 )\n{\nscrollTarget.scrollLeft(srcollTotalLen);\n}\nvar afterPosition = scrollTarget.scrollLeft();\nStatusOfLRBtnOf3MenuHandle(afterPosition);\n}, 20);\n}\n});\n$(\"#scrollRightBtn,#scrollLeftBtn\").mouseup(function(e){\nif(1 == e.which)\n{\nwindow.clearInterval(t);\n}\n});\n}\nfunction Class2MenuShow(selectPageID, selectSupId, selectMidId)\n{\nif ( selectMidId == \"\" )\n{\nreturn;\n}\nvar class1MenuNode = menuTreeObj.findMenu(selectSupId);\nvar class2MenuJSON = class1MenuNode.children;\nvar class2MenuContent = \"\";\nvar class2MenuClass = \"\";\nfor (var index in class2MenuJSON)\n{\nvar menu = class2MenuJSON[index]\nvar class2MenuID = menu.id\nvar class2MenuName = menu.name\nif ( class2MenuID == selectMidId )\n{\nclass2MenuClass = \"selectClass2Menu\";\n}\nelse\n{\nclass2MenuClass = \"\";\n}\nclass2MenuContent = class2MenuContent\n+ \"<li>\"\n+ \"<a class='\" + class2MenuClass + \"' \"\n+ \"href='javascript:void(0);' \"\n+ \"MenuClass='2' \"\n+ \"id='\"+ class2MenuID + \"' \"\n+ \"MenuPage='\"+ GetLeftMostPageID(class2MenuID)\n+ \"' title='\" + class2MenuName\n+ \"'>\"\n+ class2MenuName\n+ \"</a></li>\";\n}\n$(\"#class2MenuItem\").html(class2MenuContent);\n$(\"#class2MenuItem li a\").click(function(){\nvar MenuOBJ = $(this);\nif ( !checkDisClickAttr(MenuOBJ) )\n{\nreturn;\n}\nAjaxQuery_ClassMenuClick(MenuOBJ);\n});\n}\nfunction Class1MenuShow(selectPageID, selectSupId)\n{\nvar FirstMenuContent = \"<ul>\";\nvar SupClass = \"\";\nvar SupLiID = \"\";\nvar FirstOne = \"yes\";\nvar navBarWidth = $(\"#mainNavigator\").width();\nvar leftPadWidth = $(\"#mn_first\").width();\nvar rightPadWidth = $(\"#mn_last\").width();\nvar menuAreaWidth = navBarWidth - leftPadWidth - rightPadWidth;\nmenuAreaWidth -= 7;\nvar menuWidth = menuAreaWidth/(menuTreeJSON.length);\nmenuWidth = Math.floor(menuWidth);\nfor (var index in menuTreeJSON)\n{\nvar menu = menuTreeJSON[index]\nvar supId = menu.id\nvar supName = menu.name\nif ( supId == selectSupId )\n{\nSupClass = \"SelectMenuItem\";\n}\nelse\n{\nSupClass = \"MenuItem\";\n}\nif ( FirstOne == \"yes\" )\n{\nSupLiID = \"homeLi\";\nFirstOne = \"no\";\n}\nelse\n{\nSupLiID = \"\";\n}\nFirstMenuContent = FirstMenuContent\n+ \"<li id=\\\"\" + SupLiID + \"\\\">\"\n+ \"<a href=\\\"javascript:void(0);\\\" class=\\\"\" + SupClass\n+ \"\\\" \"\n+ \"style='width:\" + menuWidth + \"px' \"\n+ \"MenuClass='1' \"\n+ \"id='\"+ supId + \"' \"\n+ \"MenuPage='\"+ GetLeftMostPageID(supId) +\"'\"\n+ \">\"\n+ supName\n+ \"</a></li>\";\n}\nFirstMenuContent = FirstMenuContent + \"</ul>\";\n$(\"#mn_li\").html(FirstMenuContent);\n$(\"#mn_li li a\").click(function(){\nvar MenuOBJ = $(this);\nif ( !checkDisClickAttr(MenuOBJ) )\n{\nreturn;\n}\nAjaxQuery_ClassMenuClick(MenuOBJ);\n});\n}\nfunction checkDisClickAttr(obj)\n{\nif (\"off\" == obj.attr(\"EnableClick\"))\n{\nreturn false;\n}\nhandleDisClickAttr(\"off\");\nreturn true;\n}\nfunction handleDisClickAttr(ret)\n{\nvar selectSupId = $(\"#_NowSupIdInfo\",_MenuInfo).text();\nvar selectMidId = $(\"#_NowMidIdInfo\",_MenuInfo).text();\nvar selectThdId = $(\"#_NowThdIdInfo\",_MenuInfo).text();\nif(selectThdId)\n{\nvar objs = [$(\"#\" + selectSupId),$(\"#\" + selectMidId),$(\"#\" + selectThdId)];\n}\nelse\n{\nif(selectMidId)\n{\nvar objs = [$(\"#\" + selectSupId),$(\"#\" + selectMidId)];\n}\nelse\n{\nvar objs = [$(\"#\" + selectSupId)];\n}\n}\nfor (var i = 0; i < objs.length; i++)\n{\nif (objs[i].length > 0)\n{\nobjs[i].attr(\"EnableClick\", ret);\n}\n}\n}\nfunction AjaxPageGet(PageName, MenuClass, Area)\n{\nvar pageContainer = $(\"#commPageContainer\");\npageContainer.succfunction = function(html){\npageContainer.html(html);\nvar _MenuInfo = $(\"#_MenuInfo\");\nvar selectPageID = $(\"#_NextPageInfo\",_MenuInfo).text();\nvar selectSupId = $(\"#_NowSupIdInfo\",_MenuInfo).text();\nvar selectMidId = $(\"#_NowMidIdInfo\",_MenuInfo).text();\nvar selectThdId = $(\"#_NowThdIdInfo\",_MenuInfo).text();\nif ( \"mmHome\" == selectPageID )\n{\n$(document).scrollTop(0);\nreturn;\n}\nif (MenuClass == '1')\n{\nClass1MenuShow(selectPageID, selectSupId);\n}\nClass2MenuShow(selectPageID, selectSupId, selectMidId);\nClass3MenuShow(selectPageID, selectSupId, selectMidId, selectThdId);\n$(document).scrollTop(0);\nhandleDisClickAttr(\"on\");\nvar targetAreaId = Area;\nif (targetAreaId){\nsetTimeout(function(){\nvar thisPage = $(\".instCfgArea\");\nvar areas = $(\"h1\", thisPage);\nvar targetArea = $(\"#\"+targetAreaId, thisPage);\nareas.each(function(){\nif ($(this).hasClass(\"collapsibleBarExp\")) {\n$(this).click();\n}\n});\nif (targetArea.length > 0){\ntargetArea.click();\n$(document).scrollTop(targetArea.offset().top);\n}\n}\n,500);\n}\n};\npageContainer.errorfunction = function(){\nconsoleLog(\"page get fail\");\nshowWaitTip(false);\npageContainer.html(\"Page request failed, please try again!\");\nhandleDisClickAttr(\"on\");\n};\nshowWaitTip(true);\npageContainer.dataTransfer( PageName, \"GET\", pageContainer.succfunction,\npageContainer.errorfunction, false,\nundefined, 'html'\n);\n}\nfunction AjaxQuery_ClassMenuClick(MenuOBJ)\n{\nvar MenuClass = MenuOBJ.attr(\"MenuClass\");\nvar page = MenuOBJ.attr(\"MenuPage\");\nvar scrollTarget = $(\"#class3MenuMainContent\");\nvar Menu3Location = scrollTarget.scrollLeft();\nvar pageFile = \"/?_type=menuView&_tag=\"\n+ page + \"&Menu3Location=0\";\nif ( MenuClass == 3 )\n{\npageFile = \"/?_type=menuView&_tag=\"\n+ page + \"&Menu3Location=\" + Menu3Location;\n}\nAjaxPageGet(pageFile, MenuClass);\n}\nfunction openLink(pageurl, areaId)\n{\nvar PageName = \"/?_type=menuView&_tag=\" + pageurl;\nAjaxPageGet(PageName, 1, areaId);\n}\nfunction MenuShow(Menuclass, selectPageID, selectSupId, selectMidId, selectThdId)\n{\nif (Menuclass == \"ClassAll\")\n{\nClass1MenuShow(selectPageID, selectSupId);\nClass2MenuShow(selectPageID, selectSupId, selectMidId);\nClass3MenuShow(selectPageID, selectSupId, selectMidId, selectThdId);\n}\nelse if (Menuclass == \"ClassOne\")\n{\nClass1MenuShow(selectPageID, selectSupId);\n}\nelse if (Menuclass == \"ClassTwo\")\n{\nClass2MenuShow(selectPageID, selectSupId);\n}\nelse\n{\nconsoleLog(\"[menu_api.lp][MenuShow] Menuclass(\"+ Menuclass + \"filling is not right!!\");\n}\n}\nfunction FakeClass1MenuShow()\n{\nvar FirstMenuContent = \"<ul>\";\nvar SupClass = \"MenuItem\";\nvar SupLiID = \"\";\nvar FirstOne = \"yes\";\nvar navBarWidth = $(\"#mainNavigator\").width();\nvar leftPadWidth = $(\"#mn_first\").width();\nvar rightPadWidth = $(\"#mn_last\").width();\nvar menuAreaWidth = navBarWidth - leftPadWidth - rightPadWidth;\nmenuAreaWidth -= 7;\nvar menuWidth = menuAreaWidth/(menuTreeJSON.length);\nmenuWidth = Math.floor(menuWidth);\nfor (var index in menuTreeJSON)\n{\nvar menu = menuTreeJSON[index]\nvar supId = menu.id\nvar supName = menu.name\nif ( FirstOne == \"yes\" )\n{\nSupLiID = \"homeLi\";\nFirstOne = \"no\";\n}\nelse\n{\nSupLiID = \"\";\n}\nFirstMenuContent = FirstMenuContent\n+ \"<li id=\\\"\" + SupLiID + \"\\\">\"\n+ \"<a href=\\\"javascript:void(0);\\\" class=\\\"\" + SupClass\n+ \"\\\" \"\n+ \"style='width:\" + menuWidth + \"px;\"\n+ \"color:#BFBDBE; cursor:default;'\"\n+ \" hidefocus=\\\"true\\\" onclick=\\\" \\\">\"\n+ supName\n+ \"</a></li>\";\n}\nFirstMenuContent = FirstMenuContent + \"</ul>\";\n$(\"#mn_li\").html(FirstMenuContent);\n}\nfunction showWaitTip(show, TipMsg, StopTag)\n{\nvar TipMsgTmp = TipMsg;\nif( show )\n{\n$(\"#blackMask,#tipLayer,#confirmBtnArea\").css(\"display\", \"block\");\nif (TipMsgTmp == undefined || TipMsgTmp == \"\")\n{\n$(\"#waitingImgArea\").css(\"display\", \"none\");\nif(true==StopTag)\n{\n$(\"#confirmStop\").css(\"display\", \"block\");\n$(\"#confirmCancel,#confirmOK\").css(\"display\", \"none\");\n}\nelse\n{\n$(\"#confirmStop\").css(\"display\", \"none\");\n$(\"#confirmCancel,#confirmOK\").css(\"display\", \"block\");\n}\n}\nelse\n{\n$(\"#confirmLayer, #waitingImgArea\").css(\"display\", \"block\");\n$(\"#confirmMsg p\").text(TipMsgTmp);\nif(true==StopTag)\n{\n$(\"#confirmStop\").css(\"display\", \"block\");\n$(\"#confirmCancel,#confirmOK\").css(\"display\", \"none\");\n}\nelse\n{\n$(\"#confirmCancel,#confirmOK,#confirmStop\").css(\"display\", \"none\");\n}\n}\n$('#confirmLayer :button:visible:first').focus();\n$(\"#page_container\").bind(\"keyup\", function(event){\nif (event.which == 9) {\n$('#confirmLayer :button:visible:first').focus();\n}\n});\nreposition_box(\"tipLayer\");\n}\nelse\n{\n$(\"#blackMask, #tipLayer, #confirmLayer\").css(\"display\", \"none\");\n$(\"#page_container\").unbind(\"keyup\");\n}\n}\nfunction IniConfirm(msg)\n{\nshowWaitTip(true);\nvar confirmLayerOBJ = $(\"#confirmLayer\");\nconfirmLayerOBJ.css(\"display\", \"block\");\n$(\"#confirmMsg p\",confirmLayerOBJ).text(msg);\n$(\"#confirmCancel\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmOK\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmStop\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmCancel\",confirmLayerOBJ).bind(\"click\", function(event){\nshowWaitTip(false);\n});\n$('#confirmLayer :button:visible:first').focus();\nreturn confirmLayerOBJ;\n}\nfunction getStyle(obj,attr)\n{\nif (obj.currentStyle)\n{\nreturn obj.currentStyle[attr];\n}\nelse\n{\nreturn document.defaultView.getComputedStyle(obj,null)[attr];\n}\n}\nfunction reposition_box(divId)\n{\nvar box=document.getElementById(divId);\nif (null!=box)\n{\nvar boxObj = $(\"#\"+divId);\nvar winH = $(window).height();\nvar winW = $(window).width();\nvar divH = boxObj.height();\nvar divW = boxObj.width();\nvar h = (winH-divH)/2;\nh = (h > 0) ? h : 5;\nvar w = (winW-divW)/2;\nw = (w > 0) ? w : 5;\nboxObj.css({top:h, left:w});\nif ( divH > winH || divW > winW)\n{\nboxObj.css(\"position\", \"absolute\");\n}\nelse\n{\nboxObj.css(\"position\", \"fixed\");\n}\n}\n}\n$.validator.setDefaults({\nerrorPlacement: function (error, element) {\nvar tipHTML = \"<div class=\\\"errorLabelWraper\\\"></div>\";\nvar tipObj = $(tipHTML);\nerror.appendTo(tipObj);\nvar rowObj = element.closest(\".row\");\nif ( rowObj.length == 0 )\n{\nconsoleLog(\"element id=[\"+element.attr(\"id\")+\"] is not in row div.\");\nreturn ;\n}\nvar rowWidth = rowObj.width();\nvar usedWidth = 0;\nvar rightObj = undefined;\nrowObj.children().each(function(){\nif (!($(this).hasClass(\"_LuQUID_AccessDeviceList\")||\n$(this).hasClass(\"clear\"))){\nusedWidth += $(this).outerWidth(true);\n}\nif ($(this).hasClass(\"right\")){\nrightObj = $(this);\n}\n});\nvar errWidth = rowWidth - usedWidth;\ntipObj.width(errWidth-5-23);\nif (rightObj != undefined)\n{\ntipObj.insertAfter(rightObj);\n}\nelse\n{\ntipObj.appendTo(rowObj);\n}\n}\n});\njQuery.extend(jQuery.validator.messages, {\nrequired: \"This field is required. \",\nremote: \"Please fix this field. \",\nemail: \"Please enter a valid email address. \",\nurl: \"Please enter a valid URL. \",\ndate: \"Please enter a valid date. \",\ndateISO: \"Please enter a valid date (ISO). \",\nnumber: \"Please enter a valid number. \",\ndigits: \"Please enter an integer. \",\ncreditcard: \"Please enter a valid credit card number. \",\nequalTo: \"Please enter the same value again. \",\nmaxlength: jQuery.validator.format(\"Please enter no more than {0} characters. \"),\nminlength: jQuery.validator.format(\"Please enter at least {0} characters. \"),\nrangelength: jQuery.validator.format(\"Please enter a value with {0} ~ {1} characters. \"),\nrange: jQuery.validator.format(\"Please enter a value between {0} and {1}. \"),\nmax: jQuery.validator.format(\"Please enter a value less than or equal to {0}. \"),\nmin: jQuery.validator.format(\"Please enter a value greater than or equal to {0}. \")\n});\nfunction AsciiPasswordCheck(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif(ch == 9)\n{\nreturn false;\n}\n}\nreturn true;\n}\nfunction AsciiCheck(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif(ch<32 || ch>126)\n{\nreturn false;\n}\n}\nreturn true;\n}\nfunction AsciiCheckWithLen(Key, LenLimit)\n{\nif (Key.length != LenLimit)\n{\nreturn false;\n}\nif ( false == AsciiCheck(Key) )\n{\nreturn false;\n}\nreturn true;\n}\nfunction HexCheck(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif (!((ch >= 65 && ch <= 70)\n||(ch >= 97 && ch <= 102)\n||(ch >= 48 && ch <= 57)))\n{\nreturn false;\n}\n}\nreturn true;\n}\nfunction HexCheckWithLen(Key, LenLimit)\n{\nif (Key.length != LenLimit)\n{\nreturn false;\n}\nif ( false == HexCheck(Key) )\n{\nreturn false;\n}\nreturn true;\n}\nfunction checkIPv4Addr(ipaddr)\n{\nvar re = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nif(re.test(ipaddr) == true)\n{\nvar parts = ipaddr.split(\".\");\nfor(var i=0; i<parts.length; i++)\n{\nif(parts[i].indexOf(\"0\") == 0 && parts[i].length > 1)\nreturn false;\nif (parseInt((parts[i]),10) > 255 || parseInt((parts[i]),10) < 0)\n{\nreturn false;\n}\n}\nreturn true;\n}\nreturn false;\n}\njQuery.validator.addMethod(\n\"IPv4Addr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif(checkIPv4Addr(value) == true)\n{\nreturn true;\n}\nreturn false;\n},\n\"Please enter a valid IPv4 Address. \"\n);\nfunction checkIPv6Addr(ipaddr)\n{\nif (ipaddr.match(\"[^0-9a-fA-F:.]\") != null)\nreturn false;\naddrParts = ipaddr.split(':');\nDoublecolon = ipaddr.split('::');\nipv4Parts = ipaddr.split('.');\nif(addrParts.length<3||addrParts.length>8)\n{\nreturn false;\n}\nelse if(Doublecolon.length==1&&ipv4Parts.length==1&&addrParts.length!=8)\n{\nreturn false;\n}\nelse if(Doublecolon.length==1&&ipv4Parts.length>1&&addrParts.length!=6)\n{\nreturn false;\n}\nelse if(Doublecolon.length>1&&ipv4Parts.length>1&&addrParts.length>6)\n{\nreturn false;\n}\nelse if(Doublecolon.length>2||ipaddr.split(':::').length>1)\n{\nreturn false;\n}\nelse\n{\nif(addrParts[0]==\"\"&&addrParts[1]!=\"\")\n{\nreturn false;\n}\nfor(var i=0;i<addrParts.length;i++)\n{\nif(i==addrParts.length-1&&addrParts[i]==\"\"&&addrParts[i-1]!=\"\")\n{\nreturn false;\n}\nif(addrParts[i].length>4 && addrParts[i].split('.').length<2)\n{\nreturn false;\n}\n}\n}\nvar pos = ipaddr.lastIndexOf(\":\");\nvar ipv4Parts = ipaddr.split('.');\nif(ipv4Parts.length>1)\n{\nvar ipv4=ipaddr.substring(pos+1,ipaddr.length);\nif( false == checkIPv4Addr(ipv4) )\n{\nreturn false;\n}\n}\nreturn true;\n}\njQuery.validator.addMethod(\n\"IPv6Addr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn checkIPv6Addr(value);\n},\n\"Please enter a valid IPv6 Address. \"\n);\njQuery.validator.addMethod(\n\"DomainName\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar len = value.length;\nvar firstChar = value.substr(0,1);\nvar lastChar = value.substr(len-1,1);\nvar maxlen = 64;\nif(len>64||len<1)\n{\nreturn false;\n}\nif (value.match(\"[^0-9a-zA-Z.-]\") != null)\n{\nreturn false;\n}\nif(firstChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nif(lastChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nvar pos = value.lastIndexOf(\".\");\nif(pos == -1)\n{\nvar str = value;\nvar templen = value.length;\nfor(var i=0;i<len;i++)\n{\nvar tempvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tempvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\nelse\n{\nvar str = value.substr(pos+1);\nvar tmplen = value.length - (pos + 1);\nfor(var i=0;i<tmplen;i++)\n{\nvar tmpvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tmpvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\n},\n\"Please enter a valid Domain Name. \"\n);\njQuery.validator.addMethod(\n\"HostName\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar len = value.length;\nvar firstChar = value.substr(0,1);\nvar lastChar = value.substr(len-1,1);\nif (value.match(\"[^0-9a-zA-Z.-]\") != null)\n{\nreturn false;\n}\nif(firstChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nif(lastChar.match(\"[^0-9a-zA-Z]\") != null)\n{\nreturn false;\n}\nvar pos = value.lastIndexOf(\".\");\nif(pos == -1)\n{\nvar str = value;\nvar templen = value.length;\nfor(var i=0;i<len;i++)\n{\nvar tempvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tempvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\nelse\n{\nvar str = value.substr(pos+1);\nvar tmplen = value.length - (pos + 1);\nfor(var i=0;i<tmplen;i++)\n{\nvar tmpvalue = str.substring(i,i+1);\nif(isNaN(parseInt(tmpvalue)))\n{\nreturn true;\n}\n}\nreturn false;\n}\n},\n\"Please enter a valid Host Name. \"\n);\njQuery.validator.addMethod(\n\"url\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar len = value.length;\nif( (len < 1) || (len > 256) )\n{\nreturn false;\n}\nif (value.match(\"[^0-9a-zA-Z.:;,!@%#?_/&=+*'$()\\\\[\\\\]-]\") != null)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter a valid URL. \"\n);\njQuery.validator.addMethod(\n\"PasswordASCII\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value == \"\t\t\t\t\t\t\")\n{\nreturn true;\n}\nif ( false == AsciiPasswordCheck(value) )\n{\nparams = 0;\nreturn false;\n}\nif ( false == AsciiCheck(value) )\n{\nparams = 1;\nreturn false;\n}\nreturn true;\n},\nfunction(param, element)\n{\nvar error = [\"The format of password is wrong. Please clear it and re-enter. \", \"Please enter only ASCII characters. \"];\nvar value = $(element).val();\nvar ret = 0;\nif ( false == AsciiPasswordCheck(value) )\n{\nret = 0;\n}\nelse if( false == AsciiCheck(value) )\n{\nret = 1;\n}\nelse\n{\n}\nif ( ret <= error.length )\n{\nreturn error[ret];\n}\n}\n);\njQuery.validator.addMethod(\n\"PasswordRangeLength\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value == \"\t\t\t\t\t\t\")\n{\nreturn true;\n}\nif ( value.length >= params[0] && value.length <= params[1] )\n{\nreturn true;\n}\nreturn false;\n},\njQuery.validator.format(\"Please enter a value with {0} ~ {1} characters. \")\n);\njQuery.validator.addMethod(\n\"ASCII\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif ( false == AsciiCheck(value) )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter only ASCII characters. \"\n);\nfunction AsciiCheckContainSpace(Key)\n{\nfor (var j = 0 ;j < Key.length; j++)\n{\nvar ch = Key.charCodeAt(j);\nif(ch<32 || ch>126)\n{\nreturn false;\n}\n}\nreturn true;\n}\njQuery.validator.addMethod(\n\"ASCII_CONTAINSPACE\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif ( false == AsciiCheckContainSpace(value) )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter only ASCII characters. \"\n);\njQuery.validator.addMethod(\n\"DigitASCII\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar reg = /^[0-9]+$/;\nreturn reg.test(value);\n},\n\"Please enter a value composed of 0 ~ 9.\"\n);\njQuery.validator.addMethod(\n\"utf8\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn true;\n},\n\"Please enter only ASCII characters. \"\n);\njQuery.validator.addMethod(\n\"WEPKey128Bit\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar AsciiLenLimit = 13;\nvar HexLenLimit = 26;\nif ( AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 13 ASCII characters or 26 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"WEPAsciiOrHexLen\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar AsciiLenLimit = 5;\nvar HexLenLimit = 10;\nvar AsciiLenLimit13 = 13;\nvar HexLenLimit26 =26;\nif (AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false\n&& AsciiCheckWithLen(value, AsciiLenLimit13) == false\n&& HexCheckWithLen(value, HexLenLimit26) == false)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 5 or 13 ASCII characters, or enter 10 or 26 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"PasswordWEPAsciiOrHexLen\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value == \"\t\t\t\t\t\t\")\n{\nreturn true;\n}\nvar AsciiLenLimit = 5;\nvar HexLenLimit = 10;\nvar AsciiLenLimit13 = 13;\nvar HexLenLimit26 =26;\nif (AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false\n&& AsciiCheckWithLen(value, AsciiLenLimit13) == false\n&& HexCheckWithLen(value, HexLenLimit26) == false)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 5 or 13 ASCII characters, or enter 10 or 26 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"WEPKey64Bit\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar AsciiLenLimit = 5;\nvar HexLenLimit = 10;\nif ( AsciiCheckWithLen(value, AsciiLenLimit) == false\n&& HexCheckWithLen(value, HexLenLimit) == false )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter 5 ASCII characters or 10 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"WPAAsciiOrHexLen\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (!(value.length >= 8 && value.length <= 63)\n&& HexCheckWithLen(value, 64) == false)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter a value with 8 ~ 63 characters, or enter 64 hexadecimal digits. \"\n);\njQuery.validator.addMethod(\n\"HEX\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif ( HexCheck(value) == false )\n{\nreturn false;\n}\nreturn true;\n},\n\"Please enter only hexadecimal characters. \"\n);\njQuery.validator.addMethod(\n\"fixedlength\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value.length != param)\n{\nreturn false;\n}\nreturn true;\n},\njQuery.validator.format(\"Please enter {0} characters. \")\n);\njQuery.validator.addMethod(\n\"fixedValue\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (value != param)\n{\nreturn false;\n}\nreturn true;\n},\njQuery.validator.format(\"The only allowed value is {0}.\")\n);\nfunction hexCompare(hexNum, hexRefer)\n{\nvar num = parseInt(hexNum, 16);\nvar refer = parseInt(hexRefer, 16);\nif (num < refer)\n{\nreturn -1;\n}\nelse if (num > refer)\n{\nreturn 1;\n}\nelse\n{\nreturn 0;\n}\n}\njQuery.validator.addMethod(\n\"hexRange\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (typeof(params[0]) == \"object\")\n{\nfor (var i=0; i<params.length; i++)\n{\nvar range = params[i];\nif (typeof(range) == \"object\")\n{\nif (hexCompare(value, range[0]) != -1 && hexCompare(value, range[1]) != 1 )\n{\nreturn true;\n}\n}\n}\n}\nelse\n{\nif (hexCompare(value, params[0]) != -1 && hexCompare(value, params[1]) != 1 )\n{\nreturn true;\n}\n}\nreturn false;\n},\nfunction(params, element){\nvar rangesStr = \"\";\nif (typeof(params[0]) == \"object\")\n{\nvar rangesLen = params.length;\nfor (var i=0; i<rangesLen; i++)\n{\nvar range = params[i];\nif (hexCompare(range[0], range[1]) != 0)\n{\nrangesStr += range[0] + \"~\" + range[1];\n}\nelse\n{\nrangesStr += range[0];\n}\nif ( i < rangesLen-1 )\n{\nrangesStr += \", \";\n}\n}\n}\nelse\n{\nrangesStr = params[0] + \"~\" + params[1];\n}\nreturn $.validator.format(\"Please enter a hexadecimal value in the ranges of {0}. \", rangesStr);\n}\n);\njQuery.validator.addMethod(\n\"ranges\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar rangesLen = param.length;\nfor (var i=0; i<rangesLen; i++)\n{\nvar range = param[i];\nif ( typeof range === 'number' )\n{\nif ( value == range )\n{\nreturn true;\n}\n}\nelse\n{\nif ( value >= range[0] && value <= range[1] )\n{\nreturn true;\n}\n}\n}\nreturn false;\n},\nfunction(param, element){\nvar rangesStr = \"\";\nvar rangesLen = param.length;\nfor (var i=0; i<rangesLen; i++)\n{\nvar range = param[i];\nif ( typeof range === 'number' )\n{\nrangesStr += range;\n}\nelse\n{\nrangesStr += range[0] + \"~\" + range[1];\n}\nif ( i < rangesLen-1 )\n{\nrangesStr += \",\";\n}\n}\nreturn $.validator.format(\"Please enter a value in the ranges of {0}. \", rangesStr);\n}\n);\njQuery.validator.addMethod(\n\"integer\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn /^-?\\d+$/.test(value);\n},\n\"Please enter an integer. \"\n);\njQuery.validator.addMethod(\n\"even\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar mod = (parseInt(value))%2;\nif ( mod != 0)\n{\nreturn false;\n}\nreturn true;\n},\n\"Please input an even number. \"\n);\njQuery.validator.addMethod(\n\"concurrence\",\nfunction(value, element, param)\n{\nif (1 > param.length)\n{\nreturn true;\n}\nvar obj = get_element_obj($(element), param[0]);\nif (obj.is(\":hidden\"))\n{\nreturn true;\n}\nif (\"\" == value && \"\" == obj.val())\n{\nreturn true;\n}\nif (\"\" != value && \"\" != obj.val())\n{\nreturn true;\n}\nreturn false;\n},\n\"Please input valid prefix. \"\n);\nfunction get_element_obj(obj, id)\n{\nvar instTplt = obj.closest(\"[id^=template_]\");\nvar elementID = obj.attr(\"id\");\nvar arr = elementID.split(':');\nvar strId = id;\nif (arr.length > 1)\n{\nvar exNum = arr[arr.length-1];\nstrId = id + \":\" + exNum;\n}\nreturn $(\"[id^='\"+strId+\"']\", instTplt);\n};\nfunction test_greatThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value greater than \\\"{0}\\\". \" : \"Please enter a value greater than the former. \" ,\n\"2\" : param[2].separate ? \"Please enter a value not less than \\\"{0}\\\". \" : \"Please enter a value not less than the former. \" ,\n\"3\" : param[2].separate ? \"Please ensure the difference with the latter not greater than {1}. \" : \"Please ensure the difference with the former not greater than {1}. \"\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) >= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) > Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(value) - Number(tmpvalue) <= Number(param[2].discrepantMode);\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nobj.parent().next().children().hide();\nreturn true;\n}\n};\nfunction test_lessThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value less than \\\"{0}\\\". \" : \"Please enter a value less than the latter. \" ,\n\"2\" : param[2].separate ? \"Please enter a value not greater than \\\"{0}\\\". \" : \"Please enter a value not greater than the latter. \" ,\n\"3\" : param[2].separate ? \"Please ensure the difference with the former not greater than {1}. \" : \"Please ensure the difference with the latter not greater than {1}. \"\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) <= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) < Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(tmpvalue) - Number(value) <= Number(param[2].discrepantMode)\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nobj.parent().next().children().hide();\nreturn true;\n}\n};\njQuery.validator.addMethod(\n\"extremumRange\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (2 > param.length)\n{\nreturn true;\n}\nvar obj = get_element_obj($(element), param[1]);\nif (3 > param.length)\n{\nparam[2] = {};\n}\nparam[2][\"idtext\"] = obj.parent().prev().text();\nif (obj.is(\":hidden\") || \"\" == obj.val())\n{\nreturn true;\n}\nvar selectMode = {\n\"greatThan\" : test_greatThan,\n\"lessThan\" : test_lessThan\n};\nreturn selectMode[param[0]](obj, value, param);\n},\nfunction(param,element)\n{\nvar selectMode = {\n\"greatThan\" : test_greatThan,\n\"lessThan\" : test_lessThan\n};\nreturn selectMode[param[0]](\"\", \"\", param, \"errstring\");\n}\n);\nfunction range_greatThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value greater than \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Please enter a value greater than the former. \" : \"Please enter a value greater than the latter.\" ),\n\"2\" : param[2].separate ? \"Please enter a value not less than \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Please enter a value not less than the former. \" : \"Please enter a value not less than the latter. \" ) ,\n\"3\" : param[2].separate ? \"Please ensure the difference with \\\"{0}\\\" not greater than {1}. \" : ( param[2].objPosition ==\"first\" ? \"Please ensure the difference with the former not greater than {1}. \" : \"Please ensure the difference with the latter not greater than {1}. \")\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nobj.parent().next().children().hide();\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) >= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) > Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(value) - Number(tmpvalue) <= Number(param[2].discrepantMode);\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nreturn true;\n}\n};\nfunction range_lessThan(obj, value, param, type)\n{\nif (\"errstring\" == type )\n{\nvar tempstring = {\n\"1\" : param[2].separate ? \"Please enter a value less than \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Please enter a value less than the former. \" : \"Please enter a value less than the latter. \" ),\n\"2\" : param[2].separate ? \"Please enter a value not greater than \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Please enter a value not greater than the former.\" : \"Please enter a value not greater than the latter. \" ),\n\"3\" : param[2].separate ? \"Please ensure the difference with \\\"{0}\\\" not greater than {1}. \" : ( param[2].objPosition == \"first\" ? \"Please ensure the difference with the former not greater than {1}. \" : \"Please ensure the difference with the latter not greater than {1}. \" )\n};\nreturn $.validator.format(tempstring[param[2].ret], param[2].idtext, param[2].discrepantMode);\n}\nelse\n{\nobj.parent().next().children().hide();\nvar tmpvalue = obj.val();\nvar ret = true;\nif (param[2].equal)\n{\nret = Number(value) <= Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"2\";\nreturn false;\n}\n}\nelse\n{\nret = Number(value) < Number(tmpvalue);\nif (!ret)\n{\nparam[2].ret = \"1\";\nreturn false;\n}\n}\nif (param[2].discrepantMode)\n{\nret = Number(tmpvalue) - Number(value) <= Number(param[2].discrepantMode)\nif (!ret)\n{\nparam[2].ret = \"3\";\nreturn false;\n}\n}\nreturn true;\n}\n};\njQuery.validator.addMethod(\n\"compareRange\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif (2 > param.length)\n{\nreturn true;\n}\nvar obj = get_element_obj($(element), param[1]);\nif (3 > param.length)\n{\nparam[2] = {};\n}\nparam[2][\"idtext\"] = obj.parent().prev().text();\nvar selectMode = {\n\"greatThan\" : range_greatThan,\n\"lessThan\" : range_lessThan\n};\nreturn selectMode[param[0]](obj, value, param);\n},\nfunction(param,element)\n{\nvar selectMode = {\n\"greatThan\" : range_greatThan,\n\"lessThan\" : range_lessThan\n};\nreturn selectMode[param[0]](\"\", \"\", param, \"errstring\");\n}\n);\njQuery.validator.addMethod(\n\"banValue\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar paramLen = param.length;\nfor (var i = 0;i < paramLen;i++)\n{\nvar range = param[i];\nif (typeof range === 'string' )\n{\nif (value == range)\n{\nreturn false;\n}\n}\nelse\n{\nif (value >= range[0] && value <= range[1])\n{\nreturn false;\n}\n}\n}\nreturn true;\n},\nfunction(param, element){\nvar rangesStr = \"\";\nvar paramLen = param.length;\nfor (var i=0; i<paramLen; i++)\n{\nvar paraVal = param[i];\nif ( \"object\" === typeof paraVal )\n{\nrangesStr += paraVal[0] + \"~\" + paraVal[1];\n}\nelse\n{\nrangesStr += paraVal;\n}\nif ( i < paramLen-1 )\n{\nrangesStr += \", \";\n}\n}\nif (paramLen > 1)\n{\nreturn $.validator.format(\"Please ensure the input NOT in the ranges of \\\"{0}\\\". \", rangesStr);\n}\nelse\n{\nreturn $.validator.format(\"Please ensure the input NOT equal to \\\"{0}\\\". \", rangesStr);\n}\n}\n);\njQuery.validator.addClassRules({\nipSepCheck: {\n\"required\": true,\n\"integer\": true,\n\"range\":[0,255]\n},\nmacSepCheck:{\n\"required\": true,\n\"HEX\": true,\n\"fixedlength\": 2\n}\n});\nfunction compareIPv4(firstIP, secondIP)\n{\nvar fIP;\nvar sIP;\nfIP = firstIP.split(\".\");\nsIP = secondIP.split(\".\");\nfor (var i = 0; i < 4; i++)\n{\nif (fIP[i] != \"\" && sIP[i] != \"\")\n{\nfIP[i] = parseInt(fIP[i],10);\nsIP[i] = parseInt(sIP[i],10);\n}\nif (fIP[i] > sIP[i])\n{\nreturn 1;\n}\nelse if (fIP[i] < sIP[i])\n{\nreturn -1;\n}\n}\nreturn 0;\n}\nfunction checkWholeIPv4(k, v, ipValue)\n{\nvar vLen = v.length;\nvar retMsg = \"\";\nfor (var j = 0; j < vLen; j++)\n{\nif (retMsg != \"\")\n{\nretMsg += \", \";\n}\nvar range = v[j];\nif (typeof range === 'string')\n{\nretMsg += range;\n}\nelse\n{\nretMsg += range[0]+\" ~ \"+range[1];\n}\n}\nif (k == \"banValue\")\n{\nretMsg = \" is NOT allowed to input the following value(s): {0}. \".format(retMsg);\nfor (var i = 0; i < vLen; i++)\n{\nvar range = v[i];\nif (typeof range === 'string')\n{\nif (ipValue == range)\n{\nreturn [false, k, retMsg];\n}\n}\nelse\n{\nif (\"-1\" != compareIPv4(ipValue, range[0]) &&\n\"1\" != compareIPv4(ipValue, range[1]))\n{\nreturn [false, k, retMsg];\n}\n}\n}\n}\nelse if (k == \"allowRange\")\n{\nretMsg = \"'s input is invalid. Please ensure the input is in the following range: {0}. \".format(retMsg);\nfor (var i = 0; i < vLen; i++)\n{\nvar range = v[i];\nif (\"-1\" != compareIPv4(ipValue, range[0]) &&\n\"1\" != compareIPv4(ipValue, range[1]))\n{\nreturn [true, \"\", \"\"];\n}\n}\nreturn [false, k, retMsg];\n}\nelse if (k == \"notLessThan\")\n{\n}\nelse if (k == \"notMoreThan\")\n{\n}\nelse\n{\n}\nreturn [true, \"\", \"\"];\n}\nfunction checkWholeMac(k, v, macValue)\n{\nvar vLen = v.length;\nvar retMsg = \"\";\nfor (var j = 0; j < vLen; j++)\n{\nif (retMsg != \"\")\n{\nretMsg += \", \";\n}\nvar range = v[j];\nif (typeof range === 'string')\n{\nretMsg += range;\n}\nelse\n{\nretMsg += range[0]+\" ~ \"+range[1];\n}\n}\nif (k == \"banValue\")\n{\nretMsg = \" is NOT allowed to input the following value(s): {0}. \".format(retMsg);\nfor (var i = 0; i < vLen; i++)\n{\nvar range = v[i];\nif (typeof range === 'string')\n{\nif (macValue.toLowerCase() == range.toLowerCase())\n{\nreturn [false, k, retMsg];\n}\n}\n}\n}\nelse\n{\n}\nreturn [true, \"\", \"\"];\n}\nfunction getMsgofWholeMACIPCheck(checkRetArray, ruleObj, checkValue, checkParaName)\n{\nvar errMsg = \"\";\nswitch (checkRetArray[1])\n{\ncase \"banValue\":\n{\nif (ruleObj.messages.banValue != undefined)\n{\nerrMsg = ruleObj.messages.banValue;\n}\nelse\n{\nif (checkParaName != \"\")\n{\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse\n{\nerrMsg = \"Current operation is invalid, please check configuration parameters. \"+\"[\"+\"Error Input: \"+checkValue+\"]\";\n}\n}\nbreak;\n}\ncase \"allowRange\":\n{\nif (ruleObj.messages.allowRange != undefined)\n{\nerrMsg = ruleObj.messages.allowRange;\n}\nelse\n{\nif (checkParaName != \"\")\n{\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse\n{\nerrMsg = \"Current operation is invalid, please check configuration parameters. \"+\"[\"+\"Error Input: \"+checkValue+\"]\";\n}\n}\nbreak;\n}\ndefault:\n{\nerrMsg = \"error msg undefined!\"\n}\n}\nreturn errMsg;\n}\njQuery.validator.addMethod(\n\"utf8LengthRange\",\nfunction(value, element, param)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nvar valLength = value.length;\nvar param1 = param[0];\nvar param2 = param[1];\nif (param2 < 3)\n{\nalert(\"utf8LengthRange is invalid![\"+param2+\"<\"+3 +\"]\");\n}\nelse\n{\nparam1 = Math.ceil(parseInt(param[0])/ 3);\nparam2 = Math.floor(parseInt(param[1]) / 3);\nif (param1 < param2)\n{\nif (valLength >= param1 && valLength <= param2 )\n{\nreturn true;\n}\n}\nelse if (param1 == param2)\n{\nif (valLength == param2)\n{\nreturn true;\n}\n}\nelse\n{\nalert(\"utf8LengthRange [\"+param1+\",\"+param2+\"] is invalid!\");\n}\n}\nreturn false;\n},\nfunction(param, element){\nvar lengthStr = \"\";\nvar param1 = param[0];\nvar param2 = param[1];\nif (param2 < 3)\n{\nlengthStr = \" Range Error!!!!!![param2<WEB_UTF8_REALBYTE]\";\n}\nelse\n{\nparam1 = Math.ceil(parseInt(param[0])/ 3);\nparam2 = Math.floor(parseInt(param[1]) / 3);\nif (param1 < param2)\n{\nlengthStr = param1 + \" ~ \" + param2;\n}\nelse if (param1 == param2)\n{\nlengthStr = param2;\n}\nelse\n{\nlengthStr = \" Range Error!!!!!![\"+param1+\",\"+param2+\"]\";\n}\n}\nreturn $.validator.format(\"Please enter a value with {0} characters.\", lengthStr);\n}\n);\njQuery.validator.addMethod(\n\"differentWith\",\nfunction(value, element, param) {\nvar target = $(param);\nif (this.settings.onfocusout) {\ntarget.unbind(\".validate-differentWith\").bind(\"blur.validate-differentWith\", function() {\n$(element).valid();\n});\n}\nreturn value != target.val();\n},\nfunction(param, element){\nvar t = $(param).closest(\"[id^=template_]\");\nvar id = $(param).attr(\"id\");\nvar labelObj = $(\"label[for='\"+id+\"']\",t);\nvar label = labelObj.text();\nif($(element).is(\"select\"))\n{\nreturn $.validator.format(\"Please select an option different with \\\"{0}\\\".\", label);\n}\nelse\n{\nreturn $.validator.format(\"Please enter a value different with \\\"{0}\\\".\", label);\n}\n}\n);\nfunction checkTimeHMS(timestr) {\nvar re = /^([0-1]{1}[0-9]{1}|[2]{1}[0-3]{1}):[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/;\nif (re.test(timestr) == true) {\nreturn true;\n}\nreturn false;\n}\njQuery.validator.addMethod(\n\"checkTimeHMS\",\nfunction (value, element, params) {\nif (this.optional(element)) {\nreturn \"dependency-mismatch\";\n}\nif (checkTimeHMS(value) == true) {\nreturn true;\n}\nreturn false;\n},\n\"Please enter the correct time format like HH:MM:SS.\"\n);\nfunction get_element_obj(obj, id) {\nvar instTplt = obj.closest(\"[id^=template_]\");\nvar elementID = obj.attr(\"id\");\nvar arr = elementID.split(':');\nvar strId = id;\nif (arr.length > 1) {\nvar exNum = arr[arr.length - 1];\nstrId = id + \":\" + exNum;\n}\nreturn $(\"[id^='\" + strId + \"']\", instTplt);\n};\nfunction time_earlierThan(obj, value, param, type) {\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] < tmpvaluearr[0]) {\nreturn true;\n} else {\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] < tmpvaluearr[1]) {\nreturn true;\n} else {\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] < tmpvaluearr[2]) {\nreturn true;\n}\n}\nreturn false;\n}\n};\nfunction time_laterThan(obj, value, param, type) {\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] > tmpvaluearr[0]) {\nreturn true;\n} else {\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] > tmpvaluearr[1]) {\nreturn true;\n} else {\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] > tmpvaluearr[2]) {\nreturn true;\n}\n}\nreturn false;\n}\n};\njQuery.validator.addMethod(\n\"timeComparison\",\nfunction (value, element, param) {\nif (this.optional(element)) {\nreturn \"dependency-mismatch\";\n}\nif (2 > param.length) {\nreturn true;\n}\nvar obj = get_element_obj($(element), param[1]);\nif (3 > param.length) {\nparam[2] = {};\n}\nparam[2][\"idtext\"] = obj.parent().prev().text();\nif (obj.is(\":hidden\") || \"\" == obj.val()) {\nreturn true;\n}\nvar selectMode = {\n\"laterThan\": time_laterThan,\n\"earlierThan\": time_earlierThan\n};\nreturn selectMode[param[0]](obj, value, param);\n},\n\"Start time must be earlier than end time.\"\n);\nfunction randomNum(num)\n{\nvar t='';\nfor(var i=0;i<num;i++)\n{\nt+=Math.floor(Math.random()*10);\n}\nreturn t;\n}\nfunction encodeKey(key, iv)\n{\nvar pubKey = \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAodPTerkUVCYmv28SOfRV\\n7UKHVujx/HjCUTAWy9l0L5H0JV0LfDudTdMNPEKloZsNam3YrtEnq6jqMLJV4ASb\\n1d6axmIgJ636wyTUS99gj4BKs6bQSTUSE8h/QkUYv4gEIt3saMS0pZpd90y6+B/9\\nhZxZE/RKU8e+zgRqp1/762TB7vcjtjOwXRDEL0w71Jk9i8VUQ59MR1Uj5E8X3WIc\\nfYSK5RWBkMhfaTRM6ozS9Bqhi40xlSOb3GBxCmliCifOJNLoO9kFoWgAIw5hkSIb\\nGH+4Csop9Uy8VvmmB+B3ubFLN35qIa5OG5+SDXn4L7FeAA5lRiGxRi8tsWrtew8w\\nnwIDAQAB\\n-----END PUBLIC KEY-----\";\nvar str = key + \"+\" + iv;\nvar encrypt = new JSEncrypt();\nencrypt.setPublicKey(pubKey);\nvar encrypted = encrypt.encrypt(str);\nvar encryptkey = encrypted.toString();\nif(encryptkey.length == 0 || encryptkey == \"false\")\n{\nencryptkey = \"\";\n}\nreturn encryptkey;\n}\nfunction encodePara(data, key, iv)\n{\nvar key = CryptoJS.SHA256(key);\nvar iv = CryptoJS.SHA256(iv);\nvar encrypted =CryptoJS.AES.encrypt(data,key,\n{\niv:iv,\nmode:CryptoJS.mode.CBC,\npadding:CryptoJS.pad.ZeroPadding\n});\nreturn encrypted.toString();\n}\nfunction decodePara(encrypted, key, iv)\n{\nif (encrypted == \"\")\n{\nreturn \"\";\n}\ntry {\nvar key = CryptoJS.SHA256(key);\nvar iv = CryptoJS.SHA256(iv);\nvar decrypted = CryptoJS.AES.decrypt(encrypted, key, {\niv: iv,\nmode: CryptoJS.mode.CBC,\npadding: CryptoJS.pad.ZeroPadding\n});\nreturn decrypted.toString(CryptoJS.enc.Utf8);\n} catch (e) {\nconsoleLog(\"secure_common: decode error!!\")\nconsoleLog(e);\nreturn encrypted;\n}\n}\n\nvar menuTreeJSON = [{\"id\":\"homePage\",\"name\":\"Home\",\"area\":[{\"area\":\"home_t.lp\"}]},{\"id\":\"internet\",\"name\":\"Internet\"},{\"id\":\"localnet\",\"name\":\"Local Network\"},{\"id\":\"mgrAndDiag\",\"name\":\"Management & Diagnosis\"}];\nvar menuTreeObj = new MenuTreeClass(menuTreeJSON);\nvar _sessionTmpToken = \"\";\nvar preLoadImg = [];\npreLoadImg[0] = \"/img/nv_s.gif\";\npreLoadImg[1] = \"/img/nv_left.gif\";\npreLoadImg[2] = \"/img/nv_right.gif\";\npreLoadImg[3] = \"/img/nv_middle.gif\";\npreLoadImg[4] = \"/img/waiting.gif\";\npreLoadImg[5] = \"/img/info_m.png\";\npreLoadImg[6] = \"/img/waiting_w.gif\";\nfunction preload(Img)\n{\nvar imgTmp = [];\nfor (var i=0; i<Img.length; i++)\n{\nimgTmp[i] = new Image();\nimgTmp[i].src = Img[i];\n}\n}\npreload(preLoadImg);\n</script>\n</head>\n<body>\n<script type=\"text/javascript\">\nif(top != self)\n{\ndocument.getElementsByTagName(\"body\")[0].style.display = 'none';\ntop.location = self.location;\n}\nfunction LogOff()\n{\nshowWaitTip(true);\n$.post( \"/?_type=loginData&_tag=logout_entry\", {IF_LogOff:1, _sessionTOKEN:_sessionTmpToken}, undefined, \"json\" )\n.done(function( data ) {\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\nelse\n{\nalert(\"This page has expired, please refresh and try again. \");\nshowWaitTip(false);\n}\n});\n}\n</script>\n<div id=\"blackMask\" class=\"black_overlay\" style=\"display:none;\"></div>\n<div id=\"tipLayer\" class=\"white_content\">\n<div id=\"confirmLayer\" style=\"display:none;\">\n<div id=\"confirmMsg\">\n<p>are you sure?</p>\n</div>\n<div id=\"waitingImgArea\" style=\"display:none;\">\n</div>\n<div id=\"confirmBtnArea\" style=\"display:none;\">\n<input type=\"button\" class=\"button\" id=\"confirmCancel\" value=\"Cancel\" />\n<input type=\"button\" class=\"button\" id=\"confirmOK\" value=\"OK\" />\n<input type=\"button\" class=\"button\" id=\"confirmStop\" value=\"Stop\" />\n</div>\n</div>\n</div>\n<div id=\"page_container\">\n<div class=\"white_content_security\">\n<div class=\"sercurityNotice\" >\n<div class=\"sercurityNoticeMsg\">\n<ul>\n<li id=\"LastIP\"></li>\n<li id=\"LastCurrentTime\"></li>\n</ul>\n</div>\n<div id=\"confirmBtnArea\">\n<input type=\"button\" class=\"button\" id=\"sercurityNoticeOK\" value=\"OK\">\n</div>\n</div>\n</div>\n<div id=\"page_header\">\n<div id=\"banner\">\n<div id=\"logo\" class=\"logo\"></div>\n<div class=\"timeArea\" id=\"timeArea\" style=\"display:none;\">\nCurrent Time: <span id=\"_DevCurrTime\">Loading...</span>\n</div>\n<div id=\"banner_switchArea\">\n<div id=\"logOff\" class=\"emColor clickable\" onclick=\"LogOff()\">\n<div id=\"LogOffLnk\"> Logout</div>\n<div id=\"logUser\" class=\"logUser\" title=\"\">\n\n</div>\n</div>\n</div>\n</div>\n<div id=\"mainNavigator\">\n<div id=\"mn_first\"></div>\n<div id=\"mn_li\"></div>\n<div id=\"mn_last\"></div>\n</div>\n</div>\n<div id=\"page_content\">\n\n<script type=\"text/javascript\">\n\nvar loginLockInterval = null;\nvar editableInputs;\nvar dftFcsTaget;\nvar IsAllowedSubmit = true;\nfunction createTimeCountDownMessage(lockingTime, promptMsg)\n{\nif((promptMsg != null && promptMsg.length > 0) || lockingTime > 0 )\n{\n\nvar timeOutHint = promptMsg.concat(\"Please retry after {1} seconds. \");\n$(\"#login_error_waittime\").text(timeOutHint.format(3,lockingTime)).show();\n}\nelse\n{\n$(\"#login_error_waittime\").hide();\n}\n}\nfunction timer(seconds, promptMsg) {\nwindow.setTimeout(function() {\neditableInputs.removeAttr(\"disabled\");\ndftFcsTaget.focus();\n$(\"#LoginId\").removeAttr(\"disabled\").removeClass(\"disableBtn\");\n$(\"#login_error\").hide();\n$(\"#login_error_waittime\").hide().text(\"\");\nif (loginLockInterval) {\nwindow.clearInterval(loginLockInterval);\nconsoleLog(\"timeout to clearInterval!!!\");\n}\n}, seconds * 1000);\nloginLockInterval = window.setInterval((function(sec, msg){\nreturn function () {\nif (sec > 0){\nsec--;\n}\ncreateTimeCountDownMessage(sec, msg);\n}\n})(seconds, promptMsg), 1000);\n}\nfunction showTimeCountDown(lockingTime, promptMsg)\n{\nif(lockingTime > 0)\n{\ncreateTimeCountDownMessage(lockingTime, promptMsg);\n$(\"#LoginId\").attr(\"disabled\",\"true\").addClass(\"disableBtn\");\neditableInputs.attr(\"disabled\",\"true\");\ntimer(lockingTime, promptMsg);\n}\n}\nfunction DisplayLoginErrorTip(loginData)\n{\nvar loginErrMsg = loginData.loginErrMsg;\nvar lockingTime = loginData.lockingTime;\nvar promptMsg = loginData.promptMsg;\nlockingTime = parseInt(lockingTime);\nif ( IsBrowserSupportCookie() == false )\n{\n$(\"#login_error\").show();\n$(\"#login_error_span\").text(\"Your browser's cookie functionality is turned off, please turn it on before login.\");\n}\nelse if(loginErrMsg.length > 0 || promptMsg.length > 0)\n{\n$(\"#login_error\").show();\nif(loginErrMsg.length > 0)\n{\n$(\"#login_error_span\").text(loginErrMsg).show();\n}\nelse\n{\n$(\"#login_error_span\").hide();\n}\nif (lockingTime > 0 || promptMsg.length > 0)\n{\nshowTimeCountDown(lockingTime, promptMsg);\n}\n}\nelse\n{\n$(\"#login_error\").hide();\n}\n}\nfunction g_loginToken(xml)\n{\nvar xmlObj = $(xml).text();\nvar Password =$(\"#Frm_Password\").val();\nvar SHA256Password =sha256(Password+xmlObj);\nvar postData = {};\npostData[\"Password\"] = SHA256Password;\npostData[\"Username\"] = $(\"#Frm_Username\").val();\npostData[\"_sessionTOKEN\"] = $(\"#_sessionTOKEN\").val();\npostData[\"action\"] = \"login\";\npostData[\"captcha\"] = $(\"#Frm_captchaCode\").val();\nPassword = undefined;\nSHA256Password = undefined;\n$.post( \"/?_type=loginData&_tag=login_entry\", postData, undefined, \"json\" )\n.done(function( data ) {\n$(\"#_sessionTOKEN\").val(data.sess_token);\nif ( data.login_need_refresh )\n{\ntop.location.href = top.location.href;\n}\nelse\n{\nDisplayLoginErrorTip(data);\n}\n});\npostData = undefined;\n}\nvar throttle = function (fn, delay, atleast) {\nvar timer = null, previous = null;\nreturn function () {\nvar context = this, args = arguments, now = +new Date();\nif (!previous) {previous = now;}\nif (now - previous > atleast) {\nfn.apply(context, args);\nprevious = now;\n} else {\nclearTimeout(timer);\ntimer = setTimeout(function() {\nfn.apply(context, args);\n}, delay);\n}\n}\n};\nfunction ElementCheck(obj, errormsg)\n{\nvar errorobj = obj.parents(\".row\").find(\".errorLabelWraper\");\nerrorobj.remove();\nobj.removeClass(\"error\");\nif (obj.attr(\"type\") == \"text\")\n{\nif (obj.val() == \"\")\n{\n$(this).addClass(\"error\");\nIsAllowedSubmit = false;\nShowError(obj, errormsg);\n}\nelse\n{\nIsAllowedSubmit = true;\n}\n}\nif (obj.attr(\"type\") == \"checkbox\")\n{\nif (obj.is(\":checked\"))\n{\nIsAllowedSubmit = true;\n}\nelse\n{\n$(this).addClass(\"error\");\nIsAllowedSubmit = false;\nShowError(obj, errormsg);\n}\n}\n}\nfunction ShowError(element, errormsg) {\nvar rowObj = element.closest(\".row\");\nif ( rowObj.length == 0 )\n{\nconsoleLog(\"element id=[\"+element.attr(\"id\")+\"] is not in row div.\");\nreturn ;\n}\nvar id = element.attr(\"id\");\nvar errorHTML = \"<label for='\" + id + \" generated='true' class='error'>\" + errormsg + \" </label>\";\nvar error = $(errorHTML);\nvar tipHTML = \"<div class=\\\"errorLabelWraper\\\"></div>\";\nvar tipObj = $(tipHTML);\nerror.appendTo(tipObj);\nvar rowWidth = rowObj.width();\nvar usedWidth = 0;\nvar rightObj = undefined;\nrowObj.children().each(function(){\nif (!($(this).hasClass(\"_LuQUID_AccessDeviceList\")||\n$(this).hasClass(\"clear\"))){\nusedWidth += $(this).outerWidth(true);\n}\nif ($(this).hasClass(\"right\")){\nrightObj = $(this);\n}\n});\nvar errWidth = rowWidth - usedWidth;\ntipObj.width(errWidth-5-23);\nif (rightObj != undefined)\n{\ntipObj.insertAfter(rightObj);\n}\nelse\n{\ntipObj.appendTo(rowObj);\n}\n}\n$(document).ready(function(){\nvar loginForm = $(\".loginInstCfgArea\");\neditableInputs = $(\"input\",loginForm).not(\":disabled\").not(\"[readonly=readonly]\");\nnew ShowHidePwdClass(\"Frm_Password\", \"loginWrapper\", \"OBJ_USERINFO_ID\");\n$(\"#captchaImg\",loginForm).click(function(){\ngetCaptcha($(this));\n});\n$(\"#Frm_captchaCode\",loginForm).focus(function(){\nvar imgTemp = $(\"#captchaImg\",loginForm);\nif(!imgTemp.hasClass(\"__CheckVaildImgShow\")){\nimgTemp.click();\n}\n});\n$.getJSON(\"/?_type=loginData&_tag=login_entry\")\n.done(function( json ) {\n$(\"#_sessionTOKEN\").val(json.sess_token);\nDisplayLoginErrorTip(json);\n})\n.fail(function( jqxhr, textStatus, error ) {\nvar err = textStatus + \", \" + error;\nconsoleLog( \"Request Failed: \" + err );\n});\neditableInputs.each(function(){\nif ($(this).val() == \"\") {\n$(this).focus();\ndftFcsTaget = $(this);\nreturn false;\n}\n});\n$(\"#LoginId\").bind(\"click\", throttle(function(){\nif ( true == IsAllowedSubmit )\n{\nvar loadAllowAddr = \"/?_type=loginData&_tag=login_token\";\n$(this).dataTransfer(loadAllowAddr, \"GET\", g_loginToken, undefined, false);\n}\n}, 300, 300));\nshowWaitTip(false);\neditableInputs.keydown(function(event){\nif(event.keyCode==13){\nevent.preventDefault();\nevent.stopPropagation();\n$(\"#LoginId\").click();\n}\n});\n});\nString.prototype.format = function(args) {\nvar result = this;\nif (arguments.length > 0)\n{\nfor (var i = 0; i < arguments.length; i++)\n{\nif (arguments[i] != undefined) {\nvar reg = new RegExp(\"({[\" + i + \"]})\", \"g\");\nresult = result.replace(reg, arguments[i]);\n}\n}\n}\nreturn result;\n};\nfunction showOrHideRowDiv(action, RowDiv)\n{\nvar subWidget = RowDiv.find(\"*[id!='']\")\nif ( action == \"show\" )\n{\nRowDiv.showIt(true);\nsubWidget.removeClass(\"PostIgnore\");\n}\nelse\n{\nRowDiv.showIt(false);\nsubWidget.addClass(\"PostIgnore\");\n}\n}\nfunction colonStripping(str)\n{\nvar colonLocation = str.indexOf(\":\");\nif ( colonLocation != -1 )\n{\nreturn str.substring(0, colonLocation);\n}\nreturn str;\n}\nfunction colonStrippingLast(str)\n{\nvar colonLocation = str.lastIndexOf(\":\");\nif ( colonLocation != -1 )\n{\nreturn str.substring(0, colonLocation);\n}\nreturn str;\n}\njQuery.fn.showIt = function(show) {\nif (show)\n{\n$(this).css(\"display\", \"\");\n}\nelse\n{\n$(this).css(\"display\", \"none\");\n}\n};\nfunction GetSuffixedIDorName(oldValue, suffix, splitter, forParaName)\n{\nvar newValue = \"\";\nif ( forParaName == true )\n{\noldValue = oldValue.split(\":\");\noldValue[0] += splitter + suffix;\nnewValue = oldValue.join(\":\");\n}\nelse\n{\nnewValue = oldValue + splitter + suffix;\n}\nreturn newValue;\n}\njQuery.fn.cloneWithSuffix = function(suffix, splitter, forParaName) {\nvar source = $(this);\nvar clone = source.clone(true);\nclone.attr(\"id\", clone.attr(\"id\")+\"_\"+suffix);\nif ( undefined == splitter )\n{\nsplitter = \":\";\n}\nif ( undefined == forParaName )\n{\nforParaName = false;\n}\nvar idElems = clone.find(\"*[id!='']\");\nidElems.each(function(){\nvar idEle = $(this);\nvar oldID = idEle.attr(\"id\");\nif (oldID != undefined)\n{\nvar newID = GetSuffixedIDorName(oldID, suffix, splitter, forParaName);\nidEle.attr(\"id\", newID);\n}\nvar oldName = idEle.attr(\"name\");\nif (oldName != undefined)\n{\nvar newName = GetSuffixedIDorName(oldName, suffix, splitter, forParaName);\nidEle.attr(\"name\", newName);\n}\n});\nlabelForElems = clone.find(\"label\");\nlabelForElems.each(function(){\nvar labelForEle = $(this);\nvar oldFor = labelForEle.attr(\"for\");\nif (oldFor != undefined)\n{\nvar newFor = GetSuffixedIDorName(oldFor, suffix, splitter, forParaName);\nlabelForEle.attr(\"for\", newFor);\n}\n});\nclone.trigger(\"applyPromptCheckJSON\", [clone]);\n$.publish(\"modify_promptcheck\",[clone]);\nreturn clone;\n};\nfunction initial_sceneTip()\n{\n$(\".sceneTip_container\").each(function(){\n$(this).hide();\n});\n$(\".sceneTipLink\").each(function(){\nvar sceneTipLinkContent = $(this).children();\nsceneTipLinkContent.unbind( \"click\" );\nsceneTipLinkContent.click(function(event){\nevent.preventDefault();\n$(this).parent().next().slideToggle(\"normal\");\n});\n});\n$(\".sceneTip_close\").each(function(){\nvar sceneTip_closeLink = $(this).children();\nsceneTip_closeLink.unbind( \"click\" );\nsceneTip_closeLink.click(function(){\n$(this).parent().parent().slideUp(\"normal\");\n});\n});\n}\nfunction succHintShow(template)\n{\nvar PostFeedbackOBJ = $(\".succHint\",template);\nPostFeedbackOBJ.fadeIn(1000);\nwindow.setTimeout(\nfunction() {\nPostFeedbackOBJ.fadeOut(1000);\nPostFeedbackOBJ.hide();\n},\n2000\n);\n}\njQuery.fn.dataTransfer = function(URL, transferType, success_func, error_func, IfShowWaitTip, async, dataType){\nif ( !URL || URL == \"\" )\n{\nconsoleLog(\"[dataTransfer]URL is illegal!\");\nreturn;\n}\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nvar asyncTemp = async;\nif ( asyncTemp == undefined )\n{\nasyncTemp = true;\n}\nif ( !dataType )\n{\nvar dataType = \"xml\";\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\nvar Head = $(this);\n$.ajax({\nurl:URL,\ntype: transferType,\ndataType: dataType,\ntimeout: 30000,\nasync: asyncTemp,\ncache:false,\nerror: function(){\nif ($.isFunction(error_func))\n{\nerror_func();\n}\nelse\n{\nif (Head != undefined)\n{\nvar ajaxTransferFailHint = \"The server is not available now. Please refresh page to reload. \";\nvar externErrorHint = $(\".externErrorHint\",Head);\nif ( externErrorHint != undefined )\n{\n$(\"span\",externErrorHint).text(ajaxTransferFailHint);\nexternErrorHint.showIt(true);\n}\n}\nshowWaitTip(false);\n}\n},\nsuccess: function(xml){\nsuccess_func(xml);\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(false);\n}\n}\n});\n};\nfunction HTMLEnCode(str)\n{\nvar s = \"\";\nif (typeof(str) != \"string\")\n{\nreturn str;\n}\nif(str.length == 0)\n{\nreturn \"\";\n}\ns = str.replace(/&/g, \"&\");\ns = s.replace(/</g, \"<\");\ns = s.replace(/>/g, \">\");\ns = s.replace(/ /g, \" \");\ns = s.replace(/\\'/g, \"'\");\ns = s.replace(/\\\"/g, \""\");\nreturn s;\n}\nfunction addSlash(srcStr)\n{\nvar str = \"\";\nvar ch = \"\";\nif (typeof(srcStr) != \"string\")\n{\nreturn srcStr;\n}\nfor(var i = 0; i < srcStr.length; i++)\n{\nch = srcStr.substr(i, 1);\nif( \"\\\\\" == ch )\n{\nch = \"\\\\\\\\\";\n}\nelse if( \"\\'\" == ch )\n{\nch = \"\\\\\\'\";\n}\nelse if( \"\\\"\" == ch )\n{\nch = \"\\\\\\\"\";\n}\nstr = str + ch;\n}\nreturn str;\n}\nfunction SetSelectValue(SelectElem, data)\n{\n$(\"option[class='_optExpHandle']\", SelectElem).remove();\nvar findOption = 0;\n$(\"option\", SelectElem).removeAttr(\"selected\");\n$(\"option\", SelectElem).each(function(){\nvar OptionObj = $(this);\nif ( OptionObj.val() == data )\n{\nfindOption = 1\nSelectElem.val(data);\nreturn false;\n}\n});\nif ( findOption == 0 )\n{\nSelectElem.append(\"<option value='\"+ HTMLEnCode(data)\n+ \"' title='--Unknown--' class='_optExpHandle'>\"\n+ \"--Unknown--\" + \"</option>\");\nSelectElem.val(addSlash(data));\n}\n}\njQuery.fn.fillDataByType = function(data){\nvar Elems = $(this);\nif (Elems.is(\"input\"))\n{\nswitch (Elems.attr(\"type\"))\n{\ncase \"hidden\":\n{\nElems.val(data);\nif (Elems.attr(\"_LuQUID_splitMACID\") != undefined)\n{\nvar splitMACID = Elems.attr(\"_LuQUID_splitMACID\");\nElems.FillIPorMacDataBySplit(splitMACID, \":\", 6);\n}\nelse if (Elems.attr(\"_LuQUID_splitIPID\") != undefined)\n{\nvar splitIPID = Elems.attr(\"_LuQUID_splitIPID\");\nElems.FillIPorMacDataBySplit(splitIPID, \".\", 4);\n}\nbreak;\n}\ncase \"text\":\ncase \"password\":\n{\nif( Elems.attr(\"encode\") == \"1\")\n{\nvar key = _sessionTmpToken;\nvar iv = key.split(\"\").reverse().join(\"\");\ndata = decodePara(data,key,iv);\n}\nElems.val(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\nbreak;\n}\ncase \"checkbox\":\n{\nif( 1 == data )\n{\nElems.prop(\"checked\", true);\n}\nelse\n{\nElems.prop(\"checked\", false);\n}\nElems.val(data);\nbreak;\n}\ndefault:\n{\nbreak;\n}\n}\n}\nelse if (Elems.is(\"span\"))\n{\nElems.text(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\n}\nelse if (Elems.is(\"a\"))\n{\nElems.text(data);\nElems.attr(\"href\",data);\n}\nelse if (Elems.is(\"select\"))\n{\nSetSelectValue(Elems, data);\n}\nelse if (Elems.is(\"textarea\"))\n{\nElems.val(data);\n}\nelse if (Elems.is(\"label\"))\n{\nElems.text(data);\n}\nelse if (Elems.is(\"div\"))\n{\nvar radioObj = $(\"input[type=radio]\", Elems);\nradioObj.each(function(){\nvar thisObj = $(this);\nif (thisObj.val() == data)\n{\nthisObj.prop(\"checked\", true);\n}\nelse\n{\nthisObj.prop(\"checked\", false);\n}\n});\n}\nelse if (Elems.is(\"td\"))\n{\nElems.text(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\n}\nelse\n{\n}\n};\njQuery.fn.fillDataByOBJID = function(xml, OBJIDs, Clone, suffix, splitter){\nif ( undefined == splitter )\n{\nsplitter = \":\";\n}\n$(xml).find(\"encode\").each(function(){\nvar encodePara= $(this).text().split(\",\");\nfor(var i in encodePara)\n{\n$(\"input[id^=\"+encodePara[i]+\"]\", Clone).attr(\"encode\",\"1\");\n}\n});\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJIDSplit = OBJID.split(\":\");\nvar OBJIDIndex = 0;\nvar isSplitterExist = 0;\nif ( OBJIDSplit.length == 2 )\n{\nOBJID = OBJIDSplit[0];\nOBJIDIndex = parseInt(OBJIDSplit[1]);\nisSplitterExist = 1;\n}\nvar OBJs = $(xml).find(OBJID);\nif ( OBJs.length == 0 )\n{\ncontinue;\n}\nvar OBJ;\nif ( OBJIDIndex < OBJs.length )\n{\nOBJ = OBJs.get(OBJIDIndex);\n}\nelse\n{\ncontinue;\n}\nvar instances;\nif ( 1 == isSplitterExist )\n{\ninstances = $(\"Instance\", OBJ);\n}\nelse\n{\ninstances = $(\"Instance\", OBJs);\n}\nif ( instances.length <= suffix\n|| suffix < 0 )\n{\nconsoleLog(\"suffix off normal upper!!\");\ncontinue;\n}\nvar InstOBJ = instances.eq(suffix);\nInstOBJ.find(\"ParaName\").each(function(){\nvar ParaName = $(this).text();\nvar ParaValue = $(this).next().text();\nvar Elems = $(\"[id^='\"+ParaName+splitter+\"']\", Clone);\nif ( Elems.length == 0 )\n{\nElems = $(\"[id='\"+ParaName+\"']\", Clone);\n}\nif ( Elems.length > 0 )\n{\nif ( Elems.length > 1 )\n{\nconsoleLog(\"this ele id is duplicate[\" +Elems.attr(\"id\")+ \"]\");\n}\nElems.fillDataByType(ParaValue);\n}\nelse\n{\nif ( \"_InstID\" != ParaName )\n{\nconsoleLog(\"XML ParaName(\"+ParaName+\") cannot map to HTML \"\n+ \"by fillDataByType, so it may be useless, \"\n+ \"web security require deleting it!\");\n}\n}\n});\n}\n$(\".SpecialPassword\", Clone).each(function(i){\n$(this).val(\"\t\t\t\t\t\t\");\n});\n};\njQuery.fn.InstantializeForTemplateBox = function(xml, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(xml).find(OBJID);\nif ( OBJs.length == 0 )\n{\ncontinue;\n}\nvar ruleTemplate = $(\"[id='\"+OBJID+\"']._LuQuid_TempalteBox\", container);\nif( ruleTemplate.length == 0 )\n{\ncontinue;\n}\n$(\"[id^='\"+OBJID+\"_']._LuQuid_TempalteBox\", container).remove();\nvar subWidget = ruleTemplate.find(\"*[id!='']\");\nsubWidget.removeClass(\"PostIgnore\");\nvar instances = $(\"Instance\", OBJs);\nvar ruleNum = instances.length;\nfor (var i=0; i<ruleNum; i++)\n{\nvar clone = ruleTemplate.cloneWithSuffix(i, \"_\", true);\nruleTemplate.before(clone);\nvar DataOBJID = [OBJID];\nclone.fillDataByOBJID(xml, DataOBJID, clone, i, \"_\");\nclone.showIt(true);\n}\n$(\"[id='\"+OBJID+\"._OBJ_InstNUM']\", container).val(ruleNum);\nvar templateInstID = $(\"[id='\"+OBJID+\"._OBJ_InstID']\", container);\ntemplateInstID.addClass(\"PostIgnore\");\nsubWidget.addClass(\"PostIgnore\");\n}\n};\njQuery.fn.FillDataOnlyForTemplateBox = function(xml, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(xml).find(OBJID);\nif ( OBJs.length == 0 )\n{\ncontinue;\n}\nvar ruleTemplate = $(\"[id='\"+OBJID+\"']._LuQuid_TempalteBox\", container);\nif( ruleTemplate.length == 0 )\n{\ncontinue;\n}\n$(\"[id^='\"+OBJID+\"_']._LuQuid_TempalteBox\", container).each(function(){\nvar instObj = $(this);\nvar instId = instObj.find(\"[id^='\"+OBJID+\"._OBJ_InstID']\").val();\nvar index = -1;\nvar instances = $(\"Instance\", OBJs);\nvar ruleNum = instances.length;\nfor (var i=0; i<ruleNum; i++)\n{\nvar instIdName = OBJID+\"._OBJ_InstID\";\nvar ToOperParaArray = {};\nToOperParaArray[instIdName] = {\nValueOrigin: \"\"\n};\nxmlParaInInstOperate(xml, OBJID, i, ToOperParaArray);\nvar ruleInstId = ToOperParaArray[instIdName].ValueOrigin;\nif ( instId == ruleInstId )\n{\nindex = i;\nbreak;\n}\n}\nif ( index > -1 )\n{\nvar DataOBJID = [OBJID];\ninstObj.fillDataByOBJID(xml, DataOBJID, instObj, index, \"_\");\n}\nelse\n{\nconsoleLog(\"instId(\"+instId+\") cannot match xml instance\");\n}\n});\n}\n};\njQuery.fn.createPageDataByClone = function(RuleNum,DataOBJID,xml,fillDataByCustom){\nvar Head = $(this);\nvar HeadID = Head.attr(\"id\");\nvar TemplateOBJ = $(\"#template_\"+HeadID , Head);\n$(\"#_InstNum\", Head).val(RuleNum);\nfor (var i=0; i<RuleNum; i++)\n{\nvar clone = TemplateOBJ.cloneWithSuffix(i);\nTemplateOBJ.before(clone);\nclone.fillDataByOBJID(xml ,DataOBJID, clone, i);\nif ( $.isFunction(fillDataByCustom) )\n{\nfillDataByCustom(i,clone);\n}\nelse\n{\nclone.trigger(\"fillDataByCustom\",[i,clone]);\n}\nclone.showIt(true);\n}\n};\njQuery.fn.hasError = function(xml, location, container){\nvar ContentContainer = $(\"#\"+container);\nvar cmapiErrorContainer;\nvar errStr = $(\"IF_ERRORSTR\", $(xml));\nvar errParam = $(\"IF_ERRORPARAM\", $(xml));\nif (errStr.length <= 0 || errParam.length <= 0)\n{\nconsoleLog(\"[hasError:]cannot find IF_ERRORSTR or IF_ERRORPARAM\");\nreturn;\n}\nif(!container)\n{\nContentContainer = $(this);\n}\nif (!location)\n{\nlocation = \"errorHint\";\n}\nif (location == \"externErrorHint\")\n{\ncmapiErrorContainer = $(\".externErrorHint\",ContentContainer);\n}\nelse\n{\ncmapiErrorContainer = $(\".\"+location,ContentContainer);\n}\nvar ErrorString = $(\"IF_ERRORSTR\", $(xml)).text();\nvar ErrorParam = $(\"IF_ERRORPARAM\", $(xml)).text();\nif ( ErrorString == \"SUCC\" )\n{\ncmapiErrorContainer.showIt(false);\nreturn 0;\n}\nelse if ( ErrorString == \"SessionTimeout\" )\n{\nif (typeof(pro_SessionTimeout) == \"function\")\n{\npro_SessionTimeout();\n}\nelse\n{\ntop.location.href = top.location.href;\n}\nreturn 1;\n}\nelse\n{\nvar cmapiErrorContainerHtml = \"\";\nvar paraString = \"\";\nif ( ErrorParam != \"SUCC\")\n{\nvar LabelFindResult = 0;\nErrorString = \"Current operation is invalid, please check whether {0} is legal. \"\nvar paraLabel = ContentContainer.find(\"label[for^='\"+ErrorParam+\"\\\\:']\");\nif ( paraLabel.length <= 0 )\n{\nparaLabel = ContentContainer.find(\"label[for='\"+ErrorParam+\"']\");\n}\nif ( paraLabel.length > 0 )\n{\nparaLabel.each(function(){\nvar labelTmp = $(this);\nif ( !labelTmp.hasClass(\"error\"))\n{\nparaString = labelTmp.text();\nLabelFindResult = 1;\nreturn false;\n}\n});\n}\nif ( LabelFindResult == 0 || paraString.trim() == \"\")\n{\nErrorString = \"Current operation is invalid, please check configuration parameters. \";\n}\ncmapiErrorContainerHtml = ErrorString.format(paraString);\n}\nelse\n{\nif ( \"FAIL\" == ErrorString\n|| \"Current operation is invalid, please check whether {0} is legal. \" == ErrorString )\n{\nErrorString = \"Current operation is invalid, please check configuration parameters. \";\n}\ncmapiErrorContainerHtml = ErrorString;\n}\n$(\"span\",cmapiErrorContainer).html(cmapiErrorContainerHtml);\ncmapiErrorContainer.showIt(true);\nreturn 1;\n}\n};\njQuery.fn.ShouldPostIgnore = function(){\nif($(this).hasClass(\"PostIgnore\"))\n{\nreturn true;\n}\nreturn false;\n};\njQuery.fn.InitialPostData = function(actionType){\nvar AND = \"&\";\nvar template = $(this);\nvar PostData = \"IF_ACTION=\" + actionType;\nvar cryptoKey = randomNum(16);\nvar cryptoIv = randomNum(16);\nvar needEncode = false;\nvar formInputContent = template.find(\"input,select\");\nformInputContent.each(function(key){\nvar Elems = $(this);\nif ( Elems.ShouldPostIgnore() )\n{\nreturn true;\n}\nvar ElemsID = Elems.attr(\"id\");\nif (typeof(ElemsID) != \"string\") {\nreturn true;\n}\nif ( Elems.attr(\"type\") == \"radio\" )\n{\nif ( Elems.is(':checked') )\n{\nElemsID = Elems.attr(\"name\");\n}\nelse\n{\nreturn true;\n}\n}\nvar ElemsMainID = colonStripping(ElemsID);\nvar ElemsValue = \"\";\nif ( Elems.is(\"input\") )\n{\nswitch (Elems.attr(\"type\"))\n{\ncase \"hidden\":\n{\nif (Elems.attr(\"_LuQUID_splitMACID\") != undefined)\n{\nvar splitMACID = Elems.attr(\"_LuQUID_splitMACID\");\nElems.FillIPorMacDataCombination(splitMACID, \":\", 6);\n}\nelse if (Elems.attr(\"_LuQUID_splitIPID\") != undefined)\n{\nvar splitIPID = Elems.attr(\"_LuQUID_splitIPID\");\nElems.FillIPorMacDataCombination(splitIPID, \".\", 4);\n}\nElemsValue = Elems.val();\nvar OriValue = ElemsValue;\nif(Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodePara(ElemsValue,cryptoKey,cryptoIv);\nif (OriValue != ElemsValue)\n{\nneedEncode = true;\n}\n}\nbreak;\n}\ncase \"text\":\ncase \"password\":\ncase \"radio\":\n{\nElemsValue = Elems.val();\nvar OriValue = ElemsValue;\nif(Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodePara(ElemsValue,cryptoKey,cryptoIv);\nif (OriValue != ElemsValue)\n{\nneedEncode = true;\n}\n}\nbreak;\n}\ncase \"checkbox\":\n{\nif( Elems.is(':checked')==true )\n{\nElemsValue = 1;\n}\nelse\n{\nElemsValue = 0;\n}\nbreak;\n}\ndefault:\n{\nbreak;\n}\n}\n}\nelse if ( Elems.is(\"select\") )\n{\nElemsValue = Elems.val();\n}\nelse\n{\nconsoleLog(\"when create post data, find not support elements type!!\");\n}\nvar NameValueJson = {\n\"ElemsMainID\": ElemsMainID,\n\"ElemsValue\": ElemsValue\n};\ntemplate.trigger(\"PostDataChangeByCustom\",[NameValueJson,template]);\nvar RealElemsValue = encodeURIComponent(NameValueJson.ElemsValue);\nPostData += AND + ElemsMainID + \"=\" + RealElemsValue;\n});\nif(needEncode)\n{\nPostData += AND + \"encode=\" + encodeURIComponent(encodeKey(cryptoKey,cryptoIv));\n}\nreturn PostData;\n};\nfunction RefreshClickHandle(Head)\n{\n$(\".Btn_refresh\", Head).each(function(){\n$(this).unbind(\"click\");\n$(this).bind(\"click\", function(){\nvar buttonOBJ = $(this);\nif (buttonOBJ.hasClass(\"disableBtn\")\n||buttonOBJ.hasClass(\"disableLongBtn\"))\n{\nreturn;\n}\nvar HeadID = Head.attr(\"id\");\nHead.find(\"[id^='template_\"+HeadID+\"_']\").each(function(){\n$(this).remove();\n});\nvar ServerAddr = $(\"address span\", Head).text();\nHead.dataTransfer(ServerAddr,\n\"GET\",\nHead.succfunction,\nHead.failfunction,\nundefined,\ntrue);\n});\n})\n}\nfunction initialStatusArea(Head)\n{\nif ( 0 == $(\"._LuQUID_STATUS_OBJID\", Head).length )\n{\nreturn;\n}\nvar OBJID = [];\nvar OBJDOMs = $(\"._LuQUID_STATUS_OBJID>li\", Head);\nOBJDOMs.each(function(){\nvar identity = $(this).text();\nOBJID.push(identity);\n})\nvar isMultiInst = $(\".maxInstNum\", Head).val();\nvar ServerAddr = $(\"address span\", Head).text();\nHead.succfunction = function(xml){\nif (Head.hasError(xml,\"externErrorHint\") == 0)\n{\nHead.trigger(\"changeXMLDataBeforeFillData\", [xml]);\nvar XMLOBJ = $(xml).find(OBJID[0]);\nvar RuleNum = $(\"Instance\", XMLOBJ).length;\nif (RuleNum == 0)\n{\n$(\".noDataHint\",Head).showIt(true);\n$(\".form_content\",Head).showIt(false);\n}\nelse\n{\n$(\".noDataHint\",Head).showIt(false);\n$(\".form_content\",Head).showIt(true);\nif (isMultiInst == 0)\n{\nHead.fillDataByOBJID(xml ,OBJID, Head, 0);\nHead.trigger(\"fillDataByCustom\",[0, Head]);\nvar template = $(\"[id^='template_']\", Head);\ntemplate.trigger(\"fillDataByCustom\",[0, template]);\ntemplate.showIt(true);\n}\nelse\n{\nHead.fillDataByCustom = undefined;\nHead.createPageDataByClone(RuleNum, OBJID, xml,\nHead.fillDataByCustom);\n}\ncolorTblRow(\".colorTbl\", \"even\", Head);\n}\n}\n};\nRefreshClickHandle(Head);\nif ( $(\".collapBarWithDataTrans\",Head).length <= 0 )\n{\nHead.dataTransfer(ServerAddr,\n\"GET\",\nHead.succfunction);\n}\nelse\n{\ninitial_collapBarWithDataTrans(Head);\n}\n}\nfunction initial_special_password(Head)\n{\n$(\".SpecialPassword\", Head).each(function(){\n$(this).mouseup( function(){\nif(this.focused){\nthis.focused=false;\nreturn false;\n}\n});\n});\n$(\".SpecialPassword\", Head).each(function(){\n$(this).focus( function(){\nthis.select();\nthis.focused=true;\n});\n});\n}\nfunction initial_button(buttonType, Head, IfShowWaitTip)\n{\nif ( !Head )\n{\nconsoleLog(\"incoming para:Head is not defined!\");\nreturn;\n}\nvar buttonClass = \"\";\nvar eventHandler = \"\";\nif ( buttonType == \"Apply\" )\n{\nbuttonClass = \"Btn_apply\";\neventHandler = \"fillDataByApplyResult\";\n}\nelse if ( buttonType == \"Cancel\" )\n{\nbuttonClass = \"Btn_cancel\";\neventHandler = \"fillDataByCancelResult\";\n}\nelse if ( buttonType == \"Delete\" )\n{\nbuttonClass = \"Btn_delete\";\neventHandler = \"fillDataByDeleteResult\";\n}\nelse\n{\n}\n$(\".\"+buttonClass, Head).each(function(){\n$(this).unbind(\"click\");\n$(this).bind(\"click\",function(event){\nvar buttonOBJ = $(this);\nif (buttonOBJ.hasClass(\"disableBtn\")\n||buttonOBJ.hasClass(\"disableLongBtn\"))\n{\nreturn;\n}\nvar Head = buttonOBJ.parents(\".HeadDIV\").eq(0);\nvar template = buttonOBJ.parents(\"[id^='template']\");\nvar ActionBeforePostResult = {result: \"Process\"};\ntemplate.trigger(\"ActionBeforePostByCustom\",[template,ActionBeforePostResult]);\nif (ActionBeforePostResult.result != \"Process\")\n{\nreturn;\n}\nvar ThisInstID = $(\"[id^='_InstID']\",template).val();\nif ( ThisInstID == undefined )\n{\nvar luquidObjUl = $(\"._LuQUID_CONFIG_OBJID\", Head);\nvar objId = $(\"li\", luquidObjUl).eq(0).text();\nvar instId = objId + \"\\\\._OBJ_InstID\";\nThisInstID = $(\"[id^='\"+ instId +\"']\",template).val();\n}\nif ( ThisInstID == -1\n&& (buttonType == \"Cancel\" || buttonType == \"Delete\") )\n{\ntemplate.remove();\nreturn;\n}\nvar ServerAddr = $(\"address span\", Head).text();\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nif ( buttonType == \"Apply\" )\n{\nvar formOBJ = $(\".form_content\", template);\nif ( formOBJ.length > 0 && false == formOBJ.valid() )\n{\nreturn;\n}\nelse\n{\nvar IPMACCheckResult = {result: \"checkOK\"};\ntemplate.trigger(\"wholeIPorMACCheck\",[template,IPMACCheckResult]);\nif (IPMACCheckResult.result != \"checkOK\")\n{\nreturn;\n}\nvar formObj = $(\".form_content\", template);\nvar txtInputObjs = $(\"input[type='text']\", formObj);\ntxtInputObjs.each(function(){\nvar obj = $(this);\nvar rules = obj.rules();\nif (rules.integer)\n{\nvar intStr = obj.val();\nvar sign, digits;\nif ( intStr.charAt(0) == '-' )\n{\nsign = \"-\";\ndigits = intStr.substring(1);\n}\nelse\n{\nsign = \"\";\ndigits = intStr;\n}\nwhile(digits.charAt(0) == '0' && digits.length > 1)\n{\ndigits = digits.substring(1);\n}\nintStr = sign + digits;\nobj.val(intStr);\n}\n});\nvar passObj = $(\".passRules\",template);\nfor(var i=0;i<passObj.length;i++)\n{\nif(passObj.eq(i).is(\":visible\"))\n{\nvar passVal = passObj.eq(i).val();\nif(passVal != \"\t\t\t\t\t\t\" &&(!(getPwdLevel(passVal,\"\")) || template.find(\".redFont\").text() == \"Weak\"))\n{\nvar msg = \" Current password is weak,a strong password should contain characters,digits and special symbols. Are you sure to continue?\";\nvar confirmLayerOBJ = IniConfirm(msg);\n$(\"#confirmOK\",confirmLayerOBJ).bind(\"click\", {FuncOBJ: template}, function(event){\ndataPost(buttonType, eventHandler, ServerAddr, template, undefined, IfShowWaitTipTmp);\n});\nreturn;\n}\n}\n}\n}\n}\ndataPost(buttonType, eventHandler, ServerAddr, template, undefined, IfShowWaitTipTmp);\n});\n});\n}\nfunction dataPost(actionType, PostSuccHandler, ServerAddr, template, PostData, IfShowWaitTip, asyncFlag)\n{\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nif (asyncFlag == undefined)\n{\nasyncFlag = true;\n}\nvar PostDataTmp = \"\";\nif (PostData == undefined)\n{\ntemplate.trigger(\"hiddenValueChangeByCustom\",[template, actionType]);\nPostDataTmp = template.InitialPostData(actionType);\n}\nelse\n{\nPostDataTmp = PostData;\n}\nPostDataTmp += \"&_sessionTOKEN=\"+_sessionTmpToken;\nvar procData = true;\nif (PostDataTmp.indexOf(\"%20\") >= 0)\n{\nprocData = false;\n}\nvar selfHeader = {};\nselfHeader[\"Check\"] = sha256(PostDataTmp);\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostDataTmp,\ndataType: 'xml',\nheaders: selfHeader,\nprocessData: procData,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"The server is not available now. Please refresh page to reload. \";\nvar errorContainer = $(\".errorHint\",template);\nvar changeArea = $(\".ChangeArea\",template);\nvar collapsibleInst = $(\".collapsibleInst\",template);\nif (template.data(\"defined_ActionByDataPostError\") != true){\nif ( errorContainer != undefined )\n{\n$(\"span\", errorContainer).text(ajaxPostFailHint);\nerrorContainer.showIt(true);\nif ( changeArea != undefined )\n{\nchangeArea.showIt(true);\n}\nif ( collapsibleInst != undefined )\n{\ncollapsibleInst.addClass(\"instNameExp\");\n}\ntemplate.showIt(true);\n}\nshowWaitTip(false);\n}\nelse\n{\ntemplate.trigger(\"ActionByDataPostError\");\n}\n},\nsuccess: function(xml){\n_LuQUID_setTemplateDefEvents(template, PostSuccHandler);\ntemplate.trigger(PostSuccHandler,[xml,template]);\nif (template.hasError(xml,\"_noExist\") == 0)\n{\n$(\".SpecialPassword\", template).each(function(i){\n$(this).val(\"\t\t\t\t\t\t\");\n});\n}\nvar formObj = $(\".form_content\", template);\nvar errObjs = $(\".errorLabelWraper > .error\", formObj);\nerrObjs.attr(\"style\", \"display:none\");\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(false);\n}\n}\n});\n}\nfunction dataPostJson(PostSuccHandler, ServerAddr, template, PostData, IfShowWaitTip, asyncFlag)\n{\nvar IfShowWaitTipTmp = IfShowWaitTip;\nif ( IfShowWaitTipTmp == undefined )\n{\nIfShowWaitTipTmp = true;\n}\nif (asyncFlag == undefined)\n{\nasyncFlag = true;\n}\nPostData[\"_sessionTOKEN\"] = _sessionTmpToken;\nvar procData = true;\nvar postDataStr = \"\";\nfor(var key in PostData) {\npostDataStr += key + \"=\" + encodeURIComponent(PostData[key]) + \"&\";\n}\npostDataStr = postDataStr.substring(0,postDataStr.length - 1);\nif (postDataStr.indexOf(\"%20\") >= 0)\n{\nprocData = false;\n}\nvar selfHeader = {};\nselfHeader[\"Check\"] = sha256(postDataStr);\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostData,\ndataType: 'json',\nheaders: selfHeader,\nprocessData: procData,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"The server is not available now. Please refresh page to reload. \";\nvar errorContainer = $(\".errorHint\",template);\nvar changeArea = $(\".ChangeArea\",template);\nvar collapsibleInst = $(\".collapsibleInst\",template);\nif (template.data(\"defined_ActionByDataPostError\") != true){\nif ( errorContainer != undefined )\n{\n$(\"span\", errorContainer).text(ajaxPostFailHint);\nerrorContainer.showIt(true);\nif ( changeArea != undefined )\n{\nchangeArea.showIt(true);\n}\nif ( collapsibleInst != undefined )\n{\ncollapsibleInst.addClass(\"instNameExp\");\n}\ntemplate.showIt(true);\n}\nshowWaitTip(false);\n}\nelse\n{\ntemplate.trigger(\"ActionByDataPostError\");\n}\n},\nsuccess: function(data){\nif(data.tError.IF_ERRORID == 0){\ntemplate.trigger(PostSuccHandler,[data,template]);\n}else{\nvar ajaxFailHint = \"Page request failed, please try again!\";\n$(\".errorHint span\",template).text(ajaxFailHint);\n$(\".errorHint\",template).showIt(true);\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(false);\n}\n}\n});\n}\nfunction focusAndSelectInput(jqObj)\n{\nvar disValue = jqObj.attr(\"disabled\");\nif (disValue != \"disabled\" && disValue != true)\n{\njqObj.focus();\njqObj.select();\n}\n}\nfunction FocusAutoJump(obj,value,e)\n{\nvar objJQ = $(obj);\nvar prevOBJ = objJQ.prev(\"input\");\nvar nextOBJ = objJQ.next(\"input\");\nvar valLen = value.length;\nvar keynum;\nif (window.event)\n{\nkeynum = e.keyCode;\n}\nelse if (e.which)\n{\nkeynum = e.which;\n}\nvar temp = value.substring(valLen-1, valLen);\nif (\".\" == temp && objJQ.hasClass(\"ip\") && 0 != valLen)\n{\nobjJQ.val(value.substring(0, valLen-1))\nif (\".\" != value)\n{\nfocusAndSelectInput(nextOBJ);\n}\n}\nif (valLen == obj.maxLength)\n{\nif (nextOBJ.length <= 0)\n{\nreturn;\n}\nif (9 != keynum && 16 != keynum && 35 != keynum && 36 != keynum &&\n37 != keynum && 38 != keynum && 39 != keynum && 40 != keynum &&\n46 != keynum && 8 != keynum && objJQ.valid() == 1)\n{\nfocusAndSelectInput(nextOBJ);\n}\n}\nelse if (valLen == 0 && 37 == keynum)\n{\nif (prevOBJ.length <= 0)\n{\nreturn;\n}\nfocusAndSelectInput(prevOBJ);\n}\nelse\n{\nreturn;\n}\n}\nfunction autoJumpBack(obj,value,e)\n{\nvar objJQ = $(obj);\nvar prevOBJ = objJQ.prev(\"input\");\nvar nextOBJ = objJQ.next(\"input\");\nvar valLen = value.length;\nvar keynum;\nif (window.event)\n{\nkeynum = e.keyCode;\n}\nelse if (e.which)\n{\nkeynum = e.which;\n}\nif (8 == keynum && valLen == 0)\n{\nif (prevOBJ.length <= 0)\n{\nreturn;\n}\nfocusAndSelectInput(prevOBJ);\n}\n}\njQuery.fn.FillIPorMacDataBySplit = function(subid,Delimiter,length) {\nvar IPOBJ = $(this);\nif ( IPOBJ.length == 0 )\n{\nreturn;\n}\nvar containerOBJ = IPOBJ.parents(\"[id^='template_']\");\nvar value = IPOBJ.val();\nif ( !value )\n{\nreturn;\n}\nvar temp= value.split(Delimiter);\nif (length != temp.length)\n{\nreturn;\n}\nfor(var i=0; i<length; i++)\n{\nvar fillOBJ = $(\"[id^='\"+subid+i+\"']\",containerOBJ);\nfillOBJ.val(temp[i]);\n}\n};\njQuery.fn.FillIPorMacDataToInput = function(subid) {\nvar IPOBJ = $(this);\nif ( IPOBJ.length == 0 )\n{\nreturn;\n}\nvar containerOBJ = IPOBJ.parents(\"[id^='template_']\");\nvar value = IPOBJ.val();\nif ( !value )\n{\nreturn\n}\nvar fillOBJ = $(\"[id^='\"+subid+\"']\",containerOBJ);\nfillOBJ.val(value);\n};\njQuery.fn.FillIPorMacDataCombination = function(subid,Delimiter,length) {\nvar IPOBJ = $(this);\nif ( IPOBJ.length == 0 )\n{\nreturn;\n}\nvar containerOBJ = IPOBJ.parents(\"[id^='template_']\");\nvar temp = \"\";\nfor(var i=0; i<length; i++)\n{\nvar tempObj = $(\"[id^='\"+subid+i+\"']\",containerOBJ);\nif(0!=i)\n{\ntemp += Delimiter;\n}\nvar tempValue = tempObj.val();\nif ( !tempValue )\n{\ntempValue = \"\";\n}\ntemp += tempValue;\ntempObj.addClass(\"PostIgnore\");\n}\nIPOBJ.val(temp);\nreturn temp;\n};\njQuery.fn.checkIPorMACbyApply = function(checkIPorMACObj, template, IPMACCheckResult){\nvar breakFlag = 0;\n$.each(checkIPorMACObj, function(key, value){\nif (breakFlag != 0)\n{\nreturn false;\n}\nif ($(\"[id^='sub_\"+key+\"']\",template).is(\":visible\") != true)\n{\nreturn true;\n}\nvar labelId = value.labelId;\nvar paraName = \"\";\nvar paraNameObj = template.find(\"label[for^='\"+labelId+\"\\\\:']\");\nif ( paraNameObj.length <= 0 )\n{\nparaNameObj = template.find(\"label[for='\"+labelId+\"']\");\n}\nif ( paraNameObj.length > 0 )\n{\nparaNameObj.each(function(){\nvar labelTmp = $(this);\nif (labelTmp.hasClass(\"error\"))\n{\nreturn true;\n}\nparaName = labelTmp.text();\nreturn false;\n});\n}\nvar elementType = value.eleType;\nif (elementType == \"IP\")\n{\nvar IPObj = $(\"[id^='\"+key+\"']\",template);\nIPObj.FillIPorMacDataCombination(\"sub_\"+key, \".\", 4);\nvar ipValue = IPObj.val();\nif (value.rules != undefined)\n{\n$.each(value.rules, function(k, v){\nvar ipRet = checkWholeIPv4(k, v, ipValue);\nif (ipRet[0] == false)\n{\nvar errMsg = getMsgofWholeMACIPCheck(ipRet, value, ipValue, paraName);\n$(\".errorHint\",template).show();\n$(\".errorHint span\",template).text(errMsg);\nIPMACCheckResult.result = \"checkFail\";\nbreakFlag = 1;\nreturn false;\n}\nelse\n{\n$(\".errorHint\",template).hide();\n}\n});\n}\n}\nelse if (elementType == \"MAC\")\n{\nvar MACObj = $(\"[id^='\"+key+\"']\",template);\nMACObj.FillIPorMacDataCombination(\"sub_\"+key, \":\", 6);\nvar macValue = MACObj.val();\nif (value.rules != undefined)\n{\n$.each(value.rules, function(k, v){\nvar macRet = checkWholeMac(k, v, macValue);\nif (macRet[0] == false)\n{\nvar errMsg = getMsgofWholeMACIPCheck(macRet, value, macValue, paraName);\n$(\".errorHint\",template).show();\n$(\".errorHint span\",template).text(errMsg);\nIPMACCheckResult.result = \"checkFail\";\nbreakFlag = 1;\nreturn false;\n}\nelse\n{\n$(\".errorHint\",template).hide();\n}\n});\n}\n}\nelse\n{\nconsoleLog(\"ElementType +'\"+elementType+\"' is not supported now!\")\n}\n});\n};\njQuery.fn.setPromptCheckJSON = function(checkJSONTempObj, template){\nvar templateID = template.attr(\"id\");\nvar instIndex = templateID.match(/\\d+$/);\nvar suffix = \"\";\nif ( instIndex )\n{\nsuffix = \":\"+instIndex;\n}\nvar checkJSONInstObj = {\"groups\":{}, \"rules\":{}, \"messages\":{}};\nif ( checkJSONTempObj.groups != undefined )\n{\n$.each(checkJSONTempObj.groups, function(key, value) {\nvar valJSONStr = value;\nvar idArr = value.split(\" \");\nfor ( var i=0; i<idArr.length; i++ )\n{\nidArr[i] += suffix;\n}\nvalJSONStr = idArr.join(\" \");\nvar parameterJSON = eval(\"({'\"+key+suffix+\"':'\" + valJSONStr + \"'})\");\n$.extend(checkJSONInstObj.groups, parameterJSON);\n});\n}\nif ( checkJSONTempObj.rules != undefined )\n{\n$.each(checkJSONTempObj.rules, function(key, value) {\nvar parameterJSON = {};\nparameterJSON[key + suffix] = value;\n$.ext",
"body_murmur": 2044468638,
"body_sha256": "1dd9d8c1d82b33dfed32ce1e37a4129e175bd32e75db7c097100eaa4fffdfe84",
"content_length": 149583,
"favicon": {
"md5_hash": "5e966bb5036dc2624a0187a91e59d3dd",
"murmur_hash": 459900502,
"path": "https://182.52.164.114:443/img/favicon.ico",
"size": 1150
},
"headers": {
"accept_ranges": [
"bytes"
],
"cache_control": [
"no-cache,no-store"
],
"content_length": [
"149583"
],
"content_security_policy": [
"frame-ancestors 'self' data:"
],
"content_type": [
"text/html; charset=utf-8"
],
"server": [
"ZTE web server 1.0 ZTE corp 2015."
],
"set_cookie": [
"SID_HTTPS_=9863c00fc2805727bc371c1946d5e3d9393d93ee93d8960f44d985f0da821710; PATH=/; HttpOnly; Secure",
"_TESTCOOKIESUPPORT_HTTPS_=1; PATH=/; HttpOnly; Secure"
],
"x_content_type_options": [
"nosniff"
],
"x_frame_options": [
"SAMEORIGIN"
],
"x_xss_protection": [
"1; mode=block"
]
},
"protocol": "HTTP/1.1",
"request": {
"headers": {
"accept": [
"*/*"
],
"user_agent": [
"Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
]
},
"method": "GET",
"url": {
"host": "182.52.164.114",
"path": "",
"scheme": "https"
}
},
"status_code": 200,
"title": "H8102E"
},
"tls": {
"certificate": {
"extensions": {
"basic_constraints": {
"is_ca": true
},
"key_usage": {
"certificate_sign": false,
"content_commitment": false,
"crl_sign": false,
"data_encipherment": false,
"decipher_only": false,
"digital_signature": true,
"encipher_only": false,
"key_agreement": false,
"key_encipherment": true,
"non_repudiation": true
}
},
"fingerprint_md5": "A601C9F7D23FE6BFE93F884C1E1AE804",
"fingerprint_sha1": "DB2CF636B2091612BDDF1E591706D472B6400CBD",
"fingerprint_sha256": "4CAA880F5DB7A65CB4554B8A07D7D178F4BC8076FA18A83A980E805E18998532",
"issuer": {
"common_name": [
"ZTE-ROOT-CA"
],
"country": [
"CN"
],
"email_address": [
"[email protected]"
],
"locality": [
"Shenzhen"
],
"organization": [
"ZTE"
],
"organizational_unit": [
"Wireline Product R&D Institute"
],
"province": [
"GuangDong"
]
},
"issuer_dn": "/C=CN/ST=GuangDong/L=Shenzhen/O=ZTE/OU=Wireline Product R&D Institute/CN=ZTE-ROOT-CA/[email protected]",
"jarm": "29d14d00029d29d00029d14d29d29df26cd45df722aff084b72395f8d18d1b",
"redacted": false,
"revocation": {
"ocsp": {
"reason": "UNKNOWN",
"revoked": false
}
},
"serial_number": "10896366476775576542",
"signature": {
"algorithm": {
"name": "SHA512-RSA",
"oid": "1.2.840.113549.1.1.13"
},
"self_signed": false,
"value": "NzYxNTUyYWEyNTk3MDA0NTZmOTE5ZTlhN2M0MzIwNWQxNjQyZGExOGE3OTI1Njg4YTk2MWYwYWEwZDk0OTU5MmRkODk0MmJlMDJhNDI1YWRmNWM3Mzk0YTBiNDU1ZDVmODRmN2EzZjczN2JkYWM1Yjc4YmQ3YjFlNzY5YTMyY2E1MzJlOTg0NTM1MTIwZmZlYjg3YjY4MmE3OGE4MDFhNmFlOGQzZWVmYjM5NTM4ODRiYjYyZmI1ZDRjMjFmZGQ1OThmMTAzNTAyZGYxYjA2YWUxYmU0ZGQ4NTMzNjk0YjBlZmUyOWJkNjY2YTRlNGZmYjBmNTYxNjYwMDY0MTY5ZThiOTIwZjkwNzUzMmFmMWFmMDhmZDM2ZmQzNWI0ZGNlNDZjYzhkZWRkODk0YjBjNzJhZjBhN2YwODM1ZDQ3NWFiMDc2MTQzNzQ5ZGIwZDU5MTI4MzRjNDNjMGMyYjU2NDg2NWJkMmEyODQ0MzhhZjI5MTgzYTY0OWRlOGE3OGE4ODkwMjY3NzJhM2U0OGE1OGMxZWVjNzBlODAzZjhjYzE0NDFkYjBkNDRjOGE5MzRkM2IwNzMwZTYzOTRhMDAzMGFjOGZkMzcxM2FjNmJlMTRiMWM4MTI1MDdhYWRmM2Y1MDE5NjFjZWNjNzQzYTViMzVjMjQ3ZWYyNzVlMTUyZjk="
},
"subject": {
"common_name": [
"192.168.1.1"
],
"country": [
"CN"
],
"email_address": [
"[email protected]"
],
"locality": [
"Nanjing"
],
"organization": [
"ZTE"
],
"organizational_unit": [
"FN Nanjing Software Development Dept III"
],
"province": [
"JiangSu"
]
},
"subject_alt_name": {
"dns_names": [
"192.168.1.1"
],
"extended_dns_names": []
},
"subject_dn": "/C=CN/ST=JiangSu/L=Nanjing/O=ZTE/OU=FN Nanjing Software Development Dept III/CN=192.168.1.1/[email protected]",
"subject_key_info": {
"_key": "rsa",
"dh": [],
"dsa": [],
"ecdsa": [],
"fingerprint_sha256": "5d1013f24374f498e411193e1b70b757630b27a2b02054e7e9804490673f1327",
"key_algorithm": "RSA",
"rsa": {
"exponent": 65537,
"length": 2048,
"modulus": "MHhiZDA5MDRmYzIwZjJiOGRjMjM0MGRkYzZjNWQzOTlmYWIxZmY3ZDZjMzE1NmI1MmM2ZGU3OTgzNDhkOTgxZWY0N2Y4YmFlOTBjOTNkOTRiMGJjMjZkMWVlZGZiYTU5MTQ3NDMyMWY3M2IyYzdlMjBjZTk4NjU2NTk1OGM3ZDQ3YTk3ZTFiZGUzZDVjNGYwZTY4YTAzZDRjOTZhNjYyODYxNDZmYmZiNzRjMzIxOTM0OTY2NjcwYjZmYWIxMWUxYzlhMzQ0NzU2NTQ0MmYzYTg1MmM2NzRjOWU5YWQ4ODBmMzM5MmVlZDIxMTViMTgwYmE4NmU1MWI1YzA5ZTg1ZTA3MGU5YWI4YjUwZTljZjg3NDYzNjY1YjllN2JlY2JlYThhMmQyNjg2YmRmNDZiMmQwNTVhMmU2MTQwN2Y4OTNiMDViOTIzNWM0NGQ4ZjhlOWQ5MTE5YmNmM2FkMmNmODQ5MTc0NDYzOGU2NjE3ZGM2ZTVmNDIwZTBiNWVjZDg3MjA1MmQ3MDc0ODk2NmI4N2RhOTNiYmMzOTk1YTFmMGE0YmNlYmEzZDgzYzM5ZTQwNDNhNzc4YTE5MjgyOThlYTk5NWEzM2E4N2UyZDJhOTc3ZmZiOWQ1MmM1NDdjMDEzOTk1MTg0OGM2OTVjZTRlNDhlY2I2ZTRhNzQ3NWJjM2YyMw=="
}
},
"tbs_fingerprint": "fdaa9038c1a94220b4aeba2d1b58bcc8b2fa269a50fddef0861afdcc88aef54f",
"validation_level": "OV",
"validity": {
"length_seconds": 473040000,
"not_after": "2031-07-10T01:32:15",
"not_before": "2016-07-13T01:32:15"
},
"version": 2
},
"fingerprint_sha256": "4CAA880F5DB7A65CB4554B8A07D7D178F4BC8076FA18A83A980E805E18998532",
"precert": false,
"raw": "MIID6DCCAtCgAwIBAgIJAJc3q5RGrtPeMA0GCSqGSIb3DQEBDQUAMIGhMQswCQYDVQQGEwJDTjESMBAGA1UECBMJR3VhbmdEb25nMREwDwYDVQQHEwhTaGVuemhlbjEMMAoGA1UEChMDWlRFMScwJQYDVQQLDB5XaXJlbGluZSBQcm9kdWN0IFImRCBJbnN0aXR1dGUxFDASBgNVBAMTC1pURS1ST09ULUNBMR4wHAYJKoZIhvcNAQkBFg96YW5lQHp0ZS5jb20uY24wHhcNMTYwNzEzMDEzMjE1WhcNMzEwNzEwMDEzMjE1WjCBqDELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0ppYW5nU3UxEDAOBgNVBAcTB05hbmppbmcxDDAKBgNVBAoTA1pURTExMC8GA1UECxMoRk4gTmFuamluZyBTb2Z0d2FyZSBEZXZlbG9wbWVudCBEZXB0IElJSTEUMBIGA1UEAxMLMTkyLjE2OC4xLjExHjAcBgkqhkiG9w0BCQEWD3phbmVAenRlLmNvbS5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL0JBPwg8rjcI0DdxsXTmfqx/31sMVa1LG3nmDSNmB70f4uukMk9lLC8JtHu37pZFHQyH3Oyx+IM6YZWWVjH1HqX4b3j1cTw5ooD1MlqZihhRvv7dMMhk0lmZwtvqxHhyaNEdWVELzqFLGdMnprYgPM5Lu0hFbGAuoblG1wJ6F4HDpq4tQ6c+HRjZluee+y+qKLSaGvfRrLQVaLmFAf4k7BbkjXETY+OnZEZvPOtLPhJF0RjjmYX3G5fQg4LXs2HIFLXB0iWa4fak7vDmVofCkvOuj2Dw55AQ6d4oZKCmOqZWjOofi0ql3/7nVLFR8ATmVGEjGlc5OSOy25KdHW8PyMCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQENBQADggEBAHYVUqollwBFb5GemnxDIF0WQtoYp5JWiKlh8KoNlJWS3YlCvgKkJa31xzlKC0VdX4T3o/c3vaxbeL17HnaaMspTLphFNRIP/rh7aCp4qAGmro0+77OVOIS7YvtdTCH91ZjxA1At8bBq4b5N2FM2lLDv4pvWZqTk/7D1YWYAZBaei5IPkHUyrxrwj9Nv01tNzkbMje3YlLDHKvCn8INdR1qwdhQ3SdsNWRKDTEPAwrVkhlvSooRDivKRg6ZJ3op4qIkCZ3Kj5IpYwe7HDoA/jMFEHbDUTIqTTTsHMOY5SgAwrI/TcTrGvhSxyBJQeq3z9QGWHOzHQ6WzXCR+8nXhUvk=",
"tags": [
"ov",
"trusted"
]
}
},
"url": "https://182.52.164.114/",
"_meta": {
"name": "",
"desc": "",
"category": ""
},
"last_updated_at": "2025-12-02T07:36:11.823Z"
}
],
"services_hash": "5473d89d68e9ecd525e697899c2025102d7f68f4fd81bb52906051dbc201c2a9",
"last_updated_at": "2025-12-02T09:43:24.93Z",
"banner": [
"http",
"tls"
],
"is_vuln": false
}