177.74.228.163
{
"scan_id": 1726480303,
"ip": "177.74.228.163",
"is_ipv4": true,
"is_ipv6": false,
"location": {
"network": "",
"postal_code": "",
"coordinates": {
"latitude": null,
"longitude": null
},
"geo_point": "",
"locale_code": "",
"continent": "",
"country_code": "",
"country_name": "",
"city": ""
},
"location_updated_at": "0001-01-01T00:00:00Z",
"asn": {
"number": "AS263652",
"organization": "FAXT TELECOMUNICACOES LTDA",
"country_code": "BR"
},
"asn_updated_at": "0001-01-01T00:00:00Z",
"whois": {
"network": "177.74.228.0/24",
"organization": "177.74.228.0/24",
"descr": "177.74.228.0/24",
"_encoding": {
"raw": "BASE64"
}
},
"whois_updated_at": "2024-09-18T01:17:14Z",
"tags": [
{
"name": "is_anonymous_proxy",
"pretty_name": "Anonymous Proxy",
"value": false,
"last_updated_at": "0001-01-01T00:00:00Z"
},
{
"name": "is_cdn",
"pretty_name": "CDN",
"value": false,
"last_updated_at": "2024-09-19T00:45:37Z"
},
{
"name": "is_satellite_provider",
"pretty_name": "Satellite Provider",
"value": false,
"last_updated_at": "0001-01-01T00:00:00Z"
}
],
"hostnames": [
{
"name": "177.74.228.163.cmdnettelecom.com.br",
"last_updated_at": "2024-09-19T06:27:17.116967911Z"
}
],
"services": [
{
"port": 80,
"protocol": "tcp",
"name": "http",
"version": "",
"product": "",
"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\n<link rel=\"shortcut icon\" href=\"/img/favicon.ico\" />\n\n<title>F6600P</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.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.w330, .inputLong, .selectLong {\nwidth: 330px;\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#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._LuQUID_SelAccessDeviceDmz{\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}\n.logo_Mnc {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_Mnc.png) no-repeat 5px 30px;\n}\n.logo_AXS {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_AXS.png) no-repeat 5px 30px;\n}\n.logo_Claro {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_Claro.png) no-repeat 5px 30px;\n}.logo_OJO {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OJO.png) no-repeat 5px 15px;\n}.logo_Antel {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_Antel.png) no-repeat 5px 30px;\n}.logo_Tot {\nwidth: 160px;\nbackground: url(../img/Logo_Tot.png) no-repeat 5px 30px;\n}\n.timeArea_Tot {\nleft: 190px;\n}.logo_Morocco {\nbackground: url(../img/Logo_Morocco.png) no-repeat 5px 30px;\n}.logo_IvoryOrange {\nbackground: url(../img/Logo_IvoryOrange.png) no-repeat 5px 30px;\n}\n.logo_KAMA_Orange {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.color_OMA\n{\ncolor:#FF6600 !important;\n}.logo_Orange {\nbackground: url(../img/Logo_Orange.png) no-repeat 5px 30px;\n}\n.logo_KAMA_Orange {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.color_OMA\n{\ncolor:#FF6600 !important;\n}\ndiv.errorLabelWraperBottom{\noverflow: hidden;\nwidth:100%;\npadding-left: 23px;\nline-height: 30px;\n}\n.logo_CTC {\nwidth: 190px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_CTC.jpg) no-repeat 5px 40px;\n}\n.timeArea_CTC\n{\nleft: 200px;\n}\n.loginTitle_CTC {\npadding-left: 0px !important;\n}\n.logo_OMA {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.color_OMA\n{\ncolor:#FF6600 !important;\n}.logo_OMA {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.wlanon {background-image: url(\"../img/ok.png\"); background-size: cover; width: 20px;}\n.wlanoff {background-image: url(\"../img/no.png\"); background-size: cover; width: 20px;}\n.wlanTable table {border: 0px; width: 700px; min-height: 25px; line-height: 20px; border-collapse: collapse; padding: 0;}.logoPTCL {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_PTCL.png) no-repeat -27px -5px;\nbackground-size: 165px 115px;\n}.logo_digi {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_digi.png) no-repeat 5px 30px;\n}\n\n</style>\n<script type=\"text/javascript\" src=\"/jquery/jquery.min.js\"></script>\n<!--[if lte IE 8]>\n<script type=\"text/javascript\" src=\"jquery/jquery-3.0.0-alpha1-compat.min.js\"></script>\n<![endif]-->\n<script type=\"text/javascript\" src=\"/jquery/crypto-js.min.js\"></script>\n<script type=\"text/javascript\" src=\"/jquery/jsencrypt.min.js\"></script>\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});\n$(\"#scrollRightBtn,#scrollLeftBtn\").click(function () {\nif ( ! $(this).hasClass(\"EnableScrollBtn\"))\n{\nconsoleLog(\"no scroll button!!\");\nreturn;\n}\nvar scrollTarget = $(\"#class3MenuMainContent\");\nvar tabWidth = $(\"#_totalTabWidth\").val();\nvar srcollTotalLen = tabWidth - scrollTarget.width();\nif ( $(this).attr(\"id\") == \"scrollLeftBtn\" )\n{\nscrollTarget.scrollLeft(0);\n}\nelse\n{\nscrollTarget.scrollLeft(srcollTotalLen);\n}\nvar afterPosition = scrollTarget.scrollLeft();\nStatusOfLRBtnOf3MenuHandle(afterPosition);\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; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;' \"\n+ \"MenuClass='1' \"\n+ \"id='\"+ supId + \"' \"\n+ \"MenuPage='\"+ GetLeftMostPageID(supId) +\"'\"\n+ \" title='\" + supName +\"'>\"\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)\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\");\n};\npageContainer.errorfunction = function(){\nconsoleLog(\"page get fail\");\nshowWaitTip(false);\npageContainer.html(\"Pedido da página falhou, por favor tente novamente!\");\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)\n{\nvar PageName = \"/?_type=menuView&_tag=\" + pageurl;\nAjaxPageGet(PageName, 1);\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; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; \"\n+ \"color:#BFBDBE; cursor:default;'\"\n+ \" hidefocus=\\\"true\\\" onclick=\\\" \\\" title=\\\"\" + supName + \"\\\">\"\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}\nreposition_box(\"tipLayer\");\n}\nelse\n{\n$(\"#blackMask, #tipLayer, #confirmLayer\").css(\"display\", \"none\");\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$(\"#confirmCancel\",confirmLayerOBJ).focus();\nreturn confirmLayerOBJ;\n}\nfunction IniTip(msg, infoType)\n{\nshowWaitTip(true);\nvar confirmLayerOBJ = $(\"#confirmLayer\");\n$(\"#confirmCancel\",confirmLayerOBJ).css(\"display\", \"none\");\nconfirmLayerOBJ.css(\"display\", \"block\");\nif (infoType == \"err\")\n{\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/err_m.png\") no-repeat 20px 50%');\n}\nelse if (infoType == \"succ\")\n{\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/succ_m.png\") no-repeat 20px 50%');\n}\nelse\n{\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/info_m.png\") no-repeat 20px 50%');\n}\n$(\"#confirmMsg p\",confirmLayerOBJ).text(msg);\n$(\"#confirmCancel\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmOK\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmStop\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmOK\",confirmLayerOBJ).bind(\"click\", function(event){\nshowWaitTip(false);\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/info_m.png\") no-repeat 20px 50%');\n});\n$(\"#confirmOK\",confirmLayerOBJ).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;\nvar widthtmp = errWidth-5-23-10;\nif(widthtmp < 1)\n{\ntipObj.removeAttr(\"style\",\"\");\n}\nelse\n{\ntipObj.width(widthtmp);\n}\nif (rightObj != undefined)\n{\ntipObj.insertAfter(rightObj);\n}\nelse\n{\ntipObj.appendTo(rowObj);\n}\n}\n});\njQuery.extend(jQuery.validator.messages, {\nrequired: \"Este campo é obrigatório. \",\nremote: \"Por favor corrigir esse campo. \",\nemail: \"Por favor insira um endereço de e-mail válido. \",\nurl: \"Por favor, insira um URL válido. \",\ndate: \"Por favor insira uma data válida. \",\ndateISO: \"Por favor, indique uma data válida (ISO). \",\nnumber: \"Por favor insira um número válido. \",\ndigits: \"Digite um número inteiro. \",\ncreditcard: \"Por favor digite um número de cartão de crédito válido. \",\nequalTo: \"Por favor entre com o mesmo valor novamente. \",\nmaxlength: jQuery.validator.format(\"Por favor, indique não mais do que {0} caracteres. \"),\nminlength: jQuery.validator.format(\"Por favor, insira pelo menos {0} caracteres. \"),\nrangelength: jQuery.validator.format(\"Por favor insira um valor com {0} ~ {1} caracteres. \"),\nrange: jQuery.validator.format(\"Por favor insira um valor entre {0} e {1}. \"),\nmax: jQuery.validator.format(\"Por favor insira um valor menor ou igual a {0}. \"),\nmin: jQuery.validator.format(\"Por favor insira um valor maior ou igual a {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 checkDomain(value)\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}\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}\nfunction checkIPv6Addr(ipaddr)\n{\nif (ipaddr.match(\"[^0-9a-fA-F:.]\") != null)\nreturn false;\nvar addrParts = ipaddr.split(':');\nvar Doublecolon = ipaddr.split('::');\nvar ipv4Parts = 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}\nfunction checkMacAddr(macaddr)\n{\nvar regSingleByte = new RegExp(\":\",\"g\");\nvar regexp = /^([A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2}$/;\nmacaddr = macaddr.replace(regSingleByte,\"-\");\nif (!regexp.test(macaddr)) {\nreturn false;\n}\nreturn true;\n}\njQuery.validator.addMethod(\n\"macAddr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif(checkMacAddr(value) == true)\n{\nreturn true;\n}\nreturn false;\n},\n\"Insira um endereço MAC válido. \"\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\"Insira um endereço IPv4 válido. \"\n);\njQuery.validator.addMethod(\n\"IPv6Addr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn checkIPv6Addr(value);\n},\n\"Insira um endereço IPv6 válido. \"\n);\njQuery.validator.addMethod(\n\"DomainName\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn checkDomain(value);\n},\n\"Por favor insira um nome de domínio válido. \"\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\"Por favor insira um nome de host válido. \"\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\"Por favor, insira um URL válido. \"\n);\njQuery.validator.addMethod(\n\"ChkPass\",\nfunction(val, element)\n{\nif ( !(/[0-9]+/).test(val) ||\n!(/[a-zA-Z]+/).test(val) ||\n!(/[!\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+/).test(val) )\n{\nreturn false;\n}\nif (val.length < 8)\n{\nreturn false;\n}\nreturn true;\n},\n$.validator.format(\"Contraseña no conforme\")\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 = [\"O formato da senha está errada. Por favor, digite novamente. \", \"Por favor, indique apenas caracteres ASCII. \"];\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\"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\"Por favor, indique apenas caracteres ASCII. \"\n);\njQuery.validator.addMethod(\n\"PassStrong\",\nfunction(value, element, params)\n{\nvar num = 0;\nfor (var j = 0 ;j < value.length; j++)\n{\nvar ch = value.charCodeAt(j);\nif(ch<32 || ch>126)\n{\nreturn false;\n}\n}\nif (value.length < 8)\nreturn false;\nif((/[0-9]+/).test(value))\nnum = num+1;\nif((/[a-z]+/).test(value))\nnum = num+1;\nif((/[A-Z]+/).test(value))\nnum = num+1;\nif((/[!\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+/).test(value))\nnum = num+1;\nif(num < 3)\nreturn false;\nreturn true;\n},\n\"Please enter a strong password!\"\n);\njQuery.validator.addMethod(\n\"utf8\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn true;\n},\n\"Por favor, indique apenas caracteres ASCII. \"\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\"Por favor insira 13 caracteres ASCII ou 26 dígitos hexadecimais. \"\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\"Por favor, digite 5 ou 13 caracteres ASCII, ou digite 10 ou 26 dígitos hexadecimais. \"\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\"Introduza apenas caracteres hexadecimais. \"\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(\"Por favor, indique {0} caracteres. \")\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(\"O único valor permitido é {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(\"Por favor insira um valor hexadecimal em intervalos de {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(\"Por favor insira um valor em intervalos de {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\"Digite um número inteiro. \"\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\"Por favor coloque prefixo válido. \"\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 ? \"Por favor, indique um valor superior a \\\"{0}\\\". \" : \"Por favor insira um valor maior do que o anterior. \" ,\n\"2\" : param[2].separate ? \"Por favor insira um valor não inferior a \\\"{0}\\\". \" : \"Por favor insira um valor não inferior ao primeiro. \" ,\n\"3\" : param[2].separate ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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 ? \"Por favor insira um valor inferior a \\\"{0}\\\". \" : \"Por favor insira um valor menor do que o último. \" ,\n\"2\" : param[2].separate ? \"Por favor insira um valor não superior a \\\"{0}\\\". \" : \"Por favor insira um valor não superior ao último. \" ,\n\"3\" : param[2].separate ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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 ? \"Por favor, indique um valor superior a \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Por favor insira um valor maior do que o anterior. \" : \"Por favor insira um valor maior do que o último.\" ),\n\"2\" : param[2].separate ? \"Por favor insira um valor não inferior a \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Por favor insira um valor não inferior ao primeiro. \" : \"Por favor insira um valor não inferior ao último. \" ) ,\n\"3\" : param[2].separate ? \"Por favor, assegure a diferença com \\\"{0}\\\" não maior que {1}. \" : ( param[2].objPosition ==\"first\" ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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 ? \"Por favor insira um valor inferior a \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Por favor insira um valor menor do que o anterior. \" : \"Por favor insira um valor menor do que o último. \" ),\n\"2\" : param[2].separate ? \"Por favor insira um valor não superior a \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Por favor insira um valor não superior ao primeiro.\" : \"Por favor insira um valor não superior ao último. \" ),\n\"3\" : param[2].separate ? \"Por favor, assegure a diferença com \\\"{0}\\\" não maior que {1}. \" : ( param[2].objPosition == \"first\" ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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(\"Por favor, garantir a entrada não nas faixas de \\\"{0}\\\". \", rangesStr);\n}\nelse\n{\nreturn $.validator.format(\"Por favor, garantir a entrada não é igual a \\\"{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 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) )\n{\nreturn \"dependency-mismatch\";\n}\nif (checkTimeHMS(value) == true) {\nreturn true;\n}\nreturn false;\n},\n\"Insira o formato de hora correto como HH: MM: SS.\"\n);\nfunction time_earlierThan(obj, value, param, type)\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] < tmpvaluearr[0])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] < tmpvaluearr[1])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] < tmpvaluearr[2])\n{\nreturn true;\n}\n}\nreturn false;\n}\n};\nfunction time_laterThan(obj, value, param, type)\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] > tmpvaluearr[0])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] > tmpvaluearr[1])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] > tmpvaluearr[2])\n{\nreturn true;\n}\n}\nreturn false;\n}\n};\njQuery.validator.addMethod(\n\"timeComparison\",\nfunction (value, element, param) {\nif ( this.optional(element) )\n{\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\"A hora de início deve ser anterior à hora de término.\"\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,template)\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 = \"Não é permitido introduzir o seguinte valor (es): {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 = \"Entrada inválida. Por favor, certifique-se de que a entrada esteja no seguinte intervalo: {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{\nretMsg = \"\";\nvar IPObj = $(\"[id^='\"+v+\"']\",template);\nIPObj.FillIPorMacDataCombination(\"sub_\"+v, \".\", 4);\nvar minValue = IPObj.val();\nif (-1 == compareIPv4(ipValue, minValue)){\nreturn [false, k, retMsg];\n}\n}\nelse if (k == \"notMoreThan\")\n{\nretMsg = \"\";\nvar IPObj = $(\"[id^='\"+v+\"']\",template);\nIPObj.FillIPorMacDataCombination(\"sub_\"+v, \".\", 4);\nvar maxValue = IPObj.val();\nif (1 == compareIPv4(ipValue, maxValue)){\nreturn [false, k, retMsg];\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 = \"Não é permitido introduzir o seguinte valor (es): {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 = \"\";\nvar ruleName = checkRetArray[1];\nif(ruleObj.messages[ruleName] != undefined){\nreturn ruleObj.messages[ruleName];\n}\nswitch (ruleName){\ncase \"banValue\":{\nif (checkParaName != \"\")\n{\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse{\nerrMsg = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\"+\"[\"+\"Erro:\"+checkValue+\"]\";\n}\nbreak;\n}\ncase \"allowRange\":{\nif (checkParaName != \"\"){\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse{\nerrMsg = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\"+\"[\"+\"Erro:\"+checkValue+\"]\";\n}\nbreak;\n}\ndefault:{\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(\"Por favor insira um valor com {0} caracteres.\", lengthStr);\n}\n);\njQuery.validator.addMethod(\n\"notEqualTo\",\nfunction(value, element, param)\n{\nvar obj = $(\"[id^='\"+param+\"']\");\nif ( value == obj.val())\n{\nreturn false;\n}\nreturn true;\n},\nfunction(param, element){\nvar paramName = \"\";\nvar obj = $(\"[id^='\"+param+\"']\");\nparamName = $(\"label[for='\"+param+\"']\").text();\nreturn $.validator.format(\"Insira um valor diferente com {0}. \", paramName);\n}\n);\n\n\n\n(function(){\n$(document).ready(function(){\nvar curv = 139;\nif (curv == \"65\")\n$(\"#languageSwitch\").hide();\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"152\" || CountryCode == \"163\")\n{\n$(\"#logo\").attr(\"class\", \"logo_Claro\");\n}\n});\n})();\n\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"21\")\n{\n$(\"#logo\").attr(\"class\", \"logo_Antel\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"36\")\n{\n$(\"#logo\").addClass(\"logo_Tot\");\n$(\"#timeArea\").addClass(\"timeArea_Tot\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"106\")\n{\n$(\"#logo\").addClass(\"logo_Morocco\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"138\")\n{\n$(\"#logo\").addClass(\"logo_IvoryOrange\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"174\")\n{\n$(\"#logo\").addClass(\"logo_Orange\");\n}\n});\n})();\n\n\n\n\n\n(function(){\n$(document).ready(function(){\nvar quickData = \"0\";\nif ($(\"#quicksetup\").length < 1){\nvar quicksetup = \"<div id='quicksetup'><div id='Entquicksetup' class='emColor clickable' style='display:none;'>Configuração Rápida</div><div id='Outquicksetup' class='emColor clickable' style='display:none;'>Sair da Configuração Rápida</div></div>\";\n$(\"#banner_switchArea\").append(quicksetup);\n}\nif(\"4\"==\"1\"){\nif(\"0\"==\"0\"){\n$(\"#Outquicksetup\").hide();\n$(\"#Entquicksetup\").show();\n}else{\n$(\"#Outquicksetup\").show();\n$(\"#Entquicksetup\").hide();\n}\n}\n$(\"#Entquicksetup\").click(function(){\nquickData = \"1\";\n$.post( \"/?_type=hiddenData&_tag=quick_sess\", {IF_quickData:quickData}, undefined, \"json\" )\n.done(function( data ) {\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\n});\n});\n$(\"#Outquicksetup\").click(function(){\nquickData = \"0\";\n$.post( \"/?_type=hiddenData&_tag=quick_sess\", {IF_quickData:quickData}, undefined, \"json\" )\n.done(function( data ) {\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\n});\n});\n});\n})();\n\n\n\n\nvar menuTreeJSON = [{\"id\":\"homePage\",\"name\":\"Inicio\",\"extData\":\"Mostra as informações importantes.\",\"area\":[{\"area\":\"home_t.lp\"}]},{\"id\":\"mmTopology\",\"name\":\"Topologia\",\"area\":[{\"area\":\"topo_t.lp\"}]},{\"id\":\"internet\",\"name\":\"Internet\"},{\"id\":\"localnet\",\"name\":\"Rede local\"},{\"id\":\"voip\",\"name\":\"VoIP\"},{\"id\":\"mgrAndDiag\",\"name\":\"Gerência & Diagnóstico\"}];\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/English_s.gif\";\npreLoadImg[5] = \"/img/Chinese.gif\";\npreLoadImg[6] = \"/img/Chinese_s.gif\";\npreLoadImg[7] = \"/img/English.gif\";\npreLoadImg[8] = \"/img/waiting.gif\";\npreLoadImg[9] = \"/img/info_m.png\";\npreLoadImg[10] = \"/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}, undefined)\n.done(function( data ) {\nif($.isPlainObject(data))\n{\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\n}\nelse\n{\ntop.location.href = top.location.href;\n}\n});\n}\nfunction LogUser()\n{\nopenLink(\"accountMgr\" + \"&Menu3Location=0\");\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=\"Cancelar\" />\n<input type=\"button\" class=\"button\" id=\"confirmOK\" value=\"OK\" />\n<input type=\"button\" class=\"button\" id=\"confirmStop\" value=\"Parar\" />\n</div>\n</div>\n</div>\n<div id=\"page_container\">\n<div id=\"page_header\">\n<div id=\"banner\">\n\n<div id=\"logo\" class=\"logo\"></div>\n\n<div class=\"timeArea\" id=\"timeArea\" style=\"display:none;\">\nHora atual: <span id=\"_DevCurrTime\">Carregando...</span>\n</div>\n<div id=\"banner_switchArea\">\n\n\n<div id=\"languageSwitch\">\n<img src=\"/img/Portuguese.gif\" alt=\"Chinese\" id=\"PortugueseModify\"/>\n<img src=\"/img/English.gif\" alt=\"English\" id=\"EnglishModify\"/>\n</div>\n\n<div id=\"logOff\" class=\"emColor clickable\" onclick=\"LogOff()\">\n<div id=\"LogOffLnk\"> Sair</div>\n\n<div id=\"logUser\" class=\"logUser\" title=\"\">\n\n</div>\n\n</div>\n\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(\"Por favor, tente novamente após {1} segundos. \");\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\");\nif(dftFcsTaget){\ndftFcsTaget.focus();\n}\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 SetPasswordValue(obj)\n{\nvar template = $(\"#loginWrapper\");\nvar objJQ = $(obj);\nvar passInvisibleOBJ = $(\"[id^='Frm_Password'][class*='passInvisible']\", template);\nvar pwvalue = objJQ.val();\npassInvisibleOBJ.val(pwvalue);\n}\nfunction PasswordChange(template)\n{\nvar typeOBJ = $(\"[id^='Switch_Password']\", template);\nvar passVisibleOBJ = $(\"[id^='Frm_Password'][class*='passVisible']\", template);\nvar passVisibleVal = passVisibleOBJ.val();\nvar passInvisibleOBJ = $(\"[id^='Frm_Password'][class*='passInvisible']\", template);\nvar passInvisibleVal = passInvisibleOBJ.val();\npassInvisibleOBJ.addClass(\"valid\");\nif( typeOBJ.is(':checked'))\n{\npassInvisibleOBJ.hide();\npassVisibleOBJ.show();\npassVisibleOBJ.val(passInvisibleVal);\n}\nelse\n{\npassVisibleOBJ.hide();\npassInvisibleOBJ.show();\npassInvisibleOBJ.val(passVisibleVal);\n}\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(\"A funcionalidade de cookies do seu navegador está desativada, por favor, ligue-o antes de fazer 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:not(.PostIgnore)\").val();\nvar SHA256Password =sha256(Password+xmlObj);\nvar postData = {};\npostData[\"action\"] = \"login\";\npostData[\"Password\"] = SHA256Password;\npostData[\"Username\"] = $(\"#Frm_Username\").val();\npostData[\"_sessionTOKEN\"] = $(\"#_sessionTOKEN\").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}\nfunction CanTextAndPasswordSwitch_InputType()\n{\nvar pass = document.createElement('input');\npass.type = 'text';\npass.style.display = \"none\";\ndocument.body.appendChild(pass);\nvar retVal = true;\ntry\n{\npass.type = 'password';\nif ( \"password\" == pass.type )\n{\npass.type = 'text';\nif ( \"text\" == pass.type )\n{\nretVal = true;\n}\nelse\n{\nretVal = false;\n}\n}\nelse\n{\nretVal = false;\n}\n}\ncatch(e)\n{\nretVal = false;\n}\ndocument.body.removeChild(pass);\nreturn retVal;\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};\n$(document).ready(function(){\nvar loginForm = $(\".loginInstCfgArea\");\neditableInputs = $(\"input\",loginForm).not(\":disabled\").not(\"[readonly=readonly]\");\nif(commConf.passCanSee.indexOf(\"Login\") != -1){\ng_ChangePass2See(loginForm,\"Frm_Password\");\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});\nvar ssidConf = {};\nvar commConf = {};\nvar wanConf = {};\nvar voipConf = {};\nvar lanConf = {};\nvar curRight = \"4\";\n\ncommConf = JSON.parse('{\"miniolt\":\"RoomPONInfo_002\",\"broadwiseTopo\":false,\"PortForwarding\":{\"elementControl\":\"all:2:\"},\"fwPortServHidden\":\"\",\"ValidateCode\":false,\"elementControl\":{\"Ddns\":\"all:2:\",\"LocalDnsServer\":\"SerIPv6Address1::show+SerIPv6Address2::show+all:2:\",\"LocalUPnP\":\"all:2:\",\"Ipv4Dmz\":\"all:2:\"},\"webEnable\":true,\"setEncode\":true,\"template\":\"\",\"serviceCtl\":[],\"ChgpwdStrong\":false,\"IntegCheck\":true,\"timeArea\":\"\",\"passCanSee\":\"\",\"loginErrCustom\":\"login_029\",\"language\":[],\"getEncode\":true,\"diagnose\":{\"ping\":0,\"trace\":0,\"simulate\":0},\"wizard\":[],\"oneWholePage\":{\"QWelcome\":\"welcome_t.lp\"}}');\nif (!commConf.dataSave)\n{\ncommConf.dataSave = 2000;\n}\nwanConf = JSON.parse('{\"status\":{\"dhcpBtn\":{\"2\":false}},\"selfCfgIP\":\"1,1,1,0\",\"Bridge\":true,\"requiredF\":\"1,1,1,1\"}');\nvoipConf = JSON.parse('[]');\nlanConf = JSON.parse('[]');\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()\n{\nif (arguments.length < 2)\n{\nreturn;\n}\nvar action = arguments[0];\nfor(var i = 1; i < arguments.length; i++)\n{\nvar subWidget = arguments[i].find(\"*[id!='']\")\nif ( action == \"show\" )\n{\narguments[i].showIt(true);\nsubWidget.removeClass(\"PostIgnore\");\n}\nelse\n{\narguments[i].showIt(false);\nsubWidget.addClass(\"PostIgnore\");\n}\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}\nfunction randomNum(n){\nvar t='';\nfor(var i=0;i<n;i++)\n{\nt+=Math.floor(Math.random()*10);\n}\nreturn t;\n}\nfunction checkPassStrong(sz)\n{\nif(/[a-z]/.test(sz) && /[A-Z]/.test(sz) && /[0-9]/.test(sz) && (sz.length >= 8))\n{\nreturn true;\n}\nreturn false;\n}\nfunction asyEncode(srcStr)\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 encrypt = new JSEncrypt();\nencrypt.setPublicKey(pubKey);\nvar encrypted = encrypt.encrypt(srcStr);\nvar dstStr = encrypted.toString();\nif(dstStr.length == 0 || dstStr == \"false\")\n{\nconsole.log(\"encrypt key fail!\");\ndstStr = \"\";\n}\nreturn dstStr;\n}\nfunction encodeKey(key,iv)\n{\nvar kv = key + \"+\" + iv;\nreturn asyEncode(kv);\n}\nfunction encodeParaValue(src,key,iv)\n{\nif(src.length > 0)\n{\nvar bKey = CryptoJS.SHA256(key);\nvar bIv = CryptoJS.SHA256(iv);\nvar encrypted =CryptoJS.AES.encrypt(src,bKey,\n{\niv:bIv,\nmode:CryptoJS.mode.CBC,\npadding:CryptoJS.pad.ZeroPadding\n});\nvar dst = encrypted.toString();\nif(dst != \"\" && dst != \"failed\")\n{\nreturn dst;\n}\n}\nreturn src;\n}\nfunction decodeParaValue(src,key,iv)\n{\nif(src.length > 0)\n{\nvar bKey = CryptoJS.SHA256(key);\nvar bIv = CryptoJS.SHA256(iv);\nvar decrypted =CryptoJS.AES.decrypt(src,bKey,\n{\niv:bIv,\nmode:CryptoJS.mode.CBC,\npadding:CryptoJS.pad.ZeroPadding\n});\nvar dst = decrypted.toString(CryptoJS.enc.Utf8);\nif(dst != \"\" && dst != \"failed\")\n{\nreturn dst;\n}\n}\nreturn src;\n}\nfunction getDecodeValue(data)\n{\nvar key = _sessionTmpToken;\nvar iv = key.split(\"\").reverse().join(\"\");\nreturn decodeParaValue(data,key,iv);\n}\njQuery.fn.showIt = function(show) {\nif (show)\n{\n$(this).css(\"display\", \"\");\n}\nelse\n{\n$(this).css(\"display\", \"none\");\n}\n};\njQuery.fn.disableIt = function(disable) {\nif (disable)\n{\n$(this).attr(\"disabled\", \"disabled\");\n$(this).addClass(\"PostIgnore\");\n}\nelse if( undefined == $(this).attr(\"hideattr\") )\n{\n$(this).prop(\"disabled\", \"\");\n$(this).removeClass(\"PostIgnore\");\n}\n};\njQuery.fn.disableButton = function(disable) {\nif (disable)\n{\n$(this).addClass(\"disableBtn\");\n}\nelse if( undefined == $(this).attr(\"hideattr\"))\n{\n$(this).removeClass(\"disableBtn\");\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]);\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},\ncommConf.dataSave\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 ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\nvar Head = $(this);\n$.ajax({\nurl:URL,\ntype: transferType,\ntimeout: 30000,\nasync: asyncTemp,\ncache:false,\nerror: function(){\nif ($.isFunction(error_func))\n{\nerror_func();\n}\nelse\n{\nif (Head != undefined)\n{\nvar ajaxTransferFailHint = \"O servidor não está disponível agora. Atualize a página para recarregar. \";\nvar externErrorHint = $(\".externErrorHint\",Head);\nif ( externErrorHint != undefined )\n{\n$(\"span\",externErrorHint).text(ajaxTransferFailHint);\nexternErrorHint.showIt(true);\n}\n}\nshowWaitTip(false);\n}\n},\nsuccess: function(data){\nsuccess_func(data);\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\nreturn false;\n}\n});\nif ( findOption == 0 )\n{\nSelectElem.append(\"<option value='\"+ HTMLEnCode(data)\n+ \"' title='--Desconhecido--' class='_optExpHandle'>\"\n+ \"--Desconhecido--\" + \"</option>\");\n}\nSelectElem.val(data);\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( commConf.getEncode && Elems.attr(\"encode\") == \"1\")\n{\ndata = getDecodeValue(data);\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{\nif( commConf.getEncode && Elems.attr(\"encode\") == \"1\")\n{\ndata = getDecodeValue(data);\n}\nElems.text(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\n}\nelse\n{\n}\n};\nfunction fillEncodeAttr(data, OBJIDs, Clone)\n{\nif ($.isPlainObject(data))\n{\n$.each(OBJIDs,function(i,obj){\nif(data[obj] != undefined && data[obj][\"encode\"] != undefined)\n{\nvar encodePara= data[obj][\"encode\"].split(\",\");\nfor(var i in encodePara)\n{\n$(\"input[id^=\"+encodePara[i]+\"]\", Clone).attr(\"encode\",\"1\");\n}\n}\n});\n}\nelse\n{\n$(data).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});\n}\n}\nfunction fillDataWithXML(data, OBJIDs, Clone, suffix, splitter)\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 = $(data).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}\nfunction fillDataWithJSON(data, OBJIDs, Clone, suffix, splitter)\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];\nisSplitterExist = 1;\n}\nvar OBJs = $(data).find(OBJID);\nif ( data[OBJID] == undefined )\n{\ncontinue;\n}\nvar instances = data[OBJID][\"Instance\"];\nif ( instances.length <= suffix\n|| suffix < 0 )\n{\nconsoleLog(\"suffix off normal upper!!\");\ncontinue;\n}\nvar InstOBJ = instances[suffix];\nfor (var key in InstOBJ)\n{\nvar ParaName = key;\nvar ParaValue = InstOBJ[key];\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(\"json 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}\nfunction fillData(data, OBJIDs, Clone, suffix, splitter)\n{\nif ($.isPlainObject(data))\n{\nfillDataWithJSON(data, OBJIDs, Clone, suffix, splitter);\n}\nelse\n{\nfillDataWithXML(data, OBJIDs, Clone, suffix, splitter);\n}\n}\njQuery.fn.fillDataByOBJID = function(data, OBJIDs, Clone, suffix, splitter){\nif ( undefined == splitter )\n{\nsplitter = \":\";\n}\nfillEncodeAttr(data, OBJIDs, Clone);\nfillData(data, OBJIDs, Clone, suffix, splitter);\n$(\".SpecialPassword\", Clone).each(function(i){\n$(this).val(\"\t\t\t\t\t\t\");\n});\n};\njQuery.fn.InstantializeForTemplateBox = function(data, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(data).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(data, 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(data, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(data).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(data, 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(data, DataOBJID, instObj, index, \"_\");\n}\nelse\n{\nconsoleLog(\"instId(\"+instId+\") cannot match xml instance\");\n}\n});\n}\n};\njQuery.fn.createPageDataByClone = function(RuleNum,DataOBJID,data,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(data ,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(data, location){\nvar ContentContainer = $(this);\nvar cmapiErrorContainer;\nvar ErrorString = \"\";\nvar ErrorParam = \"\";\nif ($.isPlainObject(data))\n{\nif (data.IF_ERRORSTR == undefined || data.IF_ERRORPARAM == undefined)\n{\nconsoleLog(\"[hasError:]json cannot find IF_ERRORSTR or IF_ERRORPARAM\");\nreturn 1;\n}\nErrorString = data.IF_ERRORSTR;\nErrorParam = data.IF_ERRORPARAM;\n}\nelse\n{\nif ($(\"IF_ERRORSTR\", $(data)).length <= 0 || $(\"IF_ERRORPARAM\", $(data)).length <= 0)\n{\nconsoleLog(\"[hasError:]xml cannot find IF_ERRORSTR or IF_ERRORPARAM\");\nreturn 1;\n}\nErrorString = $(\"IF_ERRORSTR\", $(data)).text();\nErrorParam = $(\"IF_ERRORPARAM\", $(data)).text();\n}\nif (!location)\n{\nlocation = \"errorHint\";\n}\nif (location == \"externErrorHint\")\n{\ncmapiErrorContainer = $(\".externErrorHint\",ContentContainer);\n}\nelse\n{\ncmapiErrorContainer = $(\".\"+location,ContentContainer);\n}\nif ( ErrorString == \"SUCC\" )\n{\ncmapiErrorContainer.showIt(false);\nreturn 0;\n}\nelse if ( ErrorString == \"SessionTimeout\" )\n{\ntop.location.href = top.location.href;\nreturn 1;\n}\nelse\n{\nvar cmapiErrorContainerHtml = \"\";\nvar paraString = \"\";\nif ( ErrorParam != \"SUCC\")\n{\nvar LabelFindResult = 0;\nErrorString = \"Operação atual é inválido, verifique se {0} é 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 )\n{\nErrorString = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\";\n}\ncmapiErrorContainerHtml = ErrorString.format(paraString);\n}\nelse\n{\nif ( \"FAIL\" == ErrorString\n|| \"Operação atual é inválido, verifique se {0} é legal. \" == ErrorString )\n{\nErrorString = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\";\n}\ncmapiErrorContainerHtml = ErrorString;\n}\n$(\"span\",cmapiErrorContainer).text(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,textarea\");\nformInputContent.each(function(key){\nvar Elems = $(this);\nif ( Elems.ShouldPostIgnore() )\n{\nif ( Elems.attr(\"encode\") == \"1\" )\n{\nneedEncode = true;\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();\nif(commConf.setEncode && Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodeParaValue(ElemsValue,cryptoKey,cryptoIv);\nneedEncode = true;\n}\nbreak;\n}\ncase \"text\":\ncase \"password\":\ncase \"radio\":\n{\nElemsValue = Elems.val();\nif(commConf.setEncode && Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodeParaValue(ElemsValue,cryptoKey,cryptoIv);\nneedEncode = true;\n}\nbreak;\n}\ncase \"checkbox\":\n{\nif( Elems.is(':checked'))\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 if( Elems.is(\"textarea\") && Elems.attr(\"needPost\") == \"needPost\" )\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(data){\nif (Head.hasError(data,\"externErrorHint\") == 0)\n{\nHead.trigger(\"changeXMLDataBeforeFillData\", [data]);\nvar XMLOBJ = $(data).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(data ,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, data,\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\");\nvar template = buttonOBJ.parents(\"[id^='template']\");\nvar ActionBeforePostResult = {result: \"Process\"};\nif ( buttonType == \"Apply\" )\n{\nvar formOBJ = $(\".form_content\", template);\nif ( formOBJ.length > 0 && false == formOBJ.valid() )\n{\nreturn;\n}\nelse\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});\n}\nvar IPMACCheckResult = {result: \"checkOK\"};\ntemplate.trigger(\"wholeIPorMACCheck\",[template,IPMACCheckResult]);\nif (IPMACCheckResult.result != \"checkOK\")\n{\nreturn;\n}\n}\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}\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 = {};\nif (commConf.IntegCheck)\n{\nvar degistStr = sha256(PostDataTmp);\nselfHeader[\"Check\"] = asyEncode(degistStr);\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostDataTmp,\nheaders: selfHeader,\nprocessData: procData,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"O servidor não está disponível agora. Atualize a página para recarregar. \";\nvar errorContainer = $(\".errorHint\",template);\nvar changeArea = $(\".ChangeArea\",template);\nvar collapsibleInst = $(\".collapsibleInst\",template);\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},\nsuccess: function(data){\n_LuQUID_setTemplateDefEvents(template, PostSuccHandler);\ntemplate.trigger(PostSuccHandler,[data,template]);\nif (template.hasError(data,\"_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 homedeletedataPost(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 deleteid = $(\"[id^='Delete']\",template).attr('id');\nvar idArr = deleteid.split(\":\");\nvar tmpinsid = idArr[idArr.length - 1];\nvar insid = parseInt(tmpinsid, 10) + 1;\nvar PostDataTmp = \"IF_ACTION=\" + actionType + \"&\" +\"_InstID=\" + parseInt(insid, 10);\nif (typeof(_sessionTmpToken) != \"undefined\")\n{\nPostDataTmp += \"&_sessionTOKEN=\"+_sessionTmpToken;\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostDataTmp,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"O servidor não está disponível agora. Atualize a página para recarregar. \";\nvar homeWrapperObj = template.parent(\"[id^='homeWrapper']\");\nvar errorContainertmp = $(\".lanErr\",homeWrapperObj);\nvar errorContainer = $(\".errorHint\",errorContainertmp);\nif ( errorContainer != undefined )\n{\n$(\"span\", errorContainer).text(ajaxPostFailHint);\nerrorContainer.showIt(true);\ntemplate.showIt(true);\n}\nshowWaitTip(false);\n},\nsuccess: function(data){\ntemplate.trigger(PostSuccHandler);\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();",
"body_murmur": -1344793737,
"body_sha256": "de7172cfff7254c7c5e7be0470c79633e91d4bc526e247481acdf6fa8d9b1f02",
"content_length": 155782,
"headers": {
"accept_ranges": [
"bytes"
],
"cache_control": [
"no-cache,no-store"
],
"content_length": [
"155782"
],
"content_security_policy": [
"frame-ancestors 'self'"
],
"content_type": [
"text/html; charset=Utf-8"
],
"pragma": [
"no-cache"
],
"server": [
""
],
"set_cookie": [
"SID=912bc06f15a0f3a802419b1212fdcd4a6bf2ef0132a4671f4e444529f9d18574; PATH=/; HttpOnly; SameSite=strict",
"_TESTCOOKIESUPPORT=1; PATH=/; HttpOnly; SameSite=strict"
],
"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": "177.74.228.163",
"path": "",
"scheme": "http"
}
},
"status_code": 200,
"title": "F6600P"
}
},
"url": "http://177.74.228.163/",
"_meta": {
"name": "",
"desc": "",
"category": ""
},
"last_updated_at": "2024-09-19T06:25:10.722Z"
},
{
"port": 443,
"protocol": "tcp",
"name": "https",
"version": "",
"product": "",
"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\n<link rel=\"shortcut icon\" href=\"/img/favicon.ico\" />\n\n<title>F6600P</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.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.w330, .inputLong, .selectLong {\nwidth: 330px;\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#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._LuQUID_SelAccessDeviceDmz{\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}\n.logo_Mnc {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_Mnc.png) no-repeat 5px 30px;\n}\n.logo_AXS {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_AXS.png) no-repeat 5px 30px;\n}\n.logo_Claro {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_Claro.png) no-repeat 5px 30px;\n}.logo_OJO {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OJO.png) no-repeat 5px 15px;\n}.logo_Antel {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_Antel.png) no-repeat 5px 30px;\n}.logo_Tot {\nwidth: 160px;\nbackground: url(../img/Logo_Tot.png) no-repeat 5px 30px;\n}\n.timeArea_Tot {\nleft: 190px;\n}.logo_Morocco {\nbackground: url(../img/Logo_Morocco.png) no-repeat 5px 30px;\n}.logo_IvoryOrange {\nbackground: url(../img/Logo_IvoryOrange.png) no-repeat 5px 30px;\n}\n.logo_KAMA_Orange {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.color_OMA\n{\ncolor:#FF6600 !important;\n}.logo_Orange {\nbackground: url(../img/Logo_Orange.png) no-repeat 5px 30px;\n}\n.logo_KAMA_Orange {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.color_OMA\n{\ncolor:#FF6600 !important;\n}\ndiv.errorLabelWraperBottom{\noverflow: hidden;\nwidth:100%;\npadding-left: 23px;\nline-height: 30px;\n}\n.logo_CTC {\nwidth: 190px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_CTC.jpg) no-repeat 5px 40px;\n}\n.timeArea_CTC\n{\nleft: 200px;\n}\n.loginTitle_CTC {\npadding-left: 0px !important;\n}\n.logo_OMA {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.color_OMA\n{\ncolor:#FF6600 !important;\n}.logo_OMA {\nwidth: 300px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_OMA.png) no-repeat 5px 15px;\n}\n.wlanon {background-image: url(\"../img/ok.png\"); background-size: cover; width: 20px;}\n.wlanoff {background-image: url(\"../img/no.png\"); background-size: cover; width: 20px;}\n.wlanTable table {border: 0px; width: 700px; min-height: 25px; line-height: 20px; border-collapse: collapse; padding: 0;}.logoPTCL {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_PTCL.png) no-repeat -27px -5px;\nbackground-size: 165px 115px;\n}.logo_digi {\nwidth: 110px;\nheight: 72px;\nfloat: left;\nbackground: url(../img/Logo_digi.png) no-repeat 5px 30px;\n}\n\n</style>\n<script type=\"text/javascript\" src=\"/jquery/jquery.min.js\"></script>\n<!--[if lte IE 8]>\n<script type=\"text/javascript\" src=\"jquery/jquery-3.0.0-alpha1-compat.min.js\"></script>\n<![endif]-->\n<script type=\"text/javascript\" src=\"/jquery/crypto-js.min.js\"></script>\n<script type=\"text/javascript\" src=\"/jquery/jsencrypt.min.js\"></script>\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});\n$(\"#scrollRightBtn,#scrollLeftBtn\").click(function () {\nif ( ! $(this).hasClass(\"EnableScrollBtn\"))\n{\nconsoleLog(\"no scroll button!!\");\nreturn;\n}\nvar scrollTarget = $(\"#class3MenuMainContent\");\nvar tabWidth = $(\"#_totalTabWidth\").val();\nvar srcollTotalLen = tabWidth - scrollTarget.width();\nif ( $(this).attr(\"id\") == \"scrollLeftBtn\" )\n{\nscrollTarget.scrollLeft(0);\n}\nelse\n{\nscrollTarget.scrollLeft(srcollTotalLen);\n}\nvar afterPosition = scrollTarget.scrollLeft();\nStatusOfLRBtnOf3MenuHandle(afterPosition);\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; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;' \"\n+ \"MenuClass='1' \"\n+ \"id='\"+ supId + \"' \"\n+ \"MenuPage='\"+ GetLeftMostPageID(supId) +\"'\"\n+ \" title='\" + supName +\"'>\"\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)\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\");\n};\npageContainer.errorfunction = function(){\nconsoleLog(\"page get fail\");\nshowWaitTip(false);\npageContainer.html(\"Pedido da página falhou, por favor tente novamente!\");\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)\n{\nvar PageName = \"/?_type=menuView&_tag=\" + pageurl;\nAjaxPageGet(PageName, 1);\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; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; \"\n+ \"color:#BFBDBE; cursor:default;'\"\n+ \" hidefocus=\\\"true\\\" onclick=\\\" \\\" title=\\\"\" + supName + \"\\\">\"\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}\nreposition_box(\"tipLayer\");\n}\nelse\n{\n$(\"#blackMask, #tipLayer, #confirmLayer\").css(\"display\", \"none\");\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$(\"#confirmCancel\",confirmLayerOBJ).focus();\nreturn confirmLayerOBJ;\n}\nfunction IniTip(msg, infoType)\n{\nshowWaitTip(true);\nvar confirmLayerOBJ = $(\"#confirmLayer\");\n$(\"#confirmCancel\",confirmLayerOBJ).css(\"display\", \"none\");\nconfirmLayerOBJ.css(\"display\", \"block\");\nif (infoType == \"err\")\n{\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/err_m.png\") no-repeat 20px 50%');\n}\nelse if (infoType == \"succ\")\n{\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/succ_m.png\") no-repeat 20px 50%');\n}\nelse\n{\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/info_m.png\") no-repeat 20px 50%');\n}\n$(\"#confirmMsg p\",confirmLayerOBJ).text(msg);\n$(\"#confirmCancel\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmOK\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmStop\",confirmLayerOBJ).unbind( \"click\" );\n$(\"#confirmOK\",confirmLayerOBJ).bind(\"click\", function(event){\nshowWaitTip(false);\n$(\"#confirmMsg\",confirmLayerOBJ).css(\"background\", 'url(\"../img/info_m.png\") no-repeat 20px 50%');\n});\n$(\"#confirmOK\",confirmLayerOBJ).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;\nvar widthtmp = errWidth-5-23-10;\nif(widthtmp < 1)\n{\ntipObj.removeAttr(\"style\",\"\");\n}\nelse\n{\ntipObj.width(widthtmp);\n}\nif (rightObj != undefined)\n{\ntipObj.insertAfter(rightObj);\n}\nelse\n{\ntipObj.appendTo(rowObj);\n}\n}\n});\njQuery.extend(jQuery.validator.messages, {\nrequired: \"Este campo é obrigatório. \",\nremote: \"Por favor corrigir esse campo. \",\nemail: \"Por favor insira um endereço de e-mail válido. \",\nurl: \"Por favor, insira um URL válido. \",\ndate: \"Por favor insira uma data válida. \",\ndateISO: \"Por favor, indique uma data válida (ISO). \",\nnumber: \"Por favor insira um número válido. \",\ndigits: \"Digite um número inteiro. \",\ncreditcard: \"Por favor digite um número de cartão de crédito válido. \",\nequalTo: \"Por favor entre com o mesmo valor novamente. \",\nmaxlength: jQuery.validator.format(\"Por favor, indique não mais do que {0} caracteres. \"),\nminlength: jQuery.validator.format(\"Por favor, insira pelo menos {0} caracteres. \"),\nrangelength: jQuery.validator.format(\"Por favor insira um valor com {0} ~ {1} caracteres. \"),\nrange: jQuery.validator.format(\"Por favor insira um valor entre {0} e {1}. \"),\nmax: jQuery.validator.format(\"Por favor insira um valor menor ou igual a {0}. \"),\nmin: jQuery.validator.format(\"Por favor insira um valor maior ou igual a {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 checkDomain(value)\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}\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}\nfunction checkIPv6Addr(ipaddr)\n{\nif (ipaddr.match(\"[^0-9a-fA-F:.]\") != null)\nreturn false;\nvar addrParts = ipaddr.split(':');\nvar Doublecolon = ipaddr.split('::');\nvar ipv4Parts = 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}\nfunction checkMacAddr(macaddr)\n{\nvar regSingleByte = new RegExp(\":\",\"g\");\nvar regexp = /^([A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2}$/;\nmacaddr = macaddr.replace(regSingleByte,\"-\");\nif (!regexp.test(macaddr)) {\nreturn false;\n}\nreturn true;\n}\njQuery.validator.addMethod(\n\"macAddr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nif(checkMacAddr(value) == true)\n{\nreturn true;\n}\nreturn false;\n},\n\"Insira um endereço MAC válido. \"\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\"Insira um endereço IPv4 válido. \"\n);\njQuery.validator.addMethod(\n\"IPv6Addr\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn checkIPv6Addr(value);\n},\n\"Insira um endereço IPv6 válido. \"\n);\njQuery.validator.addMethod(\n\"DomainName\",\nfunction(value, element, params) {\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn checkDomain(value);\n},\n\"Por favor insira um nome de domínio válido. \"\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\"Por favor insira um nome de host válido. \"\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\"Por favor, insira um URL válido. \"\n);\njQuery.validator.addMethod(\n\"ChkPass\",\nfunction(val, element)\n{\nif ( !(/[0-9]+/).test(val) ||\n!(/[a-zA-Z]+/).test(val) ||\n!(/[!\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+/).test(val) )\n{\nreturn false;\n}\nif (val.length < 8)\n{\nreturn false;\n}\nreturn true;\n},\n$.validator.format(\"Contraseña no conforme\")\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 = [\"O formato da senha está errada. Por favor, digite novamente. \", \"Por favor, indique apenas caracteres ASCII. \"];\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\"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\"Por favor, indique apenas caracteres ASCII. \"\n);\njQuery.validator.addMethod(\n\"PassStrong\",\nfunction(value, element, params)\n{\nvar num = 0;\nfor (var j = 0 ;j < value.length; j++)\n{\nvar ch = value.charCodeAt(j);\nif(ch<32 || ch>126)\n{\nreturn false;\n}\n}\nif (value.length < 8)\nreturn false;\nif((/[0-9]+/).test(value))\nnum = num+1;\nif((/[a-z]+/).test(value))\nnum = num+1;\nif((/[A-Z]+/).test(value))\nnum = num+1;\nif((/[!\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+/).test(value))\nnum = num+1;\nif(num < 3)\nreturn false;\nreturn true;\n},\n\"Please enter a strong password!\"\n);\njQuery.validator.addMethod(\n\"utf8\",\nfunction(value, element, params)\n{\nif ( this.optional(element) )\n{\nreturn \"dependency-mismatch\";\n}\nreturn true;\n},\n\"Por favor, indique apenas caracteres ASCII. \"\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\"Por favor insira 13 caracteres ASCII ou 26 dígitos hexadecimais. \"\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\"Por favor, digite 5 ou 13 caracteres ASCII, ou digite 10 ou 26 dígitos hexadecimais. \"\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\"Introduza apenas caracteres hexadecimais. \"\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(\"Por favor, indique {0} caracteres. \")\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(\"O único valor permitido é {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(\"Por favor insira um valor hexadecimal em intervalos de {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(\"Por favor insira um valor em intervalos de {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\"Digite um número inteiro. \"\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\"Por favor coloque prefixo válido. \"\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 ? \"Por favor, indique um valor superior a \\\"{0}\\\". \" : \"Por favor insira um valor maior do que o anterior. \" ,\n\"2\" : param[2].separate ? \"Por favor insira um valor não inferior a \\\"{0}\\\". \" : \"Por favor insira um valor não inferior ao primeiro. \" ,\n\"3\" : param[2].separate ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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 ? \"Por favor insira um valor inferior a \\\"{0}\\\". \" : \"Por favor insira um valor menor do que o último. \" ,\n\"2\" : param[2].separate ? \"Por favor insira um valor não superior a \\\"{0}\\\". \" : \"Por favor insira um valor não superior ao último. \" ,\n\"3\" : param[2].separate ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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 ? \"Por favor, indique um valor superior a \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Por favor insira um valor maior do que o anterior. \" : \"Por favor insira um valor maior do que o último.\" ),\n\"2\" : param[2].separate ? \"Por favor insira um valor não inferior a \\\"{0}\\\". \" : ( param[2].objPosition ==\"first\" ? \"Por favor insira um valor não inferior ao primeiro. \" : \"Por favor insira um valor não inferior ao último. \" ) ,\n\"3\" : param[2].separate ? \"Por favor, assegure a diferença com \\\"{0}\\\" não maior que {1}. \" : ( param[2].objPosition ==\"first\" ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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 ? \"Por favor insira um valor inferior a \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Por favor insira um valor menor do que o anterior. \" : \"Por favor insira um valor menor do que o último. \" ),\n\"2\" : param[2].separate ? \"Por favor insira um valor não superior a \\\"{0}\\\". \" : ( param[2].objPosition == \"first\" ? \"Por favor insira um valor não superior ao primeiro.\" : \"Por favor insira um valor não superior ao último. \" ),\n\"3\" : param[2].separate ? \"Por favor, assegure a diferença com \\\"{0}\\\" não maior que {1}. \" : ( param[2].objPosition == \"first\" ? \"Assegure-se de que a diferença com o primeiro não seja maior que {1}. \" : \"Assegure-se de que a diferença com o primeiro não seja maior que {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(\"Por favor, garantir a entrada não nas faixas de \\\"{0}\\\". \", rangesStr);\n}\nelse\n{\nreturn $.validator.format(\"Por favor, garantir a entrada não é igual a \\\"{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 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) )\n{\nreturn \"dependency-mismatch\";\n}\nif (checkTimeHMS(value) == true) {\nreturn true;\n}\nreturn false;\n},\n\"Insira o formato de hora correto como HH: MM: SS.\"\n);\nfunction time_earlierThan(obj, value, param, type)\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] < tmpvaluearr[0])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] < tmpvaluearr[1])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] < tmpvaluearr[2])\n{\nreturn true;\n}\n}\nreturn false;\n}\n};\nfunction time_laterThan(obj, value, param, type)\n{\nvar tmpvalue = obj.val();\nvar ret = true;\nvar valuearr = value.split(\":\")\nvar tmpvaluearr = tmpvalue.split(\":\")\nif (valuearr[0] > tmpvaluearr[0])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[0] === tmpvaluearr[0] && valuearr[1] > tmpvaluearr[1])\n{\nreturn true;\n}\nelse\n{\nif (valuearr[1] === tmpvaluearr[1] && valuearr[2] > tmpvaluearr[2])\n{\nreturn true;\n}\n}\nreturn false;\n}\n};\njQuery.validator.addMethod(\n\"timeComparison\",\nfunction (value, element, param) {\nif ( this.optional(element) )\n{\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\"A hora de início deve ser anterior à hora de término.\"\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,template)\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 = \"Não é permitido introduzir o seguinte valor (es): {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 = \"Entrada inválida. Por favor, certifique-se de que a entrada esteja no seguinte intervalo: {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{\nretMsg = \"\";\nvar IPObj = $(\"[id^='\"+v+\"']\",template);\nIPObj.FillIPorMacDataCombination(\"sub_\"+v, \".\", 4);\nvar minValue = IPObj.val();\nif (-1 == compareIPv4(ipValue, minValue)){\nreturn [false, k, retMsg];\n}\n}\nelse if (k == \"notMoreThan\")\n{\nretMsg = \"\";\nvar IPObj = $(\"[id^='\"+v+\"']\",template);\nIPObj.FillIPorMacDataCombination(\"sub_\"+v, \".\", 4);\nvar maxValue = IPObj.val();\nif (1 == compareIPv4(ipValue, maxValue)){\nreturn [false, k, retMsg];\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 = \"Não é permitido introduzir o seguinte valor (es): {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 = \"\";\nvar ruleName = checkRetArray[1];\nif(ruleObj.messages[ruleName] != undefined){\nreturn ruleObj.messages[ruleName];\n}\nswitch (ruleName){\ncase \"banValue\":{\nif (checkParaName != \"\")\n{\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse{\nerrMsg = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\"+\"[\"+\"Erro:\"+checkValue+\"]\";\n}\nbreak;\n}\ncase \"allowRange\":{\nif (checkParaName != \"\"){\nerrMsg = checkParaName + checkRetArray[2];\n}\nelse{\nerrMsg = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\"+\"[\"+\"Erro:\"+checkValue+\"]\";\n}\nbreak;\n}\ndefault:{\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(\"Por favor insira um valor com {0} caracteres.\", lengthStr);\n}\n);\njQuery.validator.addMethod(\n\"notEqualTo\",\nfunction(value, element, param)\n{\nvar obj = $(\"[id^='\"+param+\"']\");\nif ( value == obj.val())\n{\nreturn false;\n}\nreturn true;\n},\nfunction(param, element){\nvar paramName = \"\";\nvar obj = $(\"[id^='\"+param+\"']\");\nparamName = $(\"label[for='\"+param+\"']\").text();\nreturn $.validator.format(\"Insira um valor diferente com {0}. \", paramName);\n}\n);\n\n\n\n(function(){\n$(document).ready(function(){\nvar curv = 139;\nif (curv == \"65\")\n$(\"#languageSwitch\").hide();\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"152\" || CountryCode == \"163\")\n{\n$(\"#logo\").attr(\"class\", \"logo_Claro\");\n}\n});\n})();\n\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"21\")\n{\n$(\"#logo\").attr(\"class\", \"logo_Antel\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"36\")\n{\n$(\"#logo\").addClass(\"logo_Tot\");\n$(\"#timeArea\").addClass(\"timeArea_Tot\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"106\")\n{\n$(\"#logo\").addClass(\"logo_Morocco\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"138\")\n{\n$(\"#logo\").addClass(\"logo_IvoryOrange\");\n}\n});\n})();\n(function(){\n$(document).ready(function(){\nvar CountryCode = \"139\";\nif (CountryCode == \"174\")\n{\n$(\"#logo\").addClass(\"logo_Orange\");\n}\n});\n})();\n\n\n\n\n\n(function(){\n$(document).ready(function(){\nvar quickData = \"0\";\nif ($(\"#quicksetup\").length < 1){\nvar quicksetup = \"<div id='quicksetup'><div id='Entquicksetup' class='emColor clickable' style='display:none;'>Configuração Rápida</div><div id='Outquicksetup' class='emColor clickable' style='display:none;'>Sair da Configuração Rápida</div></div>\";\n$(\"#banner_switchArea\").append(quicksetup);\n}\nif(\"4\"==\"1\"){\nif(\"0\"==\"0\"){\n$(\"#Outquicksetup\").hide();\n$(\"#Entquicksetup\").show();\n}else{\n$(\"#Outquicksetup\").show();\n$(\"#Entquicksetup\").hide();\n}\n}\n$(\"#Entquicksetup\").click(function(){\nquickData = \"1\";\n$.post( \"/?_type=hiddenData&_tag=quick_sess\", {IF_quickData:quickData}, undefined, \"json\" )\n.done(function( data ) {\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\n});\n});\n$(\"#Outquicksetup\").click(function(){\nquickData = \"0\";\n$.post( \"/?_type=hiddenData&_tag=quick_sess\", {IF_quickData:quickData}, undefined, \"json\" )\n.done(function( data ) {\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\n});\n});\n});\n})();\n\n\n\n\nvar menuTreeJSON = [{\"id\":\"homePage\",\"name\":\"Inicio\",\"extData\":\"Mostra as informações importantes.\",\"area\":[{\"area\":\"home_t.lp\"}]},{\"id\":\"mmTopology\",\"name\":\"Topologia\",\"area\":[{\"area\":\"topo_t.lp\"}]},{\"id\":\"internet\",\"name\":\"Internet\"},{\"id\":\"localnet\",\"name\":\"Rede local\"},{\"id\":\"voip\",\"name\":\"VoIP\"},{\"id\":\"mgrAndDiag\",\"name\":\"Gerência & Diagnóstico\"}];\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/English_s.gif\";\npreLoadImg[5] = \"/img/Chinese.gif\";\npreLoadImg[6] = \"/img/Chinese_s.gif\";\npreLoadImg[7] = \"/img/English.gif\";\npreLoadImg[8] = \"/img/waiting.gif\";\npreLoadImg[9] = \"/img/info_m.png\";\npreLoadImg[10] = \"/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}, undefined)\n.done(function( data ) {\nif($.isPlainObject(data))\n{\nif ( data.need_refresh )\n{\ntop.location.href = top.location.href;\n}\n}\nelse\n{\ntop.location.href = top.location.href;\n}\n});\n}\nfunction LogUser()\n{\nopenLink(\"accountMgr\" + \"&Menu3Location=0\");\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=\"Cancelar\" />\n<input type=\"button\" class=\"button\" id=\"confirmOK\" value=\"OK\" />\n<input type=\"button\" class=\"button\" id=\"confirmStop\" value=\"Parar\" />\n</div>\n</div>\n</div>\n<div id=\"page_container\">\n<div id=\"page_header\">\n<div id=\"banner\">\n\n<div id=\"logo\" class=\"logo\"></div>\n\n<div class=\"timeArea\" id=\"timeArea\" style=\"display:none;\">\nHora atual: <span id=\"_DevCurrTime\">Carregando...</span>\n</div>\n<div id=\"banner_switchArea\">\n\n\n<div id=\"languageSwitch\">\n<img src=\"/img/Portuguese.gif\" alt=\"Chinese\" id=\"PortugueseModify\"/>\n<img src=\"/img/English.gif\" alt=\"English\" id=\"EnglishModify\"/>\n</div>\n\n<div id=\"logOff\" class=\"emColor clickable\" onclick=\"LogOff()\">\n<div id=\"LogOffLnk\"> Sair</div>\n\n<div id=\"logUser\" class=\"logUser\" title=\"\">\n\n</div>\n\n</div>\n\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(\"Por favor, tente novamente após {1} segundos. \");\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\");\nif(dftFcsTaget){\ndftFcsTaget.focus();\n}\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 SetPasswordValue(obj)\n{\nvar template = $(\"#loginWrapper\");\nvar objJQ = $(obj);\nvar passInvisibleOBJ = $(\"[id^='Frm_Password'][class*='passInvisible']\", template);\nvar pwvalue = objJQ.val();\npassInvisibleOBJ.val(pwvalue);\n}\nfunction PasswordChange(template)\n{\nvar typeOBJ = $(\"[id^='Switch_Password']\", template);\nvar passVisibleOBJ = $(\"[id^='Frm_Password'][class*='passVisible']\", template);\nvar passVisibleVal = passVisibleOBJ.val();\nvar passInvisibleOBJ = $(\"[id^='Frm_Password'][class*='passInvisible']\", template);\nvar passInvisibleVal = passInvisibleOBJ.val();\npassInvisibleOBJ.addClass(\"valid\");\nif( typeOBJ.is(':checked'))\n{\npassInvisibleOBJ.hide();\npassVisibleOBJ.show();\npassVisibleOBJ.val(passInvisibleVal);\n}\nelse\n{\npassVisibleOBJ.hide();\npassInvisibleOBJ.show();\npassInvisibleOBJ.val(passVisibleVal);\n}\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(\"A funcionalidade de cookies do seu navegador está desativada, por favor, ligue-o antes de fazer 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:not(.PostIgnore)\").val();\nvar SHA256Password =sha256(Password+xmlObj);\nvar postData = {};\npostData[\"action\"] = \"login\";\npostData[\"Password\"] = SHA256Password;\npostData[\"Username\"] = $(\"#Frm_Username\").val();\npostData[\"_sessionTOKEN\"] = $(\"#_sessionTOKEN\").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}\nfunction CanTextAndPasswordSwitch_InputType()\n{\nvar pass = document.createElement('input');\npass.type = 'text';\npass.style.display = \"none\";\ndocument.body.appendChild(pass);\nvar retVal = true;\ntry\n{\npass.type = 'password';\nif ( \"password\" == pass.type )\n{\npass.type = 'text';\nif ( \"text\" == pass.type )\n{\nretVal = true;\n}\nelse\n{\nretVal = false;\n}\n}\nelse\n{\nretVal = false;\n}\n}\ncatch(e)\n{\nretVal = false;\n}\ndocument.body.removeChild(pass);\nreturn retVal;\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};\n$(document).ready(function(){\nvar loginForm = $(\".loginInstCfgArea\");\neditableInputs = $(\"input\",loginForm).not(\":disabled\").not(\"[readonly=readonly]\");\nif(commConf.passCanSee.indexOf(\"Login\") != -1){\ng_ChangePass2See(loginForm,\"Frm_Password\");\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});\nvar ssidConf = {};\nvar commConf = {};\nvar wanConf = {};\nvar voipConf = {};\nvar lanConf = {};\nvar curRight = \"4\";\n\ncommConf = JSON.parse('{\"miniolt\":\"RoomPONInfo_002\",\"broadwiseTopo\":false,\"PortForwarding\":{\"elementControl\":\"all:2:\"},\"fwPortServHidden\":\"\",\"ValidateCode\":false,\"elementControl\":{\"Ddns\":\"all:2:\",\"LocalDnsServer\":\"SerIPv6Address1::show+SerIPv6Address2::show+all:2:\",\"LocalUPnP\":\"all:2:\",\"Ipv4Dmz\":\"all:2:\"},\"webEnable\":true,\"setEncode\":true,\"template\":\"\",\"serviceCtl\":[],\"ChgpwdStrong\":false,\"IntegCheck\":true,\"timeArea\":\"\",\"passCanSee\":\"\",\"loginErrCustom\":\"login_029\",\"language\":[],\"getEncode\":true,\"diagnose\":{\"ping\":0,\"trace\":0,\"simulate\":0},\"wizard\":[],\"oneWholePage\":{\"QWelcome\":\"welcome_t.lp\"}}');\nif (!commConf.dataSave)\n{\ncommConf.dataSave = 2000;\n}\nwanConf = JSON.parse('{\"status\":{\"dhcpBtn\":{\"2\":false}},\"selfCfgIP\":\"1,1,1,0\",\"Bridge\":true,\"requiredF\":\"1,1,1,1\"}');\nvoipConf = JSON.parse('[]');\nlanConf = JSON.parse('[]');\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()\n{\nif (arguments.length < 2)\n{\nreturn;\n}\nvar action = arguments[0];\nfor(var i = 1; i < arguments.length; i++)\n{\nvar subWidget = arguments[i].find(\"*[id!='']\")\nif ( action == \"show\" )\n{\narguments[i].showIt(true);\nsubWidget.removeClass(\"PostIgnore\");\n}\nelse\n{\narguments[i].showIt(false);\nsubWidget.addClass(\"PostIgnore\");\n}\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}\nfunction randomNum(n){\nvar t='';\nfor(var i=0;i<n;i++)\n{\nt+=Math.floor(Math.random()*10);\n}\nreturn t;\n}\nfunction checkPassStrong(sz)\n{\nif(/[a-z]/.test(sz) && /[A-Z]/.test(sz) && /[0-9]/.test(sz) && (sz.length >= 8))\n{\nreturn true;\n}\nreturn false;\n}\nfunction asyEncode(srcStr)\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 encrypt = new JSEncrypt();\nencrypt.setPublicKey(pubKey);\nvar encrypted = encrypt.encrypt(srcStr);\nvar dstStr = encrypted.toString();\nif(dstStr.length == 0 || dstStr == \"false\")\n{\nconsole.log(\"encrypt key fail!\");\ndstStr = \"\";\n}\nreturn dstStr;\n}\nfunction encodeKey(key,iv)\n{\nvar kv = key + \"+\" + iv;\nreturn asyEncode(kv);\n}\nfunction encodeParaValue(src,key,iv)\n{\nif(src.length > 0)\n{\nvar bKey = CryptoJS.SHA256(key);\nvar bIv = CryptoJS.SHA256(iv);\nvar encrypted =CryptoJS.AES.encrypt(src,bKey,\n{\niv:bIv,\nmode:CryptoJS.mode.CBC,\npadding:CryptoJS.pad.ZeroPadding\n});\nvar dst = encrypted.toString();\nif(dst != \"\" && dst != \"failed\")\n{\nreturn dst;\n}\n}\nreturn src;\n}\nfunction decodeParaValue(src,key,iv)\n{\nif(src.length > 0)\n{\nvar bKey = CryptoJS.SHA256(key);\nvar bIv = CryptoJS.SHA256(iv);\nvar decrypted =CryptoJS.AES.decrypt(src,bKey,\n{\niv:bIv,\nmode:CryptoJS.mode.CBC,\npadding:CryptoJS.pad.ZeroPadding\n});\nvar dst = decrypted.toString(CryptoJS.enc.Utf8);\nif(dst != \"\" && dst != \"failed\")\n{\nreturn dst;\n}\n}\nreturn src;\n}\nfunction getDecodeValue(data)\n{\nvar key = _sessionTmpToken;\nvar iv = key.split(\"\").reverse().join(\"\");\nreturn decodeParaValue(data,key,iv);\n}\njQuery.fn.showIt = function(show) {\nif (show)\n{\n$(this).css(\"display\", \"\");\n}\nelse\n{\n$(this).css(\"display\", \"none\");\n}\n};\njQuery.fn.disableIt = function(disable) {\nif (disable)\n{\n$(this).attr(\"disabled\", \"disabled\");\n$(this).addClass(\"PostIgnore\");\n}\nelse if( undefined == $(this).attr(\"hideattr\") )\n{\n$(this).prop(\"disabled\", \"\");\n$(this).removeClass(\"PostIgnore\");\n}\n};\njQuery.fn.disableButton = function(disable) {\nif (disable)\n{\n$(this).addClass(\"disableBtn\");\n}\nelse if( undefined == $(this).attr(\"hideattr\"))\n{\n$(this).removeClass(\"disableBtn\");\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]);\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},\ncommConf.dataSave\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 ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\nvar Head = $(this);\n$.ajax({\nurl:URL,\ntype: transferType,\ntimeout: 30000,\nasync: asyncTemp,\ncache:false,\nerror: function(){\nif ($.isFunction(error_func))\n{\nerror_func();\n}\nelse\n{\nif (Head != undefined)\n{\nvar ajaxTransferFailHint = \"O servidor não está disponível agora. Atualize a página para recarregar. \";\nvar externErrorHint = $(\".externErrorHint\",Head);\nif ( externErrorHint != undefined )\n{\n$(\"span\",externErrorHint).text(ajaxTransferFailHint);\nexternErrorHint.showIt(true);\n}\n}\nshowWaitTip(false);\n}\n},\nsuccess: function(data){\nsuccess_func(data);\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\nreturn false;\n}\n});\nif ( findOption == 0 )\n{\nSelectElem.append(\"<option value='\"+ HTMLEnCode(data)\n+ \"' title='--Desconhecido--' class='_optExpHandle'>\"\n+ \"--Desconhecido--\" + \"</option>\");\n}\nSelectElem.val(data);\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( commConf.getEncode && Elems.attr(\"encode\") == \"1\")\n{\ndata = getDecodeValue(data);\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{\nif( commConf.getEncode && Elems.attr(\"encode\") == \"1\")\n{\ndata = getDecodeValue(data);\n}\nElems.text(data);\nif (typeof(Elems.attr(\"title\")) != \"undefined\")\n{\nElems.attr(\"title\", data);\n}\n}\nelse\n{\n}\n};\nfunction fillEncodeAttr(data, OBJIDs, Clone)\n{\nif ($.isPlainObject(data))\n{\n$.each(OBJIDs,function(i,obj){\nif(data[obj] != undefined && data[obj][\"encode\"] != undefined)\n{\nvar encodePara= data[obj][\"encode\"].split(\",\");\nfor(var i in encodePara)\n{\n$(\"input[id^=\"+encodePara[i]+\"]\", Clone).attr(\"encode\",\"1\");\n}\n}\n});\n}\nelse\n{\n$(data).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});\n}\n}\nfunction fillDataWithXML(data, OBJIDs, Clone, suffix, splitter)\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 = $(data).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}\nfunction fillDataWithJSON(data, OBJIDs, Clone, suffix, splitter)\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];\nisSplitterExist = 1;\n}\nvar OBJs = $(data).find(OBJID);\nif ( data[OBJID] == undefined )\n{\ncontinue;\n}\nvar instances = data[OBJID][\"Instance\"];\nif ( instances.length <= suffix\n|| suffix < 0 )\n{\nconsoleLog(\"suffix off normal upper!!\");\ncontinue;\n}\nvar InstOBJ = instances[suffix];\nfor (var key in InstOBJ)\n{\nvar ParaName = key;\nvar ParaValue = InstOBJ[key];\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(\"json 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}\nfunction fillData(data, OBJIDs, Clone, suffix, splitter)\n{\nif ($.isPlainObject(data))\n{\nfillDataWithJSON(data, OBJIDs, Clone, suffix, splitter);\n}\nelse\n{\nfillDataWithXML(data, OBJIDs, Clone, suffix, splitter);\n}\n}\njQuery.fn.fillDataByOBJID = function(data, OBJIDs, Clone, suffix, splitter){\nif ( undefined == splitter )\n{\nsplitter = \":\";\n}\nfillEncodeAttr(data, OBJIDs, Clone);\nfillData(data, OBJIDs, Clone, suffix, splitter);\n$(\".SpecialPassword\", Clone).each(function(i){\n$(this).val(\"\t\t\t\t\t\t\");\n});\n};\njQuery.fn.InstantializeForTemplateBox = function(data, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(data).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(data, 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(data, OBJIDs, container){\nfor (var i=0; i<OBJIDs.length; i++)\n{\nvar OBJID = OBJIDs[i];\nvar OBJs = $(data).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(data, 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(data, DataOBJID, instObj, index, \"_\");\n}\nelse\n{\nconsoleLog(\"instId(\"+instId+\") cannot match xml instance\");\n}\n});\n}\n};\njQuery.fn.createPageDataByClone = function(RuleNum,DataOBJID,data,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(data ,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(data, location){\nvar ContentContainer = $(this);\nvar cmapiErrorContainer;\nvar ErrorString = \"\";\nvar ErrorParam = \"\";\nif ($.isPlainObject(data))\n{\nif (data.IF_ERRORSTR == undefined || data.IF_ERRORPARAM == undefined)\n{\nconsoleLog(\"[hasError:]json cannot find IF_ERRORSTR or IF_ERRORPARAM\");\nreturn 1;\n}\nErrorString = data.IF_ERRORSTR;\nErrorParam = data.IF_ERRORPARAM;\n}\nelse\n{\nif ($(\"IF_ERRORSTR\", $(data)).length <= 0 || $(\"IF_ERRORPARAM\", $(data)).length <= 0)\n{\nconsoleLog(\"[hasError:]xml cannot find IF_ERRORSTR or IF_ERRORPARAM\");\nreturn 1;\n}\nErrorString = $(\"IF_ERRORSTR\", $(data)).text();\nErrorParam = $(\"IF_ERRORPARAM\", $(data)).text();\n}\nif (!location)\n{\nlocation = \"errorHint\";\n}\nif (location == \"externErrorHint\")\n{\ncmapiErrorContainer = $(\".externErrorHint\",ContentContainer);\n}\nelse\n{\ncmapiErrorContainer = $(\".\"+location,ContentContainer);\n}\nif ( ErrorString == \"SUCC\" )\n{\ncmapiErrorContainer.showIt(false);\nreturn 0;\n}\nelse if ( ErrorString == \"SessionTimeout\" )\n{\ntop.location.href = top.location.href;\nreturn 1;\n}\nelse\n{\nvar cmapiErrorContainerHtml = \"\";\nvar paraString = \"\";\nif ( ErrorParam != \"SUCC\")\n{\nvar LabelFindResult = 0;\nErrorString = \"Operação atual é inválido, verifique se {0} é 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 )\n{\nErrorString = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\";\n}\ncmapiErrorContainerHtml = ErrorString.format(paraString);\n}\nelse\n{\nif ( \"FAIL\" == ErrorString\n|| \"Operação atual é inválido, verifique se {0} é legal. \" == ErrorString )\n{\nErrorString = \"A operação atual é inválida, por favor, verifique os parâmetros de configuração.\";\n}\ncmapiErrorContainerHtml = ErrorString;\n}\n$(\"span\",cmapiErrorContainer).text(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,textarea\");\nformInputContent.each(function(key){\nvar Elems = $(this);\nif ( Elems.ShouldPostIgnore() )\n{\nif ( Elems.attr(\"encode\") == \"1\" )\n{\nneedEncode = true;\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();\nif(commConf.setEncode && Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodeParaValue(ElemsValue,cryptoKey,cryptoIv);\nneedEncode = true;\n}\nbreak;\n}\ncase \"text\":\ncase \"password\":\ncase \"radio\":\n{\nElemsValue = Elems.val();\nif(commConf.setEncode && Elems.attr(\"encode\") == \"1\")\n{\nElemsValue = encodeParaValue(ElemsValue,cryptoKey,cryptoIv);\nneedEncode = true;\n}\nbreak;\n}\ncase \"checkbox\":\n{\nif( Elems.is(':checked'))\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 if( Elems.is(\"textarea\") && Elems.attr(\"needPost\") == \"needPost\" )\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(data){\nif (Head.hasError(data,\"externErrorHint\") == 0)\n{\nHead.trigger(\"changeXMLDataBeforeFillData\", [data]);\nvar XMLOBJ = $(data).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(data ,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, data,\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\");\nvar template = buttonOBJ.parents(\"[id^='template']\");\nvar ActionBeforePostResult = {result: \"Process\"};\nif ( buttonType == \"Apply\" )\n{\nvar formOBJ = $(\".form_content\", template);\nif ( formOBJ.length > 0 && false == formOBJ.valid() )\n{\nreturn;\n}\nelse\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});\n}\nvar IPMACCheckResult = {result: \"checkOK\"};\ntemplate.trigger(\"wholeIPorMACCheck\",[template,IPMACCheckResult]);\nif (IPMACCheckResult.result != \"checkOK\")\n{\nreturn;\n}\n}\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}\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 = {};\nif (commConf.IntegCheck)\n{\nvar degistStr = sha256(PostDataTmp);\nselfHeader[\"Check\"] = asyEncode(degistStr);\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostDataTmp,\nheaders: selfHeader,\nprocessData: procData,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"O servidor não está disponível agora. Atualize a página para recarregar. \";\nvar errorContainer = $(\".errorHint\",template);\nvar changeArea = $(\".ChangeArea\",template);\nvar collapsibleInst = $(\".collapsibleInst\",template);\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},\nsuccess: function(data){\n_LuQUID_setTemplateDefEvents(template, PostSuccHandler);\ntemplate.trigger(PostSuccHandler,[data,template]);\nif (template.hasError(data,\"_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 homedeletedataPost(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 deleteid = $(\"[id^='Delete']\",template).attr('id');\nvar idArr = deleteid.split(\":\");\nvar tmpinsid = idArr[idArr.length - 1];\nvar insid = parseInt(tmpinsid, 10) + 1;\nvar PostDataTmp = \"IF_ACTION=\" + actionType + \"&\" +\"_InstID=\" + parseInt(insid, 10);\nif (typeof(_sessionTmpToken) != \"undefined\")\n{\nPostDataTmp += \"&_sessionTOKEN=\"+_sessionTmpToken;\n}\nif ( IfShowWaitTipTmp == true )\n{\nshowWaitTip(true);\n}\n$.ajax({\nurl:ServerAddr,\ntype: 'POST',\ndata: PostDataTmp,\nasync: asyncFlag,\ntimeout: 30000,\ncache:false,\nerror: function(){\nvar ajaxPostFailHint = \"O servidor não está disponível agora. Atualize a página para recarregar. \";\nvar homeWrapperObj = template.parent(\"[id^='homeWrapper']\");\nvar errorContainertmp = $(\".lanErr\",homeWrapperObj);\nvar errorContainer = $(\".errorHint\",errorContainertmp);\nif ( errorContainer != undefined )\n{\n$(\"span\", errorContainer).text(ajaxPostFailHint);\nerrorContainer.showIt(true);\ntemplate.showIt(true);\n}\nshowWaitTip(false);\n},\nsuccess: function(data){\ntemplate.trigger(PostSuccHandler);\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();",
"body_murmur": -1344793737,
"body_sha256": "de7172cfff7254c7c5e7be0470c79633e91d4bc526e247481acdf6fa8d9b1f02",
"content_length": 155782,
"headers": {
"accept_ranges": [
"bytes"
],
"cache_control": [
"no-cache,no-store"
],
"content_length": [
"155782"
],
"content_security_policy": [
"frame-ancestors 'self'"
],
"content_type": [
"text/html; charset=Utf-8"
],
"pragma": [
"no-cache"
],
"server": [
""
],
"set_cookie": [
"SID_HTTPS_=205cf97793c334e796b5e527d732046af42dbbf9661f6a4dcc8ad73350e32041; PATH=/; Secure; HttpOnly; SameSite=strict",
"_TESTCOOKIESUPPORT_HTTPS_=1; PATH=/; Secure; HttpOnly; SameSite=strict"
],
"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": "177.74.228.163",
"path": "",
"scheme": "https"
}
},
"status_code": 200,
"title": "F6600P"
},
"tls": {
"certificate": {
"fingerprint_md5": "C7E727D08456243C79C07DBF6F1B76A8",
"fingerprint_sha1": "D4C0DBCA4BA2CA6A3C80816D6EA5272F7E7BCDB6",
"fingerprint_sha256": "A3D48B68966ADFCCC9AD0E29D135E99174DA6CEF4AECB648DB758ACFB7AEEA90",
"issuer": {
"country": [
"CN"
],
"email_address": [
"[email protected]"
],
"locality": [
"NanJing"
],
"organization": [
"ZTE"
],
"province": [
"JiangSu"
]
},
"issuer_dn": "/C=CN/ST=JiangSu/L=NanJing/O=ZTE/[email protected]",
"jarm": "29d14d00029d29d00029d14d29d29df26cd45df722aff084b72395f8d18d1b",
"redacted": false,
"revocation": {
"ocsp": {
"reason": "UNKNOWN",
"revoked": false
}
},
"serial_number": "13027569977658050879",
"signature": {
"algorithm": {
"name": "SHA512-RSA",
"oid": "1.2.840.113549.1.1.13"
},
"self_signed": false,
"value": "YzNkZGEyM2QzNmI2M2Y4NjUxY2I1YWEzOWEwNGMzODUyZDk1ZDgxYTk2ZGJjZjE1NGZjNjdiNmMxMzI5OWQ4NzU4ZTNjZjIyMjRkOTA4ZDg3ZWMwODQzOTlhNTExZjU4NmYzNWRiZGU3YjVmZTg0ZWRmN2FjNjUzNGFjNzVlMGRhOTM1ZjAyYmZmYjlhOTE2MjA0NDBlMDJjZGQxOGFjOWE1MzgyNjkwMTcwM2ZmYWIyMmUzZWZlZjI1ZDczMzllMTM2MTA4NWEwYjU4ODA0MDYwYjBjMmZlYmFkN2NmYTVhYzNkNWQ3MGU0ZDIxYjFkMmM1YzBmNzZlNjQ2NTkxNWVjZGEwN2M0ODEyYzk2ZGZjZTczYmM0ODU4MmQwOWIwNjUzYjgxMzAxOTYxYjA2ODBhOThkNmE2NjJmYjFhODZiZGU0NGVhYTM3OWFmYzAwYzY4NGU2ODkxNDFjYjllZjU4ODU3ZjQxOWNjYmFiYjc3NWYxMGI1YTE4NDZhMmI3NGM1ODE1ZTg4ZmEzNWYwNTYzZjcwMmY4MmZiMjI3ZjRjMWE5ZTg4OWM4NGQwZTk4NWE1YzQ2NjE5NTJkNTAzZTgxYTRmMWEwMTMyNjY4ODI5YmU4NWZiYjdmYWIyMWUxZDdkMjM5Yjk5YjMxODM4MTRhOWEyMGU5OGI4NzhiYWQ="
},
"subject": {
"common_name": [
"192.168.1.1"
],
"country": [
"CN"
],
"email_address": [
"[email protected]"
],
"locality": [
"NanJing"
],
"organization": [
"ZTE"
],
"province": [
"JiangSu"
]
},
"subject_alt_name": {
"dns_names": [
"192.168.1.1"
],
"extended_dns_names": []
},
"subject_dn": "/C=CN/ST=JiangSu/L=NanJing/O=ZTE/CN=192.168.1.1/[email protected]",
"subject_key_info": {
"_key": "rsa",
"dh": [],
"dsa": [],
"ecdsa": [],
"fingerprint_sha256": "a799a53da23b69da86bc1d0717056070f1a90410e0727f402373dd3ffb371d8b",
"key_algorithm": "RSA",
"rsa": {
"exponent": 65537,
"length": 2048,
"modulus": "MHhhZWM4ODA1NGVjOGI2Y2Y3ZTcwNWZkZGY1ZDExYzQxZWMwYTE4Zjg0ZGE3OGRhZGFkZTExODQ0Y2FlOTc5Yzk5OGRiM2EzMjdjMDA0NGIyZjMxNGVmNzRhOWZmYWQwNjE5MjZlNTIwYTQ3ZmVkNDIyNTkxODEzNWM1NmIxNjlmYWE4M2ZlZTM3NmI5OGY4ZmJiNWJiMWFmYTlmZGFiNWJiMjdmNjNiZTA0ZDRiZWRkYzA5YmM4OTk2NzUyNWQxMDJmMmQyNGFmMGY1MmZjZWE2OWE4NDM2OTMyOGZhYzVkNDdlYzc5M2I1YzRlYjExMTI1MWY3NmViNzk1ODFhNjEzODlhYzRhZjFmM2NlNTZiNzk0OTBkMDgxN2ViYzRmZTRhNzdmOGMxMGUyMTcxMjg3NjgyZDczNDcwZjY2M2ZiZDQyMTYzOWVlZDYzODlkNmRmMzEzMTdkZWVkN2U4YjBkMzViZDE5NTg2YzE3NTg2ZjMyODYzMzI0MzMxZTY0OWQzY2ViMzc2NjU4MWYzOGFhMmQ4YjYyNTlkMDFkNGZmYjEzM2ZmOTJmYzRjNjY2ZjY3NWMwMGJiMTdjYjdlMjA5NmU1MDg2ZjNiM2RjNTcyNDBlZThmOGZlNzI0OWQzYzcwOGE5YmQzNDY3MzlmZDJiYTc3ODhmOGQ1MzAxZGExNw=="
}
},
"tbs_fingerprint": "12e0bc9db0bb3ead87484f5df63c30b52bb4a5a73137914259e4bfee28ca971f",
"validation_level": "OV",
"validity": {
"length_seconds": 518400000,
"not_after": "2036-04-19T01:57:17",
"not_before": "2019-11-15T01:57:17"
},
"version": 2
},
"fingerprint_sha256": "A3D48B68966ADFCCC9AD0E29D135E99174DA6CEF4AECB648DB758ACFB7AEEA90",
"precert": false,
"raw": "MIIDVzCCAj+gAwIBAgIJALTLOd8k2gk/MA0GCSqGSIb3DQEBDQUAMGAxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdKaWFuZ1N1MRAwDgYDVQQHDAdOYW5KaW5nMQwwCgYDVQQKDANaVEUxHzAdBgkqhkiG9w0BCQEWEHhpYW9taW5nQHp0ZS5jb20wHhcNMTkxMTE1MDE1NzE3WhcNMzYwNDE5MDE1NzE3WjB2MQswCQYDVQQGEwJDTjEQMA4GA1UECAwHSmlhbmdTdTEQMA4GA1UEBwwHTmFuSmluZzEMMAoGA1UECgwDWlRFMRQwEgYDVQQDDAsxOTIuMTY4LjEuMTEfMB0GCSqGSIb3DQEJARYQeGlhb21pbmdAenRlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK7IgFTsi2z35wX9310RxB7AoY+E2nja2t4RhEyul5yZjbOjJ8AESy8xTvdKn/rQYZJuUgpH/tQiWRgTXFaxafqoP+43a5j4+7W7Gvqf2rW7J/Y74E1L7dwJvImWdSXRAvLSSvD1L86mmoQ2kyj6xdR+x5O1xOsRElH3breVgaYTiaxK8fPOVreUkNCBfrxP5Kd/jBDiFxKHaC1zRw9mP71CFjnu1jidbfMTF97tfosNNb0ZWGwXWG8yhjMkMx5knTzrN2ZYHziqLYtiWdAdT/sTP/kvxMZm9nXAC7F8t+IJblCG87PcVyQO6Pj+cknTxwipvTRnOf0rp3iPjVMB2hcCAwEAATANBgkqhkiG9w0BAQ0FAAOCAQEAw92iPTa2P4ZRy1qjmgTDhS2V2BqW288VT8Z7bBMpnYdY488iJNkI2H7AhDmaUR9YbzXb3ntf6E7fesZTSsdeDak18Cv/uakWIEQOAs3RismlOCaQFwP/qyLj7+8l1zOeE2EIWgtYgEBgsML+utfPpaw9XXDk0hsdLFwPduZGWRXs2gfEgSyW385zvEhYLQmwZTuBMBlhsGgKmNamYvsahr3kTqo3mvwAxoTmiRQcue9YhX9BnMurt3XxC1oYRqK3TFgV6I+jXwVj9wL4L7In9MGp6InITQ6YWlxGYZUtUD6BpPGgEyZogpvoX7t/qyHh19I5uZsxg4FKmiDpi4eLrQ==",
"tags": [
"ov"
]
}
},
"url": "https://177.74.228.163/",
"_meta": {
"name": "",
"desc": "",
"category": ""
},
"last_updated_at": "2024-09-18T19:40:42.482Z"
},
{
"port": 2000,
"protocol": "tcp",
"name": "bandwidth-test",
"version": "",
"product": "MikroTik bandwidth-test server",
"extra_info": "",
"tunnel": "",
"_meta": {
"name": "",
"desc": "",
"category": ""
},
"last_updated_at": "2024-09-18T01:20:58.775Z"
}
],
"services_hash": "3e82fc66dfb1f85b1344941360fe0fad7bdc1d2dd17432ded495871b216b6c65",
"last_updated_at": "2024-09-19T06:25:10.722Z",
"banner": [
"http",
"tls"
],
"is_vuln": false
}