blob: ec598b075fc650b33a5084c8fd2a19acb36146ef [file] [log] [blame]
qumengjiaca65ef52024-11-06 15:42:21 +08001
2define("service","underscore jquery set CryptoJS".split(" "), function (_, $, config, CryptoJS) {
3 function addTimerSomething(querys, cb) {
4 if (_.isArray(querys)) {
5 for (var i = 0; i < querys.length; i++) {
6 addQueryString(querys[i]);
7 }
8 } else {
9 addQueryString(querys);
10 }
11 addCallback(cb);
12 }
13 function removeTimerSomething(querys, cb) {
14 if (_.isArray(querys)) {
15 for (var i = 0; i < querys.length; i++) {
16 removeQueryString(querys[i]);
17 }
18 } else {
19 removeQueryString(querys);
20 }
21 removeCallback(cb);
22 }
23 function getCurretnMAC() {
24 return getUserMacAddr({}).get_user_mac_addr;
25 }
26 function getDdnsParams(values, callback) {
27 return stuffMake(arguments, {}, prepare, deal, null, false);
28 function prepare(values, isPost) {
29 return {
30 multi_data: 1,
31 cmd: "DDNS_Enable,DDNS_Mode,DDNSProvider,DDNSAccount,DDNSPassword,DDNS,DDNS_Hash_Value"
32 };
33 }
34 function deal(paramD) {
35 if (paramD) {
36 return {
37 DDNS_Enable: paramD.DDNS_Enable,
38 DDNS_Mode: paramD.DDNS_Mode,
39 DDNSProvider: paramD.DDNSProvider,
40 DDNSAccount: paramD.DDNSAccount,
41 DDNSPassword: paramD.DDNSPassword,
42 DDNS: paramD.DDNS,
43 DDNS_Hash_Value: paramD.DDNS_Hash_Value
44 }
45 } else {
46 return errUnknownObj;
47 }
48 }
49 }
50 function setDDNSForward() {
51 return stuffMake(arguments, {}, prepare, deal, null, true);
52 function prepare(values, isPost) {
53 var valueReq = $.extend({}, values);
54 return valueReq;
55 }
56 function deal(paramD) {
57 if (paramD) {
58 return paramD;
59 } else {
60 return errUnknownObj;
61 }
62 }
63 }
64 function getLoginData() {
65 return stuffMake(arguments, {}, prepare, deal, null, false);
66 function prepare(values, isPost) {
67 var valueReq = {};
68 valueReq.cmd = "modem_main_state,puknumber,pinnumber,blc_wan_mode,blc_wan_auto_mode,psw_fail_num_str,login_lock_time,psw_changed";
69 valueReq.multi_data = 1;
70 return valueReq;
71 }
72 function deal(paramD) {
73 if (paramD) {
74 if (paramD.blc_wan_mode == "AUTO") {
75 paramD.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
76 } else {
77 paramD.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
78 }
79 paramD.psw_fail_num_str = paramD.psw_fail_num_str == '' ? config.MAX_LOGIN_COUNT : paramD.psw_fail_num_str;
80 paramD.login_lock_time = paramD.login_lock_time == '' ? '300' : paramD.login_lock_time;
81 return paramD;
82 } else {
83 return errUnknownObj;
84 }
85 }
86 }
87 function login() {
88 return stuffMake(arguments, {}, prepare, deal, {
89 errorType: 'badPassword'
90 }, true);
91 function prepare(values, isPost) {
92 var obj = {
93 goformId: "LOGIN",
qumengjiad183ca12024-11-20 16:51:24 +080094 password: config.PASSWORD_ENCODE ? Base64.encode(values.password) : values.password,
95 username: config.PASSWORD_ENCODE ? Base64.encode(values.username) : values.username
qumengjiaca65ef52024-11-06 15:42:21 +080096 };
97 return obj;
98 }
99 function deal(paramD) {
100 if (paramD && (paramD.result == "0" || paramD.result == "4")) {
101 informationAll.isLoggedIn = true;
102 return {
103 result: true
104 };
105 } else {
106 var loginError = {};
107 switch (paramD.result) {
108 case "1":
109 loginError = {
110 errorType: "Login Fail"
111 };
112 break;
113 case "2":
114 loginError = {
115 errorType: "duplicateUser"
116 };
117 break;
118 case "3":
119 loginError = {
120 errorType: "badPassword"
121 };
122 break;
123 default:
124 loginError = {
125 errorType: "Login Fail"
126 };
127 break;
128 }
129 informationAll.isLoggedIn = false;
130 return $.extend(errUnknownObj, loginError);
131 }
132 }
133 }
134 function getLoginStatus() {
135 if (informationAll.isLoggedIn != undefined) {
136 return stuffMake(arguments, {
137 status: informationAll.isLoggedIn ? 'loggedIn' : 'loggedOut'
138 });
139 } else {
140 var resultObject = {};
141 if (!config.HAS_LOGIN) {
142 resultObject.status = 'loggedIn';
143 resultObject.errorType = 'no_login';
144 informationAll.isLoggedIn = true;
145 }
146 return stuffMake(arguments, resultObject, prepare, deal, null, false);
147 }
148 function prepare(values, isPost) {
149 var valueReq = {};
150 valueReq.cmd = "loginfo";
151 valueReq.multi_data = 1;
152 return valueReq;
153 }
154 function deal(paramD) {
155 if (paramD && paramD.loginfo || paramD.loginfo == "") {
156 var loginStatus = {};
157 switch (paramD.loginfo) {
158 case "ok":
159 informationAll.isLoggedIn = true;
160 loginStatus.status = "loggedIn";
161 break;
162 default:
163 informationAll.isLoggedIn = false;
164 loginStatus.status = "loggedOut";
165 break;
166 }
167 return loginStatus;
168 } else {
169 informationAll.isLoggedIn = undefined;
170 return $.extend(errUnknownObj, {
171 errorType: "LoginStatusError"
172 });
173 }
174 }
175 }
176 function enterPIN() {
177 return stuffMake(arguments, {}, prepare, deal, {}, true);
178 function prepare(values, isPost) {
179 var obj = {};
180 obj.goformId = "ENTER_PIN";
181 obj.PinNumber = values.PinNumber;
182 return obj;
183 }
184 function deal(paramD) {
185 if (paramD && paramD.result === "success") {
186 return {
187 result: true
188 };
189 } else {
190 return {
191 result: false
192 };
193 }
194 }
195 }
196 function enterPUK() {
197 return stuffMake(arguments, {}, prepare, deal, {}, true);
198 function prepare(values, isPost) {
199 var obj = {};
200 obj.goformId = "ENTER_PUK";
201 obj.PUKNumber = values.PUKNumber;
202 obj.PinNumber = values.PinNumber;
203 return obj;
204 }
205 function deal(paramD) {
206 if (paramD && paramD.result === "success") {
207 return {
208 result: true
209 };
210 } else {
211 return {
212 result: false
213 };
214 }
215 }
216 }
217
218 function getStatusInfo() {
219 if (informationAll.isLoggedIn === undefined) {
220 var loginStatus = getLoginStatus();
221 return {
222 networkType: informationAll.networkType,
223 signalImg: informationAll.signalImg,
224 networkOperator: informationAll.networkOperator,
225 spn_b1_flag: informationAll.spn_b1_flag,
226 spn_name_data: informationAll.spn_name_data,
227 spn_b2_flag: informationAll.spn_b2_flag,
228 connectStatus: informationAll.connectStatus,
229 rj45ConnectStatus: informationAll.rj45ConnectStatus,
230 ssid1AttachedNum: informationAll.ssid1AttachedNum,
231 ssid2AttachedNum: informationAll.ssid2AttachedNum,
232 wirelessDeviceNum: informationAll.ssid1AttachedNum + informationAll.ssid2AttachedNum,
233 roamingStatus: informationAll.roamingStatus,
234 wifiStatus: informationAll.wifiStatus,
235 simStatus: informationAll.simStatus,
236 pinStatus: informationAll.pinStatus,
237 batteryStatus: informationAll.batteryStatus,
238 batteryLevel: informationAll.batteryLevel,
239 batteryPers: informationAll.batteryPers,
240 batteryTime: informationAll.batteryTime,
241 ssid: informationAll.ssid,
242 authMode: informationAll.authMode,
243 data_counter: informationAll.data_counter,
244 isLoggedIn: loginStatus.status == "loggedIn",
245 newSmsReceived: informationAll.newSmsReceived,
246 smsReportReceived: informationAll.smsReportReceived,
247 smsUnreadCount: informationAll.smsUnreadCount,
248 limitVolumeEnable: informationAll.limitVolumeEnable,
249 limitVolumeType: informationAll.limitVolumeType,
250 limitVolumePercent: informationAll.limitVolumePercent,
251 limitVolumeSize: informationAll.limitVolumeSize,
252 connectWifiProfile: informationAll.connectWifiProfile,
253 connectWifiSSID: informationAll.connectWifiSSID,
254 connectWifiStatus: informationAll.connectWifiStatus,
255 multi_ssid_enable: informationAll.multi_ssid_enable,
256 roamMode: informationAll.roamMode,
257 blc_wan_mode: informationAll.blc_wan_mode,
258 current_upgrade_state: informationAll.current_upgrade_state,
259 is_mandatory: informationAll.is_mandatory,
260 new_version_state: informationAll.new_version_state,
261 allowRoamingUpdate: informationAll.allowRoamingUpdate,
262 ap_station_enable: informationAll.ap_station_enable,
263 ap_station_mode: informationAll.ap_station_mode,
264 dialMode: informationAll.dialMode,
265 fota_package_already_download: informationAll.fota_package_already_download,
266 ethWanMode: informationAll.ethWanMode,
267 fota_user_selector: informationAll.fota_user_selector,
268 defaultWanName: informationAll.defaultWanName
269 };
270 }
271 return {
272 networkType: informationAll.networkType,
273 signalImg: informationAll.signalImg,
274 networkOperator: informationAll.networkOperator,
275 spn_b1_flag: informationAll.spn_b1_flag,
276 spn_name_data: informationAll.spn_name_data,
277 spn_b2_flag: informationAll.spn_b2_flag,
278 connectStatus: informationAll.connectStatus,
279 rj45ConnectStatus: informationAll.rj45ConnectStatus,
280 ssid1AttachedNum: informationAll.ssid1AttachedNum,
281 ssid2AttachedNum: informationAll.ssid2AttachedNum,
282 wirelessDeviceNum: informationAll.ssid1AttachedNum + informationAll.ssid2AttachedNum,
283 roamingStatus: informationAll.roamingStatus,
284 wifiStatus: informationAll.wifiStatus,
285 simStatus: informationAll.simStatus,
286 pinStatus: informationAll.pinStatus,
287 batteryStatus: informationAll.batteryStatus,
288 batteryLevel: informationAll.batteryLevel,
289 batteryPers: informationAll.batteryPers,
290 batteryTime: informationAll.batteryTime,
291 ssid: informationAll.ssid,
292 authMode: informationAll.authMode,
293 data_counter: informationAll.data_counter,
294 isLoggedIn: informationAll.isLoggedIn,
295 newSmsReceived: informationAll.newSmsReceived,
296 smsReportReceived: informationAll.smsReportReceived,
297 smsUnreadCount: informationAll.smsUnreadCount,
298 limitVolumeEnable: informationAll.limitVolumeEnable,
299 limitVolumeType: informationAll.limitVolumeType,
300 limitVolumePercent: informationAll.limitVolumePercent,
301 limitVolumeSize: informationAll.limitVolumeSize,
302 connectWifiProfile: informationAll.connectWifiProfile,
303 connectWifiSSID: informationAll.connectWifiSSID,
304 connectWifiStatus: informationAll.connectWifiStatus,
305 multi_ssid_enable: informationAll.multi_ssid_enable,
306 blc_wan_mode: informationAll.blc_wan_mode,
307 roamMode: informationAll.roamMode,
308 current_upgrade_state: informationAll.current_upgrade_state,
309 is_mandatory: informationAll.is_mandatory,
310 new_version_state: informationAll.new_version_state,
311 allowRoamingUpdate: informationAll.allowRoamingUpdate,
312 ap_station_enable: informationAll.ap_station_enable,
313 ap_station_mode: informationAll.ap_station_mode,
314 dialMode: informationAll.dialMode,
315 fota_package_already_download: informationAll.fota_package_already_download,
316 ethWanMode: informationAll.ethWanMode,
317 fota_user_selector: informationAll.fota_user_selector,
318 defaultWanName: informationAll.defaultWanName
319 };
320 }
321 function getConnectionInfo() {
322 var isData = informationAll.limitVolumeType == '1';
323 var result = {
324 data_counter: informationAll.data_counter,
325 connectStatus: informationAll.connectStatus,
326 rj45ConnectStatus: informationAll.rj45ConnectStatus,
327 limitVolumeEnable: informationAll.limitVolumeEnable,
328 limitVolumeType: informationAll.limitVolumeType,
329 limitVolumePercent: informationAll.limitVolumePercent,
330 networkType: informationAll.networkType
331 };
332 if (isData) {
333 result.limitDataMonth = informationAll.limitVolumeSize;
334 result.limitTimeMonth = 0;
335 } else {
336 result.limitTimeMonth = informationAll.limitVolumeSize;
337 result.limitDataMonth = 0;
338 }
339 result.blc_wan_mode = informationAll.blc_wan_mode;
340 return result;
341 }
342 function resetNewSmsReceivedVar() {
343 informationAll.newSmsReceived = false;
344 }
345 function resetSmsReportReceivedVar() {
346 informationAll.smsReportReceived = false;
347 }
348 function getSmsCapability() {
349 return stuffMake(arguments, {}, prepare, deal, null, false);
350 function prepare(values, isPost) {
351 var valueReq = {};
352 valueReq.cmd = "sms_capacity_info";
353 return valueReq;
354 }
355 function deal(paramD) {
356 return {
357 nvTotal: parseInt(paramD.sms_nv_total, 10),
358 nvUsed: parseInt(paramD.sms_nv_rev_total, 10) + parseInt(paramD.sms_nv_send_total, 10) + parseInt(paramD.sms_nv_draftbox_total, 10),
359 simTotal: parseInt(paramD.sms_sim_total, 10),
360 simUsed: parseInt(paramD.sms_sim_rev_total, 10) + parseInt(paramD.sms_sim_send_total, 10) + parseInt(paramD.sms_sim_draftbox_total, 10),
361 nvReceive: parseInt(paramD.sms_nv_rev_total, 10),
362 nvSend: parseInt(paramD.sms_nv_send_total, 10),
363 nvDraft: parseInt(paramD.sms_nv_draftbox_total, 10),
364 simReceive: parseInt(paramD.sms_sim_rev_total, 10),
365 simSend: parseInt(paramD.sms_sim_send_total, 10),
366 simDraft: parseInt(paramD.sms_sim_draftbox_total, 10)
367 };
368 }
369 }
370 function connect() {
371 var callback = arguments[1];
372 var checkPoint = 0;
373 return stuffMake(arguments, {}, prepare, deal, null, true);
374 function prepare(values, isPost) {
375 var valueReq = {};
376 valueReq.notCallback = true;
377 valueReq.goformId = "CONNECT_NETWORK";
378 return valueReq;
379 }
380 function deal(paramD) {
381 if (paramD.result == "success") {
382 checkPoint = new Date().getTime();
383 addCallback(checkConnectStatus);
384 } else {
385 callback({
386 result: false
387 });
388 }
389 }
390 function checkConnectStatus(paramD) {
391 if (paramD.ppp_status == "ppp_connecting") {
392 informationAll.connectStatus = "ppp_connecting";
393 } else if (paramD.ppp_status == "ppp_connected") {
394 removeCallback(checkConnectStatus);
395 informationAll.connectStatus = "ppp_connected";
396 callback({
397 result: true,
398 status: informationAll.connectStatus
399 });
400 } else if (new Date().getTime() - checkPoint < 1e4) {
401 informationAll.connectStatus = "ppp_connecting";
402 } else {
403 removeCallback(checkConnectStatus);
404 callback({
405 result: false
406 });
407 }
408 }
409 }
410 function disconnect() {
411 var callback = arguments[1];
412 var checkPoint = 0;
413 return stuffMake(arguments, {}, prepare, deal, null, true);
414 function prepare(values, isPost) {
415 var valueReq = {};
416 valueReq.notCallback = true;
417 valueReq.goformId = "DISCONNECT_NETWORK";
418 return valueReq;
419 }
420 function deal(paramD) {
421 if (paramD.result == "success") {
422 checkPoint = new Date().getTime();
423 addCallback(checkDisconnectStatus);
424 } else {
425 callback({
426 result: false
427 });
428 }
429 }
430 function checkDisconnectStatus(paramD) {
431 if (paramD.ppp_status == "ppp_disconnecting") {
432 informationAll.connectStatus = "ppp_disconnecting";
433 } else if (paramD.ppp_status == "ppp_disconnected") {
434 removeCallback(checkDisconnectStatus);
435 informationAll.connectStatus = "ppp_disconnected";
436 callback({
437 result: true,
438 status: informationAll.connectStatus
439 });
440 } else if (new Date().getTime() - checkPoint < 1e4) {
441 informationAll.connectStatus = "ppp_disconnecting";
442 } else {
443 removeCallback(checkDisconnectStatus);
444 callback({
445 result: false
446 });
447 }
448 }
449 }
450 function getApnSettings() {
451 return stuffMake(arguments, {}, prepare, deal, null, false);
452 function prepare(values, isPost) {
453 var valueReq = {};
454 valueReq.cmd = "APN_configtmp0,APN_configtmp1,APN_configtmp2,APN_configtmp3,APN_configtmp4,APN_configtmp5,APN_configtmp6,APN_configtmp7,APN_configtmp8,APN_configtmp9," + "APN_configtmp10,APN_configtmp11,APN_configtmp12,APN_configtmp13,APN_configtmp14,APN_configtmp15,APN_configtmp16,APN_configtmp17,APN_configtmp18,APN_configtmp19," + "ipv6_APN_configtmp0,ipv6_APN_configtmp1,ipv6_APN_configtmp2,ipv6_APN_configtmp3,ipv6_APN_configtmp4,ipv6_APN_configtmp5,ipv6_APN_configtmp6,ipv6_APN_configtmp7,ipv6_APN_configtmp8,ipv6_APN_configtmp9," + "ipv6_APN_configtmp10,ipv6_APN_configtmp11,ipv6_APN_configtmp12,ipv6_APN_configtmp13,ipv6_APN_configtmp14,ipv6_APN_configtmp15,ipv6_APN_configtmp16,ipv6_APN_configtmp17,ipv6_APN_configtmp18,ipv6_APN_configtmp19," + "m_profile_name,profile_name,wan_dial,pdp_type,pdp_select,index,Current_index,apn_auto_config,ipv6_apn_auto_config," + "apn_mode,wan_apn,ppp_auth_mode,ppp_username,ppp_passtmp," + "ipv6_wan_apn,ipv6_pdp_type,ipv6_ppp_auth_mode,ipv6_ppp_username,ipv6_ppp_passtmp,apn_num_preset";
455 valueReq.multi_data = 1;
456 return valueReq;
457 }
458 function deal(result) {
459 if (result) {
460 return {
461 APNs: result.APN_configtmp0 + "||" + result.APN_configtmp1 + "||" + result.APN_configtmp2 + "||" + result.APN_configtmp3 + "||" + result.APN_configtmp4 + "||"
462 +result.APN_configtmp5 + "||" + result.APN_configtmp6 + "||" + result.APN_configtmp7 + "||" + result.APN_configtmp8 + "||" + result.APN_configtmp9 + "||"
463 +result.APN_configtmp10 + "||" + result.APN_configtmp11 + "||" + result.APN_configtmp12 + "||" + result.APN_configtmp13 + "||" + result.APN_configtmp14 + "||"
464 +result.APN_configtmp15 + "||" + result.APN_configtmp16 + "||" + result.APN_configtmp17 + "||" + result.APN_configtmp18 + "||" + result.APN_configtmp19,
465 ipv6APNs: result.ipv6_APN_configtmp0 + "||" + result.ipv6_APN_configtmp1 + "||" + result.ipv6_APN_configtmp2 + "||" + result.ipv6_APN_configtmp3 + "||" + result.ipv6_APN_configtmp4 + "||"
466 +result.ipv6_APN_configtmp5 + "||" + result.ipv6_APN_configtmp6 + "||" + result.ipv6_APN_configtmp7 + "||" + result.ipv6_APN_configtmp8 + "||" + result.ipv6_APN_configtmp9 + "||"
467 +result.ipv6_APN_configtmp10 + "||" + result.ipv6_APN_configtmp11 + "||" + result.ipv6_APN_configtmp12 + "||" + result.ipv6_APN_configtmp13 + "||" + result.ipv6_APN_configtmp14 + "||"
468 +result.ipv6_APN_configtmp15 + "||" + result.ipv6_APN_configtmp16 + "||" + result.ipv6_APN_configtmp17 + "||" + result.ipv6_APN_configtmp18 + "||" + result.ipv6_APN_configtmp19,
469 apnMode: result.apn_mode,
470 profileName: result.m_profile_name || result.profile_name,
471 wanDial: result.wan_dial,
472 pdpType: result.pdp_type == 'IP' ? 'IP' : result.ipv6_pdp_type,
473 pdpSelect: result.pdp_select,
474 index: result.index,
475 currIndex: result.Current_index,
476 autoApns: result.apn_auto_config,
477 autoApnsV6: result.ipv6_apn_auto_config,
478 wanApn: result.wan_apn,
479 authMode: result.ppp_auth_mode.toLowerCase(),
480 username: result.ppp_username,
481 password: result.ppp_passtmp,
482 dnsMode: "",
483 dns1: "",
484 dns2: "",
485 wanApnV6: result.ipv6_wan_apn,
486 authModeV6: result.ipv6_ppp_auth_mode.toLowerCase(),
487 usernameV6: result.ipv6_ppp_username,
488 passwordV6: result.ipv6_ppp_passtmp,
489 dnsModeV6: "",
490 dns1V6: "",
491 dns2V6: "",
492 apnNumPreset: result.apn_num_preset
493 };
494 } else {
495 return {
496 result: false
497 };
498 }
499 }
500 }
mj.qu11d28a82024-12-17 18:09:17 -0800501 function getNetworkStatus() {
502 return stuffMake(arguments, {}, prepare, deal, null, false);
503 function prepare(values, isPost) {
504 var valueReq = {};
505 valueReq.cmd = "NETWORK_INFO";
506 return valueReq;
507 }
508 function deal(result) {
509 return {
510 sinr: result.lte_sinr,
511 rsrp: result.lte_rsrp,
512 rsrq: result.lte_rsrq,
513 plmn: result.lte_plmn,
514 pci: result.lte_pci,
w.dengbcaf3a52024-12-30 17:43:27 +0800515 cellid: result.lte_cellid,
516 band: result.lte_band
mj.qu11d28a82024-12-17 18:09:17 -0800517 };
518 }
519 }
qumengjiaca65ef52024-11-06 15:42:21 +0800520 function deleteApn() {
521 return stuffMake(arguments, {}, prepare, deal, null, true);
522 function prepare(values, isPost) {
523 var valueReq = {
524 apn_action: "delete",
525 apn_mode: "manual",
526 index: values.index
527 };
528 valueReq.goformId = "APN_PROC_EX";
529 return valueReq;
530 }
531 function deal(paramD) {
532 if (paramD.result == "success") {
533 return {
534 result: true
535 };
536 } else {
537 return {
538 result: false
539 };
540 }
541 }
542 }
543 function setDefaultApn() {
544 return stuffMake(arguments, {}, prepare, deal, null, true);
545 function prepare(values, isPost) {
546 var requestParam = {
547 goformId: "APN_PROC_EX",
548 apn_mode: values.apnMode
549 };
550 if (values.apnMode == 'manual') {
551 requestParam.apn_action = "set_default";
552 requestParam.set_default_flag = "1";
553 requestParam.pdp_type = values.pdpType;
554 requestParam.index = values.index;
555 }
556 return requestParam;
557 }
558 function deal(paramD) {
559 if (paramD.result == "success") {
560 return {
561 result: true
562 };
563 } else {
564 return {
565 result: false
566 };
567 }
568 }
569 }
570 function addOrEditApn() {
571 return stuffMake(arguments, {}, prepare, deal, null, true);
572 function prepare(values, isPost) {
573 var valueReq = {
574 goformId: "APN_PROC_EX",
575 apn_action: "save",
576 apn_mode: "manual",
577 profile_name: values.profileName,
578 wan_dial: '*99#',
579 pdp_type: values.pdpType,
580 pdp_select: 'auto',
581 index: values.index
582 };
583 if (values.pdpType == "IP") {
584 $.extend(valueReq, {
585 wan_apn: values.wanApn,
586 ppp_auth_mode: values.authMode,
587 ppp_username: values.username,
588 ppp_passtmp: values.password,
589 });
590 } else if (values.pdpType == "IPv6") {
591 $.extend(valueReq, {
592 ipv6_wan_apn: values.wanApnV6,
593 ipv6_ppp_auth_mode: values.authModeV6,
594 ipv6_ppp_username: values.usernameV6,
595 ipv6_ppp_passtmp: values.passwordV6
596 });
597 } else {
598 $.extend(valueReq, {
599 wan_apn: values.wanApn,
600 ppp_auth_mode: values.authMode,
601 ppp_username: values.username,
602 ppp_passtmp: values.password,
603 dns_mode: values.dnsMode,
604 prefer_dns_manual: values.dns1,
605 standby_dns_manual: values.dns2,
606 ipv6_wan_apn: values.wanApnV6,
607 ipv6_ppp_auth_mode: values.authModeV6,
608 ipv6_ppp_username: values.usernameV6,
609 ipv6_ppp_passtmp: values.passwordV6
610 });
611 }
612 return valueReq;
613 }
614 function deal(paramD) {
615 if (paramD.result == "success") {
616 return {
617 result: true
618 };
619 } else {
620 return {
621 result: false
622 };
623 }
624 }
625 }
626 var timerQueryString = ["modem_main_state", "pin_status", "blc_wan_mode", "blc_wan_auto_mode", "loginfo", "fota_new_version_state", "fota_current_upgrade_state", "fota_upgrade_selector", "network_provider", "is_mandatory", "sta_count", "m_sta_count"];
627 var loginTimerQueryString = ["signalbar", "network_type", "sub_network_type", "ppp_status", "rj45_state", "EX_SSID1", "sta_ip_status", "EX_wifi_profile", "m_ssid_enable", "wifi_cur_state", "SSID1", "simcard_roam", "lan_ipaddr", "battery_charging", "battery_vol_percent", "battery_pers", "spn_name_data", "spn_b1_flag", "spn_b2_flag", "realtime_tx_bytes", "realtime_rx_bytes", "realtime_time", "realtime_tx_thrpt", "realtime_rx_thrpt", "monthly_rx_bytes", "monthly_tx_bytes", "traffic_alined_delta", "monthly_time", "date_month", "data_volume_limit_switch", "data_volume_limit_size", "data_volume_alert_percent", "data_volume_limit_unit", "roam_setting_option", "upg_roam_switch", "fota_package_already_download", 'ssid', 'dial_mode', 'ethwan_mode', 'default_wan_name'];
628 if (config.HAS_SMS) {
629 $.merge(loginTimerQueryString, ["sms_received_flag", "sts_received_flag", 'sms_unread_num']);
630 }
631 var timerCallbackStack = [];
632 var timerCallbacks = [timerUpdateStatus];
633 function timerUpdater() {
634 if (!updateTimerFlag) {
635 setTimeout(function () {
636 timerUpdater();
637 }, 1000);
638 return;
639 }
640 var queryParams = checkTimerUpdaterParameters();
641 reqAsync(queryParams, function (paramD) {
642 for (var i = 0; i < timerCallbacks.length; i++) {
643 if (typeof timerCallbacks[i] === "function") {
644 timerCallbacks[i](paramD);
645 }
646 }
647 $.merge(timerCallbacks, timerCallbackStack);
648 timerCallbackStack = [];
649 setTimeout(function () {
650 timerUpdater();
651 }, 1000);
652 }, function () {
653 timerUpdaterErrorCallback();
654 setTimeout(function () {
655 timerUpdater();
656 }, 1000);
657 }, false);
658 }
659 function checkTimerUpdaterParameters() {
660 var queryParams = {
661 multi_data: 1,
662 };
663 if (window.location.hash && window.location.hash != '#entry' && informationAll.isLoggedIn) {
664 if (config.HAS_SMS) {
665 queryParams.sms_received_flag_flag = 0;
666 queryParams.sts_received_flag_flag = 0;
667 }
668 if (loginTimerQueryString.length > 0 && _.indexOf(timerQueryString, loginTimerQueryString[0]) == -1) {
669 $.each(loginTimerQueryString, function (i, n) {
670 timerQueryString.push(n);
671 });
672 }
673 } else {
674 if (loginTimerQueryString.length > 0 && _.indexOf(timerQueryString, loginTimerQueryString[0]) != -1) {
675 timerQueryString = _.without(timerQueryString, loginTimerQueryString);
676 }
677 }
678 queryParams.cmd = timerQueryString.join(",");
679 return queryParams;
680 }
681 function addCallback(cb) {
682 if (_.indexOf(timerCallbackStack, cb) == -1) {
683 timerCallbackStack.push(cb);
684 }
685 }
686 function removeCallback(cb) {
687 timerCallbacks = _.without(timerCallbacks, cb);
688 if (timerCallbacks.length == 0) {
689 timerCallbacks.push(timerUpdateStatus);
690 }
691 return timerCallbackStack;
692 }
693 function addQueryString(query) {
694 if (_.indexOf(timerQueryString, query) == -1) {
695 timerQueryString.push(query);
696 }
697 }
698 function removeQueryString(query) {
699 timerQueryString = _.without(timerQueryString, query);
700 return timerQueryString;
701 }
702 function timerUpdateStatus(paramD) {
703 informationAll.defaultWanName = paramD.default_wan_name;
704 informationAll.signalImg = typeof paramD.signalbar == 'undefined' ? '0' : paramD.signalbar;
705 informationAll.networkType = paramD.sub_network_type ? paramD.sub_network_type : (paramD.network_type ? paramD.network_type : '');
706 if (informationAll.networkType.toLowerCase().indexOf("limited_service") != -1 || informationAll.networkType.toLowerCase().indexOf("limited service") != -1) {
707 informationAll.networkType = "limited_service";
708 } else if (informationAll.networkType.toLowerCase().indexOf("no_service") != -1 || informationAll.networkType.toLowerCase().indexOf("no service") != -1) {
709 informationAll.networkType = "no_service";
710 }
711 informationAll.networkOperator = paramD.network_provider ? paramD.network_provider : '';
712 informationAll.spn_b1_flag = paramD.spn_b1_flag;
713 informationAll.spn_b2_flag = paramD.spn_b2_flag;
714 informationAll.spn_name_data = paramD.spn_name_data;
715 informationAll.connectStatus = typeof paramD.ppp_status == 'undefined' ? 'ppp_disconnected' : paramD.ppp_status;
716 informationAll.rj45ConnectStatus = (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state;
717 informationAll.ethWanMode = paramD.ethwan_mode;
718 informationAll.ssid1AttachedNum = paramD.sta_count == "" ? 0 : parseInt(paramD.sta_count, 10);
719 informationAll.ssid2AttachedNum = paramD.m_sta_count == "" ? 0 : parseInt(paramD.m_sta_count, 10);
720 informationAll.roamingStatus = getRoamStatus(informationAll.networkType, paramD.modem_main_state, paramD.simcard_roam);
721 informationAll.wifiStatus = paramD.wifi_cur_state == "1";
722 informationAll.simStatus = paramD.modem_main_state;
723 informationAll.pinStatus = paramD.pin_status;
724 var needMinutes = 3 * 60 * 60;
725 var batteryLevel = (paramD.battery_vol_percent && paramD.battery_vol_percent.length > 0) ? paramD.battery_vol_percent : 100;
726 informationAll.batteryPers = paramD.battery_pers;
727 var remainMinutes = Math.round(needMinutes * (1 - batteryLevel / 100));
728 informationAll.batteryStatus = (typeof paramD.battery_charging == 'undefined') ? '0' : paramD.battery_charging;
729 informationAll.batteryLevel = batteryLevel;
730 informationAll.batteryTime = remainMinutes.toString();
731 informationAll.data_counter = {
732 uploadRate: paramD.realtime_tx_thrpt == '' ? 0 : paramD.realtime_tx_thrpt,
733 downloadRate: paramD.realtime_rx_thrpt == '' ? 0 : paramD.realtime_rx_thrpt,
734 currentSent: paramD.realtime_tx_bytes == '' ? 0 : paramD.realtime_tx_bytes,
735 currentReceived: paramD.realtime_rx_bytes == '' ? 0 : paramD.realtime_rx_bytes,
736 currentConnectedTime: paramD.realtime_time == '' ? 0 : paramD.realtime_time,
737 monthlySent: paramD.monthly_tx_bytes == '' ? 0 : paramD.monthly_tx_bytes,
738 monthlyReceived: paramD.monthly_rx_bytes == '' ? 0 : paramD.monthly_rx_bytes,
739 traffic_alined_delta: paramD.traffic_alined_delta == '' ? 0 : paramD.traffic_alined_delta,
740 monthlyConnectedTime: paramD.monthly_time == '' ? 0 : paramD.monthly_time,
741 month: paramD.date_month == '' ? 1 : paramD.date_month
742 };
743 informationAll.ssid = paramD.SSID1;
744 informationAll.authMode = paramD.AuthMode;
745 informationAll.isLoggedIn = config.HAS_LOGIN ? paramD.loginfo == "ok" : true;
746 if (config.HAS_SMS) {
747 if (!informationAll.newSmsReceived) {
748 informationAll.newSmsReceived = paramD.sms_received_flag > 0;
749 }
750 if (!informationAll.smsReportReceived) {
751 informationAll.smsReportReceived = paramD.sts_received_flag > 0;
752 }
753 if (typeof paramD.sms_dev_unread_num != "undefined") {
754 informationAll.smsUnreadCount = config.SMS_UNREAD_NUM_INCLUDE_SIM ? parseInt(paramD.sms_dev_unread_num | 0, 10) + parseInt(paramD.sms_sim_unread_num | 0, 10) : parseInt(paramD.sms_dev_unread_num | 0, 10);
755 } else {
756 informationAll.smsUnreadCount = parseInt(paramD.sms_unread_num | 0, 10)
757 }
758 }
759 if (paramD.data_volume_limit_switch == '1') {
760 informationAll.limitVolumeEnable = true;
761 informationAll.limitVolumeType = paramD.data_volume_limit_unit == 'data' ? '1' : '0';
762 informationAll.limitVolumePercent = paramD.data_volume_alert_percent;
763 if (paramD.data_volume_limit_unit == 'data') {
764 var limitMonth = paramD.data_volume_limit_size.split("_");
765 informationAll.limitVolumeSize = limitMonth[0] * limitMonth[1] * 1024 * 1024;
766 } else {
767 informationAll.limitVolumeSize = paramD.data_volume_limit_size * 60 * 60;
768 }
769 } else {
770 informationAll.limitVolumeEnable = false;
771 informationAll.limitVolumeType = '1';
772 informationAll.limitVolumePercent = '100';
773 informationAll.limitVolumeSize = '0';
774 }
775 informationAll.connectWifiProfile = paramD.EX_wifi_profile;
776 informationAll.connectWifiSSID = paramD.EX_SSID1;
777 informationAll.connectWifiStatus = paramD.sta_ip_status;
778 informationAll.multi_ssid_enable = paramD.m_ssid_enable;
779 informationAll.roamMode = paramD.roam_setting_option;
780 if (paramD.blc_wan_mode == "AUTO") {
781 informationAll.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
782 } else {
783 informationAll.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
784 }
785 informationAll.new_version_state = paramD.fota_new_version_state == "has_critical" || paramD.fota_new_version_state == "has_optional" || paramD.fota_new_version_state == "already_has_pkg";
786 informationAll.current_upgrade_state = paramD.fota_current_upgrade_state;
787 if (informationAll.current_upgrade_state == "verify_failed") {
788 informationAll.current_upgrade_state = "upgrade_pack_error";
789 }
790 informationAll.fota_user_selector = paramD.fota_upgrade_selector;
791 informationAll.is_mandatory = paramD.is_mandatory == "1" || paramD.fota_new_version_state == "has_critical";
792 informationAll.allowRoamingUpdate = paramD.upg_roam_switch;
793 informationAll.dialMode = paramD.dial_mode;
794 informationAll.fota_package_already_download = paramD.fota_package_already_download;
795 }
796 function timerUpdaterErrorCallback() {
797 informationAll.batteryStatus = '0';
798 }
799 function getRoamStatus(networkType, modemState, simcardRoam) {
800 if (("" == $.trim(networkType)) || "no_service" == networkType.toLowerCase() || "limited_service" == networkType.toLowerCase() || "modem_sim_undetected" == modemState || "modem_waitpin" == modemState || "modem_waitpuk" == modemState) {
801 return false;
802 }
803 if ("Internal" == simcardRoam || "International" == simcardRoam) {
804 return true;
805 } else {
806 return false;
807 }
808 }
809 $(document).ready(function () {
810 setTimeout(function () {
811 timerUpdater();
812 }, 0);
813 });
814 function setNetwork(strNetworkNumber, nRat, nSubAct, callback) {
815 if ((typeof(strNetworkNumber) !== "string") || (strNetworkNumber === "") || (typeof(nRat) !== "number") || (isNaN(nRat))) {
816 if (typeof(callback) === "function") {
817 callback(false);
818 return;
819 }
820 }
821 var nRat1 = -1;
822 if (nRat === 0) {
823 nRat1 = 0;
824 } else if (nRat === 2) {
825 nRat1 = 2;
826 } else if (nRat == 7) {
827 nRat1 = 7;
828 } else {
829 nRat1 = -1;
830 }
831 if (-1 === nRat1) {
832 if (typeof(callback) === "function") {
833 callback(false);
834 return;
835 }
836 }
837 var SubAct;
838 if (nSubAct.toString() == "NaN") {
839 SubAct = "";
840 } else {
841 SubAct = nSubAct;
842 }
843 reqAsync({
844 goformId: "SET_NETWORK",
845 NetworkNumber: strNetworkNumber,
846 Rat: nRat,
847 nSubrat: SubAct
848 }, function (paramD) {
849 if (paramD && paramD.result == "success") {
850 var flag;
851 var counter = 0;
852 var timer = setInterval(function () {
853 var obj = reqSync({
854 cmd: 'm_netselect_result',
855 }, false);
856 if (!obj) {
857 callback(false);
858 return;
859 }
860 if (obj.m_netselect_result == "manual_success") {
861 flag = "1";
862 window.clearInterval(timer);
863 callback(true);
864 } else if (obj.m_netselect_result == "manual_fail") {
865 flag = "0";
866 window.clearInterval(timer);
867 callback(false);
868 } else if (counter < 120) {
869 counter++;
870 } else {
871 window.clearInterval(timer);
872 callback(false);
873 }
874 }, 1000);
875 } else {
876 callback(false);
877 }
878 }, function (paramD) {
879 callback(false);
880 }, true);
881 }
882 function savePhoneBook() {
883 var callback = arguments[1];
884 return stuffMake(arguments, {}, prepare, deal, null, true);
885 function prepare(values, isPost) {
886 var valueReq = {};
887 valueReq.notCallback = true;
888 valueReq.goformId = "PBM_CONTACT_ADD";
889 valueReq.location = values.location;
890 valueReq.name = encodeMessage(values.name);
891 valueReq.mobilephone_num = values.mobile_phone_number;
892 if (valueReq.location == 1) {
893 valueReq.add_index_pc = values.index;
894 valueReq.homephone_num = values.home_phone_number;
895 valueReq.officephone_num = values.office_phone_number;
896 valueReq.email = encodeMessage(values.mail);
897 valueReq.groupchoose = values.group;
898 if (!valueReq.groupchoose) {
899 valueReq.groupchoose = "common";
900 }
901 } else {
902 valueReq.edit_index = values.index;
903 }
904 if (values.delId != undefined) {
905 valueReq.delId = values.delId;
906 }
907 return valueReq;
908 }
909 function deal(paramD) {
910 if (paramD && paramD.result == "success") {
911 addTimerSomething("pbm_write_flag", checkSavePhoneBook);
912 } else {
913 callback(paramD);
914 }
915 }
916 function checkSavePhoneBook(paramD) {
917 checkPbmWriteFlag(paramD, callback, checkSavePhoneBook);
918 }
919 }
920 function checkPbmWriteFlag(paramD, callback, fn) {
921 if (paramD.pbm_write_flag == "0") {
922 removeTimerSomething("pbm_write_flag", fn);
923 callback({
924 result: "success"
925 });
926 } else if (paramD.pbm_write_flag == "6" || paramD.pbm_write_flag == "7" || paramD.pbm_write_flag == "8" || paramD.pbm_write_flag == "9" || paramD.pbm_write_flag == "10" || paramD.pbm_write_flag == "11" || paramD.pbm_write_flag == "14") {
927 removeTimerSomething("pbm_write_flag", fn);
928 callback({
929 result: "fail"
930 });
931 } else {}
932 }
933 function deletePhoneBooks() {
934 var callback = arguments[1];
935 return stuffMake(arguments, {}, prepare, deal, null, true);
936 function prepare(values, isPost) {
937 var valueReq = {};
938 valueReq.notCallback = true;
939 valueReq.goformId = "PBM_CONTACT_DEL";
940 valueReq.del_option = "delete_num";
941 valueReq.delete_id = values.indexs.join(",");
942 return valueReq;
943 }
944 function deal(paramD) {
945 if (paramD && paramD.result == "success") {
946 addTimerSomething("pbm_write_flag", checkDeletePhoneBooks);
947 } else {
948 callback(paramD);
949 }
950 }
951 function checkDeletePhoneBooks(paramD) {
952 checkPbmWriteFlag(paramD, callback, checkDeletePhoneBooks);
953 }
954 }
955 function deleteAllPhoneBooks() {
956 var callback = arguments[1];
957 return stuffMake(arguments, {}, prepare, deal, null, true);
958 function prepare(values, isPost) {
959 var valueReq = {};
960 valueReq.notCallback = true;
961 valueReq.goformId = "PBM_CONTACT_DEL";
962 valueReq.del_option = "delete_all";
963 valueReq.del_all_location = values.location;
964 return valueReq;
965 }
966 function deal(paramD) {
967 if (paramD && paramD.result == "success") {
968 addTimerSomething("pbm_write_flag", checkDeleteAllPhoneBooks);
969 } else {
970 callback(paramD);
971 }
972 }
973 function checkDeleteAllPhoneBooks(paramD) {
974 checkPbmWriteFlag(paramD, callback, checkDeleteAllPhoneBooks);
975 }
976 }
977 function deleteAllPhoneBooksByGroup() {
978 var callback = arguments[1];
979 return stuffMake(arguments, {}, prepare, deal, null, true);
980 function prepare(values, isPost) {
981 var valueReq = {};
982 valueReq.notCallback = true;
983 valueReq.goformId = "PBM_CONTACT_DEL";
984 valueReq.del_option = "delete_all_by_group";
985 valueReq.del_all_location = 3;
986 valueReq.del_group = values.group;
987 return valueReq;
988 }
989 function deal(paramD) {
990 if (paramD && paramD.result == "success") {
991 addTimerSomething("pbm_write_flag", checkDeleteAllPhoneBooksByGroup);
992 } else {
993 callback(paramD);
994 }
995 }
996 function checkDeleteAllPhoneBooksByGroup(paramD) {
997 checkPbmWriteFlag(paramD, callback, checkDeleteAllPhoneBooksByGroup);
998 }
999 }
1000 function setConnectionMode() {
1001 return stuffMake(arguments, {}, prepare, deal, null, true);
1002 function prepare(values, isPost) {
1003 var valueReq = {};
1004 valueReq.goformId = "SET_CONNECTION_MODE";
1005 valueReq.ConnectionMode = values.connectionMode;
1006 valueReq.roam_setting_option = values.isAllowedRoaming;
1007 return valueReq;
1008 }
1009 function deal(paramD) {
1010 if (paramD) {
1011 return paramD;
1012 } else {
1013 callback(paramD);
1014 }
1015 }
1016 }
1017 function getConnectionMode() {
1018 return stuffMake(arguments, {}, prepare, deal, null, false);
1019 function prepare(values, isPost) {
1020 var valueReq = {};
1021 valueReq.cmd = "ConnectionMode";
1022 return valueReq;
1023 }
1024 function deal(paramD) {
1025 if (paramD) {
1026 var result = {};
1027 result.connectionMode = paramD.connectionMode;
1028 result.isAllowedRoaming = paramD.autoConnectWhenRoaming;
1029 return result;
1030 } else {
1031 return errUnknownObj;
1032 }
1033 }
1034 }
1035 function _getPhoneBooks(array, location) {
1036 if (array[0].data_per_page == 0) {
1037 return {
1038 "pbm_data": []
1039 };
1040 }
1041 return stuffMake(array, {}, prepare, deal, null, false);
1042 function prepare(values, isPost) {
1043 var valueReq = {};
1044 valueReq.mem_store = location;
1045 if (location == 2) {
1046 valueReq.cmd = "pbm_data_total";
1047 } else {
1048 valueReq.cmd = "pbm_data_info";
1049 }
1050 valueReq.page = values.page;
1051 valueReq.data_per_page = values.data_per_page;
1052 valueReq.orderBy = values.orderBy;
1053 valueReq.isAsc = values.isAsc;
1054 return valueReq;
1055 }
1056 function deal(paramD) {
1057 if (paramD && paramD.pbm_data) {
1058 var books = [];
1059 $.each(paramD.pbm_data, function (i) {
1060 books.push({
1061 pbm_id: paramD.pbm_data[i].pbm_id,
1062 pbm_location: paramD.pbm_data[i].pbm_location,
1063 pbm_number: paramD.pbm_data[i].pbm_number,
1064 pbm_anr: paramD.pbm_data[i].pbm_anr,
1065 pbm_anr1: paramD.pbm_data[i].pbm_anr1,
1066 pbm_group: paramD.pbm_data[i].pbm_group,
1067 pbm_name: decodeMessage(paramD.pbm_data[i].pbm_name),
1068 pbm_email: decodeMessage(paramD.pbm_data[i].pbm_email)
1069 });
1070 });
1071 return {
1072 pbm_data: books
1073 };
1074 } else {
1075 return errUnknownObj;
1076 }
1077 }
1078 }
1079 function getPhoneBooksByGroup() {
1080 if (arguments[0].data_per_page == 0) {
1081 return {
1082 "pbm_data": []
1083 };
1084 }
1085 return stuffMake(arguments, {}, prepare, deal, null, false);
1086 function prepare(values, isPost) {
1087 var valueReq = {};
1088 valueReq.cmd = "pbm_data_total";
1089 valueReq.mem_store = 3;
1090 valueReq.pbm_group = values.group;
1091 valueReq.page = values.page;
1092 valueReq.data_per_page = values.data_per_page;
1093 valueReq.orderBy = values.orderBy;
1094 valueReq.isAsc = values.isAsc;
1095 return valueReq;
1096 }
1097 function deal(paramD) {
1098 if (paramD && paramD.pbm_data) {
1099 var books = [];
1100 $.each(paramD.pbm_data, function (i) {
1101 books.push({
1102 pbm_id: paramD.pbm_data[i].pbm_id,
1103 pbm_location: paramD.pbm_data[i].pbm_location,
1104 pbm_number: paramD.pbm_data[i].pbm_number,
1105 pbm_anr: paramD.pbm_data[i].pbm_anr,
1106 pbm_anr1: paramD.pbm_data[i].pbm_anr1,
1107 pbm_group: paramD.pbm_data[i].pbm_group,
1108 pbm_name: decodeMessage(paramD.pbm_data[i].pbm_name),
1109 pbm_email: decodeMessage(paramD.pbm_data[i].pbm_email)
1110 });
1111 });
1112 return {
1113 pbm_data: books
1114 };
1115 } else {
1116 return errUnknownObj;
1117 }
1118 }
1119 }
1120 function getDevicePhoneBooks() {
1121 return _getPhoneBooks(arguments, 1);
1122 }
1123 function getSIMPhoneBooks() {
1124 return _getPhoneBooks(arguments, 0);
1125 }
1126 function getPhoneBooks() {
1127 return _getPhoneBooks(arguments, 2);
1128 }
1129 function getPhoneBookReady() {
1130 return stuffMake(arguments, {}, prepare, deal, null, false);
1131 function prepare(values, isPost) {
1132 var valueReq = {};
1133 valueReq.cmd = "pbm_init_flag";
1134 return valueReq;
1135 }
1136 function deal(paramD) {
1137 if (paramD) {
1138 return paramD;
1139 } else {
1140 return errUnknownObj;
1141 }
1142 }
1143 }
1144 function getPhoneBookCapacity(array, isSIM) {
1145 return stuffMake(array, {}, prepare, deal, null, false);
1146 function prepare(values, isPost) {
1147 var valueReq = {};
1148 valueReq.cmd = "pbm_capacity_info";
1149 if (isSIM) {
1150 valueReq.pbm_location = "pbm_sim";
1151 } else {
1152 valueReq.pbm_location = "pbm_native";
1153 }
1154 return valueReq;
1155 }
1156 function deal(paramD) {
1157 if (paramD) {
1158 return paramD;
1159 } else {
1160 return errUnknownObj;
1161 }
1162 }
1163 }
1164 function getSIMPhoneBookCapacity() {
1165 var paramD = getPhoneBookCapacity(arguments, true);
1166 return {
1167 simPbmTotalCapacity: parseInt(paramD.pbm_sim_max_record_num),
1168 simPbmUsedCapacity: parseInt(paramD.pbm_sim_used_record_num),
1169 simType: paramD.pbm_sim_type,
1170 maxNameLen: parseInt(paramD.pbm_sim_max_name_len),
1171 maxNumberLen: parseInt(paramD.pbm_sim_max_number_len) > 40 ? 40 : parseInt(paramD.pbm_sim_max_number_len)
1172 };
1173 }
1174 function getDevicePhoneBookCapacity() {
1175 var paramD = getPhoneBookCapacity(arguments, false);
1176 return {
1177 pcPbmTotalCapacity: parseInt(paramD.pbm_dev_max_record_num),
1178 pcPbmUsedCapacity: parseInt(paramD.pbm_dev_used_record_num)
1179 };
1180 }
1181 function getAttachedCableDevices() {
1182 return stuffMake(arguments, {}, prepare, deal, null, false);
1183 function prepare(values, isPost) {
1184 var obj = {
1185 cmd: "lan_station_list"
1186 };
1187 return obj;
1188 }
1189 function deal(paramD) {
1190 var deviceArr = [];
1191 var attachedDevices = paramD.lan_station_list || paramD.station_list;
1192 for (var i = 0; attachedDevices && i < attachedDevices.length; i++) {
1193 var obj = {};
1194 obj.macAddress = attachedDevices[i].mac_addr;
1195 var hostname = attachedDevices[i].hostname;
1196 obj.hostName = hostname == "" ? $.i18n.prop("unknown") : hostname;
1197 obj.ipAddress = attachedDevices[i].ip_addr;
1198 deviceArr.push(obj);
1199 }
1200 return {
1201 attachedDevices: deviceArr
1202 };
1203 }
1204 }
1205 function getCurrentlyAttachedDevicesInfo() {
1206 return stuffMake(arguments, {}, prepare, deal, null, false);
1207 function prepare(values, isPost) {
1208 var obj = {
1209 cmd: "station_list"
1210 };
1211 return obj;
1212 }
1213 function deal(paramD) {
1214 var deviceArr = [];
1215 var attachedDevices = paramD.station_list;
1216 for (var i = 0; attachedDevices && i < attachedDevices.length; i++) {
1217 var obj = {};
1218 obj.macAddress = attachedDevices[i].mac_addr;
1219 var hostname = attachedDevices[i].hostname;
1220 obj.hostName = hostname == "" ? $.i18n.prop("unknown") : hostname;
1221 obj.ipAddress = attachedDevices[i].ip_addr;
1222 deviceArr.push(obj);
1223 }
1224 return {
1225 attachedDevices: deviceArr
1226 };
1227 }
1228 }
1229
1230 function setLanguage() {
1231 return stuffMake(arguments, {}, prepare, deal, null, true);
1232 function prepare(values, isPost) {
1233 var valueReq = {};
1234 valueReq.goformId = "SET_WEB_LANGUAGE";
1235 valueReq.Language = values.Language;
1236 return valueReq;
1237 }
1238 function deal(paramD) {
1239 if (paramD) {
1240 return paramD;
1241 } else {
1242 return errUnknownObj;
1243 }
1244 }
1245 }
1246 function getLanguage() {
1247 return stuffMake(arguments, {}, prepare, deal, null, false);
1248 function prepare(values, isPost) {
1249 var valueReq = {};
1250 valueReq.cmd = "Language";
1251 valueReq.multi_data = 1;
1252 return valueReq;
1253 }
1254 function deal(paramD) {
1255 if (paramD) {
1256 var result = {};
1257 result.Language = (paramD && paramD.Language) ? paramD.Language : "en";
1258 return result;
1259 } else {
1260 return errUnknownObj;
1261 }
1262 }
1263 }
1264
1265 function setBearerPreference() {
1266 return stuffMake(arguments, {}, prepare, deal, null, true);
1267 function prepare(values, isPost) {
1268 var valueReq = {};
1269 valueReq.goformId = "SET_BEARER_PREFERENCE";
1270 valueReq.BearerPreference = values.strBearerPreference;
1271 return valueReq;
1272 }
1273 function deal(paramD) {
1274 if (paramD) {
1275 return paramD;
1276 } else {
1277 return errUnknownObj;
1278 }
1279 }
1280 }
1281 function scanForNetwork(callback) {
1282 $.post("/reqproc/proc_post", {
1283 goformId: "SCAN_NETWORK"
1284 }, function (paramD) {
1285 if (paramD.result == "success") {
1286 checkScanStatus();
1287 } else {
1288 callback(false, []);
1289 }
1290 }, "json").error(function () {
1291 callback(false, []);
1292 });
1293 function checkScanStatus() {
1294 $.getJSON("/reqproc/proc_get", {
1295 cmd: "m_netselect_status",
1296 "_": new Date().getTime()
1297 }, function (paramD) {
1298 if (paramD.m_netselect_status == "manual_selecting") {
1299 setTimeout(checkScanStatus, 1000);
1300 } else {
1301 $.getJSON("/reqproc/proc_get", {
1302 cmd: "m_netselect_contents",
1303 "_": new Date().getTime()
1304 }, function (paramD2) {
1305 if (trim(paramD2.m_netselect_contents) != "") {
1306 parseScanResult(paramD2.m_netselect_contents);
1307 } else {
1308 callback(false, []);
1309 }
1310 }).error(function () {
1311 callback(false, []);
1312 });
1313 }
1314 }).error(function () {
1315 callback(false, []);
1316 });
1317 }
1318 function parseScanResult(result) {
1319 var pattern = /([^,;]*),([^,]*),([^,]*),([^,]*),([^,;]*)/g;
1320 var listNetwork = [];
1321 var mts;
1322 var unit = result.split(";");
1323 var unitString = "";
1324 for (i = 0; i < unit.length; i++) {
1325 var unitLength = unit[i].split(",").length;
1326 if (unitLength == 4) {
1327 unitString += unit[i] + ",NON;";
1328 } else {
1329 unitString += unit[i] + ";";
1330 }
1331 }
1332 while (mts = pattern.exec(unitString)) {
1333 if (mts != null) {
1334 listNetwork.push({
1335 strShortName: mts[2].replace(/\"/g, ''),
1336 strNumeric: mts[3].replace(/\D/g, ''),
1337 nRat: parseInt(mts[4], 10),
1338 nState: parseInt(mts[1], 10),
1339 SubAct: parseInt(mts[5], 10)
1340 });
1341 }
1342 }
1343 callback(true, listNetwork);
1344 }
1345 }
1346 function getNetSelectInfo() {
1347 return stuffMake(arguments, {}, prepare, deal, null, false);
1348 function prepare(values, isPost) {
1349 var valueReq = {};
1350 valueReq.cmd = "current_network_mode,m_netselect_save,net_select_mode,m_netselect_contents,net_select,ppp_status,modem_main_state";
1351 valueReq.multi_data = 1;
1352 return valueReq;
1353 }
1354 function deal(paramD) {
1355 if (paramD) {
1356 var result = {};
1357 result.current_network_mode = paramD.current_network_mode;
1358 result.net_select_mode = paramD.net_select_mode;
1359 result.m_netselect_save = paramD.m_netselect_save;
1360 result.m_netselect_contents = paramD.m_netselect_contents;
1361 result.net_select = paramD.net_select;
1362 result.ppp_status = paramD.ppp_status;
1363 result.modem_main_state = paramD.modem_main_state;
1364 return result;
1365 } else {
1366 return errUnknownObj;
1367 }
1368 }
1369 }
1370
1371 function getSMSMessages() {
1372 return stuffMake(arguments, {}, prepare, deal, {}, false);
1373 function prepare(values, isPost) {
1374 var obj = {
1375 cmd: "sms_data_total",
1376 page: values.page,
1377 data_per_page: config.SMS_DATABASE_SORT_SUPPORT ? values.smsCount : 500,
1378 mem_store: values.nMessageStoreType,
1379 tags: values.tags,
1380 order_by: values.orderBy
1381 };
1382 return obj;
1383 }
1384 function deal(paramD) {
1385 if (paramD && paramD.messages && paramD.messages.length > 0) {
1386 return {
1387 messages: parseMessages(paramD.messages)
1388 };
1389 } else {
1390 return {
1391 messages: []
1392 };
1393 }
1394 }
1395 }
1396 function parseMessages(messages, isReport) {
1397 var result = [];
1398 for (var i = 0; i < messages.length; i++) {
1399 if (!config.SHOW_UN_COMPLETE_CONCAT_SMS && typeof messages[i].received_all_concat_sms != "undefined" && messages[i].received_all_concat_sms == '0') {
1400 continue;
1401 }
1402 var oneMessage = {};
1403 oneMessage.id = messages[i].id;
1404 oneMessage.number = messages[i].number;
1405 oneMessage.content = isReport ? messages[i].content : decodeMessageContent(messages[i].content);
1406 oneMessage.time = transTime('20' + messages[i].date);
1407 oneMessage.isNew = messages[i].tag == "1";
1408 oneMessage.groupId = messages[i].draft_group_id;
1409 oneMessage.tag = messages[i].tag;
1410 oneMessage.receivedAll = messages[i].received_all_concat_sms == '1';
1411 result.push(oneMessage);
1412 }
1413 if (!config.SMS_DATABASE_SORT_SUPPORT) {
1414 var ids = [];
1415 var tmpResult = [];
1416 for (var i = result.length; i--; ) {
1417 var n = result[i];
1418 var idx = $.inArray(n.id, ids);
1419 if (idx == -1) {
1420 ids.push(n.id);
1421 tmpResult.push(n);
1422 } else {
1423 if (n.content.length > tmpResult[idx].content.length) {
1424 tmpResult[idx] = n;
1425 }
1426 }
1427 }
1428 return _.sortBy(tmpResult, function (n) {
1429 return 0 - n.id;
1430 });
1431 } else {
1432 return result;
1433 }
1434 }
1435 function decodeMessageContent(msgContent) {
1436 return decodeMessage(escapeMessage(msgContent));
1437 }
1438 function sendSMS() {
1439 var callback = arguments[1];
1440 var errorCabllback = arguments[2] ? arguments[2] : callback;
1441 return stuffMake(arguments, {}, prepare, deal, null, true);
1442 function prepare(values, isPost) {
1443 var obj = {
1444 goformId: "SEND_SMS",
1445 notCallback: true,
1446 Number: values.number,
1447 sms_time: getCurrentTimeString(),
1448 MessageBody: escapeMessage(encodeMessage(values.message)),
1449 ID: values.id,
1450 encode_type: getEncodeType(values.message).encodeType
1451 };
1452 return obj;
1453 }
1454 function deal(paramD) {
1455 if (!paramD) {
1456 errorCabllback($.extend(errUnknownObj, {
1457 errorType: "sendFail",
1458 errorText: "send_fail_try_again"
1459 }));
1460 return;
1461 }
1462 if (paramD.result == "success") {
1463 setTimeout(function () {
1464 getSmsStatusInfo({
1465 smsCmd: 4,
1466 errorType: "sendFail",
1467 errorText: "send_fail_try_again"
1468 }, callback, errorCabllback);
1469 }, 1000);
1470 } else {
1471 errorCabllback($.extend(errUnknownObj, {
1472 errorType: "sendFail",
1473 errorText: "send_fail_try_again"
1474 }));
1475 }
1476 }
1477 }
1478 function saveSMS() {
1479 var callback = arguments[1];
1480 var errorCabllback = arguments[2] ? arguments[2] : callback;
1481 return stuffMake(arguments, {}, prepare, deal, null, true);
1482 function prepare(values, isPost) {
1483 var obj = {
1484 notCallback: true,
1485 goformId: "SAVE_SMS",
1486 SMSMessage: escapeMessage(encodeMessage(values.message)),
1487 SMSNumber: values.numbers.join(";") + ";",
1488 Index: values.index,
1489 encode_type: getEncodeType(values.message).encodeType,
1490 sms_time: values.currentTimeString,
1491 draft_group_id: values.groupId
1492 };
1493 return obj;
1494 }
1495 function deal(paramD) {
1496 if (!paramD) {
1497 errorCabllback($.extend(errUnknownObj, {
1498 errorType: "saveFail",
1499 errorText: "save_fail"
1500 }));
1501 return;
1502 }
1503 if (paramD.result == "success") {
1504 getSmsStatusInfo({
1505 smsCmd: 5,
1506 errorType: "saveFail",
1507 errorText: "save_fail"
1508 }, callback, errorCabllback);
1509 } else {
1510 errorCabllback($.extend(errUnknownObj, {
1511 errorType: "saveFail",
1512 errorText: "save_fail"
1513 }));
1514 }
1515 }
1516 }
1517 function deleteAllMessages() {
1518 var callback = arguments[1];
1519 var errorCabllback = arguments[2] ? arguments[2] : callback;
1520 return stuffMake(arguments, {}, prepare, deal, null, true);
1521 function prepare(values, isPost) {
1522 var obj = {
1523 goformId: "ALL_DELETE_SMS",
1524 notCallback: true,
1525 which_cgi: values.location
1526 };
1527 return obj;
1528 }
1529 function deal(paramD) {
1530 if (!paramD) {
1531 errorCabllback($.extend(errUnknownObj, {
1532 errorType: "deleteFail",
1533 errorText: "delete_fail_try_again"
1534 }));
1535 return;
1536 }
1537 if (paramD.result == "success") {
1538 addTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1539 } else {
1540 errorCabllback($.extend(errUnknownObj, {
1541 errorType: "deleteFail",
1542 errorText: "delete_fail_try_again"
1543 }));
1544 }
1545 }
1546 function checkDeleteStatus(paramD) {
1547 var status = paramD.sms_cmd_status_info;
1548 if (status == "2") {
1549 removeTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1550 errorCabllback($.extend(errUnknownObj, {
1551 errorType: "deleteFail",
1552 errorText: "delete_fail_try_again"
1553 }));
1554 } else if (status == "3") {
1555 removeTimerSomething("sms_cmd_status_info", checkDeleteStatus);
1556 callback({
1557 result: true
1558 });
1559 }
1560 }
1561 }
1562 function deleteMessage() {
1563 var callback = arguments[1];
1564 var errorCabllback = arguments[2] ? arguments[2] : callback;
1565 return stuffMake(arguments, {}, prepare, deal, null, true);
1566 function prepare(values, isPost) {
1567 var msgIds = values.ids.join(";") + ";";
1568 var obj = {
1569 goformId: "DELETE_SMS",
1570 msg_id: msgIds,
1571 notCallback: true
1572 };
1573 return obj;
1574 }
1575 function deal(paramD) {
1576 if (!paramD) {
1577 errorCabllback($.extend(errUnknownObj, {
1578 errorType: "deleteFail",
1579 errorText: "delete_fail_try_again"
1580 }));
1581 return;
1582 }
1583 if (paramD.result == "success") {
1584 getSmsStatusInfo({
1585 smsCmd: 6,
1586 errorType: "deleteFail",
1587 errorText: "delete_fail_try_again"
1588 }, callback, errorCabllback);
1589 } else {
1590 errorCabllback($.extend(errUnknownObj, {
1591 errorType: "deleteFail",
1592 errorText: "delete_fail_try_again"
1593 }));
1594 }
1595 }
1596 }
1597 function getSmsStatusInfo(obj, callback, errorCabllback) {
1598 reqAsync({
1599 cmd: "sms_cmd_status_info",
1600 sms_cmd: obj.smsCmd,
1601 }, function (paramD) {
1602 if (paramD) {
1603 var status = paramD.sms_cmd_status_result;
1604 if (status == "2") {
1605 errorCabllback($.extend(errUnknownObj, {
1606 errorType: obj.errorType,
1607 errorText: obj.errorText
1608 }));
1609 } else if (status == "3") {
1610 callback({
1611 result: "success"
1612 });
1613 } else {
1614 window.setTimeout(function () {
1615 getSmsStatusInfo(obj, callback, errorCabllback);
1616 }, 1000);
1617 }
1618 } else {
1619 errorCabllback($.extend(errUnknownObj, {
1620 errorType: obj.errorType,
1621 errorText: obj.errorText
1622 }));
1623 }
1624 }, function (paramD) {
1625 errorCabllback($.extend(errUnknownObj, {
1626 errorType: obj.errorType,
1627 errorText: obj.errorText
1628 }));
1629 }, false);
1630 }
1631 function getSMSReady() {
1632 if (config.smsIsReady) {
1633 var callback = arguments[1];
1634 if (callback) {
1635 return callback({
1636 "sms_cmd": "1",
1637 "sms_cmd_status_result": "3"
1638 });
1639 } else {
1640 return {
1641 "sms_cmd": "1",
1642 "sms_cmd_status_result": "3"
1643 };
1644 }
1645 } else {
1646 return stuffMake(arguments, {}, prepare, deal, null, false);
1647 }
1648 function prepare(values, isPost) {
1649 var valueReq = {};
1650 valueReq.cmd = "sms_cmd_status_info";
1651 valueReq.sms_cmd = 1;
1652 return valueReq;
1653 }
1654 function deal(paramD) {
1655 if (paramD) {
1656 if (paramD.sms_cmd_status_result == "3") {
1657 config.smsIsReady = true;
1658 }
1659 return paramD;
1660 } else {
1661 return errUnknownObj;
1662 }
1663 }
1664 }
1665 function setSmsRead() {
1666 return stuffMake(arguments, {}, prepare, deal, null, true);
1667 function prepare(values, isPost) {
1668 var msgIds = values.ids.join(";");
1669 if (values.ids.length > 0) {
1670 msgIds += ";";
1671 }
1672 var obj = {
1673 goformId: "SET_MSG_READ",
1674 msg_id: msgIds,
1675 tag: 0
1676 };
1677 return obj;
1678 }
1679 function deal(paramD) {
1680 if (paramD.result == "success") {
1681 return {
1682 result: true
1683 };
1684 } else {
1685 return {
1686 result: false
1687 };
1688 }
1689 }
1690 }
1691 function getSMSDeliveryReport() {
1692 return stuffMake(arguments, {}, prepare, deal, {}, false);
1693 function prepare(values, isPost) {
1694 var obj = {
1695 cmd: "sms_status_rpt_data",
1696 page: values.page,
1697 data_per_page: values.smsCount
1698 };
1699 return obj;
1700 }
1701 function deal(paramD) {
1702 if (paramD) {
1703 return {
1704 messages: parseMessages(paramD.messages, true)
1705 };
1706 } else {
1707 return errUnknownObj;
1708 }
1709 }
1710 }
1711 function logout() {
1712 return stuffMake(arguments, {}, prepare, deal, null, true);
1713 function prepare(values, isPost) {
1714 var obj = $.extend({}, values);
1715 obj.goformId = "LOGOUT";
1716 return obj;
1717 }
1718 function deal(paramD) {
1719 if (paramD && paramD.result == "success") {
1720 informationAll.isLoggedIn = false;
1721 return {
1722 result: true
1723 };
1724 } else {
1725 return $.extend(errUnknownObj, {
1726 errorType: "loggedOutError"
1727 });
1728 }
1729 }
1730 }
1731 function changeManageInfo() {
1732 return stuffMake(arguments, {}, prepare, deal, null, true);
1733 function prepare(values, isPost) {
1734 var obj = {};
1735 obj.newPassword = config.PASSWORD_ENCODE ? Base64.encode(values.newValue) : values.newValue;
1736 obj.oldPassword = config.PASSWORD_ENCODE ? Base64.encode(values.oldValue) : values.oldValue;
1737 obj.goformId = "CHANGE_PASSWORD";
1738 return obj;
1739 }
1740 function deal(paramD) {
1741 if (paramD && paramD.result === "success") {
1742 return {
1743 result: true
1744 };
1745 } else {
1746 return $.extend(errUnknownObj, {
1747 errorType: "badPassword"
1748 });
1749 }
1750 }
1751 }
1752 function getPinData() {
1753 return stuffMake(arguments, {}, prepare, deal, null, false);
1754 function prepare(values, isPost) {
1755 var valueReq = {};
1756 valueReq.cmd = "pinnumber,pin_status,puknumber";
1757 valueReq.multi_data = 1;
1758 return valueReq;
1759 }
1760 function deal(paramD) {
1761 if (paramD) {
1762 return paramD;
1763 } else {
1764 return errUnknownObj;
1765 }
1766 }
1767 }
1768 function enablePin() {
1769 return stuffMake(arguments, {}, prepare, deal, null, true);
1770 function prepare(values, isPost) {
1771 var obj = {};
1772 obj.goformId = "ENABLE_PIN";
1773 obj.OldPinNumber = values.oldPin;
1774 return obj;
1775 }
1776 function deal(paramD) {
1777 if (paramD && paramD.result === "success") {
1778 return {
1779 result: true
1780 };
1781 } else {
1782 return {
1783 result: false
1784 };
1785 }
1786 }
1787 }
1788 function disablePin() {
1789 return stuffMake(arguments, {}, prepare, deal, null, true);
1790 function prepare(values, isPost) {
1791 var obj = {};
1792 obj.goformId = "DISABLE_PIN";
1793 obj.OldPinNumber = values.oldPin;
1794 return obj;
1795 }
1796 function deal(paramD) {
1797 if (paramD && paramD.result === "success") {
1798 return {
1799 result: true
1800 };
1801 } else {
1802 return {
1803 result: false
1804 };
1805 }
1806 }
1807 }
1808 function changePin() {
1809 return stuffMake(arguments, {}, prepare, deal, null, true);
1810 function prepare(values, isPost) {
1811 var obj = {};
1812 obj.goformId = "ENABLE_PIN";
1813 obj.OldPinNumber = values.oldPin;
1814 obj.NewPinNumber = values.newPin;
1815 return obj;
1816 }
1817 function deal(paramD) {
1818 if (paramD && paramD.result === "success") {
1819 return {
1820 result: true
1821 };
1822 } else {
1823 return {
1824 result: false
1825 };
1826 }
1827 }
1828 }
1829 function getLanInfo() {
1830 return stuffMake(arguments, {}, prepare, deal, null, false);
1831 function prepare(values, isPost) {
1832 var valueReq = {};
1833 valueReq.cmd = "lan_ipaddr,lan_netmask,mac_address,dhcpEnabled,dhcpStart,dhcpEnd,dhcpLease_hour";
1834 valueReq.multi_data = 1;
1835 return valueReq;
1836 }
1837 function deal(paramD) {
1838 if (paramD) {
1839 var result = {};
1840 result.ipAddress = paramD.lan_ipaddr;
1841 result.subnetMask = paramD.lan_netmask;
1842 result.macAddress = paramD.mac_address;
1843 result.dhcpServer = paramD.dhcpEnabled;
1844 result.dhcpStart = paramD.dhcpStart;
1845 result.dhcpEnd = paramD.dhcpEnd;
1846 result.dhcpLease = parseInt(paramD.dhcpLease_hour, 10);
1847 return result;
1848 } else {
1849 return errUnknownObj;
1850 }
1851 }
1852 }
1853 function setLanInfo() {
1854 return stuffMake(arguments, {}, prepare, deal, null, true);
1855 function prepare(values, isPost) {
1856 var valueReq = {};
1857 valueReq.goformId = "DHCP_SETTING";
1858 valueReq.lanIp = values.ipAddress;
1859 valueReq.lanNetmask = values.subnetMask;
1860 valueReq.lanDhcpType = values.dhcpServer == "1" ? "SERVER" : "DISABLE";
1861 if (valueReq.lanDhcpType == "SERVER") {
1862 valueReq.dhcpStart = values.dhcpStart;
1863 valueReq.dhcpEnd = values.dhcpEnd;
1864 valueReq.dhcpLease = values.dhcpLease;
1865 }
1866 valueReq.dhcp_reboot_flag = 1;
1867 return valueReq;
1868 }
1869 function deal(paramD) {
1870 if (paramD) {
1871 return paramD;
1872 } else {
1873 return errUnknownObj;
1874 }
1875 }
1876 }
1877 function getSmsSetting() {
1878 return stuffMake(arguments, {}, prepare, deal, null, false);
1879 function prepare(values, isPost) {
1880 var valueReq = {};
1881 valueReq.cmd = "sms_parameter_info";
1882 return valueReq;
1883 }
1884 function deal(paramD) {
1885 if (paramD) {
1886 var result = {};
1887 result.centerNumber = paramD.sms_para_sca;
1888 result.memStroe = paramD.sms_para_mem_store;
1889 result.deliveryReport = paramD.sms_para_status_report;
1890 switch (parseInt(paramD.sms_para_validity_period, 10)) {
1891 case 143:
1892 result.validity = "twelve_hours";
1893 break;
1894 case 167:
1895 result.validity = "one_day";
1896 break;
1897 case 173:
1898 result.validity = "one_week";
1899 break;
1900 case 244:
1901 result.validity = "largest";
1902 break;
1903 case 255:
1904 result.validity = "largest";
1905 break;
1906 default:
1907 result.validity = "twelve_hours";
1908 break;
1909 }
1910 return result;
1911 } else {
1912 return errUnknownObj;
1913 }
1914 }
1915 }
1916 function setSmsSetting() {
1917 var callback = arguments[1];
1918 var errorCabllback = arguments[2] ? arguments[2] : callback;
1919 return stuffMake(arguments, {}, prepare, deal, null, true);
1920 function prepare(values, isPost) {
1921 var valueReq = {};
1922 valueReq.goformId = "SET_MESSAGE_CENTER";
1923 valueReq.save_time = values.validity;
1924 valueReq.MessageCenter = values.centerNumber;
1925 valueReq.status_save = values.deliveryReport;
1926 valueReq.save_location = 'native';
1927 valueReq.notCallback = true;
1928 return valueReq;
1929 }
1930 function deal(paramD) {
1931 if (!paramD) {
1932 errorCabllback($.extend(errUnknownObj, {
1933 errorType: "smsSettingFail",
1934 errorText: "error_info"
1935 }));
1936 return;
1937 }
1938 if (paramD.result == "success") {
1939 getSmsStatusInfo({
1940 smsCmd: 3,
1941 errorType: "smsSettingFail",
1942 errorText: "error_info"
1943 }, callback, errorCabllback);
1944 } else {
1945 errorCabllback($.extend(errUnknownObj, {
1946 errorType: "deleteFail",
1947 errorText: "delete_fail_try_again"
1948 }));
1949 }
1950 }
1951 }
1952 function restoreFactorySettings() {
1953 var preErrorObj = {};
1954 if (config.HAS_PARENTAL_CONTROL && config.currentUserInChildGroup != false) {
1955 preErrorObj = {
1956 errorType: 'no_auth'
1957 };
1958 }
1959 return stuffMake(arguments, preErrorObj, prepare, deal, null, true);
1960 function prepare(values, isPost) {
1961 var valueReq = {};
1962 valueReq.goformId = "RESTORE_FACTORY_SETTINGS";
1963 return valueReq;
1964 }
1965 function deal(paramD) {
1966 if (paramD) {
1967 return paramD;
1968 } else {
1969 return errUnknownObj;
1970 }
1971 }
1972 }
1973 function checkRestoreStatus(successCallback) {
1974 var valueReq = {};
1975 valueReq.cmd = "restore_flag";
1976 valueReq.multi_data = 1;
1977 reqAsync(valueReq, function (paramD) {
1978 if (paramD && paramD.restore_flag === "1") {
1979 successCallback();
1980 } else {
1981 setTimeout(function () {
1982 checkRestoreStatus(successCallback);
1983 }, 5000);
1984 }
1985 }, function () {
1986 setTimeout(function () {
1987 checkRestoreStatus(successCallback);
1988 }, 5000);
1989 }, false);
1990 }
1991 function getWpsInfo() {
1992 return stuffMake(arguments, {}, prepare, deal, null, false);
1993 function prepare(values, isPost) {
1994 var valueReq = {};
1995 valueReq.cmd = "wifi_wps_index,WscModeOption,AuthMode,wifi_cur_state,EncrypType,wps_mode,WPS_SSID,m_ssid_enable,SSID1,m_SSID,m_EncrypType,m_AuthMode,wifi_sta_connection";
1996 valueReq.multi_data = 1;
1997 return valueReq;
1998 }
1999 function deal(paramD) {
2000 if (paramD) {
2001 var result = {};
2002 result.wpsFlag = paramD.WscModeOption;
2003 result.authMode = paramD.AuthMode;
2004 result.wpsType = paramD.wps_mode;
2005 result.radioFlag = paramD.wifi_cur_state == "1" ? "1" : "0";
2006 result.encrypType = paramD.EncrypType;
2007 result.wpsSSID = paramD.WPS_SSID;
2008 result.ssidEnable = paramD.m_ssid_enable;
2009 result.ssid = paramD.SSID1;
2010 result.multiSSID = paramD.m_SSID;
2011 result.m_encrypType = paramD.m_EncrypType;
2012 result.wifi_wps_index = paramD.wifi_wps_index;
2013 result.AuthMode = paramD.AuthMode;
2014 result.m_AuthMode = paramD.m_AuthMode;
2015 result.ap_station_enable = paramD.wifi_sta_connection;
2016 return result;
2017 } else {
2018 return errUnknownObj;
2019 }
2020 }
2021 }
2022 function openWps() {
2023 return stuffMake(arguments, {}, prepare, deal, null, true);
2024 function prepare(values, isPost) {
2025 var valueReq = {};
2026 valueReq.goformId = "WIFI_WPS_SET";
2027 valueReq.WPS_SSID = values.wpsSSID;
2028 valueReq.wps_mode = values.wpsType;
2029 valueReq.wifi_wps_index = values.wpsIndex;
2030 if (valueReq.wps_mode == 'PIN') {
2031 valueReq.wps_pin = values.wpsPin;
2032 }
2033 return valueReq;
2034 }
2035 function deal(paramD) {
2036 if (paramD) {
2037 return paramD;
2038 } else {
2039 return errUnknownObj;
2040 }
2041 }
2042 }
2043 function openWps_5g() {
2044 return stuffMake(arguments, {}, prepare, deal, null, true);
2045 function prepare(values, isPost) {
2046 var valueReq = {};
2047 valueReq.goformId = "WIFI_M_WPS_SET";
2048 valueReq.m_WPS_SSID = values.wpsSSID;
2049 valueReq.m_wps_mode = values.wpsType;
2050 valueReq.m_wifi_wps_index = values.wpsIndex;
2051 if (valueReq.m_wps_mode == 'PIN') {
2052 valueReq.m_wps_pin = values.wpsPin;
2053 }
2054 return valueReq;
2055 }
2056 function deal(paramD) {
2057 if (paramD) {
2058 return paramD;
2059 } else {
2060 return errUnknownObj;
2061 }
2062 }
2063 }
2064 function getSleepMode() {
2065 return stuffMake(arguments, {}, prepare, deal, null, false);
2066 function prepare(values, isPost) {
2067 var valueReq = {};
2068 valueReq.cmd = "Sleep_interval";
2069 return valueReq;
2070 }
2071 function deal(paramD) {
2072 if (paramD) {
2073 var result = {};
2074 result.sleepMode = paramD.Sleep_interval;
2075 return result;
2076 } else {
2077 return errUnknownObj;
2078 }
2079 }
2080 }
2081 function setSleepMode() {
2082 return stuffMake(arguments, {}, prepare, deal, null, true);
2083 function prepare(values, isPost) {
2084 var valueReq = {};
2085 valueReq.goformId = "SET_WIFI_SLEEP_INFO";
2086 valueReq.sysIdleTimeToSleep = values.sleepMode;
2087 return valueReq;
2088 }
2089 function deal(paramD) {
2090 if (paramD) {
2091 return paramD;
2092 } else {
2093 return errUnknownObj;
2094 }
2095 }
2096 }
2097 function getSysSecurity() {
2098 return stuffMake(arguments, {}, prepare, deal, null, false);
2099 function prepare(values, isPost) {
2100 var valueReq = {};
2101 valueReq.cmd = "RemoteManagement,WANPingFilter";
2102 valueReq.multi_data = 1;
2103 return valueReq;
2104 }
2105 function deal(paramD) {
2106 if (paramD) {
2107 var result = {};
2108 result.remoteFlag = paramD.RemoteManagement == "1" ? "1" : "0";
2109 result.pingFlag = paramD.WANPingFilter == "1" ? "1" : "0";
2110 return result;
2111 } else {
2112 return errUnknownObj;
2113 }
2114 }
2115 }
2116 function setSysSecurity() {
2117 return stuffMake(arguments, {}, prepare, deal, null, true);
2118 function prepare(values, isPost) {
2119 var valueReq = {};
2120 valueReq.goformId = "FW_SYS";
2121 valueReq.remoteManagementEnabled = values.remoteFlag;
2122 valueReq.pingFrmWANFilterEnabled = values.pingFlag;
2123 return valueReq;
2124 }
2125 function deal(paramD) {
2126 if (paramD) {
2127 return paramD;
2128 } else {
2129 return errUnknownObj;
2130 }
2131 }
2132 }
2133 function getPortForward() {
2134 return stuffMake(arguments, {}, prepare, deal, null, false);
2135 function prepare(values, isPost) {
2136 var valueReq = {};
2137 valueReq.cmd = "PortForwardEnable,PortForwardRules_0,PortForwardRules_1,PortForwardRules_2,PortForwardRules_3,PortForwardRules_4,PortForwardRules_5,PortForwardRules_6,PortForwardRules_7,PortForwardRules_8,PortForwardRules_9";
2138 valueReq.multi_data = 1;
2139 return valueReq;
2140 }
2141 function deal(paramD) {
2142 if (paramD) {
2143 var result = {};
2144 result.portForwardEnable = paramD.PortForwardEnable;
2145 var rules = [];
2146 if (paramD.PortForwardRules_0 != "") {
2147 rules.push([0, paramD.PortForwardRules_0]);
2148 }
2149 if (paramD.PortForwardRules_1 != "") {
2150 rules.push([1, paramD.PortForwardRules_1]);
2151 }
2152 if (paramD.PortForwardRules_2 != "") {
2153 rules.push([2, paramD.PortForwardRules_2]);
2154 }
2155 if (paramD.PortForwardRules_3 != "") {
2156 rules.push([3, paramD.PortForwardRules_3]);
2157 }
2158 if (paramD.PortForwardRules_4 != "") {
2159 rules.push([4, paramD.PortForwardRules_4]);
2160 }
2161 if (paramD.PortForwardRules_5 != "") {
2162 rules.push([5, paramD.PortForwardRules_5]);
2163 }
2164 if (paramD.PortForwardRules_6 != "") {
2165 rules.push([6, paramD.PortForwardRules_6]);
2166 }
2167 if (paramD.PortForwardRules_7 != "") {
2168 rules.push([7, paramD.PortForwardRules_7]);
2169 }
2170 if (paramD.PortForwardRules_8 != "") {
2171 rules.push([8, paramD.PortForwardRules_8]);
2172 }
2173 if (paramD.PortForwardRules_9 != "") {
2174 rules.push([9, paramD.PortForwardRules_9]);
2175 }
2176 result.portForwardRules = parsePortForwardRules(rules);
2177 return result;
2178 } else {
2179 return errUnknownObj;
2180 }
2181 }
2182 function parsePortForwardRules(paramD) {
2183 var rules = [];
2184 if (paramD && paramD.length > 0) {
2185 for (var i = 0; i < paramD.length; i++) {
2186 var aRule = {};
2187 var elements = paramD[i][1].split(",");
2188 aRule.index = paramD[i][0];
2189 aRule.ipAddress = elements[0];
2190 aRule.portRange = elements[1] + ' - ' + elements[2];
2191 aRule.protocol = transProtocol(elements[3]);
2192 aRule.comment = elements[4];
2193 rules.push(aRule);
2194 }
2195 }
2196 return rules;
2197 }
2198 }
2199 function setPortForward() {
2200 return stuffMake(arguments, {}, prepare, deal, null, true);
2201 function prepare(values, isPost) {
2202 var valueReq = {};
2203 valueReq.goformId = "FW_FORWARD_ADD";
2204 valueReq.ipAddress = values.ipAddress;
2205 valueReq.portStart = values.portStart;
2206 valueReq.portEnd = values.portEnd;
2207 valueReq.protocol = values.protocol;
2208 valueReq.comment = values.comment;
2209 return valueReq;
2210 }
2211 function deal(paramD) {
2212 if (paramD) {
2213 return paramD;
2214 } else {
2215 return errUnknownObj;
2216 }
2217 }
2218 }
2219 function deleteForwardRules() {
2220 return stuffMake(arguments, {}, prepare, deal, null, true);
2221 function prepare(values, isPost) {
2222 var valueReq = {};
2223 valueReq.goformId = "FW_FORWARD_DEL";
2224 valueReq.delete_id = values.indexs.join(';') + ";";
2225 return valueReq;
2226 }
2227 function deal(paramD) {
2228 if (paramD) {
2229 return paramD;
2230 } else {
2231 return errUnknownObj;
2232 }
2233 }
2234 }
2235 function enableVirtualServer() {
2236 return stuffMake(arguments, {}, prepare, deal, null, true);
2237 function prepare(values, isPost) {
2238 var valueReq = {};
2239 valueReq.goformId = "VIRTUAL_SERVER";
2240 valueReq.PortForwardEnable = values.portForwardEnable;
2241 return valueReq;
2242 }
2243 function deal(paramD) {
2244 if (paramD) {
2245 return paramD;
2246 } else {
2247 return errUnknownObj;
2248 }
2249 }
2250 }
2251 function wifiDecode(fact1,fact2,encode_aes) {//wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes,paramD.m_WPAPSK1_enaes);
2252 var kstr = fact1 + fact2 + "FFFFFFFFFFFFFFFFFFFFFFFF";
2253 var kstr_final;
2254 var kiv_final;
2255
2256 kstr_final = kstr.substring(0, 24);
2257 kiv_final = kstr.substring(0, 16);
2258
2259 var tkey = CryptoJS.enc.Latin1.parse(kstr_final);
2260 var tiv = CryptoJS.enc.Latin1.parse(kiv_final);
2261 var decdata = CryptoJS.AES.decrypt(encode_aes, tkey, {
2262 iv: tiv,
2263 mode: CryptoJS.mode.CBC,
2264 padding: CryptoJS.pad.ZeroPadding
2265 }).toString(CryptoJS.enc.Utf8);
2266
2267 return decdata;
2268 }
2269 function getQuickSettingInfo() {
2270 return stuffMake(arguments, {}, prepare, deal, null, false);
2271 function prepare(values, isPost) {
2272 var valueReq = {};
2273 var wpask = config.PASSWORD_ENCODE ? ",WPAPSK1_encode" : ",imei,rnum_js,WPAPSK1_enaes";
2274 valueReq.cmd = "pdp_type,ipv6_pdp_type,wifi_cur_state,SSID1,HideSSID,AuthMode,WscModeOption,ppp_status,apn_index,ipv6_apn_index,ipv6_APN_index,m_profile_name,apn_mode,EncrypType,DefaultKeyID,Key1Str1,Key2Str1,Key3Str1,Key4Str1" + wpask + ",APN_configtmp0,APN_configtmp1,APN_configtmp2,APN_configtmp3,APN_configtmp4,APN_configtmp5,APN_configtmp6,APN_configtmp7,APN_configtmp8,APN_configtmp9,APN_configtmp10,APN_configtmp11,APN_configtmp12,APN_configtmp13,APN_configtmp14,APN_configtmp15,APN_configtmp16,APN_configtmp17,APN_configtmp18,APN_configtmp19" + ",ipv6_APN_configtmp0,ipv6_APN_configtmp1,ipv6_APN_configtmp2,ipv6_APN_configtmp3,ipv6_APN_configtmp4,ipv6_APN_configtmp5,ipv6_APN_configtmp6,ipv6_APN_configtmp7,ipv6_APN_configtmp8,ipv6_APN_configtmp9,ipv6_APN_configtmp10,ipv6_APN_configtmp11,ipv6_APN_configtmp12,ipv6_APN_configtmp13,ipv6_APN_configtmp14,ipv6_APN_configtmp15,ipv6_APN_configtmp16,ipv6_APN_configtmp17,ipv6_APN_configtmp18,ipv6_APN_configtmp19";
2275 valueReq.multi_data = 1;
2276 return valueReq;
2277 }
2278 function deal(paramD) {
2279 if (paramD) {
2280 if (config.PASSWORD_ENCODE) {
2281 paramD.WPAPSK1 = Base64.decode(paramD.WPAPSK1_encode);
2282 } else {
2283 paramD.WPAPSK1 = wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes);
2284 }
2285 return paramD;
2286 } else {
2287 return errUnknownObj;
2288 }
2289 }
2290 }
2291 function setQuickSetting4IPv6() {
2292 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
2293 function prepare(values) {
2294 var valueReq = {
2295 goformId: "QUICK_SETUP_EX",
2296 index: values.apn_index,
2297 pdp_type: values.pdp_type,
2298 apn_mode: values.apnMode,
2299 profile_name: values.profile_name,
2300 wan_apn: values.wan_apn,
2301 ppp_auth_mode: values.ppp_auth_mode,
2302 ppp_username: values.ppp_username,
2303 ppp_passtmp: values.ppp_passtmp,
2304 ipv6_wan_apn: values.ipv6_wan_apn,
2305 ipv6_ppp_auth_mode: values.ipv6_ppp_auth_mode,
2306 ipv6_ppp_username: values.ipv6_ppp_username,
2307 ipv6_ppp_passtmp: values.ipv6_ppp_passtmp,
2308 SSID_name: values.SSID_name,
2309 SSID_Broadcast: values.SSID_Broadcast,
2310 Encryption_Mode_hid: values.Encryption_Mode_hid,
2311 security_shared_mode: values.security_shared_mode,
2312 WPA_PreShared_Key: config.PASSWORD_ENCODE ? Base64.encode(values.WPA_PreShared_Key) : values.WPA_PreShared_Key,
2313 wep_default_key: values.wep_default_key,
2314 WPA_ENCRYPTION_hid: values.WPA_ENCRYPTION_hid
2315 }
2316 valueReq.wep_key_1 = values.wep_key_1;
2317 valueReq.wep_key_2 = values.wep_key_2;
2318 valueReq.wep_key_3 = values.wep_key_3;
2319 valueReq.wep_key_4 = values.wep_key_4;
2320 if (values.wep_default_key == '1') {
2321 valueReq.WEP2Select = values.WEP2Select;
2322 } else if (values.wep_default_key == '2') {
2323 valueReq.WEP3Select = values.WEP3Select;
2324 } else if (values.wep_default_key == '3') {
2325 valueReq.WEP4Select = values.WEP4Select;
2326 } else {
2327 valueReq.WEP1Select = values.WEP1Select;
2328 }
2329 return valueReq;
2330 }
2331 function deal(paramD) {
2332 if (paramD) {
2333 return paramD;
2334 } else {
2335 return $.extend(errUnknownObj, {
2336 errorType: "SetSetUpError"
2337 });
2338 }
2339 }
2340 }
2341 function stuffMakeAndCheckServerIsOnline(arg, prepare, deal) {
2342 var isServerOnline = false;
2343 var isCallbackExecuted = false;
2344 var values = prepare(arg[0]);
2345 var callback = arg[1];
2346 var successCallback = function (paramD) {
2347 isServerOnline = true;
2348 if (!isCallbackExecuted && callback) {
2349 callback(deal(paramD));
2350 }
2351 isCallbackExecuted = true;
2352 };
2353 var errorMethod = arg[2];
2354 var errorCallback = function () {
2355 isServerOnline = true;
2356 if (errorMethod) {
2357 errorMethod();
2358 }
2359 };
2360 reqAsync(values, successCallback, errorCallback, true);
2361 addTimeout(function () {
2362 if (isServerOnline == false) {
2363 var timer = addInterval(function () {
2364 if (isServerOnline == false) {
2365 getLanguage({}, function (paramD) {
2366 window.clearInterval(timer);
2367 successCallback({
2368 result: "success"
2369 });
2370 });
2371 }
2372 }, 1000);
2373 }
2374 }, 5000);
2375 }
2376 function getSDConfiguration() {
2377 return stuffMake(arguments, {}, prepare, deal, null, false);
2378 function prepare(values, isPost) {
2379 var valueReq = {
2380 cmd: "sdcard_mode_option,sd_card_state,HTTP_SHARE_STATUS,HTTP_SHARE_WR_AUTH,HTTP_SHARE_FILE",
2381 multi_data: 1
2382 };
2383 return valueReq;
2384 }
2385 function deal(paramD) {
2386 if (paramD) {
2387 var fileToShare;
2388 if ("mmc2" == paramD.HTTP_SHARE_FILE || "/mmc2" == paramD.HTTP_SHARE_FILE || "/mmc2/" == paramD.HTTP_SHARE_FILE) {
2389 fileToShare = "1";
2390 } else {
2391 fileToShare = "0";
2392 }
2393 var result = {
2394 sd_mode: paramD.sdcard_mode_option == "1" ? "0" : "1",
2395 sd_status: paramD.sd_card_state,
2396 share_status: paramD.HTTP_SHARE_STATUS == "Enabled" ? "1" : "0",
2397 share_auth: paramD.HTTP_SHARE_WR_AUTH == "readOnly" ? "0" : "1",
2398 file_to_share: fileToShare,
2399 share_file: paramD.HTTP_SHARE_FILE
2400 };
2401 return result;
2402 } else {
2403 return errUnknownObj;
2404 }
2405 }
2406 }
2407 function setSdCardMode() {
2408 return stuffMake(arguments, {}, prepare, deal, null, true);
2409 function prepare(values, isPost) {
2410 var valueReq = {
2411 goformId: "HTTPSHARE_MODE_SET",
2412 mode_set: values.mode == "0" ? "http_share_mode" : "usb_mode"
2413 };
2414 return valueReq;
2415 }
2416 function deal(paramD) {
2417 if (paramD && paramD.result == 'success') {
2418 return {
2419 result: 'success'
2420 };
2421 } else if (paramD && paramD.result == 'processing') {
2422 return {
2423 result: 'processing'
2424 };
2425 } else {
2426 return {
2427 result: false
2428 };
2429 }
2430 }
2431 }
2432 function checkFileExists() {
2433 return stuffMake(arguments, {}, prepare, deal, null, true);
2434 function prepare(values, isPost) {
2435 var valueReq = {
2436 goformId: "GOFORM_HTTPSHARE_CHECK_FILE",
2437 path_SD_CARD: values.path
2438 };
2439 return valueReq;
2440 }
2441 function deal(paramD) {
2442 if (paramD) {
2443 if (paramD.result == "no_sdcard") {
2444 return {
2445 status: "no_sdcard"
2446 };
2447 } else if (paramD.result == "noexist") {
2448 return {
2449 status: "noexist"
2450 };
2451 } else if (paramD.result == "processing") {
2452 return {
2453 status: "processing"
2454 };
2455 } else {
2456 return {
2457 status: "exist"
2458 };
2459 }
2460 } else {
2461 return errUnknownObj;
2462 }
2463 }
2464 }
2465 function getFileList() {
2466 return stuffMake(arguments, {}, prepare, deal, null, true);
2467 function prepare(values, isPost) {
2468 var valueReq = {
2469 goformId: "HTTPSHARE_ENTERFOLD",
2470 path_SD_CARD: values.path,
2471 indexPage: values.index
2472 };
2473 return valueReq;
2474 }
2475 function deal(paramD) {
2476 if (paramD) {
2477 if (paramD.result == 'failure') {
2478 return $.extend(errUnknownObj, {
2479 errorType: "get_file_list_failure"
2480 });
2481 } else if (paramD.result == "no_sdcard") {
2482 return $.extend(errUnknownObj, {
2483 errorType: "no_sdcard"
2484 });
2485 } else {
2486 return parseSdCardFile(paramD.result);
2487 }
2488 } else {
2489 return errUnknownObj;
2490 }
2491 }
2492 function parseSdCardFile(result) {
2493 var fileInfo = {};
2494 fileInfo.totalRecord = result.totalRecord;
2495 var fileArr = [];
2496 var details = result.fileInfo;
2497 for (var i = 0; details && i < details.length; i++) {
2498 if (details[i].fileName == "") {
2499 continue;
2500 }
2501 var obj = {};
2502 obj.fileName = details[i].fileName;
2503 obj.attribute = details[i].attribute;
2504 obj.size = details[i].size;
2505 obj.lastUpdateTime = details[i].lastUpdateTime;
2506 fileArr.push(obj);
2507 }
2508 fileInfo.details = fileArr;
2509 return fileInfo;
2510 }
2511 }
2512 function fileRename() {
2513 return stuffMake(arguments, {}, prepare, deal, null, true);
2514 function prepare(values, isPost) {
2515 var d = new Date();
2516 var currentTime = d.getTime();
2517 var zoneOffsetSeconds = d.getTimezoneOffset() * 60;
2518 return {
2519 goformId: "HTTPSHARE_FILE_RENAME",
2520 path_SD_CARD: values.path,
2521 OLD_NAME_SD_CARD: values.oldPath,
2522 NEW_NAME_SD_CARD: values.newPath,
2523 path_SD_CARD_time: transUnixTime(currentTime),
2524 path_SD_CARD_time_unix: Math.round((currentTime - zoneOffsetSeconds * 1000) / 1e3)
2525 };
2526 }
2527 function deal(paramD) {
2528 if (paramD) {
2529 if (paramD.result == "success") {
2530 return {
2531 result: true
2532 };
2533 } else if (paramD.result == "no_sdcard") {
2534 return $.extend(errUnknownObj, {
2535 errorType: "no_sdcard"
2536 });
2537 } else if (paramD.result == "noexist") {
2538 return $.extend(errUnknownObj, {
2539 errorType: "no_exist"
2540 });
2541 } else if (paramD.result == "processing") {
2542 return $.extend(errUnknownObj, {
2543 errorType: "sd_file_processing_cant_rename"
2544 });
2545 } else {
2546 return {
2547 result: false
2548 };
2549 }
2550 } else {
2551 return errUnknownObj;
2552 }
2553 }
2554 }
2555 function getSdMemorySizes() {
2556 return stuffMake(arguments, {}, prepare, deal, null, false);
2557 function prepare(values, isPost) {
2558 var valueReq = {
2559 cmd: "HTTPSHARE_GETCARD_VALUE"
2560 };
2561 return valueReq;
2562 }
2563 function deal(paramD) {
2564 if (!paramD || (paramD.result && paramD.result == "no_sdcard")) {
2565 return $.extend(errUnknownObj, {
2566 errorType: "no_sdcard"
2567 });
2568 } else {
2569 return {
2570 totalMemorySize: paramD.sd_card_total_size == "" ? 0 : paramD.sd_card_total_size * 32 * 1024,
2571 availableMemorySize: paramD.sd_card_avi_space == "" ? 0 : paramD.sd_card_avi_space * 32 * 1024
2572 };
2573 }
2574 }
2575 }
2576 function deleteFilesAndFolders() {
2577 return stuffMake(arguments, {}, prepare, deal, null, true);
2578 function prepare(values, isPost) {
2579 var currentTime = new Date().getTime();
2580 var valueReq = {
2581 goformId: "HTTPSHARE_DEL",
2582 path_SD_CARD: values.path,
2583 name_SD_CARD: values.names,
2584 path_SD_CARD_time: transUnixTime(currentTime),
2585 path_SD_CARD_time_unix: Math.round(currentTime / 1e3)
2586 };
2587 return valueReq;
2588 }
2589 function deal(paramD) {
2590 if (paramD.result && paramD.result == "failure") {
2591 return {
2592 status: "failure"
2593 };
2594 } else if (paramD.result && paramD.result == "no_sdcard") {
2595 return {
2596 status: "no_sdcard"
2597 };
2598 } else if (paramD.result && paramD.result == "processing") {
2599 return {
2600 status: "processing"
2601 };
2602 } else if (paramD.result && paramD.result == "success") {
2603 return {
2604 status: "success"
2605 };
2606 } else {
2607 return errUnknownObj;
2608 }
2609 }
2610 }
2611 function createFolder() {
2612 return stuffMake(arguments, {}, prepare, deal, null, true);
2613 function prepare(values, isPost) {
2614 var d = new Date();
2615 var currentTime = d.getTime();
2616 var zoneOffsetSeconds = d.getTimezoneOffset() * 60;
2617 return {
2618 goformId: "HTTPSHARE_NEW",
2619 path_SD_CARD: values.path,
2620 path_SD_CARD_time: transUnixTime(currentTime),
2621 path_SD_CARD_time_unix: Math.round((currentTime - zoneOffsetSeconds * 1000) / 1e3)
2622 };
2623 }
2624 function deal(paramD) {
2625 if (paramD.result && paramD.result == "failure") {
2626 return $.extend(errUnknownObj, {
2627 errorType: "create_folder_failure"
2628 });
2629 } else if (paramD.result && paramD.result == "no_sdcard") {
2630 return $.extend(errUnknownObj, {
2631 errorType: "no_sdcard"
2632 });
2633 } else if (paramD.result && paramD.result == "success") {
2634 return {
2635 result: true
2636 };
2637 } else {
2638 return errUnknownObj;
2639 }
2640 }
2641 }
2642 function setSdCardSharing() {
2643 return stuffMake(arguments, {}, prepare, deal, null, true);
2644 function prepare(values, isPost) {
2645 var valueReq = {
2646 goformId: "HTTPSHARE_AUTH_SET",
2647 HTTP_SHARE_STATUS: values.share_status == "1" ? "Enabled" : "Disabled",
2648 HTTP_SHARE_WR_AUTH: values.share_auth == "1" ? "readWrite" : "readOnly",
2649 HTTP_SHARE_FILE: values.share_file
2650 };
2651 return valueReq;
2652 }
2653 function deal(paramD) {
2654 if (paramD) {
2655 if (paramD.result == "no_sdcard") {
2656 return $.extend(errUnknownObj, {
2657 errorType: "no_sdcard"
2658 });
2659 } else {
2660 return {
2661 result: true
2662 };
2663 }
2664 } else {
2665 return errUnknownObj;
2666 }
2667 }
2668 }
2669 function getPortFilter() {
2670 return stuffMake(arguments, {}, prepare, deal, null, false);
2671 function prepare(values, isPost) {
2672 var valueReq = {};
2673 valueReq.cmd = "IPPortFilterEnable,DefaultFirewallPolicy,IPPortFilterRules_0,IPPortFilterRules_1,IPPortFilterRules_2,IPPortFilterRules_3,IPPortFilterRules_4,IPPortFilterRules_5,IPPortFilterRules_6,IPPortFilterRules_7,IPPortFilterRules_8,IPPortFilterRules_9";
2674 valueReq.cmd += ",IPPortFilterRulesv6_0,IPPortFilterRulesv6_1,IPPortFilterRulesv6_2,IPPortFilterRulesv6_3,IPPortFilterRulesv6_4,IPPortFilterRulesv6_5,IPPortFilterRulesv6_6,IPPortFilterRulesv6_7,IPPortFilterRulesv6_8,IPPortFilterRulesv6_9";
2675 valueReq.multi_data = 1;
2676 return valueReq;
2677 }
2678 function deal(paramD) {
2679 if (paramD) {
2680 var result = {};
2681 result.portFilterEnable = paramD.IPPortFilterEnable;
2682 result.defaultPolicy = paramD.DefaultFirewallPolicy;
2683 var rules = [];
2684 if (paramD.IPPortFilterRules_0 != "") {
2685 rules.push([0, paramD.IPPortFilterRules_0]);
2686 }
2687 if (paramD.IPPortFilterRules_1 != "") {
2688 rules.push([1, paramD.IPPortFilterRules_1]);
2689 }
2690 if (paramD.IPPortFilterRules_2 != "") {
2691 rules.push([2, paramD.IPPortFilterRules_2]);
2692 }
2693 if (paramD.IPPortFilterRules_3 != "") {
2694 rules.push([3, paramD.IPPortFilterRules_3]);
2695 }
2696 if (paramD.IPPortFilterRules_4 != "") {
2697 rules.push([4, paramD.IPPortFilterRules_4]);
2698 }
2699 if (paramD.IPPortFilterRules_5 != "") {
2700 rules.push([5, paramD.IPPortFilterRules_5]);
2701 }
2702 if (paramD.IPPortFilterRules_6 != "") {
2703 rules.push([6, paramD.IPPortFilterRules_6]);
2704 }
2705 if (paramD.IPPortFilterRules_7 != "") {
2706 rules.push([7, paramD.IPPortFilterRules_7]);
2707 }
2708 if (paramD.IPPortFilterRules_8 != "") {
2709 rules.push([8, paramD.IPPortFilterRules_8]);
2710 }
2711 if (paramD.IPPortFilterRules_9 != "") {
2712 rules.push([9, paramD.IPPortFilterRules_9]);
2713 }
2714 result.portFilterRules = parsePortFilterRules(rules, "IPv4");
2715 var v6Rules = [];
2716 if (paramD.IPPortFilterRulesv6_0 != "") {
2717 v6Rules.push([10, paramD.IPPortFilterRulesv6_0]);
2718 }
2719 if (paramD.IPPortFilterRulesv6_1 != "") {
2720 v6Rules.push([11, paramD.IPPortFilterRulesv6_1]);
2721 }
2722 if (paramD.IPPortFilterRulesv6_2 != "") {
2723 v6Rules.push([12, paramD.IPPortFilterRulesv6_2]);
2724 }
2725 if (paramD.IPPortFilterRulesv6_3 != "") {
2726 v6Rules.push([13, paramD.IPPortFilterRulesv6_3]);
2727 }
2728 if (paramD.IPPortFilterRulesv6_4 != "") {
2729 v6Rules.push([14, paramD.IPPortFilterRulesv6_4]);
2730 }
2731 if (paramD.IPPortFilterRulesv6_5 != "") {
2732 v6Rules.push([15, paramD.IPPortFilterRulesv6_5]);
2733 }
2734 if (paramD.IPPortFilterRulesv6_6 != "") {
2735 v6Rules.push([16, paramD.IPPortFilterRulesv6_6]);
2736 }
2737 if (paramD.IPPortFilterRulesv6_7 != "") {
2738 v6Rules.push([17, paramD.IPPortFilterRulesv6_7]);
2739 }
2740 if (paramD.IPPortFilterRulesv6_8 != "") {
2741 v6Rules.push([18, paramD.IPPortFilterRulesv6_8]);
2742 }
2743 if (paramD.IPPortFilterRulesv6_9 != "") {
2744 v6Rules.push([19, paramD.IPPortFilterRulesv6_9]);
2745 }
2746 result.portFilterRules = _.union(result.portFilterRules, parsePortFilterRules(v6Rules, "IPv6"));
2747 return result;
2748 } else {
2749 return errUnknownObj;
2750 }
2751 }
2752 function parsePortFilterRules(paramD, ipTypeTmp) {
2753 var rules = [];
2754 if (paramD && paramD.length > 0) {
2755 for (var i = 0; i < paramD.length; i++) {
2756 var aRule = {};
2757 var elements = paramD[i][1].split(",");
2758 aRule.index = paramD[i][0];
2759 aRule.macAddress = elements[11];
2760 aRule.destIpAddress = elements[4] == "any/0" ? "" : elements[4];
2761 aRule.sourceIpAddress = elements[0] == "any/0" ? "" : elements[0];
2762 aRule.destPortRange = elements[6] == '0' ? '' : elements[6] + " - " + elements[7];
2763 aRule.sourcePortRange = elements[2] == '0' ? '' : elements[2] + " - " + elements[3];
2764 aRule.action = elements[9] == 1 ? "filter_accept" : "filter_drop";
2765 aRule.protocol = transProtocol(elements[8]);
2766 aRule.comment = elements[10];
2767 aRule.ipType = ipTypeTmp;
2768 rules.push(aRule);
2769 }
2770 }
2771 return rules;
2772 }
2773 }
2774 function setPortFilterBasic() {
2775 return stuffMake(arguments, {}, prepare, deal, null, true);
2776 function prepare(values, isPost) {
2777 var valueReq = {};
2778 valueReq.goformId = "BASIC_SETTING";
2779 valueReq.portFilterEnabled = values.portFilterEnable;
2780 valueReq.defaultFirewallPolicy = values.defaultPolicy;
2781 return valueReq;
2782 }
2783 function deal(paramD) {
2784 if (paramD) {
2785 return paramD;
2786 } else {
2787 return errUnknownObj;
2788 }
2789 }
2790 }
2791 function setPortFilter() {
2792 return stuffMake(arguments, {}, prepare, deal, null, true);
2793 function prepare(values, isPost) {
2794 var valueReq = {};
2795 valueReq.goformId = "ADD_IP_PORT_FILETER_V4V6";
2796 valueReq.ip_version = values.ipType;
2797 valueReq.mac_address = values.macAddress;
2798 valueReq.dip_address = values.destIpAddress;
2799 valueReq.sip_address = values.sourceIpAddress;
2800 valueReq.dFromPort = values.destPortStart;
2801 valueReq.dToPort = values.destPortEnd;
2802 valueReq.sFromPort = values.sourcePortStart;
2803 valueReq.sToPort = values.sourcePortEnd;
2804 valueReq.action = values.action;
2805 valueReq.protocol = values.protocol;
2806 valueReq.comment = values.comment;
2807 return valueReq;
2808 }
2809 function deal(paramD) {
2810 if (paramD) {
2811 return paramD;
2812 } else {
2813 return errUnknownObj;
2814 }
2815 }
2816 }
2817 function deleteFilterRules() {
2818 return stuffMake(arguments, {}, prepare, deal, null, true);
2819 function prepare(values, isPost) {
2820 var valueReq = {};
2821 var deleteIds = _.filter(values.indexs, function (item) {
2822 return item.length == 1;
2823 });
2824 valueReq.goformId = "DEL_IP_PORT_FILETER_V4V6";
2825 var deletev6Ids = [];
2826 _.each(values.indexs, function (item) {
2827 if (item.length == 2) {
2828 deletev6Ids.push(item.substring(1));
2829 }
2830 });
2831 valueReq.delete_id_v6 = deletev6Ids.length > 0 ? deletev6Ids.join(';') + ";" : "";
2832 valueReq.delete_id = deleteIds.length > 0 ? deleteIds.join(';') + ";" : "";
2833 return valueReq;
2834 }
2835 function deal(paramD) {
2836 if (paramD) {
2837 return paramD;
2838 } else {
2839 return errUnknownObj;
2840 }
2841 }
2842 }
2843 function getWifiAdvance() {
2844 return stuffMake(arguments, {}, prepare, deal, null, false);
2845 function prepare(values, isPost) {
2846 var valueReq = {};
2847 valueReq.cmd = "WirelessMode,CountryCode,Channel,HT_MCS,wifi_band,wifi_11n_cap,MAX_Access_num,m_MAX_Access_num,MAX_Station_num,wifi_sta_connection";
2848 valueReq.multi_data = 1;
2849 return valueReq;
2850 }
2851 function deal(paramD) {
2852 if (paramD) {
2853 var result = {
2854 mode: paramD.WirelessMode,
2855 countryCode: paramD.CountryCode,
2856 channel: paramD.Channel,
2857 rate: paramD.HT_MCS,
2858 wifiBand: paramD.wifi_band == 'a' ? 'a' : 'b',
2859 bandwidth: paramD.wifi_11n_cap,
2860 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
2861 MAX_Access_num: paramD.MAX_Access_num,
2862 m_MAX_Access_num: paramD.m_MAX_Access_num,
2863 ap_station_enable: paramD.wifi_sta_connection
2864 };
2865 return result;
2866 } else {
2867 return errUnknownObj;
2868 }
2869 }
2870 }
2871 function setWifiAdvance() {
2872 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
2873 function prepare(values) {
2874 var valueReq = {
2875 goformId: "SET_WIFI_INFO",
2876 wifiMode: values.mode,
2877 countryCode: values.countryCode,
2878 MAX_Access_num: values.station,
2879 m_MAX_Access_num: values.m_station
2880 };
2881 if (config.WIFI_BAND_SUPPORT) {
2882 valueReq.wifi_band = values.wifiBand;
2883 }
2884 if (config.WIFI_BAND_SUPPORT && values.wifiBand == 'a') {
2885 valueReq.selectedChannel = 'auto';
2886 } else {
2887 valueReq.selectedChannel = values.channel;
2888 valueReq.abg_rate = values.rate;
2889 }
2890 if (config.WIFI_BANDWIDTH_SUPPORT) {
2891 valueReq.wifi_11n_cap = values.bandwidth;
2892 }
2893 return valueReq;
2894 }
2895 function deal(paramD) {
2896 if (paramD) {
2897 return paramD;
2898 } else {
2899 return errUnknownObj;
2900 }
2901 }
2902 }
2903 function getDeviceInfo() {
2904 return stuffMake(arguments, {}, prepare, deal, null, false);
2905 function prepare(values, isPost) {
2906 var wpask = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
2907 var valueReq = {
mj.qud3eabaf2024-12-12 17:51:11 -08002908 cmd: "wifi_coverage,m_ssid_enable,imei,network_type,sub_network_type,rssi,rscp,lte_rsrp,imsi,sim_imsi,cr_version,hw_version,MAX_Access_num," + wpask + "SSID1,AuthMode,m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,lan_ipaddr," + "mac_address,msisdn,LocalDomain,wan_ipaddr,static_wan_ipaddr,ipv6_wan_ipaddr,ipv6_pdp_type,pdp_type,ppp_status,sta_ip_status,rj45_state,ethwan_mode,cell_id",
qumengjiaca65ef52024-11-06 15:42:21 +08002909 multi_data: 1
2910 };
2911 return valueReq;
2912 }
2913 function deal(paramD) {
2914 if (paramD) {
2915 return {
2916 ssid: paramD.SSID1,
2917 authMode: paramD.AuthMode,
2918 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
2919 m_ssid: paramD.m_SSID,
2920 m_AuthMode: paramD.m_AuthMode,
2921 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
2922 m_max_access_num: paramD.m_MAX_Access_num,
2923 multi_ssid_enable: paramD.m_ssid_enable,
2924 ipAddress: paramD.lan_ipaddr,
2925 wanIpAddress: paramD.wan_ipaddr,
2926 staticWanIpAddress: paramD.static_wan_ipaddr,
2927 ipv6WanIpAddress: paramD.ipv6_wan_ipaddr,
2928 ipv6PdpType: paramD.ipv6_pdp_type,
2929 macAddress: paramD.mac_address,
2930 simSerialNumber: paramD.msisdn,
2931 lanDomain: paramD.LocalDomain,
2932 imei: paramD.imei,
2933 signal: convertSignal(paramD),
mj.qud3eabaf2024-12-12 17:51:11 -08002934 cellid: paramD.cell_id,
qumengjiaca65ef52024-11-06 15:42:21 +08002935 imsi: paramD.imsi || paramD.sim_imsi,
2936 sw_version: paramD.cr_version,
2937 hw_version: paramD.hw_version,
2938 max_access_num: paramD.MAX_Access_num,
2939 wifiRange: paramD.wifi_coverage,
2940 pdpType: paramD.pdp_type,
2941 rj45ConnectStatus: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
2942 blc_wan_mode: informationAll.blc_wan_mode,
2943 connectStatus: paramD.ppp_status,
2944 wifiConStatus: paramD.sta_ip_status,
2945 ethwan_mode: paramD.ethwan_mode.toUpperCase()
2946 };
2947 } else {
2948 return errUnknownObj;
2949 }
2950 }
2951 }
2952 function getDeviceInfoLow() {
2953 return stuffMake(arguments, {}, prepare, deal, null, false);
2954 function prepare(values, isPost) {
2955 var valueReq = {
2956 cmd: "imei,rnum_js",
2957 multi_data: 1
2958 };
2959 return valueReq;
2960 }
2961 function deal(paramD) {
2962 if (paramD) {
2963 var kstr = paramD.rnum_js + paramD.imei + "FFFFFFFFFFFFFFFFFFFFFFFF";
2964 var kstr_final;
2965 var kiv_final;
2966
2967 kstr_final = kstr.substring(0, 24);
2968 kiv_final = kstr.substring(0, 16);
2969
2970 return {
2971 skey: kstr_final,
2972 siv: kiv_final
2973 };
2974 } else {
2975
2976 return {
2977 skey: "FFFFFFFFFFFFFFFFFFFFFFFF",
2978 siv: "FFFFFFFFFFFFFFFF"
2979 };
2980 }
2981 }
2982 }
2983 function getWifiRange() {
2984 return stuffMake(arguments, {}, prepare, deal, null, false);
2985 function prepare(values, isPost) {
2986 var valueReq = {};
2987 valueReq.cmd = "wifi_coverage";
2988 return valueReq;
2989 }
2990 function deal(paramD) {
2991 if (paramD) {
2992 var result = {};
2993 result.wifiRangeMode = paramD.wifi_coverage;
2994 return result;
2995 } else {
2996 return errUnknownObj;
2997 }
2998 }
2999 }
3000 function setWifiRange() {
3001 return stuffMake(arguments, {}, prepare, deal, null, true);
3002 function prepare(values, isPost) {
3003 var valueReq = {};
3004 valueReq.goformId = "SET_WIFI_COVERAGE";
3005 valueReq.wifi_coverage = values.wifiRangeMode;
3006 return valueReq;
3007 }
3008 function deal(paramD) {
3009 if (paramD) {
3010 return paramD;
3011 } else {
3012 return errUnknownObj;
3013 }
3014 }
3015 }
3016 function getUpnpSetting() {
3017 return stuffMake(arguments, {}, prepare, deal, null, false);
3018 function prepare(values, isPost) {
3019 var valueReq = {};
3020 valueReq.cmd = "upnpEnabled";
3021 valueReq.multi_data = 1;
3022 return valueReq;
3023 }
3024 function deal(paramD) {
3025 if (paramD) {
3026 var result = {};
3027 result.upnpSetting = paramD.upnpEnabled == "1" ? "1" : "0";
3028 return result;
3029 } else {
3030 return errUnknownObj;
3031 }
3032 }
3033 }
3034 function setUpnpSetting() {
3035 return stuffMake(arguments, {}, prepare, deal, null, true);
3036 function prepare(values, isPost) {
3037 var valueReq = {};
3038 valueReq.goformId = "UPNP_SETTING";
3039 valueReq.upnp_setting_option = values.upnpSetting;
3040 return valueReq;
3041 }
3042 function deal(paramD) {
3043 if (paramD) {
3044 return paramD;
3045 } else {
3046 return errUnknownObj;
3047 }
3048 }
3049 }
3050 function getDmzSetting() {
3051 return stuffMake(arguments, {}, prepare, deal, null, false);
3052 function prepare(values, isPost) {
3053 var valueReq = {};
3054 valueReq.cmd = "DMZEnable,DMZIPAddress";
3055 valueReq.multi_data = 1;
3056 return valueReq;
3057 }
3058 function deal(paramD) {
3059 if (paramD) {
3060 var result = {};
3061 result.dmzSetting = paramD.DMZEnable == "1" ? "1" : "0";
3062 result.ipAddress = paramD.DMZIPAddress;
3063 return result;
3064 } else {
3065 return errUnknownObj;
3066 }
3067 }
3068 }
3069 function setDmzSetting() {
3070 return stuffMake(arguments, {}, prepare, deal, null, true);
3071 function prepare(values, isPost) {
3072 var valueReq = {};
3073 valueReq.goformId = "DMZ_SETTING";
3074 valueReq.DMZEnabled = values.dmzSetting;
3075 if (valueReq.DMZEnabled == '1') {
3076 valueReq.DMZIPAddress = values.ipAddress;
3077 }
3078 return valueReq;
3079 }
3080 function deal(paramD) {
3081 if (paramD) {
3082 return paramD;
3083 } else {
3084 return errUnknownObj;
3085 }
3086 }
3087 }
3088 function getPortMap() {
3089 return stuffMake(arguments, {}, prepare, deal, null, false);
3090 function prepare(values, isPost) {
3091 var valueReq = {};
3092 valueReq.cmd = "PortMapEnable,PortMapRules_0,PortMapRules_1,PortMapRules_2,PortMapRules_3,PortMapRules_4,PortMapRules_5,PortMapRules_6,PortMapRules_7,PortMapRules_8,PortMapRules_9",
3093 valueReq.multi_data = 1;
3094 return valueReq;
3095 }
3096 function deal(paramD) {
3097 if (paramD) {
3098 var result = {};
3099 result.portMapEnable = paramD.PortMapEnable;
3100 var rules = [];
3101 if (paramD.PortMapRules_0 != "") {
3102 rules.push([0, paramD.PortMapRules_0]);
3103 }
3104 if (paramD.PortMapRules_1 != "") {
3105 rules.push([1, paramD.PortMapRules_1]);
3106 }
3107 if (paramD.PortMapRules_2 != "") {
3108 rules.push([2, paramD.PortMapRules_2]);
3109 }
3110 if (paramD.PortMapRules_3 != "") {
3111 rules.push([3, paramD.PortMapRules_3]);
3112 }
3113 if (paramD.PortMapRules_4 != "") {
3114 rules.push([4, paramD.PortMapRules_4]);
3115 }
3116 if (paramD.PortMapRules_5 != "") {
3117 rules.push([5, paramD.PortMapRules_5]);
3118 }
3119 if (paramD.PortMapRules_6 != "") {
3120 rules.push([6, paramD.PortMapRules_6]);
3121 }
3122 if (paramD.PortMapRules_7 != "") {
3123 rules.push([7, paramD.PortMapRules_7]);
3124 }
3125 if (paramD.PortMapRules_8 != "") {
3126 rules.push([8, paramD.PortMapRules_8]);
3127 }
3128 if (paramD.PortMapRules_9 != "") {
3129 rules.push([9, paramD.PortMapRules_9]);
3130 }
3131 result.portMapRules = parsePortMapRules(rules);
3132 return result;
3133 } else {
3134 return errUnknownObj;
3135 }
3136 }
3137 function parsePortMapRules(paramD) {
3138 var rules = [];
3139 if (paramD && paramD.length > 0) {
3140 for (var i = 0; i < paramD.length; i++) {
3141 var aRule = {};
3142 var elements = paramD[i][1].split(",");
3143 aRule.index = paramD[i][0];
3144 aRule.sourcePort = elements[1];
3145 aRule.destIpAddress = elements[0];
3146 aRule.destPort = elements[2];
3147 aRule.protocol = transProtocol(elements[3]);
3148 aRule.comment = elements[4];
3149 rules.push(aRule);
3150 }
3151 }
3152 return rules;
3153 }
3154 }
3155 function setPortMap() {
3156 return stuffMake(arguments, {}, prepare, deal, null, true);
3157 function prepare(values, isPost) {
3158 var valueReq = {};
3159 valueReq.goformId = "ADD_PORT_MAP";
3160 valueReq.portMapEnabled = values.portMapEnable;
3161 valueReq.fromPort = values.sourcePort;
3162 valueReq.ip_address = values.destIpAddress;
3163 valueReq.toPort = values.destPort;
3164 valueReq.protocol = values.protocol;
3165 valueReq.comment = values.comment;
3166 return valueReq;
3167 }
3168 function deal(paramD) {
3169 if (paramD) {
3170 return paramD;
3171 } else {
3172 return errUnknownObj;
3173 }
3174 }
3175 }
3176 function enablePortMap() {
3177 return stuffMake(arguments, {}, prepare, deal, null, true);
3178 function prepare(values, isPost) {
3179 var valueReq = {};
3180 valueReq.goformId = "ADD_PORT_MAP";
3181 valueReq.portMapEnabled = values.portMapEnable;
3182 return valueReq;
3183 }
3184 function deal(paramD) {
3185 if (paramD) {
3186 return paramD;
3187 } else {
3188 return errUnknownObj;
3189 }
3190 }
3191 }
3192 function deleteMapRules() {
3193 return stuffMake(arguments, {}, prepare, deal, null, true);
3194 function prepare(values, isPost) {
3195 var valueReq = {};
3196 valueReq.goformId = "DEL_PORT_MAP";
3197 valueReq.delete_id = values.indexs.join(';') + ";";
3198 return valueReq;
3199 }
3200 function deal(paramD) {
3201 if (paramD) {
3202 return paramD;
3203 } else {
3204 return errUnknownObj;
3205 }
3206 }
3207 }
3208 function getTrafficAlertInfo() {
3209 return stuffMake(arguments, {}, prepare, deal, null, false);
3210 function prepare(values, isPost) {
3211 return {
3212 cmd: "data_volume_limit_switch,data_volume_limit_unit,data_volume_limit_size,data_volume_alert_percent,monthly_tx_bytes,monthly_rx_bytes,monthly_time,traffic_alined_delta",
3213 multi_data: 1
3214 };
3215 }
3216 function deal(paramD) {
3217 if (paramD) {
3218 var isData = paramD.data_volume_limit_unit == 'data';
3219 var result = {
3220 dataLimitChecked: paramD.data_volume_limit_switch,
3221 dataLimitTypeChecked: isData ? '1' : '0',
3222 limitDataMonth: isData ? paramD.data_volume_limit_size : '0',
3223 alertDataReach: isData ? paramD.data_volume_alert_percent : '0',
3224 limitTimeMonth: isData ? '0' : paramD.data_volume_limit_size,
3225 alertTimeReach: isData ? '0' : paramD.data_volume_alert_percent,
3226 monthlySent: paramD.monthly_tx_bytes == '' ? 0 : paramD.monthly_tx_bytes,
3227 monthlyReceived: paramD.monthly_rx_bytes == '' ? 0 : paramD.monthly_rx_bytes,
3228 monthlyConnectedTime: paramD.monthly_time == '' ? 0 : paramD.monthly_time,
3229 traffic_alined_delta: paramD.traffic_alined_delta == '' ? 0 : paramD.traffic_alined_delta
3230 };
3231 return result;
3232 } else {
3233 return errUnknownObj;
3234 }
3235 }
3236 }
3237 function setTrafficAlertInfo() {
3238 return stuffMake(arguments, {}, prepare, deal, null, true);
3239 function prepare(values, isPost) {
3240 var isData = values.dataLimitTypeChecked == '1';
3241 var valueReq = {
3242 goformId: "DATA_LIMIT_SETTING",
3243 data_volume_limit_switch: values.dataLimitChecked
3244 };
3245 if (values.dataLimitChecked == '1') {
3246 valueReq.data_volume_limit_unit = isData ? 'data' : 'time';
3247 valueReq.data_volume_limit_size = isData ? values.limitDataMonth : values.limitTimeMonth;
3248 valueReq.data_volume_alert_percent = isData ? values.alertDataReach : values.alertTimeReach;
3249 }
3250 return valueReq;
3251 }
3252 function deal(paramD) {
3253 if (paramD) {
3254 return paramD;
3255 } else {
3256 return errUnknownObj;
3257 }
3258 }
3259 }
3260 function getUSSDResponse() {
3261 var callback = arguments[1];
3262 return stuffMake(arguments, {}, prepare, deal, null, true);
3263 function prepare(values, isPost) {
3264 if (values.sendOrReply == "send") {
3265 return {
3266 goformId: "USSD_PROCESS",
3267 USSD_operator: values.operator,
3268 USSD_send_number: values.strUSSDCommand,
3269 notCallback: true
3270 };
3271 } else if (values.sendOrReply == "reply") {
3272 return {
3273 goformId: "USSD_PROCESS",
3274 USSD_operator: values.operator,
3275 USSD_reply_number: values.strUSSDCommand,
3276 notCallback: true
3277 };
3278 }
3279 }
3280 function deal(paramD) {
3281 if (!paramD) {
3282 callback(false, "ussd_fail");
3283 return;
3284 }
3285 if (paramD.result == "success") {
3286 callbackTemp = callback;
3287 getResponse();
3288 } else {
3289 callback(false, "ussd_fail");
3290 }
3291 }
3292 }
3293 function getResponse() {
3294 $.ajax({
3295 url: "/reqproc/proc_get",
3296 data: {
3297 cmd: "ussd_write_flag"
3298 },
3299 cache: false,
3300 async: true,
3301 dataType: "json",
3302 success: function (result) {
3303 if (result.ussd_write_flag == "1") {
3304 callbackTemp(false, "ussd_no_service");
3305 } else if (result.ussd_write_flag == "4" || result.ussd_write_flag == "unknown" || result.ussd_write_flag == "3") {
3306 callbackTemp(false, "ussd_timeout");
3307 } else if (result.ussd_write_flag == "15") {
3308 setTimeout(getResponse, 1000);
3309 } else if (result.ussd_write_flag == "10") {
3310 callbackTemp(false, "ussd_retry");
3311 } else if (result.ussd_write_flag == "99") {
3312 callbackTemp(false, "ussd_unsupport");
3313 } else if (result.ussd_write_flag == "41") {
3314 callbackTemp(false, "operation_not_supported");
3315 } else if (result.ussd_write_flag == "2") {
3316 callbackTemp(false, "network_terminated");
3317 } else if (result.ussd_write_flag == "16") {
3318 $.ajax({
3319 url: "/reqproc/proc_get",
3320 data: {
3321 cmd: "ussd_data_info"
3322 },
3323 dataType: "json",
3324 async: true,
3325 cache: false,
3326 success: function (paramD) {
3327 var content = {};
3328 content.data = paramD.ussd_data;
3329 content.ussd_action = paramD.ussd_action;
3330 content.ussd_dcs = paramD.ussd_dcs;
3331 callbackTemp(true, content);
3332 },
3333 error: function () {
3334 callbackTemp(false, "ussd_info_error");
3335 }
3336 });
3337 } else {
3338 callbackTemp(false, "ussd_fail");
3339 }
3340 },
3341 error: function () {
3342 callbackTemp(false, "ussd_fail");
3343 }
3344 });
3345 }
3346 function USSDReplyCancel(callback) {
3347 $.ajax({
3348 url: "/reqproc/proc_post",
3349 data: {
3350 goformId: "USSD_PROCESS",
3351 USSD_operator: "ussd_cancel"
3352 },
3353 cache: false,
3354 dataType: "json",
3355 success: function (paramD) {
3356 if (paramD.result == "success") {
3357 getCancelResponse();
3358 } else {
3359 callback(false);
3360 }
3361 }
3362 });
3363 function getCancelResponse() {
3364 $.ajax({
3365 url: "/reqproc/proc_get",
3366 data: {
3367 cmd: "ussd_write_flag"
3368 },
3369 cache: false,
3370 async: true,
3371 dataType: "json",
3372 success: function (result) {
3373 if (result.ussd_write_flag == "15") {
3374 setTimeout(getCancelResponse, 1000);
3375 } else if (result.ussd_write_flag == "13") {
3376 callback(true);
3377 } else {
3378 callback(false);
3379 }
3380 },
3381 error: function () {
3382 callback(false);
3383 }
3384 });
3385 }
3386 }
3387 function unlockNetwork() {
3388 var callback = arguments[1];
3389 var checkPoint = 0;
3390 return stuffMake(arguments, {}, prepare, deal, null, true);
3391 function prepare(values) {
3392 return {
3393 goformId: "UNLOCK_NETWORK",
3394 notCallback: true,
3395 unlock_network_code: values.unlock_network_code
3396 };
3397 }
3398 function deal(paramD) {
3399 if (paramD && paramD.result == "success") {
3400 addCallback(checkUnlockNetworkStatus);
3401 } else {
3402 callback({
3403 result: 'fail'
3404 });
3405 }
3406 }
3407 function checkUnlockNetworkStatus() {
3408 if (checkPoint > 5) {
3409 removeCallback(checkUnlockNetworkStatus);
3410 callback({
3411 result: 'fail'
3412 });
3413 } else if (informationAll.simStatus != 'modem_imsi_waitnck') {
3414 removeCallback(checkUnlockNetworkStatus);
3415 callback({
3416 result: 'success'
3417 });
3418 }
3419 checkPoint++;
3420 }
3421 }
3422 function getNetworkUnlockTimes() {
3423 return stuffMake(arguments, {}, prepare, deal, null, false);
3424 function prepare(values, isPost) {
3425 return {
3426 cmd: "unlock_nck_time"
3427 };
3428 }
3429 function deal(paramD) {
3430 if (paramD) {
3431 return paramD;
3432 } else {
3433 return errUnknownObj;
3434 }
3435 }
3436 }
3437 function setUpdateInfoWarning() {
3438 var callback = arguments[1];
3439 return stuffMake(arguments, {}, prepare, deal, null, true);
3440 function prepare(values) {
3441 return {
3442 goformId: "SET_UPGRADE_NOTICE",
3443 upgrade_notice_flag: values.upgrade_notice_flag,
3444 notCallback: true
3445 };
3446 }
3447 function deal(paramD) {
3448 if (paramD.result == "success") {
3449 callback(true);
3450 } else {
3451 callback(false);
3452 }
3453 }
3454 }
3455 function getUpdateInfoWarning() {
3456 return stuffMake(arguments, {}, prepare, deal, null, false);
3457 function prepare(values, isPost) {
3458 return {
3459 cmd: "upgrade_notice_flag"
3460 };
3461 }
3462 function deal(paramD) {
3463 if (paramD) {
3464 return paramD;
3465 } else {
3466 return errUnknownObj;
3467 }
3468 }
3469 }
3470 function getAPStationBasic() {
3471 return stuffMake(arguments, {}, prepare, deal, null, false);
3472 function prepare(values, isPost) {
3473 return {
3474 multi_data: 1,
3475 cmd: "wifi_sta_connection,pswan_priority,wifiwan_priority,ethwan_priority"
3476 };
3477 }
3478 function deal(paramD) {
3479 if (paramD) {
3480 return {
3481 ap_station_enable: paramD.wifi_sta_connection,
3482 ap_station_mode: parseInt(paramD.wifiwan_priority, 10) > parseInt(paramD.pswan_priority, 10) ? "wifi_pref" : "dial_pref"
3483 }
3484 } else {
3485 return errUnknownObj;
3486 }
3487 }
3488 }
3489 function setAPStationBasic() {
3490 var tmp = arguments[0];
3491 return stuffMake(arguments, {}, prepare, deal, null, true);
3492 function prepare(values) {
3493 return {
3494 goformId: "WIFI_STA_CONTROL",
3495 wifi_sta_connection: values.ap_station_enable
3496 };
3497 }
3498 function deal(paramD) {
3499 if (paramD && paramD.result == "success") {
3500 informationAll.ap_station_enable = tmp.ap_station_enable == 1;
3501 return paramD;
3502 } else {
3503 return errUnknownObj;
3504 }
3505 }
3506 }
3507 function refreshAPStationStatus() {
3508 return getAPStationBasic({}, function (paramD) {
3509 informationAll.ap_station_enable = paramD.ap_station_enable == 1;
3510 informationAll.ap_station_mode = paramD.ap_station_mode;
3511 });
3512 }
3513 function getHotspotList() {
3514 return stuffMake(arguments, {}, prepare, deal, null, false);
3515 function prepare(values, isPost) {
3516 var cmdStr = "wifi_profile_num,wifi_profile";
3517 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3518 cmdStr = cmdStr + ",wifi_profile" + i;
3519 }
3520 return {
3521 multi_data: 1,
3522 cmd: cmdStr
3523 };
3524 }
3525 function deal(paramD) {
3526 if (paramD) {
3527 var wifiList = [];
3528 for (var i = 0; i < config.AP_STATION_LIST_LENGTH; i++) {
3529 var wifiStr = "";
3530 if (i == 0) {
3531 wifiStr = paramD.wifi_profile;
3532 } else {
3533 wifiStr = paramD["wifi_profile" + i];
3534 }
3535 var wifiArray = wifiStr.split(";");
3536 for (var j = 0; j < wifiArray.length; j++) {
3537 var item = wifiArray[j].split(",");
3538 if (!item[0]) {
3539 break;
3540 }
3541 var wifiJson = {
3542 profileName: item[0],
3543 fromProvider: item[1],
3544 connectStatus: item[2],
3545 signal: item[3],
3546 ssid: item[4],
3547 authMode: item[5],
3548 encryptType: item[6],
3549 password: item[7] == "0" ? "" : item[7],
3550 keyID: item[8],
3551 mac: item[9]
3552 };
3553 wifiList.push(wifiJson);
3554 }
3555 }
3556 return {
3557 hotspotList: wifiList
3558 };
3559 } else {
3560 return errUnknownObj;
3561 }
3562 }
3563 }
3564 function searchHotspot() {
3565 return stuffMake(arguments, {}, prepare, deal, null, true);
3566 function prepare(values) {
3567 return {
3568 goformId: "WLAN_SET_STA_REFRESH"
3569 };
3570 }
3571 function deal(paramD) {
3572 if (paramD) {
3573 return paramD;
3574 } else {
3575 return errUnknownObj;
3576 }
3577 }
3578 }
3579 function getSearchHotspotList() {
3580 return stuffMake(arguments, {}, prepare, deal, null, false);
3581 function prepare(values, isPost) {
3582 return {
3583 multi_data: 1,
3584 cmd: "scan_finish,EX_APLIST,EX_APLIST1"
3585 }
3586 }
3587 function deal(paramD) {
3588 if (paramD) {
3589 if (paramD.scan_finish == "0") {
3590 return {
3591 scan_finish: "0",
3592 hotspotList: []
3593 };
3594 }
3595 if (paramD.scan_finish == "2") {
3596 return {
3597 scan_finish: "2",
3598 hotspotList: []
3599 };
3600 }
3601 var wifiList = [];
3602 for (var i = 0; i <= 1; i++) {
3603 var wifiStr;
3604 if (i == 0) {
3605 wifiStr = paramD.EX_APLIST;
3606 } else {
3607 wifiStr = paramD.EX_APLIST1;
3608 }
3609 var wifiArray = wifiStr.split(";");
3610 for (var j = 0; j < wifiArray.length; j++) {
3611 var item = wifiArray[j].split(",");
3612 if (!item[0]) {
3613 break;
3614 }
3615 var wifiJson = {
3616 fromProvider: item[0],
3617 connectStatus: item[1],
3618 ssid: item[2],
3619 signal: item[3],
3620 channel: item[4],
3621 authMode: item[5],
3622 encryptType: item[6],
3623 mac: item[7]
3624 }
3625 wifiList.push(wifiJson);
3626 }
3627 }
3628 return {
3629 scan_finish: "1",
3630 hotspotList: wifiList
3631 };
3632 } else {
3633 return errUnknownObj;
3634 }
3635 }
3636 }
3637 function creatHotspotString(hotspot) {
3638 var tmp = [];
3639 tmp.push(hotspot.profileName);
3640 tmp.push(hotspot.fromProvider || "0");
3641 tmp.push(hotspot.connectStatus || "0");
3642 tmp.push(hotspot.signal);
3643 tmp.push(hotspot.ssid);
3644 tmp.push(hotspot.authMode);
3645 tmp.push(hotspot.encryptType);
3646 tmp.push(hotspot.password || "0");
3647 tmp.push(hotspot.keyID);
3648 tmp.push(hotspot.mac);
3649 return tmp.join(",");
3650 }
3651 function saveHotspot() {
3652 return stuffMake(arguments, {}, prepare, deal, null, true);
3653 function prepare(values) {
3654 var apList = values.apList;
3655 var action = "modify";
3656 if (values.profileName == "") {
3657 action = "add";
3658 var newName = (jQuery.fn.jquery + Math.random()).replace(/\D/g, "");
3659 values.profileName = newName;
3660 apList.push({
3661 profileName: newName,
3662 fromProvider: "0",
3663 connectStatus: "0",
3664 signal: values.signal,
3665 ssid: values.ssid,
3666 authMode: values.authMode,
3667 encryptType: values.encryptType,
3668 password: values.password || "0",
3669 keyID: values.keyID,
3670 mac: values.mac
3671 });
3672 }
3673 var wifi = {
3674 "profile0": []
3675 };
3676 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3677 wifi["profile" + i] = [];
3678 }
3679 var activeHotspotStr = "";
3680 for (var i = 0; i < apList.length; i++) {
3681 var hotspotStr = "";
3682 if (values.profileName == apList[i].profileName) {
3683 hotspotStr = creatHotspotString(values);
3684 activeHotspotStr = hotspotStr;
3685 } else {
3686 hotspotStr = creatHotspotString(apList[i]);
3687 }
3688 var index = parseInt(i % 10);
3689 wifi["profile" + index].push(hotspotStr);
3690 }
3691 var profileParams = {
3692 wifi_profile: wifi.profile0.join(";")
3693 };
3694 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3695 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3696 }
3697 var valueReq = $.extend({
3698 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3699 wifi_profile_num: apList.length,
3700 wifi_update_profile: activeHotspotStr,
3701 action: action
3702 }, profileParams);
3703 return valueReq;
3704 }
3705 function deal(paramD) {
3706 if (paramD) {
3707 return paramD;
3708 } else {
3709 return errUnknownObj;
3710 }
3711 }
3712 }
3713 function deleteHotspot() {
3714 return stuffMake(arguments, {}, prepare, deal, null, true);
3715 function prepare(values) {
3716 var apList = values.apList;
3717 var wifi = {
3718 "profile0": []
3719 };
3720 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3721 wifi["profile" + i] = [];
3722 }
3723 var foundDelete = false;
3724 var activeHotspotStr = "";
3725 for (var i = 0; i < apList.length; i++) {
3726 var hotspotStr = creatHotspotString(apList[i]);
3727 if (apList[i].profileName == values.profileName) {
3728 foundDelete = true;
3729 activeHotspotStr = hotspotStr;
3730 continue;
3731 }
3732 var idIndex = i;
3733 if (foundDelete) {
3734 idIndex = i - 1;
3735 }
3736 var index = parseInt(idIndex % 10);
3737 wifi["profile" + index].push(hotspotStr);
3738 }
3739 var num = foundDelete ? apList.length - 1 : apList.length;
3740 var profileParams = {
3741 wifi_profile: wifi.profile0.join(";")
3742 };
3743 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3744 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3745 }
3746 var valueReq = $.extend({
3747 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3748 wifi_profile_num: num,
3749 wifi_update_profile: activeHotspotStr,
3750 action: "delete"
3751 }, profileParams);
3752 return valueReq;
3753 }
3754 function deal(paramD) {
3755 if (paramD) {
3756 return paramD;
3757 } else {
3758 return errUnknownObj;
3759 }
3760 }
3761 }
3762 function connectHotspot() {
3763 return stuffMake(arguments, {}, prepare, deal, null, true);
3764 function prepare(values) {
3765 return {
3766 goformId: "WLAN_SET_STA_CON",
3767 EX_SSID1: values.EX_SSID1,
3768 EX_AuthMode: values.EX_AuthMode,
3769 EX_EncrypType: values.EX_EncrypType,
3770 EX_DefaultKeyID: values.EX_DefaultKeyID,
3771 EX_WEPKEY: values.EX_WEPKEY,
3772 EX_WPAPSK1: values.EX_WPAPSK1,
3773 EX_wifi_profile: values.EX_wifi_profile,
3774 EX_mac: values.EX_mac
3775 };
3776 }
3777 function deal(paramD) {
3778 if (paramD && (paramD.result == "success" || paramD.result == "processing")) {
3779 return paramD;
3780 } else {
3781 return errUnknownObj;
3782 }
3783 }
3784 }
3785 function disconnectHotspot() {
3786 return stuffMake(arguments, {}, prepare, deal, null, true);
3787 function prepare(values) {
3788 return {
3789 goformId: "WLAN_SET_STA_DISCON"
3790 };
3791 }
3792 function deal(paramD) {
3793 if (paramD && paramD.result == "success") {
3794 return paramD;
3795 } else {
3796 return errUnknownObj;
3797 }
3798 }
3799 }
3800 function getOpMode() {
3801 return stuffMake(arguments, {}, prepare, deal, null, false);
3802 function prepare(values, isPost) {
3803 return {
3804 multi_data: 1,
3805 cmd: "blc_wan_mode,blc_wan_auto_mode,loginfo,ppp_status,rj45_state,ethwan_mode"
3806 };
3807 }
3808 function deal(paramD) {
3809 if (paramD) {
3810 var result = {};
3811 if (paramD.blc_wan_mode == 'AUTO') {
3812 result.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
3813 } else {
3814 result.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
3815 }
3816 result.loginfo = paramD.loginfo;
3817 result.ppp_status = paramD.ppp_status;
3818 result.rj45_state = (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state;
3819 result.ethwan_mode = paramD.ethwan_mode.toUpperCase();
3820 return result;
3821 } else {
3822 return errUnknownObj;
3823 }
3824 }
3825 }
3826 function getRj45PlugState() {
3827 return stuffMake(arguments, {}, prepare, deal, null, false);
3828 function prepare(values, isPost) {
3829 return {
3830 cmd: "rj45_plug"
3831 };
3832 }
3833 function deal(paramD) {
3834 if (paramD) {
3835 var result = {};
3836 result.rj45_plug = paramD.rj45_plug == "" ? "wan_lan_off" : paramD.rj45_plug;
3837 return result;
3838 } else {
3839 return errUnknownObj;
3840 }
3841 }
3842 }
3843 function checkOpMode(opmode, rj45state) {
3844 if (config.RJ45_SUPPORT) {
3845 if (rj45state == "dead" || rj45state == "") {
3846 return 'PPP';
3847 } else if (!opmode || opmode == "undefined") {
3848 if (rj45state == "working") {
3849 return 'PPPOE';
3850 } else {
3851 return 'PPP';
3852 }
3853 } else {
3854 return opmode;
3855 }
3856 } else {
3857 return 'PPP';
3858 }
3859 }
3860 function SetOperationMode(values, callback) {
3861 return stuffMake(arguments, {}, prepare, deal, null, true);
3862 function prepare(values) {
3863 var valueReq = $.extend({
3864 goformId: "OPERATION_MODE"
3865 }, values);
3866 return valueReq;
3867 }
3868 function deal(paramD) {
3869 if (paramD && paramD.result == "success") {
3870 return paramD;
3871 } else {
3872 return errUnknownObj;
3873 }
3874 }
3875 }
3876 function getPppoeParams() {
3877 return stuffMake(arguments, {}, prepare, deal, null, false);
3878 function prepare(values, isPost) {
3879 return {
3880 multi_data: 1,
3881 cmd: "opms_wan_auto_mode,ethwan_mode,pppoe_username,pppoe_cc,ethwan_dialmode,ppp_status,static_wan_ipaddr,static_wan_netmask,static_wan_gateway,static_wan_primary_dns,static_wan_secondary_dns,rj45_state,lan_ipaddr,lan_netmask"
3882 };
3883 }
3884 function deal(paramD) {
3885 if (paramD) {
3886 return {
3887 opms_wan_auto_mode: paramD.opms_wan_auto_mode,
3888 ethwan_mode: paramD.ethwan_mode.toUpperCase(),
3889 pppoe_username: paramD.pppoe_username,
3890 pppoe_cc: paramD.pppoe_cc,
3891 ethwan_dialmode: paramD.ethwan_dialmode == "manual" ? "manual_dial" : "auto_dial",
3892 ppp_status: paramD.ppp_status,
3893 static_wan_ipaddr: paramD.static_wan_ipaddr,
3894 static_wan_netmask: paramD.static_wan_netmask,
3895 static_wan_gateway: paramD.static_wan_gateway,
3896 static_wan_primary_dns: paramD.static_wan_primary_dns,
3897 static_wan_secondary_dns: paramD.static_wan_secondary_dns,
3898 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
3899 lan_ipaddr: paramD.lan_ipaddr,
3900 lan_netmask: paramD.lan_netmask
3901 }
3902 } else {
3903 return errUnknownObj;
3904 }
3905 }
3906 }
3907 function setPppoeDialMode(values, callback) {
3908 return stuffMake(arguments, {}, prepare, deal, null, true);
3909 function prepare(values) {
3910 var valueReq = $.extend({
3911 notCallback: true
3912 }, values);
3913 return valueReq;
3914 }
3915 function deal(paramD) {
3916 if (paramD.result == "success") {
3917 callback({
3918 result: true
3919 });
3920 } else {
3921 callback({
3922 result: false
3923 });
3924 }
3925 }
3926 }
3927 function getSntpParams(values, callback) {
3928 return stuffMake(arguments, {}, prepare, deal, null, false);
3929 function prepare(values, isPost) {
3930 return {
3931 multi_data: 1,
3932 cmd: "sntp_year,sntp_month,sntp_day,sntp_hour,sntp_minute,sntp_second,sntp_time_set_mode,sntp_static_server0,sntp_static_server1,sntp_static_server2,sntp_server0,sntp_server1,sntp_server2,sntp_server3,sntp_server4,sntp_server5,sntp_server6,sntp_server7,sntp_server8,sntp_server9,sntp_other_server0,sntp_other_server1,sntp_other_server2,sntp_timezone,sntp_timezone_index,sntp_dst_enable,ppp_status,sntp_process_result,rj45_state"
3933 };
3934 }
3935 function deal(paramD) {
3936 if (paramD) {
3937 var sntp_servers = getSntpServers(paramD);
3938 return {
3939 sntp_year: paramD.sntp_year,
3940 sntp_month: paramD.sntp_month,
3941 sntp_day: paramD.sntp_day,
3942 sntp_hour: paramD.sntp_hour,
3943 sntp_minute: paramD.sntp_minute,
3944 sntp_second: paramD.sntp_second,
3945 sntp_time_set_mode: paramD.sntp_time_set_mode,
3946 sntp_servers: sntp_servers,
3947 sntp_server0: paramD.sntp_server0,
3948 sntp_server1: paramD.sntp_server1,
3949 sntp_server2: paramD.sntp_server2,
3950 sntp_static_server0: paramD.sntp_static_server0,
3951 sntp_static_server1: paramD.sntp_static_server1,
3952 sntp_static_server2: paramD.sntp_static_server2,
3953 sntp_other_server0: paramD.sntp_other_server0,
3954 sntp_other_server1: paramD.sntp_other_server1,
3955 sntp_other_server2: paramD.sntp_other_server2,
3956 sntp_timezone: paramD.sntp_timezone,
3957 sntp_timezone_index: paramD.sntp_timezone_index ? paramD.sntp_timezone_index : "0",
3958 sntp_dst_enable: paramD.sntp_dst_enable,
3959 ppp_status: paramD.ppp_status,
3960 blc_wan_mode: informationAll.blc_wan_mode,
3961 sntp_process_result: paramD.sntp_process_result,
3962 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state
3963 }
3964 } else {
3965 return errUnknownObj;
3966 }
3967 }
3968 function getSntpServers(paramD) {
3969 var serverArray = [];
3970 for (var i = 0; i < 3; i++) {
3971 var tmp = "sntp_static_server" + (i).toString();
3972 if (paramD[tmp] != "") {
3973 var obj = {};
3974 obj.name = paramD[tmp];
3975 obj.value = paramD[tmp];
3976 serverArray.push(obj);
3977 }
3978 }
3979 var otherArray = [{
3980 name: "Other",
3981 value: "Other"
3982 }, {
3983 name: "NONE",
3984 value: ""
3985 }
3986 ];
3987 for (var j = 0; j < 2; j++) {
3988 serverArray.push(otherArray[j]);
3989 }
3990 return serverArray;
3991 }
3992 }
3993 function setSNTPDate(values, callback) {
3994 return stuffMake(arguments, {}, prepare, deal, null, true);
3995 function prepare(values) {
3996 var valueReq = $.extend({}, values);
3997 return valueReq;
3998 }
3999 function deal(paramD) {
4000 if (paramD && paramD.result == "success") {
4001 return paramD;
4002 } else {
4003 return errUnknownObj;
4004 }
4005 }
4006 }
4007 function setSntpSetting(values, callback) {
4008 var valueReq = $.extend({}, values); {
4009 $.post("reqproc/proc_post", valueReq, function (paramD) {
4010 if (paramD && paramD.result == "success") {
4011 if (values.manualsettime == "auto") {
4012 setTimeout(checkSyncStatus, 2000);
4013 callback(paramD);
4014 } else {
4015 callback(true);
4016 }
4017 } else if (paramD && paramD.result == "processing") {
4018 callback(paramD);
4019 } else {
4020 callback(false);
4021 }
4022 }, "json");
4023 }
4024 function checkSyncStatus() {
4025 $.ajax({
4026 url: "reqproc/proc_get",
4027 dataType: "json",
4028 data: {
4029 cmd: "sntp_process_result"
4030 },
4031 cache: false,
4032 async: false,
4033 success: function (paramD) {
4034 if (paramD.sntp_process_result == "failure") {
4035 callback(false);
4036 } else if (paramD.sntp_process_result == "success") {
4037 callback(true);
4038 } else {
4039 setTimeout(checkSyncStatus, 2000);
4040 }
4041 },
4042 error: function () {
4043 callback(false);
4044 }
4045 });
4046 }
4047 }
4048 function addUrlFilterRule(values, callback) {
4049 return stuffMake(arguments, {}, prepare, deal, null, true);
4050 function prepare(values) {
4051 var valueReq = $.extend({}, values);
4052 return valueReq;
4053 }
4054 function deal(paramD) {
4055 if (paramD && paramD.result == "success") {
4056 return paramD;
4057 } else {
4058 return errUnknownObj;
4059 }
4060 }
4061 }
4062 function getUrlFilterList() {
4063 return stuffMake(arguments, {}, prepare, deal, null, false);
4064 function prepare(values, isPost) {
4065 return {
4066 cmd: "websURLFilters"
4067 };
4068 }
4069 function deal(paramD) {
4070 var urlFilterRules = [];
4071 if (paramD) {
4072 if (paramD.websURLFilters.length == 0) {
4073 return {
4074 urlFilterRules: []
4075 };
4076 } else {
4077 var tempArray = paramD.websURLFilters.split(";");
4078 for (var i = 0; i < tempArray.length; i++) {
4079 var aRule = {};
4080 aRule.index = i;
4081 aRule.url = tempArray[i];
4082 urlFilterRules.push(aRule);
4083 }
4084 return {
4085 urlFilterRules: urlFilterRules
4086 };
4087 }
4088 } else {
4089 return errUnknownObj;
4090 }
4091 }
4092 }
4093 function deleteSelectedRules(values, callback) {
4094 return stuffMake(arguments, {}, prepare, deal, null, true);
4095 function prepare(values) {
4096 var valueReq = $.extend({}, values);
4097 return valueReq;
4098 }
4099 function deal(paramD) {
4100 if (paramD && paramD.result == "success") {
4101 return paramD;
4102 } else {
4103 return errUnknownObj;
4104 }
4105 }
4106 }
4107 function getWdsInfo() {
4108 return stuffMake(arguments, {}, prepare, deal, null, false);
4109 function prepare(values, isPost) {
4110 return {
4111 multi_data: "1",
4112 cmd: "wifi_wds_mode,wifi_wds_ssid,wifi_wds_AuthMode,wifi_wds_EncrypType,wifi_wds_WPAPSK1,wifi_cur_state "
4113 };
4114 }
4115 function deal(paramD) {
4116 if (paramD) {
4117 return {
4118 currentMode: paramD.wifi_wds_mode,
4119 wdsSSID: paramD.wifi_wds_ssid,
4120 wdsAuthMode: paramD.wifi_wds_AuthMode,
4121 wdsEncrypType: paramD.wifi_wds_EncrypType,
4122 wdsWPAPSK1: paramD.wifi_wds_WPAPSK1,
4123 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0"
4124 };
4125 } else {
4126 return errUnknownObj;
4127 }
4128 }
4129 }
4130 function setWDS(values, callback) {
4131 return stuffMake(arguments, {}, prepare, deal, null, true);
4132 function prepare(values) {
4133 var valueReq = $.extend({}, values);
4134 return valueReq;
4135 }
4136 function deal(paramD) {
4137 if (paramD && paramD.result == "success") {
4138 return paramD;
4139 } else {
4140 return errUnknownObj;
4141 }
4142 }
4143 }
4144 function getSyslogInfo() {
4145 return stuffMake(arguments, {}, prepare, deal, null, false);
4146 function prepare(values, isPost) {
4147 return {
4148 multi_data: "1",
4149 cmd: "syslog_mode,debug_level"
4150 };
4151 }
4152 function deal(paramD) {
4153 if (paramD) {
4154 return {
4155 currentMode: paramD.syslog_mode,
4156 debugLevel: paramD.debug_level
4157 };
4158 } else {
4159 return errUnknownObj;
4160 }
4161 }
4162 }
4163 function setSysLog(values, callback) {
4164 return stuffMake(arguments, {}, prepare, deal, null, true);
4165 function prepare(values) {
4166 var valueReq = $.extend({}, values);
4167 return valueReq;
4168 }
4169 function deal(paramD) {
4170 if (paramD && paramD.result == "success") {
4171 return paramD;
4172 } else {
4173 return errUnknownObj;
4174 }
4175 }
4176 }
4177 function getMacFilterInfo() {
4178 return stuffMake(arguments, {}, prepare, deal, null, false);
4179 function prepare(values, isPost) {
4180 return {
4181 multi_data: "1",
4182 cmd: "ACL_mode,wifi_mac_black_list,wifi_hostname_black_list,wifi_cur_state,user_ip_addr,client_mac_address,wifi_mac_white_list"
4183 };
4184 }
4185 function deal(paramD) {
4186 if (paramD) {
4187 return {
4188 ACL_mode: paramD.ACL_mode,
4189 wifi_mac_black_list: paramD.wifi_mac_black_list,
4190 wifi_hostname_black_list: paramD.wifi_hostname_black_list,
4191 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0",
4192 user_ip_addr: paramD.user_ip_addr,
4193 client_mac_address: paramD.client_mac_address,
4194 wifi_mac_white_list: paramD.wifi_mac_white_list
4195 };
4196 } else {
4197 return errUnknownObj;
4198 }
4199 }
4200 }
4201 function setMacFilter() {
4202 return stuffMake(arguments, {}, prepare, deal, null, true);
4203 function prepare(values) {
4204 var valueReq = $.extend({
4205 goformId: 'WIFI_MAC_FILTER',
4206 }, values);
4207 return valueReq;
4208 }
4209 function deal(paramD) {
4210 if (paramD && paramD.result == "success") {
4211 return paramD;
4212 } else {
4213 return errUnknownObj;
4214 }
4215 }
4216 }
4217 function getFastbootSetting() {
4218 return stuffMake(arguments, {}, prepare, deal, null, false);
4219 function prepare(values) {
4220 return {
4221 cmd: "mgmt_quicken_power_on,need_hard_reboot,need_sim_pin",
4222 multi_data: 1
4223 };
4224 }
4225 function deal(paramD) {
4226 return {
4227 fastbootEnabled: paramD.mgmt_quicken_power_on == '1' ? '1' : '0',
4228 need_hard_reboot: paramD.need_hard_reboot,
4229 need_sim_pin: paramD.need_sim_pin == 'yes' ? 'yes' : 'no'
4230 };
4231 }
4232 }
4233 function setFastbootSetting() {
4234 return stuffMake(arguments, {}, prepare, deal, null, true);
4235 function prepare(values) {
4236 return {
4237 goformId: "MGMT_CONTROL_POWER_ON_SPEED",
4238 mgmt_quicken_power_on: values.fastbootEnabled
4239 };
4240 }
4241 function deal(paramD) {
4242 if (paramD && paramD.result == "success") {
4243 return paramD;
4244 } else {
4245 return errUnknownObj;
4246 }
4247 }
4248 }
4249 function turnOffDevice() {
4250 return stuffMake(arguments, {}, prepare, deal, null, true);
4251 function prepare(values, isPost) {
4252 var valueReq = {};
4253 valueReq.goformId = "TURN_OFF_DEVICE";
4254 return valueReq;
4255 }
4256 function deal(paramD) {
4257 if (paramD) {
4258 return paramD;
4259 } else {
4260 return errUnknownObj;
4261 }
4262 }
4263 }
4264 function restart() {
4265 return stuffMake(arguments, {}, prepare, deal, null, true);
4266 function prepare(values, isPost) {
4267 var valueReq = {};
4268 valueReq.goformId = "REBOOT_DEVICE";
4269 return valueReq;
4270 }
4271 function deal(paramD) {
4272 if (paramD) {
4273 return paramD;
4274 } else {
4275 return errUnknownObj;
4276 }
4277 }
4278 }
4279 function getScheduleSetting() {
4280 return stuffMake(arguments, {}, prepare, deal, null, false);
4281 function prepare(values, isPost) {
4282 var valueReq = {};
4283 valueReq.cmd = "schedule_restart_enable,schedule_restart_hour,schedule_restart_minute";
4284 valueReq.multi_data = 1;
4285 return valueReq;
4286 }
4287 function deal(paramD) {
4288 if (paramD) {
4289 var result = {};
4290 result.scheduleSetting = paramD.schedule_restart_enable == "1" ? "1" : "0";
4291 result.scheduleHour = paramD.schedule_restart_hour;
4292 result.scheduleMinute = paramD.schedule_restart_minute;
4293 return result;
4294 } else {
4295 return errUnknownObj;
4296 }
4297 }
4298 }
4299 function setScheduleSetting() {
4300 return stuffMake(arguments, {}, prepare, deal, null, true);
4301 function prepare(values, isPost) {
4302 var valueReq = {};
4303 valueReq.goformId = "SCHEDULE_SETTING";
4304 valueReq.scheduleEnabled = values.scheduleSetting;
4305 if (valueReq.scheduleEnabled == '1') {
4306 valueReq.scheduleHour = values.scheduleHour;
4307 valueReq.scheduleMinute = values.scheduleMinute;
4308 }
4309 return valueReq;
4310 }
4311 function deal(paramD) {
4312 if (paramD) {
4313 return paramD;
4314 } else {
4315 return errUnknownObj;
4316 }
4317 }
4318 }
4319 function getCwmpSetting() {
4320 return stuffMake(arguments, {}, prepare, deal, null, false);
4321 function prepare(values, isPost) {
4322 var valueReq = {};
4323 valueReq.cmd = "cwmp_enable,acs_url,acs_username,acs_password,periodic_enable,periodic_interval,cpe_username,cpe_password";
4324 valueReq.multi_data = 1;
4325 return valueReq;
4326 }
4327 function deal(paramD) {
4328 if (paramD) {
4329 var result = {};
4330 result.cwmpSetting = paramD.cwmp_enable == "1" ? "1" : "0";
4331 result.acsUrl = paramD.acs_url;
4332 result.acsUsername = paramD.acs_username;
4333 result.acsPassword = paramD.acs_password;
4334 result.periodicEnabled = paramD.periodic_enable == "1" ? "1" : "0";
4335 result.periodicInterval = paramD.periodic_interval;
4336 result.cpeUsername = paramD.cpe_username;
4337 result.cpePassword = paramD.cpe_password;
4338 return result;
4339 } else {
4340 return errUnknownObj;
4341 }
4342 }
4343 }
4344 function setCwmpSetting() {
4345 return stuffMake(arguments, {}, prepare, deal, null, true);
4346 function prepare(values, isPost) {
4347 var valueReq = {};
4348 valueReq.goformId = "CWMP_SETTING";
4349 valueReq.cwmpEnabled = values.cwmpSetting;
4350 if (valueReq.cwmpEnabled == '1') {
4351 valueReq.acsUrl = values.acsUrl;
4352 valueReq.acsUsername = values.acsUsername;
4353 valueReq.acsPassword = values.acsPassword;
4354 valueReq.periodicEnabled = values.periodicEnabled;
4355 if (valueReq.periodicEnabled == '1') {
4356 valueReq.periodicInterval = values.periodicInterval;
4357 }
4358 valueReq.cpeUsername = values.cpeUsername;
4359 valueReq.cpePassword = values.cpePassword;
4360 }
4361 return valueReq;
4362 }
4363 function deal(paramD) {
4364 if (paramD) {
4365 return paramD;
4366 } else {
4367 return errUnknownObj;
4368 }
4369 }
4370 }
4371 function getNewVersionState() {
4372 return stuffMake(arguments, {}, prepare, deal, null, false);
4373 function prepare(values, isPost) {
4374 var valueReq = {};
4375 valueReq.cmd = "fota_new_version_state,fota_current_upgrade_state,fota_package_already_download";
4376 valueReq.multi_data = 1;
4377 return valueReq;
4378 }
4379 function deal(paramD) {
4380 if (paramD) {
4381 var hasNewVersion = (paramD.fota_new_version_state == 'has_critical' || paramD.fota_new_version_state == 'has_optional' || paramD.fota_new_version_state == 'already_has_pkg');
4382 paramD.hasNewVersion = hasNewVersion;
4383 return paramD;
4384 } else {
4385 return errUnknownObj;
4386 }
4387 }
4388 }
4389 function getMandatory() {
4390 return stuffMake(arguments, {}, prepare, deal, null, false);
4391 function prepare(values, isPost) {
4392 var valueReq = {};
4393 if (config.UPGRADE_TYPE == "OTA") {
4394 valueReq.cmd = "is_mandatory";
4395 } else {
4396 valueReq.cmd = "fota_new_version_state";
4397 }
4398 return valueReq;
4399 }
4400 function deal(paramD) {
4401 if (paramD) {
4402 if (config.UPGRADE_TYPE == "OTA") {
4403 return {
4404 "is_mandatory": paramD.is_mandatory == "1"
4405 };
4406 } else {
4407 return {
4408 "is_mandatory": paramD.fota_new_version_state == "has_critical"
4409 };
4410 }
4411 } else {
4412 return errUnknownObj;
4413 }
4414 }
4415 }
4416 function getUpgradeResult() {
4417 return stuffMake(arguments, {}, prepare, deal, null, false);
4418 function prepare(values, isPost) {
4419 var valueReq = {};
4420 valueReq.cmd = "upgrade_result";
4421 return valueReq;
4422 }
4423 function deal(paramD) {
4424 if (paramD) {
4425 return paramD;
4426 } else {
4427 return errUnknownObj;
4428 }
4429 }
4430 }
4431 function getCurrentUpgradeState() {
4432 return stuffMake(arguments, {}, prepare, deal, null, false);
4433 function prepare(values, isPost) {
4434 var valueReq = {};
4435 valueReq.cmd = "fota_current_upgrade_state";
4436 return valueReq;
4437 }
4438 function deal(paramD) {
4439 if (paramD) {
4440 paramD.current_upgrade_state = paramD.fota_current_upgrade_state;
4441 return paramD;
4442 } else {
4443 return errUnknownObj;
4444 }
4445 }
4446 }
4447 function getPackSizeInfo() {
4448 return stuffMake(arguments, {}, prepare, deal, null, false);
4449 function prepare(values, isPost) {
4450 var valueReq = {};
4451 valueReq.cmd = "fota_pkg_total_size,fota_dl_pkg_size";
4452 valueReq.multi_data = 1;
4453 return valueReq;
4454 }
4455 function deal(paramD) {
4456 if (paramD) {
4457 return paramD;
4458 } else {
4459 return errUnknownObj;
4460 }
4461 }
4462 }
4463 function setUpgradeSelectOp() {
4464 return stuffMake(arguments, {}, prepare, deal, null, true);
4465 function prepare(values, isPost) {
4466 var valueReq = {};
4467 valueReq.goformId = "IF_UPGRADE";
4468 valueReq.select_op = values.selectOp;
4469 if (valueReq.select_op == 'check') {
4470 valueReq.ota_manual_check_roam_state = 1;
4471 }
4472 return valueReq;
4473 }
4474 function deal(paramD) {
4475 if (paramD) {
4476 return paramD;
4477 } else {
4478 return errUnknownObj;
4479 }
4480 }
4481 }
4482 function getOTAUpdateSetting() {
4483 return stuffMake(arguments, {}, prepare, deal, null, false);
4484 function prepare(values, isPost) {
4485 var valueReq = {};
4486 valueReq.cmd = "fota_updateMode,fota_updateIntervalDay,fota_allowRoamingUpdate";
4487 valueReq.multi_data = 1;
4488 return valueReq;
4489 }
4490 function deal(paramD) {
4491 if (paramD) {
4492 return {
4493 updateMode: paramD.fota_updateMode,
4494 updateIntervalDay: paramD.fota_updateIntervalDay,
4495 allowRoamingUpdate: paramD.fota_allowRoamingUpdate
4496 };
4497 } else {
4498 return errUnknownObj;
4499 }
4500 }
4501 }
4502 function setOTAUpdateSetting() {
4503 return stuffMake(arguments, {}, prepare, deal, null, true);
4504 function prepare(values, isPost) {
4505 var valueReq = {};
4506 valueReq.goformId = "SetUpgAutoSetting";
4507 valueReq.UpgMode = values.updateMode;
4508 valueReq.UpgIntervalDay = values.updateIntervalDay;
4509 valueReq.UpgRoamPermission = values.allowRoamingUpdate;
4510 return valueReq;
4511 }
4512 function deal(paramD) {
4513 if (paramD && paramD.result == "success") {
4514 return paramD;
4515 } else {
4516 return errUnknownObj;
4517 }
4518 }
4519 }
4520 function getManualOTAUpdateSetting() {
4521 return stuffMake(arguments, {}, prepare, deal, null, false);
4522 function prepare(values, isPost) {
4523 var valueReq = {};
4524 valueReq.cmd = "fota_manualUpgradeURL";
4525 valueReq.multi_data = 1;
4526 return valueReq;
4527 }
4528 function deal(paramD) {
4529 if (paramD) {
4530 return {
4531 updateURL: paramD.fota_manualUpgradeURL
4532 };
4533 } else {
4534 return errUnknownObj;
4535 }
4536 }
4537 }
4538 function setManualOTAUpdateSetting() {
4539 return stuffMake(arguments, {}, prepare, deal, null, true);
4540 function prepare(values, isPost) {
4541 var valueReq = {};
4542 valueReq.goformId = "SetUpgManualSetting";
4543 valueReq.UpgURL = values.updateURL;
4544 return valueReq;
4545 }
4546 function deal(paramD) {
4547 if (paramD && paramD.result == "success") {
4548 return paramD;
4549 } else {
4550 return errUnknownObj;
4551 }
4552 }
4553 }
4554 function getOTAlastCheckTime() {
4555 return getParams({
4556 nv: ['dm_last_check_time']
4557 }, arguments[1], arguments[2]);
4558 }
4559 function getSignalStrength() {
4560 return getParams({
4561 nv: ['network_type', 'sub_network_type', 'rssi', 'rscp', 'lte_rsrp']
4562 }, arguments[1], arguments[2]);
4563 }
4564 function clearUpdateResult() {
4565 return stuffMake(arguments, {}, prepare, deal, null, true);
4566 function prepare(values, isPost) {
4567 var valueReq = {};
4568 valueReq.goformId = "RESULT_RESTORE";
4569 return valueReq;
4570 }
4571 function deal(paramD) {
4572 if (paramD && paramD.result == "success") {
4573 return paramD;
4574 } else {
4575 return errUnknownObj;
4576 }
4577 }
4578 }
4579 function childGroupList() {
4580 return stuffMake(arguments, {}, prepare, deal, null, false);
4581 function prepare(values, isPost) {
4582 var valueReq = {
4583 cmd: "childGroupList"
4584 };
4585 return valueReq;
4586 }
4587 function deal(paramD) {
4588 if (paramD && (paramD.childGroupList || paramD.devices)) {
4589 return paramD;
4590 } else {
4591 return {
4592 devices: []
4593 };
4594 }
4595 }
4596 }
4597 function addChildGroup() {
4598 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4599 : {
4600 errorType: 'no_auth'
4601 }, prepare, deal, null, true);
4602 function prepare(values, isPost) {
4603 var valueReq = {
4604 goformId: "ADD_DEVICE",
4605 mac: values.macAddress
4606 };
4607 return valueReq;
4608 }
4609 function deal(paramD) {
4610 if (paramD && paramD.result == 'success') {
4611 return paramD;
4612 } else {
4613 return errUnknownObj;
4614 }
4615 }
4616 }
4617 function removeChildGroup() {
4618 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4619 : {
4620 errorType: 'no_auth'
4621 }, prepare, deal, null, true);
4622 function prepare(values, isPost) {
4623 var valueReq = {
4624 goformId: "DEL_DEVICE",
4625 mac: values.mac
4626 };
4627 return valueReq;
4628 }
4629 function deal(paramD) {
4630 if (paramD && paramD.result == 'success') {
4631 return paramD;
4632 } else {
4633 return errUnknownObj;
4634 }
4635 }
4636 }
4637 function checkCurrentUserInChildGroup(devices) {
4638 if (typeof config.currentUserInChildGroup == "undefined") {
4639 var childGroupDevice = [];
4640 if (typeof devices != "undefined") {
4641 childGroupDevice = devices;
4642 } else {
4643 childGroupDevice = childGroupList({}).devices;
4644 }
4645 var userMacAddr = getUserMacAddr({}).get_user_mac_addr;
4646 var found = _.find(childGroupDevice, function (item) {
4647 return item.mac == userMacAddr;
4648 });
4649 config.currentUserInChildGroup = typeof found != 'undefined';
4650 return {
4651 result: typeof found != 'undefined'
4652 };
4653 }
4654 return {
4655 result: config.currentUserInChildGroup
4656 };
4657 }
4658 function getUserMacAddr() {
4659 return getParams({
4660 nv: 'get_user_mac_addr'
4661 }, arguments[1], arguments[2]);
4662 }
4663 function getHostNameList() {
4664 return stuffMake(arguments, {}, prepare, deal, null, false);
4665 function prepare(values, isPost) {
4666 var valueReq = {
4667 cmd: "hostNameList"
4668 };
4669 return valueReq;
4670 }
4671 function deal(paramD) {
4672 if (paramD && (paramD.hostNameList || paramD.devices)) {
4673 return paramD;
4674 } else {
4675 return {
4676 devices: []
4677 };
4678 }
4679 }
4680 }
4681 function editHostName() {
4682 return stuffMake(arguments, {}, prepare, deal, null, true);
4683 function prepare(values, isPost) {
4684 var valueReq = {
4685 goformId: "EDIT_HOSTNAME",
4686 mac: values.mac,
4687 hostname: values.hostname
4688 };
4689 return valueReq;
4690 }
4691 function deal(paramD) {
4692 if (paramD && paramD.result == 'success') {
4693 return paramD;
4694 } else {
4695 return errUnknownObj;
4696 }
4697 }
4698 }
4699 function getSiteWhiteList() {
4700 return stuffMake(arguments, {}, prepare, deal, null, false);
4701 function prepare(values, isPost) {
4702 var valueReq = {
4703 cmd: "site_white_list"
4704 };
4705 return valueReq;
4706 }
4707 function deal(paramD) {
4708 if (paramD && (paramD.site_white_list || paramD.siteList)) {
4709 return paramD;
4710 } else {
4711 return {
4712 siteList: []
4713 };
4714 }
4715 }
4716 }
4717 function removeSiteWhite() {
4718 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4719 : {
4720 errorType: 'no_auth'
4721 }, prepare, deal, null, true);
4722 function prepare(values, isPost) {
4723 var valueReq = {
4724 goformId: "REMOVE_WHITE_SITE",
4725 ids: values.ids.join(',')
4726 };
4727 return valueReq;
4728 }
4729 function deal(paramD) {
4730 if (paramD && paramD.result == 'success') {
4731 return paramD;
4732 } else {
4733 return errUnknownObj;
4734 }
4735 }
4736 }
4737 function saveSiteWhite() {
4738 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4739 : {
4740 errorType: 'no_auth'
4741 }, prepare, deal, null, true);
4742 function prepare(values, isPost) {
4743 var valueReq = {
4744 goformId: "ADD_WHITE_SITE",
4745 name: values.name,
4746 site: values.site
4747 };
4748 return valueReq;
4749 }
4750 function deal(paramD) {
4751 if (paramD && paramD.result == 'success') {
4752 return paramD;
4753 } else {
4754 return errUnknownObj;
4755 }
4756 }
4757 }
4758 function getTimeLimited() {
4759 var defaultResult = {
4760 '0': [],
4761 '1': [],
4762 '2': [],
4763 '3': [],
4764 '4': [],
4765 '5': [],
4766 '6': []
4767 };
4768 return stuffMake(arguments, {}, prepare, deal, null, false);
4769 function prepare(values, isPost) {
4770 var valueReq = {
4771 cmd: "time_limited"
4772 };
4773 return valueReq;
4774 }
4775 function deal(paramD) {
4776 if (paramD) {
4777 return parseTimeLimited(paramD);
4778 } else {
4779 return defaultResult;
4780 }
4781 }
4782 function parseTimeLimited(paramD) {
4783 if (paramD.time_limited == '') {
4784 return {
4785 time_limited: []
4786 };
4787 }
4788 var weeks = paramD.time_limited.split(';');
4789 _.each(weeks, function (week) {
4790 var weekTime = week.split('+');
4791 if (weekTime.length == 2) {
4792 defaultResult[weekTime[0]] = weekTime[1].split(',');
4793 }
4794 });
4795 return defaultResult;
4796 }
4797 }
4798 function saveTimeLimited() {
4799 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4800 : {
4801 errorType: 'no_auth'
4802 }, prepare, deal, null, true);
4803 function prepare(values, isPost) {
4804 var valueReq = {
4805 goformId: "SAVE_TIME_LIMITED",
4806 time_limited: values.time
4807 };
4808 return valueReq;
4809 }
4810 function deal(paramD) {
4811 if (paramD && paramD.result == 'success') {
4812 return paramD;
4813 } else {
4814 return errUnknownObj;
4815 }
4816 }
4817 }
4818 function getTsw() {
4819 return stuffMake(arguments, {}, prepare, deal, null, false);
4820 function prepare(values, isPost) {
4821 var valueReq = {
4822 cmd: "openEnable,closeEnable,openTime,closeTime",
4823 multi_data: '1'
4824 };
4825 return valueReq;
4826 }
4827 function deal(paramD) {
4828 if (paramD) {
4829 if (paramD.openTime.indexOf(':') != -1) {
4830 var open = paramD.openTime.split(':');
4831 paramD.openH = leftInsert(open[0], 2, '0');
4832 paramD.openM = leftInsert(open[1], 2, '0');
4833 } else {
4834 paramD.openH = '06';
4835 paramD.openM = '00';
4836 }
4837 if (paramD.closeTime.indexOf(':') != -1) {
4838 var close = paramD.closeTime.split(':');
4839 paramD.closeH = leftInsert(close[0], 2, '0');
4840 paramD.closeM = leftInsert(close[1], 2, '0');
4841 } else {
4842 paramD.closeH = '22';
4843 paramD.closeM = '00';
4844 }
4845 return paramD;
4846 } else {
4847 return errUnknownObj;
4848 }
4849 }
4850 }
4851 function saveTsw() {
4852 return stuffMake(arguments, {}, prepare, deal, null, true);
4853 function prepare(values, isPost) {
4854 var valueReq = {
4855 goformId: "SAVE_TSW",
4856 openEnable: values.openEnable,
4857 closeEnable: values.closeEnable
4858 };
4859 if (values.openEnable == '1') {
4860 valueReq.openTime = values.openTime;
4861 valueReq.closeTime = values.closeTime;
4862 }
4863 return valueReq;
4864 }
4865 function deal(paramD) {
4866 if (paramD && paramD.result == 'success') {
4867 return paramD;
4868 } else if (paramD && paramD.result == 'failure') {
4869 return paramD;
4870 } else {
4871 return errUnknownObj;
4872 }
4873 }
4874 }
4875 function trafficCalibration() {
4876 return stuffMake(arguments, {}, prepare, deal, null, true);
4877 function prepare(values, isPost) {
4878 var valueReq = {
4879 goformId: "FLOW_CALIBRATION_MANUAL",
4880 calibration_way: values.way,
4881 time: values.way == 'time' ? values.value : 0,
4882 data: values.way == 'data' ? values.value : 0
4883 };
4884 return valueReq;
4885 }
4886 function deal(paramD) {
4887 if (paramD && paramD.result == 'success') {
4888 return paramD;
4889 } else {
4890 return errUnknownObj;
4891 }
4892 }
4893 }
4894 function getParams() {
4895 return stuffMake(arguments, {}, prepare, deal, null, false);
4896 function prepare(values, isPost) {
4897 var valueReq = {};
4898 if (_.isArray(values.nv)) {
4899 valueReq.cmd = values.nv.join(',');
4900 valueReq.multi_data = 1;
4901 } else {
4902 valueReq.cmd = values.nv;
4903 }
4904 return valueReq;
4905 }
4906 function deal(paramD) {
4907 if (paramD) {
4908 return paramD;
4909 } else {
4910 return errUnknownObj;
4911 }
4912 }
4913 }
4914 function getRedirectData() {
4915 return stuffMake(arguments, {}, prepare, deal, null, false);
4916 function prepare(values, isPost) {
4917 var valueReq = {};
4918 valueReq.cmd = "vwim_mc_state,traffic_overrun,detect_new_version";
4919 valueReq.multi_data = 1;
4920 return valueReq;
4921 }
4922 function deal(paramD) {
4923 if (paramD) {
4924 var result = {};
4925 result.vwim_mc_state = paramD.vwim_mc_state;
4926 result.traffic_overrun = paramD.traffic_overrun;
4927 result.detect_new_version = paramD.detect_new_version;
4928 result.blc_wan_mode = informationAll.blc_wan_mode;
4929 return result;
4930 } else {
4931 return errUnknownObj;
4932 }
4933 }
4934 }
4935 function clearRedirectFlag() {
4936 return stuffMake(arguments, {}, prepare, deal, null, true);
4937 function prepare(values, isPost) {
4938 var valueReq = {};
4939 valueReq.goformId = "CLEAR_REDIRECT_FLAG";
4940 valueReq.flag_id = values.redirectFlags;
4941 return valueReq;
4942 }
4943 function deal(paramD) {
4944 if (paramD) {
4945 return paramD;
4946 } else {
4947 return errUnknownObj;
4948 }
4949 }
4950 }
4951 function getV4Switch() {
4952 return stuffMake(arguments, {}, prepare, deal, null, false);
4953 function prepare(values, isPost) {
4954 var valueReq = {};
4955 valueReq.cmd = "lock_zone_enable,pin_interlock_and_V4_lock";
4956 valueReq.multi_data = 1;
4957 return valueReq;
4958 }
4959 function deal(paramD) {
4960 if (paramD) {
4961 return paramD;
4962 } else {
4963 return errUnknownObj;
4964 }
4965 }
4966 }
4967 function setV4Switch() {
4968 return stuffMake(arguments, {}, prepare, deal, null, true);
4969 function prepare(values, isPost) {
4970 var valueReq = {};
4971 valueReq.goformId = "PIN_LOCK_V4_ENCODE";
4972 valueReq.pin_interlock_and_V4_lock = values.pin_interlock_and_V4_lock;
4973 valueReq.TspLock_key_data = values.TspLock_key_data;
4974 return valueReq;
4975 }
4976 function deal(paramD) {
4977 if (paramD && paramD.result == "success") {
4978 return paramD;
4979 } else {
4980 return errUnknownObj;
4981 }
4982 }
4983 }
4984 function getCellId() {
4985 return stuffMake(arguments, {}, prepare, deal, null, false);
4986 function prepare(values, isPost) {
4987 var valueReq = {};
4988 valueReq.cmd = "cell_id_list,global_cell_id,network_type,sub_network_type,cell_not_correct";
4989 valueReq.multi_data = 1;
4990 return valueReq;
4991 }
4992 function deal(paramD) {
4993 if (paramD) {
4994 return paramD;
4995 } else {
4996 return errUnknownObj;
4997 }
4998 }
4999 }
5000 function setCellIdSwitch() {
5001 return stuffMake(arguments, {}, prepare, deal, null, true);
5002 function prepare(values, isPost) {
5003 var valueReq = {};
5004 valueReq.goformId = "LOCK_ZONE";
5005 valueReq.lock_zone_enable = values.lock_zone_enable;
5006 return valueReq;
5007 }
5008 function deal(paramD) {
5009 if (paramD && paramD.result == "success") {
5010 return paramD;
5011 } else {
5012 return errUnknownObj;
5013 }
5014 }
5015 }
5016 function getUpdateType() {
5017 return stuffMake(arguments, {}, prepare, deal, null, false);
5018 function prepare(values, isPost) {
5019 var valueReq = {
5020 cmd: "update_type"
5021 };
5022 return valueReq;
5023 }
5024 function deal(paramD) {
5025 return {
5026 update_type: paramD.update_type ? paramD.update_type : "mifi_fota"
5027 }
5028 }
5029 }
5030 function getSecurityInfo() {
5031 return stuffMake(arguments, {}, prepare, deal, null, false);
5032 function prepare(values, isPost) {
5033 var valueReq = {};
5034 valueReq.cmd = "AuthMode,passPhrase";
5035 valueReq.multi_data = 1;
5036 return valueReq;
5037 }
5038 function deal(paramD) {
5039 if (paramD) {
5040 var result = {};
5041 result.AuthMode = paramD.AuthMode;
5042 result.passPhrase = config.PASSWORD_ENCODE ? Base64.decode(paramD.passPhrase) : paramD.passPhrase;
5043 return result;
5044 } else {
5045 return errUnknownObj;
5046 }
5047 }
5048 }
5049 //can delete
5050 function setSecurityInfo() {
5051 return stuffMake(arguments, {}, prepare, deal, null, true);
5052 function prepare(values, isPost) {
5053 var valueReq = {};
5054 valueReq.goformId = "SET_WIFI_SECURITY_INFO";
5055 valueReq.AuthMode = values.AuthMode;
5056 if (valueReq.AuthMode == "WPAPSKWPA2PSK") {
5057 valueReq.passPhrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
5058 }
5059 return valueReq;
5060 }
5061 function deal(paramD) {
5062 if (paramD) {
5063 return paramD;
5064 } else {
5065 return errUnknownObj;
5066 }
5067 }
5068 }
5069 function setWifiBasic() {
5070 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5071 function prepare(values) {
5072 var valueReq = {
5073 goformId: "SET_WIFI_SSID1_SETTINGS",
5074 ssid: values.SSID,
5075 broadcastSsidEnabled: values.broadcast,
5076 MAX_Access_num: values.station,
5077 security_mode: values.AuthMode,
5078 cipher: values.cipher,
5079 NoForwarding: values.NoForwarding,
5080 show_qrcode_flag: values.show_qrcode_flag
5081 };
5082 if (config.WIFI_WEP_SUPPORT) {
5083 valueReq.wep_default_key = values.wep_default_key;
5084 valueReq.wep_key_1 = values.wep_key_1;
5085 valueReq.wep_key_2 = values.wep_key_2;
5086 valueReq.wep_key_3 = values.wep_key_3;
5087 valueReq.wep_key_4 = values.wep_key_4;
5088 if (values.wep_default_key == '1') {
5089 valueReq.WEP2Select = values.WEP2Select;
5090 } else if (values.wep_default_key == '2') {
5091 valueReq.WEP3Select = values.WEP3Select;
5092 } else if (values.wep_default_key == '3') {
5093 valueReq.WEP4Select = values.WEP4Select;
5094 } else {
5095 valueReq.WEP1Select = values.WEP1Select;
5096 }
5097 }
5098 if (values.AuthMode == "WPAPSK" || values.AuthMode == "WPA2PSK" || values.AuthMode == "WPAPSKWPA2PSK" || values.AuthMode == "WPA3Personal" || values.AuthMode == "WPA2WPA3") {
5099 valueReq.security_shared_mode = values.cipher;
5100 valueReq.passphrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
5101 } else if (values.AuthMode == "SHARED") {
5102 valueReq.security_shared_mode = "WEP";
5103 valueReq.security_mode = "SHARED";
5104 } else {
5105 if (values.encryptType == "WEP") {
5106 valueReq.security_shared_mode = "WEP";
5107 valueReq.security_mode = "OPEN";
5108 } else {
5109 valueReq.security_shared_mode = "NONE";
5110 }
5111 }
5112 return valueReq;
5113 }
5114 function deal(paramD) {
5115 if (paramD) {
5116 return paramD;
5117 } else {
5118 return errUnknownObj;
5119 }
5120 }
5121 }
5122 function setWifiBasic4SSID2() {
5123 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5124 function prepare(values) {
5125 var valueReq = {
5126 goformId: "SET_WIFI_SSID2_SETTINGS",
5127 m_SSID: values.m_SSID,
5128 m_HideSSID: values.m_broadcast,
5129 m_MAX_Access_num: values.m_station,
5130 m_AuthMode: values.m_AuthMode,
5131 cipher: values.m_cipher,
5132 m_NoForwarding: values.m_NoForwarding,
5133 m_show_qrcode_flag: values.m_show_qrcode_flag
5134 };
5135 if (config.WIFI_WEP_SUPPORT) {
5136 valueReq.m_DefaultKeyID = values.m_wep_default_key;
5137 valueReq.m_Key1Str1 = values.m_wep_key_1;
5138 valueReq.m_Key2Str1 = values.m_wep_key_2;
5139 valueReq.m_Key3Str1 = values.m_wep_key_3;
5140 valueReq.m_Key4Str1 = values.m_wep_key_4;
5141 if (values.m_wep_default_key == '1') {
5142 valueReq.m_Key2Type = values.m_WEP2Select;
5143 } else if (values.m_wep_default_key == '2') {
5144 valueReq.m_Key3Type = values.m_WEP3Select;
5145 } else if (values.m_wep_default_key == '3') {
5146 valueReq.m_Key4Type = values.m_WEP4Select;
5147 } else {
5148 valueReq.m_Key1Type = values.m_WEP1Select;
5149 }
5150 }
5151 if (values.m_AuthMode == "WPAPSK" || values.m_AuthMode == "WPA2PSK" || values.m_AuthMode == "WPAPSKWPA2PSK" || values.m_AuthMode == "WPA3Personal" || values.m_AuthMode == "WPA2WPA3") {
5152 valueReq.m_EncrypType = values.m_cipher;
5153 valueReq.m_WPAPSK1 = config.PASSWORD_ENCODE ? Base64.encode(values.m_passPhrase) : values.m_passPhrase;
5154 } else if (values.m_AuthMode == "SHARED") {
5155 valueReq.m_EncrypType = "WEP";
5156 valueReq.m_security_mode = "SHARED";
5157 } else {
5158 if (values.m_encryptType == "WEP") {
5159 valueReq.m_EncrypType = "WEP";
5160 valueReq.m_security_mode = "OPEN";
5161 } else {
5162 valueReq.m_EncrypType = "NONE";
5163 }
5164 }
5165 return valueReq;
5166 }
5167 function deal(paramD) {
5168 if (paramD) {
5169 return paramD;
5170 } else {
5171 return errUnknownObj;
5172 }
5173 }
5174 }
5175 function getWifiBasic() {
5176 return stuffMake(arguments, {}, prepare, deal, null, false);
5177 function prepare(values, isPost) {
5178 var valueReq = {};
5179 var wpapsk = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "imei,rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
5180 valueReq.cmd = "m_ssid_enable,wifi_cur_state,NoForwarding,m_NoForwarding," + wpapsk + "MAX_Station_num," + "SSID1,AuthMode,HideSSID,MAX_Access_num,show_qrcode_flag,EncrypType,Key1Str1,Key2Str1,Key3Str1,Key4Str1,DefaultKeyID," + "m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,m_EncrypType,m_show_qrcode_flag,m_DefaultKeyID,m_Key1Str1,m_Key2Str1,m_Key3Str1,m_Key4Str1,rotationFlag,wifi_sta_connection";
5181 valueReq.multi_data = 1;
5182 return valueReq;
5183 }
5184 function deal(paramD) {
5185 if (paramD) {
5186 var result = {
5187 wifi_enable: paramD.wifi_cur_state == "1" ? "1" : "0",
5188 multi_ssid_enable: paramD.m_ssid_enable,
5189 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
5190 AuthMode: paramD.AuthMode,
5191 SSID: paramD.SSID1,
5192 broadcast: paramD.HideSSID,
5193 apIsolation: paramD.NoForwarding,
5194 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
5195 MAX_Access_num: paramD.MAX_Access_num,
5196 cipher: paramD.EncrypType == "TKIP" ? "0" : paramD.EncrypType == "AES" ? 1 : 2,
5197 encryptType: paramD.EncrypType,
5198 show_qrcode_flag: paramD.show_qrcode_flag == "1" ? true : false,
5199 keyID: paramD.DefaultKeyID,
5200 Key1Str1: paramD.Key1Str1,
5201 Key2Str1: paramD.Key2Str1,
5202 Key3Str1: paramD.Key3Str1,
5203 Key4Str1: paramD.Key4Str1,
5204 m_SSID: paramD.m_SSID,
5205 m_broadcast: paramD.m_HideSSID,
5206 m_apIsolation: paramD.m_NoForwarding,
5207 m_MAX_Access_num: paramD.m_MAX_Access_num,
5208 m_AuthMode: paramD.m_AuthMode,
5209 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
5210 m_cipher: paramD.m_EncrypType == "TKIP" ? "0" : paramD.m_EncrypType == "AES" ? 1 : 2,
5211 m_show_qrcode_flag: paramD.m_show_qrcode_flag == "1" ? true : false,
5212 m_encryptType: paramD.m_EncrypType,
5213 m_keyID: paramD.m_DefaultKeyID,
5214 m_Key1Str1: paramD.m_Key1Str1,
5215 m_Key2Str1: paramD.m_Key2Str1,
5216 m_Key3Str1: paramD.m_Key3Str1,
5217 m_Key4Str1: paramD.m_Key4Str1,
5218 rotationFlag: paramD.rotationFlag,
5219 ap_station_enable: paramD.wifi_sta_connection
5220 };
5221 return result;
5222 } else {
5223 return errUnknownObj;
5224 }
5225 }
5226 }
5227 function setWifiBasicMultiSSIDSwitch() {
5228 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5229 function prepare(values) {
5230 var paraTemp = values;
5231 if (values.wifiEnabled == '0') {
5232 paraTemp = {
5233 wifiEnabled: values.wifiEnabled
5234 }
5235 }
5236 var valueReq = $.extend({
5237 goformId: "SET_WIFI_INFO",
5238 }, paraTemp);
5239 return valueReq;
5240 }
5241 function deal(paramD) {
5242 if (paramD) {
5243 return paramD;
5244 } else {
5245 return errUnknownObj;
5246 }
5247 }
5248 }
5249 function stuffMake(array, result, prepare, dealMethod, errorObject, isPost) {
5250 var values = array[0],
5251 callback = array[1],
5252 errorCallback = array[2];
5253 var objectToReturn;
5254 if (result && typeof result.errorType === 'string') {
5255 objectToReturn = $.extend(errUnknownObj, result);
5256 if (!callback) {
5257 return objectToReturn;
5258 }
5259 doCallback(objectToReturn, callback, errorCallback);
5260 } else {
5261 objectToReturn = $.extend({}, result);
5262 var valueReq;
5263 if (prepare) {
5264 valueReq = prepare(values, isPost);
5265 } else {
5266 valueReq = values;
5267 }
5268 if (!callback) {
5269 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5270 var r = reqSync(valueReq, isPost);
5271 if (dealMethod) {
5272 objectToReturn = $.extend({}, dealMethod(r));
5273 } else {
5274 objectToReturn = r;
5275 }
5276 }
5277 return objectToReturn;
5278 } else {
5279 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5280 reqAsync(valueReq, function (paramD) {
5281 if (dealMethod) {
5282 objectToReturn = $.extend({}, dealMethod(paramD));
5283 } else {
5284 objectToReturn = $.extend({}, paramD);
5285 }
5286 if (!valueReq.notCallback) {
5287 doCallback(objectToReturn, callback, errorCallback);
5288 }
5289 }, function () {
5290 if (errorObject) {
5291 objectToReturn = $.extend(errUnknownObj, errorObject);
5292 } else {
5293 objectToReturn = $.extend(errUnknownObj, {
5294 errorType: 'Unknown'
5295 });
5296 }
5297 doCallback(objectToReturn, callback, errorCallback);
5298 }, isPost);
5299 } else {
5300 doCallback(objectToReturn, callback, errorCallback);
5301 }
5302 }
5303 }
5304 function doCallback(resultToReturn, callback, errorCallback) {
5305 errorCallback = errorCallback ? errorCallback : callback;
5306 if (isErrorObject(resultToReturn)) {
5307 switch (resultToReturn.errorType) {
5308 case 'cellularNetworkError':
5309 case 'deviceError':
5310 case 'wifiConnectionError':
5311 window.receivedNonSpecificError(resultToReturn);
5312 break;
5313 default:
5314 errorCallback(resultToReturn);
5315 }
5316 } else {
5317 callback(resultToReturn);
5318 }
5319 }
5320 }
5321 function reqSync(values, isPost) {
5322 return reqAJAX(values, null, null, false, isPost);
5323 }
5324 function reqAsync(values, successCallback, errorCallback, isPost) {
5325 reqAJAX(values, successCallback, errorCallback, true, isPost);
5326 }
5327 function getString(values){
5328 var regexp = /^[A-z0-9]+$/;
5329 var matches = values.match(regexp);
5330 if (matches == null){
5331 return "error";
5332 } else {
5333 return values;
5334 }
5335 }
5336 function reqAJAX(values, successCallback, errorCallback, async, isPost) {
5337 var result = null;
5338 $.ajax({
5339 type: !!isPost ? "POST" : "GET",
5340 url: isPost ? "/reqproc/proc_post" : values.cmd ? "/reqproc/proc_get" : "/reqproc/proc_post",
5341 data: values,
5342 dataType: "json",
5343 async: !!async,
5344 cache: false,
5345 error: function (paramD) {
5346 if (async) {
5347 errorCallback(paramD);
5348 } else if (paramD.status == 200) {
5349 result = jQuery.parseJSON('(' + getString(paramD.responseText) + ')');
5350 }
5351 },
5352 success: function (paramD) {
5353 if (async) {
5354 successCallback(paramD);
5355 } else {
5356 result = paramD;
5357 }
5358 }
5359 });
5360 if (!async) {
5361 return result;
5362 }
5363 }
5364 var informationAll = {
5365 networkType: "",
5366 signalImg: "0",
5367 spn_b1_flag: "1",
5368 spn_name_data: "",
5369 spn_b2_flag: "1",
5370 networkOperator: "China Mobile",
5371 connectStatus: "ppp_disconnected",
5372 rj45ConnectStatus: "rj45_dead",
5373 attachedDevices: [],
5374 ssid1AttachedNum: 0,
5375 ssid2AttachedNum: 0,
5376 data_counter: {
5377 uploadRate: 0,
5378 downloadRate: 0,
5379 totalSent: 0,
5380 totalReceived: 0,
5381 totalConnectedTime: 0,
5382 currentSent: 0,
5383 currentReceived: 0,
5384 currentConnectedTime: 0,
5385 monthlySent: 0,
5386 monthlyReceived: 0,
5387 monthlyConnectedTime: 0,
5388 month: ''
5389 },
5390 newSmsReceived: false,
5391 smsReportReceived: false,
5392 smsUnreadCount: "0",
5393 isLoggedIn: undefined,
5394 limitVolumeEnable: false,
5395 limitVolumeType: '1',
5396 limitVolumePercent: "100",
5397 limitVolumeSize: "0",
5398 allowRoamingUpdate: "0",
5399 blc_wan_mode: "",
5400 ap_station_enable: undefined,
5401 ap_station_mode: undefined,
5402 dialMode: '',
5403 ethWanMode: 'AUTO',
5404 fota_user_selector: '',
5405 defaultWanName: ""
5406 };
5407 var errUnknownObj = {
5408 errorType: 'UnknownError',
5409 errorId: '123',
5410 errorText: 'UnknownError'
5411 };
5412 var updateTimerFlag = true;
5413 return {
5414 clearRedirectFlag: clearRedirectFlag,
5415 connect: connect,
5416 disconnect: disconnect,
5417 getSIMPhoneBookCapacity: getSIMPhoneBookCapacity,
5418 getDevicePhoneBookCapacity: getDevicePhoneBookCapacity,
5419 getDevicePhoneBooks: getDevicePhoneBooks,
5420 getSIMPhoneBooks: getSIMPhoneBooks,
5421 getPhoneBooks: getPhoneBooks,
5422 getPhoneBookReady: getPhoneBookReady,
5423 getPhoneBooksByGroup: getPhoneBooksByGroup,
5424 deletePhoneBooks: deletePhoneBooks,
5425 deleteAllPhoneBooks: deleteAllPhoneBooks,
5426 deleteAllPhoneBooksByGroup: deleteAllPhoneBooksByGroup,
5427 savePhoneBook: savePhoneBook,
5428 deleteAllMessages: deleteAllMessages,
5429 deleteMessage: deleteMessage,
5430 setSmsRead: setSmsRead,
5431 sendSMS: sendSMS,
5432 saveSMS: saveSMS,
5433 getSMSReady: getSMSReady,
5434 getSMSMessages: getSMSMessages,
5435 getSMSDeliveryReport: getSMSDeliveryReport,
5436 getSmsCapability: getSmsCapability,
5437 resetNewSmsReceivedVar: resetNewSmsReceivedVar,
5438 resetSmsReportReceivedVar: resetSmsReportReceivedVar,
5439 getSmsSetting: getSmsSetting,
5440 setSmsSetting: setSmsSetting,
5441 getAttachedCableDevices: getAttachedCableDevices,
5442 getCurrentlyAttachedDevicesInfo: getCurrentlyAttachedDevicesInfo,
5443 getConnectionInfo: getConnectionInfo,
5444 getRedirectData: getRedirectData,
5445 getLanguage: getLanguage,
5446 setLanguage: setLanguage,
5447 getNetSelectInfo: getNetSelectInfo,
5448 getSecurityInfo: getSecurityInfo,
5449 setSecurityInfo: setSecurityInfo,
5450 getStatusInfo: getStatusInfo,
5451 getConnectionMode: getConnectionMode,
5452 setConnectionMode: setConnectionMode,
5453 getWifiBasic: getWifiBasic,
5454 setWifiBasic: setWifiBasic,
5455 setWifiBasic4SSID2: setWifiBasic4SSID2,
5456 setWifiBasicMultiSSIDSwitch: setWifiBasicMultiSSIDSwitch,
5457 getWpsInfo: getWpsInfo,
5458 openWps: openWps,
5459 getSleepMode: getSleepMode,
5460 setSleepMode: setSleepMode,
5461 getWifiAdvance: getWifiAdvance,
5462 setWifiAdvance: setWifiAdvance,
5463 getWifiRange: getWifiRange,
5464 setWifiRange: setWifiRange,
5465
5466 getLoginStatus: getLoginStatus,
5467 getLoginData: getLoginData,
5468 login: login,
5469 logout: logout,
5470 changeManageInfo: changeManageInfo,
5471 getPinData: getPinData,
5472 enablePin: enablePin,
5473 disablePin: disablePin,
5474 changePin: changePin,
5475 enterPIN: enterPIN,
5476 enterPUK: enterPUK,
5477 getLanInfo: getLanInfo,
5478 setLanInfo: setLanInfo,
5479 getApnSettings: getApnSettings,
mj.qu11d28a82024-12-17 18:09:17 -08005480 getNetworkStatus: getNetworkStatus,
qumengjiaca65ef52024-11-06 15:42:21 +08005481 deleteApn: deleteApn,
5482 setDefaultApn: setDefaultApn,
5483 addOrEditApn: addOrEditApn,
5484 getQuickSettingInfo: getQuickSettingInfo,
5485 setQuickSetting4IPv6: setQuickSetting4IPv6,
5486 scanForNetwork: scanForNetwork,
5487 setBearerPreference: setBearerPreference,
5488 editHostName: editHostName,
5489 getSiteWhiteList: getSiteWhiteList,
5490 removeSiteWhite: removeSiteWhite,
5491 saveSiteWhite: saveSiteWhite,
5492 setNetwork: setNetwork,
5493 getUpnpSetting: getUpnpSetting,
5494 setUpnpSetting: setUpnpSetting,
5495 getDmzSetting: getDmzSetting,
5496 setDmzSetting: setDmzSetting,
5497 getDeviceInfo: getDeviceInfo,
5498 getDeviceInfoLow: getDeviceInfoLow,
5499 getPortForward: getPortForward,
5500 setPortForward: setPortForward,
5501 getPortFilter: getPortFilter,
5502 setPortFilterBasic: setPortFilterBasic,
5503 setPortFilter: setPortFilter,
5504 deleteFilterRules: deleteFilterRules,
5505 getPortMap: getPortMap,
5506 setPortMap: setPortMap,
5507 enablePortMap: enablePortMap,
5508 deleteMapRules: deleteMapRules,
5509 getTrafficAlertInfo: getTrafficAlertInfo,
5510 setTrafficAlertInfo: setTrafficAlertInfo,
5511 getCurrentUpgradeState: getCurrentUpgradeState,
5512 setUpgradeSelectOp: setUpgradeSelectOp,
5513 addTimerThings: addTimerSomething,
5514 removeTimerThings: removeTimerSomething,
5515 getPackSizeInfo: getPackSizeInfo,
5516 getMandatory: getMandatory,
5517 getOTAUpdateSetting: getOTAUpdateSetting,
5518 setOTAUpdateSetting: setOTAUpdateSetting,
5519 getManualOTAUpdateSetting: getManualOTAUpdateSetting,
5520 setManualOTAUpdateSetting: setManualOTAUpdateSetting,
5521 getSignalStrength: getSignalStrength,
5522 getOTAlastCheckTime: getOTAlastCheckTime,
5523 clearUpdateResult: clearUpdateResult,
5524 refreshAPStationStatus: refreshAPStationStatus,
5525 getSntpParams: getSntpParams,
5526 setSntpSetting: setSntpSetting,
5527 setSNTPDate: setSNTPDate,
5528 restoreFactorySettings: restoreFactorySettings,
5529 checkRestoreStatus: checkRestoreStatus,
5530 getSysSecurity: getSysSecurity,
5531 setSysSecurity: setSysSecurity,
5532 deleteForwardRules: deleteForwardRules,
5533 enableVirtualServer: enableVirtualServer,
5534 getSDConfiguration: getSDConfiguration,
5535 setSdCardMode: setSdCardMode,
5536 checkFileExists: checkFileExists,
5537 getFileList: getFileList,
5538 fileRename: fileRename,
5539 getSdMemorySizes: getSdMemorySizes,
5540 deleteFilesAndFolders: deleteFilesAndFolders,
5541 createFolder: createFolder,
5542 setSdCardSharing: setSdCardSharing,
5543 setUpdateInfoWarning: setUpdateInfoWarning,
5544 getUpdateInfoWarning: getUpdateInfoWarning,
5545 getAPStationBasic: getAPStationBasic,
5546 setAPStationBasic: setAPStationBasic,
5547 getWdsInfo: getWdsInfo,
5548 setWDS: setWDS,
5549 addUrlFilterRule: addUrlFilterRule,
5550 getUrlFilterList: getUrlFilterList,
5551 deleteSelectedRules: deleteSelectedRules,
5552 getMacFilterInfo: getMacFilterInfo,
5553 setMacFilter: setMacFilter,
5554 getFastbootSetting: getFastbootSetting,
5555 setFastbootSetting: setFastbootSetting,
5556 turnOffDevice: turnOffDevice,
5557 restart: restart,
5558 getScheduleSetting: getScheduleSetting,
5559 setScheduleSetting: setScheduleSetting,
5560 getCwmpSetting: getCwmpSetting,
5561 setCwmpSetting: setCwmpSetting,
5562 updateTimerFlag: updateTimerFlag,
5563 childGroupList: childGroupList,
5564 addChildGroup: addChildGroup,
5565 removeChildGroup: removeChildGroup,
5566 checkCurrentUserInChildGroup: checkCurrentUserInChildGroup,
5567 getTimeLimited: getTimeLimited,
5568 saveTimeLimited: saveTimeLimited,
5569 getHostNameList: getHostNameList,
5570 getHotspotList: getHotspotList,
5571 searchHotspot: searchHotspot,
5572 getSearchHotspotList: getSearchHotspotList,
5573 saveHotspot: saveHotspot,
5574 deleteHotspot: deleteHotspot,
5575 connectHotspot: connectHotspot,
5576 disconnectHotspot: disconnectHotspot,
5577 getOpMode: getOpMode,
5578 getRj45PlugState: getRj45PlugState,
5579 SetOperationMode: SetOperationMode,
5580 getPppoeParams: getPppoeParams,
5581 setPppoeDialMode: setPppoeDialMode,
5582 getTsw: getTsw,
5583 saveTsw: saveTsw,
5584 trafficCalibration: trafficCalibration,
5585 getParams: getParams,
5586 getNewVersionState: getNewVersionState,
5587 getUpgradeResult: getUpgradeResult,
5588 getV4Switch: getV4Switch,
5589 setV4Switch: setV4Switch,
5590 getCellId: getCellId,
5591 setCellIdSwitch: setCellIdSwitch,
5592 getDdnsParams: getDdnsParams,
5593 setDDNSForward: setDDNSForward,
5594 getUpdateType: getUpdateType,
5595 getCurretnMAC: getCurretnMAC,
5596 getUSSDResponse: getUSSDResponse,
5597 USSDReplyCancel: USSDReplyCancel,
5598 getNetworkUnlockTimes: getNetworkUnlockTimes,
5599 unlockNetwork: unlockNetwork,
5600 getSyslogInfo: getSyslogInfo,
5601 setSysLog: setSysLog,
5602 };
5603});
5604
5605 // Router����
5606
5607define("adm_lan","jquery knockout set service".split(" "),
5608
5609 function ($, ko, config, service) {
5610
5611 var originfrmLan = "";
5612
5613 // ��ȡ·�����������Ϣ
5614 function getLanInfo() {
5615 return service.getLanInfo();
5616 }
5617
5618 function hex(val) {
5619 var h = (val - 0).toString(16);
5620 if (h.length == 1)
5621 h = '0' + h;
5622 return h.toUpperCase();
5623 }
5624
5625 function LanViewModel() {
5626 var target = this;
5627
5628 var info = getLanInfo();
5629
5630 target.dhcpStart = ko.observable(info.dhcpStart);
5631 target.dhcpEnd = ko.observable(info.dhcpEnd);
5632 target.dhcpLease = ko.observable(info.dhcpLease);
5633
5634 target.ipAddress = ko.observable(info.ipAddress);
5635 target.subnetMask = ko.observable(info.subnetMask);
5636 target.dhcpServer = ko.observable(info.dhcpServer);
5637
5638 target.macAddress = ko.observable(info.macAddress);
5639 target.showMacAddress = ko.observable(config.SHOW_MAC_ADDRESS);
5640
5641 target.hasWifi = ko.observable(config.HAS_WIFI);
5642 target.hasUssd = config.HAS_USSD;
5643 target.hasDdns = config.DDNS_SUPPORT;
5644
5645 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
5646
5647 target.clear = function () {
5648 clearTimer();
5649 init();
5650 clearValidateMsg();
5651 };
5652
5653 target.refreshStatus = function () {
5654 var connInfo = service.getConnectionInfo();
5655 if (connInfo.connectStatus == 'ppp_disconnected') {
5656 $('input', '#frmLan').each(function () {
5657 $(this).attr("disabled", false);
5658 });
5659 } else {
5660 $('input', '#frmLan').each(function () {
qumengjia115b0be2024-11-29 09:57:10 +08005661 $(this).attr("disabled", false);
qumengjiaca65ef52024-11-06 15:42:21 +08005662 });
5663
5664 clearValidateMsg();
5665 }
5666 };
5667
5668 // ������Ӧ�������������ñ���
5669 target.saveAct = function () {
5670 showLoading();
5671 var params = {
5672 ipAddress: target.ipAddress(),
5673 subnetMask: target.subnetMask(),
5674 dhcpServer: target.dhcpServer(),
5675 dhcpStart: target.dhcpStart(),
5676 dhcpEnd: target.dhcpEnd(),
5677 dhcpLease: target.dhcpLease()
5678 };
5679
5680 service.setLanInfo(params, function (result) {
5681 if (result.result == "success") {
5682 successOverlay();
5683 target.clear();
5684 } else {
5685 errorOverlay();
5686 }
5687 });
5688 };
5689
5690 // ������Ӧ�������������ñ���
5691 target.save = function () {
5692 var frmLanObj = $('#frmLan').serialize();
5693 if (frmLanObj == originfrmLan) {
5694 showAlert("setting_no_change");
5695 return false;
5696 }
5697 if (config.RJ45_SUPPORT) {
5698 var pppObj = service.getPppoeParams();
5699 if (sf_isValidate_StaticIP(pppObj.static_wan_ipaddr, target.ipAddress(), target.subnetMask())) {
5700 showAlert("lan_tip_staticip_notsame");
5701 return false;
5702 }
5703 }
5704 showConfirm("lan_confirm_reopen", function () {
5705 target.saveAct();
5706 });
5707 };
5708
5709 target.refreshStatus();
5710 // dhcpServer�л���Ӧ����
5711 target.dhcpServerHandler = function () {
5712 $("#txtIpAddress").parent().find(".error").hide();
5713 $("#txtIpAddress").show();
5714 return true;
5715 };
5716 addTimeout(function () {
5717 originfrmLan = $('#frmLan').serialize();
5718 }, 500);
5719 }
5720
5721
5722 function sf_opAnd4Byte(i_v1, i_v2) {
5723 var index;
5724 var var1 = [];
5725 var var2 = [];
5726 var result='0x';
5727
5728 for (index=2,index_tmp=0; index<10; index+=2,index_tmp++) {
5729 var1[index_tmp]='0x'+i_v1.substring(index,index+2);
5730 var2[index_tmp]='0x'+i_v2.substring(index,index+2);
5731 }
5732
5733 for (index=0; index<4; index++) {
5734 result = result + hex(var1[index]&var2[index]);
5735 }
5736
5737 return result - 0;
5738 }
5739
5740 // ������ر���У�����
5741 $.validator.addMethod("dhcp_check", function (i_value, i_element, i_parameter) {
5742 var dhcpIp = i_parameter == "start" ? $('#txtDhcpIpPoolStart').val() : $('#txtDhcpIpPoolEnd').val();
5743 var result = sf_isValidate_Gateway($('#txtIpAddress').val(), $('#txtSubnetMask').val(), dhcpIp);
5744 return this.optional(i_element) || result;
5745 });
5746
5747 $.validator.addMethod("dhcpCompare", function (i_value, i_element, i_parameter) {
5748 var result;
5749 if(i_parameter == "#txtDhcpIpPoolStart") {
5750 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), $(i_parameter).val(), i_value);
5751 }
5752 else {
5753 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), i_value, $(i_parameter).val());
5754 }
5755 return result != 1;
5756 });
5757
5758 $.validator.addMethod("ipRange", function (i_value, i_element, i_parameter) {
5759 var DHCP_flag = false;
5760 if($('#dhcpEnable').is(':checked')){
5761 DHCP_flag = true;
5762 }
5763 var result = sf_isValidate_StartEndIp(i_value, $('#txtSubnetMask').val(), $('#txtDhcpIpPoolStart').val(), $('#txtDhcpIpPoolEnd').val(), DHCP_flag);
5764 return result != 2;
5765 });
5766
5767 $.validator.addMethod("subnetmask_check", function (i_value, i_element, i_parameter) {
5768 var result = sf_isValidate_Netmask(i_value);
5769 return this.optional(i_element) || result;
5770 });
5771
5772
5773 // ��̬��ЧIPУ�麯��
5774 function sf_isValidate_StaticIP(i_ip, i_lanIp, i_lanMask){
5775 if(!i_ip || !i_lanIp || !i_lanMask){//������������
5776 return false;
5777 }
5778
5779 //������IP���
5780 if (i_ip == i_lanIp) {
5781 return true;
5782 }
5783
5784 var res1 = [];
5785 var res2 = [];
5786
5787 var mask_array = [];
5788
5789 ip_array = i_ip.split(".");
5790 lanIp_array = i_lanIp.split(".");
5791 mask_array = i_lanMask.split(".");
5792 for(var index = 0; index < ip_array.length; index += 1){
5793 res1.push(parseInt(mask_array[index]) & parseInt(ip_array[index]));
5794 res2.push(parseInt(mask_array[index]) & parseInt(lanIp_array[index]));
5795 }
5796 if(res2.join(".") != res1.join(".")){//�ڲ�ͬ����
5797 return false;
5798 }else{//��ͬһ����
5799 return true;
5800 }
5801 }
5802
5803
5804 function sf_isValidate_NetmaskIP(i_ip) {
5805 return (i_ip == 255
5806 || i_ip == 254
5807 || i_ip == 252
5808 || i_ip == 248
5809 || i_ip == 240
5810 || i_ip == 224
5811 || i_ip == 192
5812 || i_ip == 128
5813 || i_ip == 0);
5814 }
5815
5816 function sf_convertIpToString(i_ip)
5817 {
5818 var s_i1 = i_ip.indexOf('.');
5819 var s_i2 = i_ip.indexOf('.', (s_i1 + 1));
5820 var s_i3 = i_ip.indexOf('.', (s_i2 + 1));
5821 o_ip = hex(i_ip.substring(0, s_i1)) + hex(i_ip.substring((s_i1 + 1), s_i2)) + hex(i_ip.substring((s_i2 + 1), s_i3)) + hex(i_ip.substring((s_i3 + 1), i_ip.length));
5822 o_ip = '0x' + o_ip;
5823
5824 return o_ip;
5825 }
5826
5827 function sf_getIpString_3(i_ip)
5828 {
5829 var i1 = i_ip.indexOf('.');
5830 var i2 = i_ip.indexOf('.', (i1 + 1));
5831 var i3 = i_ip.indexOf('.', (i2 + 1));
5832 var i4 = i_ip.substring((i3+1),i_ip.length)-0;
5833
5834 return i4;
5835 }
5836
5837
5838 // ����У�麯��
5839 function sf_isValidate_Gateway(i_wanIp, i_netmaskIp, i_gatewayIp) {
5840 var s_wanIp = sf_convertIpToString(i_wanIp);
5841 var lan4 = sf_getIpString_3(i_wanIp);
5842
5843 var s_netmaskIp = sf_convertIpToString(i_netmaskIp);
5844 var mask4 = sf_getIpString_3(i_netmaskIp);
5845
5846 var s_gatewayIp = sf_convertIpToString(i_gatewayIp);
5847 var pool4 = sf_getIpString_3(i_gatewayIp);
5848
5849 var net_no;
5850 var lo_broadcast;
5851
5852 if (sf_opAnd4Byte(s_wanIp, s_netmaskIp) != sf_opAnd4Byte(s_gatewayIp, s_netmaskIp)) {
5853 return false;
5854 }
5855
5856 net_no = (lan4 & mask4);
5857 lo_broadcast = (lan4 & mask4) + (255-mask4);
5858
5859 return !(pool4==net_no || pool4==lo_broadcast);
5860
5861 }
5862
5863 // ��������У�麯��
5864 function sf_isValidate_Netmask(i_netmask) {
5865 var addr = i_netmask.split(".");
5866
5867 if ("0.0.0.0" == i_netmask || "255.255.255.255" == i_netmask) {
5868 return false;
5869 }
5870
5871 if (addr.length != 4) {
5872 return false;
5873 }
5874
5875 addr[0] = parseInt(addr[0]);
5876 addr[1] = parseInt(addr[1]);
5877 addr[2] = parseInt(addr[2]);
5878 addr[3] = parseInt(addr[3]);
5879
5880 if (addr[3] != 0) {
5881 if (addr[0] != 255 || addr[1] != 255 || addr[2] != 255) {
5882 return false;
5883 } else {
5884 if (!sf_isValidate_NetmaskIP(addr[3])) {
5885 return false;
5886 }
5887 }
5888 }
5889
5890 if (addr[2] != 0) {
5891 if (addr[0] != 255 || addr[1] != 255) {
5892 return false;
5893 } else {
5894 if (!sf_isValidate_NetmaskIP(addr[2])) {
5895 return false;
5896 }
5897 }
5898 }
5899
5900 if (addr[1] != 0) {
5901 if (addr[0] != 255) {
5902 return false;
5903 } else {
5904 if (!sf_isValidate_NetmaskIP(addr[1])) {
5905 return false;
5906 }
5907 }
5908 }
5909
5910 if (addr[0] != 255) {
5911 return false;
5912 }
5913
5914 return true;
5915 }
5916
5917 // DHCP IP��У�麯��
5918 function sf_isValidate_StartEndIp(i_lanIpaddr, i_netIp, i_startIp, i_endIp, i_DHCPFlag) {
5919 s_startIp = sf_convertIpToString(i_startIp);
5920 s_endIp = sf_convertIpToString(i_endIp);
5921 s_lanIp = sf_convertIpToString(i_lanIpaddr);
5922
5923 if(s_startIp>s_endIp) {
5924 return 1;
5925 }
5926
5927 if(s_lanIp >= s_startIp && s_lanIp <= s_endIp) {
5928 return 2;
5929 }
5930
5931 return 0;
5932 }
5933
5934
5935 function init() {
5936 var container = $('#container');
5937 ko.cleanNode(container[0]);
5938 var fwVm = new LanViewModel();
5939 ko.applyBindings(fwVm, container[0]);
5940
mj.qu3fddf032025-03-17 23:34:24 -07005941 //addInterval(fwVm.refreshStatus, 1000);
qumengjiaca65ef52024-11-06 15:42:21 +08005942
5943 $('#frmLan').validate({
5944 submitHandler:function () {
5945 fwVm.save();
5946 },
5947
5948 rules:{
5949 txtIpAddress: {
5950 lanip_check: true,
5951 ipRange: true
5952 },
5953 txtSubnetMask: {
5954 ipv4: true,
5955 subnetmask_check: true
5956 },
5957 txtDhcpIpPoolStart: {
5958 lanip_check: true,
5959 dhcp_check: "start",
5960 dhcpCompare: "#txtDhcpIpPoolEnd"
5961 },
5962 txtDhcpIpPoolEnd: {
5963 lanip_check: true,
5964 dhcp_check: "end",
5965 dhcpCompare: "#txtDhcpIpPoolStart"
5966 },
5967 txtDhcpLease: {
5968 range: [1, 65535],
5969 digits: true
5970 }
5971 },
5972
5973 groups: {
5974 lanip_check: "txtDhcpIpPoolStart txtDhcpIpPoolEnd"
5975 },
5976
5977 errorPlacement: function (error, element) {
5978 if (element.attr("name") == "txtDhcpLease") {
5979 error.insertAfter("#errorHolder");
5980 } else if (element.attr("name") == "txtDhcpIpPoolStart") {
5981 error.insertAfter("#txtDhcpIpPoolEnd");
5982 } else {
5983 error.insertAfter(element);
5984 }
5985 }
5986 });
5987
5988 }
5989
5990
5991 return {
5992 init:init
5993 }
5994});
5995
5996define("tr069","jquery knockout set service".split(" "),
5997
5998 function ($, ko, config, service) {
5999 function Tr069ViewModel() {
6000 var target = this;
6001 target.hasUssd = config.HAS_USSD;
6002 target.hasDdns = config.DDNS_SUPPORT;
6003 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
6004
6005 var cwmpInfo = service.getCwmpSetting();
6006
6007 target.cwmp_active = ko.observable(cwmpInfo.cwmpSetting);
6008 target.cwmp_acs_server_url = ko.observable(cwmpInfo.acsUrl);
6009 target.cwmp_acs_username = ko.observable(cwmpInfo.acsUsername);
6010 target.cwmp_acs_password = ko.observable(cwmpInfo.acsPassword);
6011 target.cwmp_periodic_inform_active = ko.observable(cwmpInfo.periodicEnabled);
6012 target.cwmp_periodic_inform_interval = ko.observable(cwmpInfo.periodicInterval);
6013 target.cwmp_conn_request_username = ko.observable(cwmpInfo.cpeUsername);
6014 target.cwmp_conn_request_password = ko.observable(cwmpInfo.cpePassword);
6015
6016 // target.cwmp_stun_active=ko.observable('');
6017 // target.cwmp_stun_server_addr=ko.observable('');
6018 // target.cwmp_stun_server_port=ko.observable('');
6019 // target.cwmp_stun_username=ko.observable('');
6020 // target.cwmp_stun_password=ko.observable('');
6021 // target.cwmp_stun_min_keep_alive_interval=ko.observable('');
6022 // target.cwmp_stun_max_keep_alive_interval=ko.observable('');
6023 // target.cwmp_udp_notify_limit_num=ko.observable('');
6024 // target.cwmp_udp_conn_req_addr=ko.observable('');
6025 // target.cwmp_nat_detected_mark=ko.observable('');
6026
6027 // target.btn=function(name,id,enableName){
6028 // if($('#'+id).is(':checked')){
6029 // $("."+name).animate({left: '22px'});
6030 // //$('#'+name).css('background-color','#FD8204');
6031 // if(enableName==='cwmp_active'){
6032 // target.cwmp_active('1')
6033 // }
6034 // else{
6035 // target.cwmp_stun_active("1")
6036 // }
6037 // }
6038 // else{
6039 // $("."+name).animate({left: '-1px'});
6040 // $('#'+name).css('background-color','white');
6041 // if(enableName==='cwmp_active'){
6042 // target.cwmp_active('0')
6043 // }
6044 // else{
6045 // target.cwmp_stun_active("0")
6046 // }
6047 // }
6048 // }
6049 // ���TR069
6050 target.setting= function() {
6051 showLoading();
6052 var param = {};
6053 param.cwmpSetting = target.cwmp_active();
6054 param.acsUrl = target.cwmp_acs_server_url();
6055 param.acsUsername = target.cwmp_acs_username();
6056 param.acsPassword = target.cwmp_acs_password();
6057 param.periodicEnabled = target.cwmp_periodic_inform_active();
6058 param.periodicInterval =target.cwmp_periodic_inform_interval();
6059 param.cpeUsername = target.cwmp_conn_request_username();
6060 param.cpePassword = target.cwmp_conn_request_password();
6061 service.setCwmpSetting(param, function (result) {
6062 if (result.result != "success") {
6063 errorOverlay();
6064 } else {
6065 successOverlay();
6066 }
6067 });
6068 }
6069 // ���STUN
6070 target.stun=function(){
6071 console.log(99999);
6072 }
6073 }
6074
6075 function init() {
6076 var container = $('#container');
6077 ko.cleanNode(container[0]);
6078 var imVm = new Tr069ViewModel();
6079 ko.applyBindings(imVm, container[0]);
6080
6081 $('#frmTr069').validate({
6082 submitHandler:function () {
6083 imVm.setting();
6084 },
6085 rules:{
6086 cwmp_acs_server_url: {
6087 url_span: false
6088 },
6089 },
6090 });
6091 $('#frmTrtun').validate({
6092 submitHandler:function () {
6093 imVm.stun();
6094 },
6095 rules:{},
6096 });
6097 $.validator.addMethod("url_span", validURLWithProtocol);
6098 }
6099 return {
6100 init:init
6101 }
6102});
6103
6104// others ����:Fast Boot Settings��Restart and Reset��SNTP��Turn Off Device��PIN Management
6105define("adm_others","jquery knockout set service underscore".split(" "),
6106
6107 function ($, ko, config, service, _) {
6108
6109 var timeSetModes = _.map(config.sntpTimeSetMode, function(item) {
6110 return new Option(item.name, item.value);
6111 });
6112
6113 var timeZones = _.map(config.timeZone, function(item){
6114 return new Option(item.name, item.value);
6115 });
6116
6117 var daylightSave = _.map(config.daylightSave, function(item){
6118 return new Option(item.name, item.value);
6119 });
6120
6121 var sv_sntpYears = [];
6122 var sv_sntpMonths = [];
6123 var sv_sntpDates = []; //���ݴ�С����������
6124 var sv_sntpHours = [];
6125 var sv_sntpMinutes = [];
6126 var sc_startpHours = [];
6127 var sc_startMinutes = [];
6128
6129 var sf_bigMonth = [1, 3, 5, 7, 8, 10, 12];
6130 var sf_smallMonth = [4, 6, 9, 11];
6131
6132 function sf_produceArray(start, end, arryName) {
6133 var item = {};
6134 for(var i = start; i <= end; i++) {
6135 item.name = i;
6136 item.value = i;
6137 arryName.push(new Option(item.name, item.value));
6138 }
6139 }
6140
6141 //�����ꡢ�¡�ʱ���ֵ�����
mj.qu2d3c2af2025-06-22 23:23:15 -07006142 sf_produceArray(2000, 2037, sv_sntpYears);
qumengjiaca65ef52024-11-06 15:42:21 +08006143 sf_produceArray(1, 12, sv_sntpMonths);
6144 sf_produceArray(0, 23, sv_sntpHours);
6145 sf_produceArray(0, 59, sv_sntpMinutes);
6146 sf_produceArray(0, 23, sc_startpHours);
6147 sf_produceArray(0, 59, sc_startMinutes);
6148
6149 function othersViewModel() {
6150 var target = this;
6151
6152 var inChildGroup = false;
6153 var scheduleInfo = service.getScheduleSetting();
6154
6155 target.fastbootSupport = config.FAST_BOOT_SUPPORT;
6156 target.turnOffSupport = config.TURN_OFF_SUPPORT;
6157 target.SNTPSupport = config.HAS_SNTP;
6158 target.hasUssd = config.HAS_USSD;
6159 target.hasDdns = config.DDNS_SUPPORT;
6160 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
6161 target.scheduleSetting = ko.observable(scheduleInfo.scheduleSetting);
6162 target.scheduleHour = ko.observable(parseInt(scheduleInfo.scheduleHour));
6163 target.scheduleMinute = ko.observable(parseInt(scheduleInfo.scheduleMinute));
6164 target.scr_hours = ko.observableArray(sc_startpHours);
6165 target.scr_minutes = ko.observableArray(sc_startMinutes);
6166
6167
6168 if (config.HAS_PARENTAL_CONTROL) {
6169 inChildGroup = service.checkCurrentUserInChildGroup().result;
6170 }
6171 target.currentUserInChildGroup = ko.observable(inChildGroup);
6172
6173 var sv_fastbootInfo = service.getFastbootSetting();
6174 target.fastbootEnableFlag = ko.observable(config.RJ45_SUPPORT ? (sv_fastbootInfo.need_sim_pin != "yes" && service.getRj45PlugState().rj45_plug == "wan_lan_off") : sv_fastbootInfo.need_sim_pin != "yes");
6175 target.fastbootSetting = ko.observable(sv_fastbootInfo.fastbootEnabled);
6176
6177
6178 // @method addInterval
6179 addInterval(function(){
6180 target.fastbootEnableFlag(config.RJ45_SUPPORT ? (sv_fastbootInfo.need_sim_pin != "yes" && service.getRj45PlugState().rj45_plug == "wan_lan_off") : sv_fastbootInfo.need_sim_pin != "yes");
6181 }, 1000);
6182
6183 // �ָ���������
6184 // @event restore
6185 target.restore = function () {
6186 showConfirm("restore_confirm", function () {
6187 showLoading("restoring");
6188 service.restoreFactorySettings({}, function (info) {
6189 if (info && info.result == "success") {
6190 successOverlay();
6191 } else {
6192 errorOverlay();
6193 }
6194 }, function (result) {
6195 if (isErrorObject(result) && result.errorType == 'no_auth') {
6196 errorOverlay();
6197 }
6198 });
6199 });
6200 };
6201
6202 target.restart = function () {
6203 showConfirm("restart_confirm", function () {
6204 restartDevice(service);
6205 });
6206 };
6207
6208 target.scheduleRestart = function () {
6209 showLoading();
6210 var params = {};
6211 params.scheduleSetting = target.scheduleSetting();
6212 params.scheduleHour = target.scheduleHour();
6213 params.scheduleMinute = target.scheduleMinute();
6214 service.setScheduleSetting(params, function (result) {
6215 if (result.result != "success") {
6216 errorOverlay();
6217 } else {
6218 successOverlay();
6219 }
6220 });
6221 };
6222
6223 // ���ٿ��ػ�����
6224 target.saveFastBoot = function() {
6225 showLoading();
6226 var params = {
6227 fastbootEnabled: target.fastbootSetting(),
6228 need_hard_reboot: sv_fastbootInfo.need_hard_reboot
6229 };
6230 service.setFastbootSetting(params, function(result) {
6231 if (result.result == "success") {
6232 successOverlay();
6233 } else {
6234 errorOverlay();
6235 }
6236 });
6237 };
6238
6239 // �ػ�
6240 target.turnoff = function () {
6241 showConfirm("turnoff_confirm", function () {
6242 showLoading("turnoff");
6243 service.turnOffDevice({}, function (info) {
6244 if (info && info.result == "success") {
6245 successOverlay();
6246 } else {
6247 errorOverlay();
6248 }
6249 }, $.noop);
6250 });
6251 };
6252
6253 //SNTP����serverУ׼ʱ��
6254 service.setSNTPDate({
6255 goformId: "SNTP_Getdatastatic"
6256 });
6257
6258 var target = this;
6259 var sntpInfo = service.getSntpParams();
6260
6261 globalTime = new Date(parseInt(sntpInfo.sntp_year, 10),parseInt(sntpInfo.sntp_month, 10)-1, parseInt(sntpInfo.sntp_day, 10), parseInt(sntpInfo.sntp_hour, 10), parseInt(sntpInfo.sntp_minute, 10), parseInt(sntpInfo.sntp_second, 10));
6262
6263 target.day = ko.observable();
6264 target.localTime = ko.observable();
6265
6266 //��ʼ����ǰ����ʱ��
6267 //target.updateCurrentTime; cov_2
6268 target.timeSetModes = ko.observableArray(timeSetModes);
6269 target.isManualSetTime = ko.observable(false);
6270 target.isAutoSntpTime = ko.observable(false);
6271
6272 target.currentMode = ko.observable(sntpInfo.sntp_time_set_mode);
6273
6274 changeSetTimeMode();
6275 target.changeSetTimeMode = function(){
6276 changeSetTimeMode();
6277 };
6278
6279 target.currentYear = ko.observable(parseInt(sntpInfo.sntp_year, 10));
6280 target.currentMonth = ko.observable(parseInt(sntpInfo.sntp_month, 10));
6281 target.currentDate = ko.observable(parseInt(sntpInfo.sntp_day, 10));
6282 target.currentHour = ko.observable(parseInt(sntpInfo.sntp_hour, 10));
6283 target.currentMinute = ko.observable(parseInt(sntpInfo.sntp_minute, 10));
6284
6285
6286 // ��Ҫ��������ˢ�������б����ݣ�ע��˳��
6287
6288 target.years = ko.observableArray(sv_sntpYears);
6289 target.months = ko.observableArray(sv_sntpMonths);
6290 //���û�ѡ���·ݵ�ʱ��ı�����ѡ����ѡ��
6291 target.initDateList = function(){
6292 initDateList();
6293 target.dates(sv_sntpDates);
6294 }
6295
6296 //��ʼ�������б�
6297 initDateList();
6298 target.dates = ko.observableArray(sv_sntpDates);
6299 target.hours = ko.observableArray(sv_sntpHours);
6300 target.minutes = ko.observableArray(sv_sntpMinutes);
6301
6302 //�Զ�SNTP��ȡʱ�����ݰ󶨴���
6303 var serverArray = _.map(sntpInfo.sntp_servers, function(item) {
6304 return new Option(item.name, item.value)
6305 });
6306
6307 target.serverList = ko.observableArray(serverArray);
6308
6309 // �������ֲ����޸ģ��޸��޷�ˢ����ҳ
6310
6311 target.currentServer0 = ko.observable(sntpInfo.sntp_server0);
6312 target.currentServer1 = ko.observable(sntpInfo.sntp_server1);
6313 target.currentServer2 = ko.observable(sntpInfo.sntp_server2);
6314 target.customServer0 = ko.observable(sntpInfo.sntp_other_server0);
6315 target.customServer1 = ko.observable(sntpInfo.sntp_other_server1);
6316 target.customServer2 = ko.observable(sntpInfo.sntp_other_server2);
6317 target.isOther0 = ko.observable(false);
6318 target.isOther1 = ko.observable(false);
6319 target.isOther2 = ko.observable(false);
6320
6321 initOtherServer();
6322
6323 target.changeServerSelect = function(){
6324 initOtherServer();
6325 }
6326
6327 target.timeZones = ko.observableArray(timeZones);
6328 target.currentTimeZone = ko.observable(sntpInfo.sntp_timezone + "_" + sntpInfo.sntp_timezone_index);
6329 target.daylightSaves = ko.observableArray(daylightSave);
6330 target.currentDaylightSave = ko.observable(sntpInfo.sntp_dst_enable);
6331
6332 //���µ�ǰ��ʾʱ��
6333 target.updateCurrentTime = function() {
6334 var globalDay = globalTime.getDay();
6335
6336 switch(globalDay){
6337 case 6:
6338 target.day($.i18n.prop("saturday"));
6339 break;
6340 case 5:
6341 target.day($.i18n.prop("friday"));
6342 break;
6343 case 4:
6344 target.day($.i18n.prop("thursday"));
6345 break;
6346 case 3:
6347 target.day($.i18n.prop("wednesday"));
6348 break;
6349 case 2:
6350 target.day($.i18n.prop("tuesday"));
6351 break;
6352 case 1:
6353 target.day($.i18n.prop("monday"));
6354 break;
6355 case 0:
6356 target.day($.i18n.prop("sunday"));
6357 break;
6358 default:
6359 break;
6360 }
6361
6362 var localCurrentTime = globalTime.getFullYear() + "-" + getTwoDigit(globalTime.getMonth()+1) + "-" + getTwoDigit(globalTime.getDate()) + " " + getTwoDigit(globalTime.getHours()) + ":" + getTwoDigit(globalTime.getMinutes()) + ":" + getTwoDigit(globalTime.getSeconds());
6363 target.localTime(localCurrentTime);
6364 globalTime.setTime(globalTime.getTime()+1000);
6365 };
6366
6367 // SNTP����
6368 target.apply = function(){
6369 var tmpArray = [];
6370 for(var i=0; i< sntpInfo.sntp_servers.length; i++){
6371 tmpArray.push(sntpInfo.sntp_servers[i].value);
6372 }
6373 var staInfo = service.getStatusInfo();
6374 if(!checkConnectedStatus(staInfo.connectStatus, staInfo.rj45ConnectStatus, staInfo.connectWifiStatus) && target.currentMode() == "auto"){
6375 showAlert("sntp_syn_time_wan_connected");
6376 return;
6377 }
6378
6379 showLoading("");
6380 var requestParams = {
6381 goformId: "SNTP",
6382 manualsettime : target.currentMode(),
6383 sntp_server1_ip : target.currentServer0(),
6384 sntp_server2_ip : target.currentServer1(),
6385 sntp_server3_ip : target.currentServer2(),
6386 sntp_other_server0 : target.customServer0(),
6387 sntp_other_server1 : target.customServer1(),
6388 sntp_other_server2 : target.customServer2(),
6389 timezone : target.currentTimeZone().split("_")[0],
6390 sntp_timezone_index : target.currentTimeZone().split("_")[1],
6391 DaylightEnabled : target.currentDaylightSave(),
6392 time_year : target.currentYear(),
6393 time_month : target.currentMonth(),
6394 time_day : target.currentDate(),
6395 time_hour : target.currentHour(),
6396 time_minute : target.currentMinute()
6397 };
6398
6399 service.setSntpSetting(requestParams, function(data2){
6400 if(data2) {
6401 if(data2.result == "success" && target.currentMode() == "auto"){
6402 successOverlay("sntp_req_success");
6403 //hideLoading();
6404 }else if(data2.result == "processing" && target.currentMode() == "auto"){
6405 successOverlay("sntp_processing");
6406 }else{
6407 //����serverУ׼ʱ��
6408 service.setSNTPDate({
6409 goformId: "SNTP_Getdatastatic"
6410 }, function(result){
6411 var sntpInfo = service.getSntpParams();
6412 globalTime = new Date(parseInt(sntpInfo.sntp_year, 10),parseInt(sntpInfo.sntp_month, 10)-1, parseInt(sntpInfo.sntp_day, 10), parseInt(sntpInfo.sntp_hour, 10), parseInt(sntpInfo.sntp_minute, 10), parseInt(sntpInfo.sntp_second, 10));
6413 successOverlay();
6414 });
6415 }
6416 } else {
6417 errorOverlay();
6418 }
6419 });
6420 }
6421
6422 // �ֶ�/�Զ��л���Ӧ����
6423 function changeSetTimeMode() {
6424 if(target.currentMode() == "manual") {
6425 target.isManualSetTime(true);
6426 target.isAutoSntpTime(false);
6427 } else {
6428 target.isManualSetTime(false);
6429 target.isAutoSntpTime(true);
6430 }
6431 return true;
6432 }
6433
6434 // ��ʼ��ʱ��
6435 function initDateList(){
6436 sv_sntpDates = [];
6437 if($.inArray(parseInt(target.currentMonth(), 10), sf_smallMonth) != -1) {
6438 sf_produceArray(1, 30, sv_sntpDates);
6439 } else if($.inArray(parseInt(target.currentMonth(), 10), sf_bigMonth) != -1) {
6440 sf_produceArray(1, 31, sv_sntpDates);
6441 } else if(parseInt(target.currentYear(), 10)%4 == 0) {
6442 sf_produceArray(1, 29, sv_sntpDates);
6443 } else {
6444 sf_produceArray(1, 28, sv_sntpDates);
6445 }
6446 }
6447
6448 // ��ʼ������������
6449 function initOtherServer(){
6450 target.isOther0(target.currentServer0() == "Other");
6451 target.isOther1(target.currentServer1() == "Other");
6452 target.isOther2(target.currentServer2() == "Other");
6453 !target.isOther0() && $("#sntp_server0").find(".error").hide();
6454 !target.isOther1() && $("#sntp_server1").find(".error").hide();
6455 !target.isOther2() && $("#sntp_server2").find(".error").hide();
6456 }
6457
6458
6459 }
6460
6461 // ��ʼ�� ViewModel����������ͼ��
6462 function init() {
6463 var fwVm = new othersViewModel();
6464 var container = $('#container')[0];
6465 ko.cleanNode(container);
6466 ko.applyBindings(fwVm, container);
6467 fwVm.updateCurrentTime();
6468
6469 addInterval(function(){
6470 fwVm.updateCurrentTime();
6471 }, 1000);
6472
6473 $("#sntpForm").validate({
6474 submitHandler: function(){
6475 fwVm.apply();
6476 },
6477 rules: {
6478 sntp_other_server0 : "sntp_invalid_server_name",
6479 sntp_other_server1 : "sntp_invalid_server_name",
6480 sntp_other_server2 : "sntp_invalid_server_name"
6481 }
6482 });
6483 }
6484
6485 return {
6486 init:init
6487 }
6488 });
w.denged536982025-07-21 10:24:31 +08006489const errorMessages = {
6490 "en": {
6491 txtCurrent: {
6492 manage_info_check: "Please enter a valid password."
6493 },
6494 txtNew: {
6495 manage_info_check: "Please enter a valid password."
6496 },
6497 txtConfirm: {
6498 equalTo: "The new password and the confirmed password do not match or contain illegal characters."
6499 }
6500 },
6501 "zh": {
6502 txtCurrent: {
6503 manage_info_check: "请输入有效的密码"
6504 },
6505 txtNew: {
6506 manage_info_check: "请输入有效的密码"
6507 },
6508 txtConfirm: {
6509 equalTo: "新密码和确认密码不匹配或者包含非法字符"
6510 }
6511 }
6512};
qumengjiaca65ef52024-11-06 15:42:21 +08006513// ������� �
6514
6515define("adm_management","jquery knockout set service underscore CryptoJS".split(" "),
6516
6517 function ($, ko, config, service, _, CryptoJS) {
6518
6519 function manageViewModel() {
6520 var target = this;
6521
6522 target.currentValue = ko.observable();
6523 target.newValue = ko.observable();
6524 target.confirmValue = ko.observable();
6525
6526 function sf_changeValue() {
6527 var sv_manageInfo = {};
6528 if (config.PASSWORD_ENCODE) {
6529 sv_manageInfo.oldValue = target.currentValue();
6530 sv_manageInfo.newValue = target.newValue();
6531 } else {
6532 var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,32}');
6533
6534 if (!pwdRegex.test(target.newValue())) {
6535 showConfirm("password_note_too_low", function () {
6536
6537 var kparam = service.getDeviceInfoLow();
6538 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6539 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6540 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6541 iv: tiv,
6542 mode: CryptoJS.mode.CBC,
6543 padding: CryptoJS.pad.ZeroPadding
6544 }).toString();
6545 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6546 iv: tiv,
6547 mode: CryptoJS.mode.CBC,
6548 padding: CryptoJS.pad.ZeroPadding
6549 }).toString();
6550
6551 sv_manageInfo.oldValue = cipherold;
6552 sv_manageInfo.newValue = ciphernew;
6553
6554 showLoading();
6555
6556 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6557 target.cancel();
6558 if (resultInfo && resultInfo.result == true) {
6559 successOverlay();
6560 } else {
6561 if (resultInfo && resultInfo.errorType == "badPassword") {
6562 hideLoading();
6563 showAlert("current_password_error",function(){
6564 $("#txtCurrent").focus();
6565 });
6566 } else {
6567 errorOverlay();
6568 }
6569 }
6570 });
6571 });
6572 return;
6573 }
6574 var kparam = service.getDeviceInfoLow();
6575 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6576 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6577 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6578 iv: tiv,
6579 mode: CryptoJS.mode.CBC,
6580 padding: CryptoJS.pad.ZeroPadding
6581 }).toString();
6582 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6583 iv: tiv,
6584 mode: CryptoJS.mode.CBC,
6585 padding: CryptoJS.pad.ZeroPadding
6586 }).toString();
6587
6588 sv_manageInfo.oldValue = cipherold;
6589 sv_manageInfo.newValue = ciphernew;
6590 }
6591
6592 showLoading();
6593
6594 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6595 target.cancel();
6596 if (resultInfo && resultInfo.result == true) {
6597 successOverlay();
6598 } else {
6599 if (resultInfo && resultInfo.errorType == "badPassword") {
6600 hideLoading();
6601 showAlert("current_password_error",function(){
6602 $("#txtCurrent").focus();
6603 });
6604 } else {
6605 errorOverlay();
6606 }
6607 }
6608 });
6609 }
6610
6611 // ������������
6612 function sf_cancel() {
6613 target.currentValue("");
6614 target.newValue("");
6615 target.confirmValue("");
6616 }
6617
6618 target.cancel = sf_cancel;
6619
6620 // �޸�����
6621 target.changeValue = sf_changeValue;
6622 }
6623
6624 function init() {
6625 var container = $('#container');
6626 ko.cleanNode(container[0]);
6627 var fwVm = new manageViewModel();
6628 ko.applyBindings(fwVm, container[0]);
6629
mj.qu7af1f5b2025-07-31 19:31:40 -07006630 const langObj = service.getLanguage();
6631 const langCode = (langObj && langObj.Language || 'en').split('-')[0];
6632 const messages = errorMessages[langCode] || errorMessages['en'];
6633 console.log('langCode =', langCode);
w.denged536982025-07-21 10:24:31 +08006634
qumengjiaca65ef52024-11-06 15:42:21 +08006635 $('#frmPassword').validate({
6636 submitHandler:function () {
6637 fwVm.changeValue();
6638 },
6639 rules:{
6640 txtCurrent:"manage_info_check",
6641 txtNew:"manage_info_check",
6642 txtConfirm:{ equalTo:"#txtNew"}
w.denged536982025-07-21 10:24:31 +08006643 },
6644 messages: messages
qumengjiaca65ef52024-11-06 15:42:21 +08006645 });
6646 }
6647
6648 return {
6649 init:init
6650 }
6651 }
6652);
6653// PIN�����
6654
6655define("adm_pin","jquery knockout set service".split(" "),
6656
6657 function ($, ko, config, service) {
6658 var pageState = {common:0, requirePin:1, modifyPin:2, requirePuk:3, destroyed:4};
6659 var pinStatus = {enable:"1", disable:"0"};
6660
6661
6662 function pinViewModel() {
6663 var target = this;
6664 var sv_currentPinData = service.getPinData();
6665
6666 target.isDataCard = config.PRODUCT_TYPE == 'DATACARD';
6667 target.originPinStatus = ko.observable(sv_currentPinData.pin_status);
6668
6669 target.pinStatus = ko.observable(sv_currentPinData.pin_status);
6670 target.pinNumber = ko.observable(sv_currentPinData.pinnumber);
6671 target.pukNumber = ko.observable(sv_currentPinData.puknumber);
6672
6673 target.currentPin = ko.observable();
6674 target.newPin = ko.observable();
6675 target.confirmPin = ko.observable();
6676
6677 target.puk = ko.observable();
6678
6679 target.pageState = ko.observable();
6680 // ���������ɹ���־λ
6681 target.operateSuccessFlag = true;
6682
6683 target.callback = sf_callback;
6684
6685 function sf_callback(info) {
6686 if (info && info.result == true) {
6687 target.operateSuccessFlag = true;
6688 successOverlay();
6689 } else {
6690 target.operateSuccessFlag = false;
6691
6692 // ���һ��ǰҪ������ʾ
6693 if(target.pinNumber() == 2){
6694 showAlert("last_enter_pin");
6695 } else if(target.pukNumber() == 2){
6696 showAlert("last_enter_puk");
6697 }
6698 else{
6699 errorOverlay();
6700 }
6701 }
6702 init(target);
6703 }
6704
6705
6706 // ȷ����ť�¼������������޸�PIN������PUK����PIN������PIN��ʹ��״̬
6707
6708 function sf_changePin() {
6709 if (target.isConnectedNetWork()) {
6710 showAlert("cannot_operate_when_connected");
6711 return;
6712 }
6713
6714 if (target.pageState() == pageState.common) {
6715 return;
6716 }
6717
6718 var sv_pinPara = {
6719 oldPin:target.currentPin(),
6720 newPin:target.newPin()
6721 };
6722 showLoading();
6723
6724 if (target.pageState() == pageState.modifyPin) {
6725 service.changePin(sv_pinPara, target.callback);
6726 } else if (target.pageState() == pageState.requirePuk) {
6727 sv_pinPara = {
6728 PinNumber:target.newPin(),
6729 PUKNumber:target.puk()
6730 };
6731 service.enterPUK(sv_pinPara, target.callback);
6732 } else {
6733 if (target.pinStatus() == pinStatus.enable) {
6734 service.enablePin(sv_pinPara, target.callback);
6735 } else {
6736 service.disablePin(sv_pinPara, target.callback);
6737 }
6738 }
6739 }
6740
6741
6742 // ȡ���¼�����
6743 function sf_cancel() {
6744 target.pageState(pageState.common);
6745 target.pinStatus(target.originPinStatus());
6746 target.clear();
6747 }
6748
6749 // ���ҳ������ͼ����Ϣ
6750 function sf_clear() {
6751 target.confirmPin("");
6752 target.currentPin("");
6753 target.newPin("");
6754 target.puk("");
6755 clearValidateMsg();
6756 }
6757
6758 // �������ݣ����õ�ǰ��ҳ��״̬
6759 function sf_computePageState(i_pinData) {
6760 if (i_pinData.pinnumber > 0) {
6761 //�����ɹ�ҳ��ص���ʼ״̬������ʧ�ܲ���pinnumber>0,ҳ�治��ת
6762 if (target.operateSuccessFlag) {
6763 target.cancel();
6764 } else {
6765 target.clear();
6766 }
6767 } else {
6768 target.clear();
6769 if (i_pinData.puknumber > 0) {
6770 target.pageState(pageState.requirePuk);
6771 } else {
6772 target.pageState(pageState.destroyed);
6773 }
6774 }
6775 }
6776
6777 // ����PIN�޸�״̬�¼�����
6778 function sf_displayModifyPinPage() {
6779 if (target.isConnectedNetWork()) {
6780 showAlert("cannot_operate_when_connected");
6781 return;
6782 }
6783 target.pinStatus(target.originPinStatus());
6784 target.pageState(pageState.modifyPin);
6785 target.clear();
6786 }
6787
6788 // ����ҳ��Ԫ�ص�ʹ��״̬
6789 function sf_fixPageEnable() {
6790 if (target.isConnectedNetWork()) {
6791 $('#frmPin :input').each(function () {
6792 disableBtn($(this));
6793 });
6794 clearValidateMsg();
6795 } else {
6796 $('#frmPin :input').each(function () {
6797 if (this.id == "txtPin" || this.id == "btnPinApply") {
6798 if (target.pageState() == pageState.common) {
6799 disableBtn($(this));
6800 return;
6801 }
6802 }
6803 if (this.id == "btnModifyPin") {
6804 if (target.originPinStatus() != pinStatus.enable) {
6805 disableBtn($(this));
6806 return;
6807 }
6808 }
6809 if (this.id == "pinEnable" || this.id == "pinDisable") {
6810 if (target.pageState() == pageState.modifyPin) {
6811 disableBtn($(this));
6812 return;
6813 }
6814 }
6815 enableBtn($(this));
6816 });
6817
6818 }
6819 }
6820
6821 // �Ƿ�������
6822 function sf_isConnectedNetWork() {
6823 var info = service.getConnectionInfo();
6824 return info.connectStatus == "ppp_connected";
6825 }
6826
6827 // PINʹ�ܸı�ʱ�¼�����
6828 function sf_pinStatusChangeEvent() {
6829 if (target.pinStatus() == target.originPinStatus()) {
6830 target.pageState(pageState.common);
6831 } else {
6832 target.pageState(pageState.requirePin);
6833 }
6834 target.clear();
6835 }
6836
6837 target.changePin = sf_changePin;
6838 target.cancel = sf_cancel;
6839 target.clear = sf_clear;
6840 target.computePageState = sf_computePageState;
6841
6842 target.computePageState(sv_currentPinData);
6843
6844 target.displayModifyPinPage = sf_displayModifyPinPage;
6845 target.fixPageEnable = sf_fixPageEnable;
6846 target.isConnectedNetWork = sf_isConnectedNetWork;
6847
6848 target.pinStatusChangeEvent = ko.dependentObservable(sf_pinStatusChangeEvent, this);
6849 }
6850
6851 function init(oldViewModel) {
6852
6853 var fwVm = oldViewModel;
6854
6855 if (fwVm) {
6856 var sv_currentPinData = service.getPinData();
6857 fwVm.originPinStatus(sv_currentPinData.pin_status);
6858 fwVm.pinNumber(sv_currentPinData.pinnumber);
6859 fwVm.pukNumber(sv_currentPinData.puknumber);
6860 fwVm.computePageState(sv_currentPinData);
6861 } else {
6862 fwVm = new pinViewModel();
6863 addInterval(function () {
6864 fwVm.fixPageEnable();
6865 }, 1000);
6866 }
6867
6868 var container = $('#container')[0];
6869 ko.cleanNode(container);
6870 ko.applyBindings(fwVm, container);
6871 fwVm.fixPageEnable();
6872
6873 $('#frmPin').validate({
6874 submitHandler:function () {
6875 fwVm.changePin();
6876 },
6877 rules:{
6878 txtPuk:"puk_check",
6879 txtPin:"pin_check",
6880 txtNewPin:"pin_check",
6881 txtConfirmPin:{equalToPin:"#txtNewPin"}
6882 }
6883 });
6884 }
6885
6886 return {
6887 init:init
6888 }
6889 }
6890);
6891
6892// ��������
6893define("adm_quick_set","jquery knockout set service underscore CryptoJS".split(" "),
6894
6895 function ($, ko, config, service, _, CryptoJS) {
6896
6897 var sv_wifiState = {ok:0, wps_on:1, wifi_off:2};
6898 var sv_apnMode = {auto:"auto", manual:"manual"};
6899 var sv_minStep = 1;
6900 var sv_maxStep = 5;
6901
6902 // ��ȡ��Ȩ��ʽ
6903 function sf_fetchAuthenticationModes() {
6904 return _.map(config.APN_AUTH_MODES, function (item) {
6905 return new Option(item.name, item.value);
6906 });
6907 }
6908
6909 // WIFI��ȫģʽѡ��
6910 var sv_securityModes = _.map(config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES, function (item) {
6911 return new Option(item.name, item.value);
6912 });
6913
6914
6915 function quickSettingViewModel() {
6916 var target = this;
6917
6918 var sv_quickSettingInfo = service.getQuickSettingInfo();
6919
6920 target.currentStep = ko.observable(sv_minStep);
6921 target.ipType = ko.observable(sv_quickSettingInfo.pdp_type == "IP" ? "IP" : sv_quickSettingInfo.ipv6_pdp_type);
6922 target.supportIPv6 = config.IPV6_SUPPORT;
6923 target.supportIpv4AndIpv6 = config.IPV4_AND_V6_SUPPORT;
6924
6925 target.wpsFlag = ko.observable(sv_quickSettingInfo.WscModeOption);
6926
6927 function sf_apnDisabled() {
6928 return (sv_quickSettingInfo.apn_index < config.defaultApnSize || sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting");
6929 }
6930
6931 function sf_apnModeDisabled() {
6932 return (sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting" || (!target.profileName() && target.apnMode() == sv_apnMode.auto));//ѡ��Ϊ�ջ��������ӻ�������
6933 }
6934
6935 function sf_currAPN() {
6936 var sv_APNText = sv_quickSettingInfo["APN_configtmp" + sv_quickSettingInfo.apn_index];
6937 var strIPv6APN = sv_quickSettingInfo["ipv6_APN_configtmp" + sv_quickSettingInfo.apn_index];
6938
6939 var sv_apn = [];
6940 var sv_ipv6APNItems = [];
6941
6942 if (sv_APNText) {
6943 sv_apn = sv_APNText.split("($)");
6944 }
6945
6946 if (strIPv6APN) {
6947 sv_ipv6APNItems = strIPv6APN.split("($)");
6948 }
6949
6950 return {
6951 m_profile_name:sv_apn[0],
6952 wan_apn:sv_apn[1],
6953 ppp_auth_mode: sv_apn[4] == "" || typeof(sv_apn[4]) == "undefined" ? "" : sv_apn[4].toLowerCase(),
6954 ppp_username:sv_apn[5],
6955 ppp_passtmp:sv_apn[6],
mj.que145fd02025-06-05 00:13:13 -07006956 pdp_type: sv_apn[7] == "" || typeof(sv_apn[7]) == "undefined" ? sv_ipv6APNItems[7] : sv_apn[7],
qumengjiaca65ef52024-11-06 15:42:21 +08006957 ipv6_wan_apn:sv_ipv6APNItems[1],
6958 ipv6_ppp_auth_mode:typeof(sv_ipv6APNItems[4]) == "undefined" || sv_ipv6APNItems[4] == ""? "" : sv_ipv6APNItems[4].toLowerCase(),
6959 ipv6_ppp_username:sv_ipv6APNItems[5],
6960 ipv6_ppp_passtmp:sv_ipv6APNItems[6],
6961 ipv6_pdp_type:sv_ipv6APNItems[7]
6962 }
6963 }
6964
6965 // ��ǰAPN����
6966 target.currAPN = ko.computed(sf_currAPN);
6967
6968 target.apn = ko.observable(target.currAPN().wan_apn);
mj.que145fd02025-06-05 00:13:13 -07006969 target.ipType = ko.observable(target.currAPN().pdp_type);
qumengjiaca65ef52024-11-06 15:42:21 +08006970 target.ipv6_apn = ko.observable(target.currAPN().ipv6_wan_apn);
6971 target.ipv6_selectedAuthMode = ko.observable(target.currAPN().ipv6_ppp_auth_mode);
6972 target.ipv6_username = ko.observable(target.currAPN().ipv6_ppp_username);
6973 target.ipv6_password = ko.observable(target.currAPN().ipv6_ppp_passtmp);
6974 target.profileName = ko.observable(target.currAPN().m_profile_name);
6975 target.selectedAuthMode = ko.observable(target.currAPN().ppp_auth_mode);
6976 target.username = ko.observable(target.currAPN().ppp_username);
6977 target.password = ko.observable(target.currAPN().ppp_passtmp);
6978
6979 target.transAPN = ko.observable("apn_ipv4_apn");
6980 target.transAPNIPv6 = ko.observable("apn_ipv6_apn");
6981 target.transAuthMode = ko.observable("apn_authentication_ipv4");
6982 target.transAuthModeIPv6 = ko.observable("apn_authentication_ipv6");
6983 target.transUserName = ko.observable("apn_user_name_ipv4");
6984 target.transPassword = ko.observable("apn_password_ipv4");
6985 target.transUserNameIPv6 = ko.observable("apn_user_name_ipv6");
6986 target.transPasswordIPv6 = ko.observable("apn_password_ipv6");
6987
6988
6989
6990 target.apnDisabled = ko.computed(sf_apnDisabled);
6991 target.apnMode = ko.observable(sv_quickSettingInfo.apn_mode);
6992 target.apnModeDisabled = ko.computed(sf_apnModeDisabled);
6993 target.authModes = ko.observableArray(sf_fetchAuthenticationModes());
6994
6995 if (target.ipType() == "IPv6") {
6996 target.showIPv4 = false;
6997 target.showIPv6 = true;
6998 target.transAPNIPv6("apn");
6999 target.transAuthModeIPv6("apn_authentication");
7000 target.transUserNameIPv6("apn_user_name");
7001 target.transPasswordIPv6("apn_password");
7002 } else if (config.IPV4_AND_V6_SUPPORT && target.ipType() == "IPv4v6") {
7003 target.showIPv4 = true;
7004 target.showIPv6 = true;
7005 //ʹ��Ĭ��
7006 } else if (target.ipType() == "IP" || target.ipType() == "IPv4") {
7007 target.showIPv4 = true;
7008 target.showIPv6 = false;
7009 target.transAPN("apn");
7010 target.transAuthMode("apn_authentication");
7011 target.transUserName("apn_user_name");
7012 target.transPassword("apn_password");
7013 } else { //pdp_type == "IPv4v6" && config.IPV4V6_SUPPORT
7014 target.showIPv4 = true;
7015 target.showIPv6 = false;
7016 target.transAPN("apn");
7017 target.transAuthMode("apn_authentication");
7018 target.transUserName("apn_user_name");
7019 target.transPassword("apn_password");
7020 }
7021
7022 target.wifiDisabled = (sv_quickSettingInfo.wifi_cur_state != "1");
7023 target.ssid = ko.observable(sv_quickSettingInfo.SSID1);
7024 target.broadcast = ko.observable(sv_quickSettingInfo.HideSSID);
7025 target.hasWifiWep = config.WIFI_WEP_SUPPORT;
7026 target.hasWifiWpa3 = config.WIFI_WAP3_SUPPORT;
7027 target.hasWifiWpa23 = config.WIFI_WPA2_WAP3_SUPPORT;
7028
7029 target.securityModes = ko.observableArray(sv_securityModes);
7030 target.selectedSecurityMode = ko.observable(sv_quickSettingInfo.AuthMode);
7031 target.WPAKey = ko.observable(sv_quickSettingInfo.WPAPSK1);
7032
7033 target.apnMode_display = ko.observable("");
7034
7035 target.apnMode_trans = ko.computed(sf_apnMode_trans);
7036 target.selectedAuthMode_display = ko.computed(sf_selectedAuthMode_display);
7037 target.ipv6_selectedAuthMode_display = ko.computed(sf_ipv6_selectedAuthMode_display);
7038
7039 target.showWifiPassword = ko.observable(false);
7040 target.showWifiPasswordHandler = sf_showWifiPasswordHandler;
7041
7042 //�ж��Ƿ���802 n only��
7043 var sv_adInfo = service.getWifiAdvance();
7044 target.adBand = ko.observable(sv_adInfo.wifiBand);
7045 target.adMode = ko.observable(sv_adInfo.mode);
7046
7047 target.encryptType = ko.observable(sv_quickSettingInfo.EncrypType);
7048 target.keyID = ko.observable(sv_quickSettingInfo.DefaultKeyID);
7049 target.wepPassword = ko.observable("");
7050
7051 target.getWepPassword = sf_getWepPassword;
7052 target.wepPassword(target.getWepPassword());
7053 target.profileChangeHandler = sf_profileChangeHandler;
7054
7055 target.broadcast_display = ko.observable("");
7056 target.broadcast_trans = ko.computed(sf_broadcast_trans);
7057
7058 target.selectedSecurityMode_display = ko.observable();
7059 target.selectedSecurityMode_trans = ko.computed(sf_selectedSecurityMode_trans);
7060
7061
7062 target.callback = sf_callback;
7063 target.next = sf_button_next;
7064 target.previous = sf_button_previous;
7065 target.save = sf_button_save;
7066
7067 function sf_apnMode_trans() {
7068 if (sv_apnMode.auto == target.apnMode()) {
7069 target.apnMode_display($.i18n.prop("apn_auto_apn"));
7070 return "apn_auto_apn";
7071 } else {
7072 target.apnMode_display($.i18n.prop("apn_manual_apn"));
7073 return "apn_manual_apn";
7074 }
7075 }
7076
7077 function sf_broadcast_trans() {
7078 if ("0" == target.broadcast()) {
7079 target.broadcast_display($.i18n.prop("enable"));
7080 return "enable";
7081 } else {
7082 target.broadcast_display($.i18n.prop("disable"));
7083 return "disable";
7084 }
7085 }
7086
7087 function sf_button_next() {
7088 var currentStep = target.currentStep();
7089 var toStep = target.currentStep() + 1;
7090 sf_changeStep(toStep);
7091
7092 if (currentStep == 1 && target.apnMode() == sv_apnMode.auto) {
7093 toStep = target.currentStep() + 1;
7094 sf_changeStep(toStep);
7095 }
7096 }
7097
7098 function sf_button_previous() {
7099
7100 var currentStep = target.currentStep();
7101 var toStep = target.currentStep() - 1;
7102
7103 sf_changeStep(toStep);
7104
7105 if (currentStep == 3 && target.apnMode() == sv_apnMode.auto) {
7106 toStep = target.currentStep() - 1;
7107 sf_changeStep(toStep);
7108 }
7109 }
7110 function sf_button_save() {
7111 var submit = function () {
7112 sf_quickSetting4IPv6();
7113 };
7114 var result = sf_isDisabled_Wifi();
7115 if(result == sv_wifiState.wifi_off){
7116 showConfirm("quick_setting_wifi_disable_confirm", submit);
7117 } else if (result == sv_wifiState.wps_on) {
7118 showAlert("wps_on_info");
7119 } else{
7120 showConfirm("quick_setting_param_changed_confirm", submit);//submit();
7121 }
7122 }
7123 // ���������ύ��Ļص�����
7124 function sf_callback(data) {
7125 if (data.result == "success") {
7126 successOverlay();
mj.qu7b3dd3a2025-07-10 01:31:18 -07007127 location.hash = "#main";
qumengjiaca65ef52024-11-06 15:42:21 +08007128 }
7129 else {
7130 errorOverlay();
7131 }
7132 }
7133
7134 // �任����ʱ����
7135 function sf_changeStep(i_step) {
7136 if (i_step > sv_maxStep) {
7137 i_step = sv_maxStep;
7138 } else if (i_step < sv_minStep) {
7139 i_step = sv_minStep;
7140 }
7141
7142 target.currentStep(i_step);
7143 return true;
7144 }
7145
7146 function sf_ipv6_selectedAuthMode_display() {
7147 var mode = target.ipv6_selectedAuthMode();
7148 return sf_getAuthModeNameByValue(mode);
7149 }
7150 // ���ݼ�Ȩģʽ��ֵ��������
7151 function sf_getAuthModeNameByValue(authMode) {
7152 for (var i = 0; i < config.APN_AUTH_MODES.length; i++) {
7153 if (authMode == config.APN_AUTH_MODES[i].value) {
7154 return config.APN_AUTH_MODES[i].name;
7155 }
7156 }
7157 }
7158
7159 function sf_getWepPassword(){
7160 return target.keyID() == '3' ? sv_quickSettingInfo.Key4Str1 : (target.keyID() == '2' ? sv_quickSettingInfo.Key3Str1 : target.keyID() == '1' ? sv_quickSettingInfo.Key2Str1 : sv_quickSettingInfo.Key1Str1);
7161 }
7162
7163 function sf_isDisabled_Wifi() {
7164 var s_wpsInfo = service.getWpsInfo();
7165 if(s_wpsInfo.radioFlag == "0"){
7166 return sv_wifiState.wifi_off;
7167 }else if (s_wpsInfo.wpsFlag == '1') {
7168 return sv_wifiState.wps_on;
7169 }
7170 return sv_wifiState.ok;
7171 }
7172 function sf_profileChangeHandler(i_data, i_event) {
7173 $("#pwdWepKey").parent().find("label[class='error']").hide();
7174 target.wepPassword(target.getWepPassword());
7175 return true;
7176 }
7177
7178 // ���������ύ(֧��IPv6��
7179 function sf_quickSetting4IPv6() {
7180 showLoading();
7181 var useIPv4ForV6 = config.IPV4V6_SUPPORT && target.currAPN().pdp_type == "IPv4v6";
7182
7183 var ciphertext = "";
7184 if (config.PASSWORD_ENCODE) {
7185 ciphertext = target.WPAKey();
7186 } else {
7187 var kparam = service.getDeviceInfoLow();
7188 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
7189 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
7190 ciphertext = CryptoJS.AES.encrypt(target.WPAKey(), tkey, {
7191 iv: tiv,
7192 mode: CryptoJS.mode.CBC,
7193 padding: CryptoJS.pad.ZeroPadding
7194 }).toString();
7195 }
7196
7197 var s_quickSettingParameters = {
7198 apn_index: sv_quickSettingInfo.apn_index,
7199 apnMode: target.apnMode(),
7200 Encryption_Mode_hid: target.selectedSecurityMode(),
7201 ipv6_ppp_auth_mode: useIPv4ForV6 ? target.selectedAuthMode() : target.ipv6_selectedAuthMode(),
7202 ipv6_ppp_username: useIPv4ForV6 ? target.username() : target.ipv6_username(),
7203 ipv6_ppp_passtmp: useIPv4ForV6 ? target.password() : target.ipv6_password(),
7204 ipv6_wan_apn: useIPv4ForV6 ? target.apn() : target.ipv6_apn(),
7205 pdp_type: target.ipType(),
7206 ppp_auth_mode: target.selectedAuthMode(),
7207 ppp_username: target.username(),
7208 ppp_passtmp: target.password(),
7209 profile_name: target.profileName(),
7210 //Ŀǰ����ģʽֻ��2�֣�����3������Ϊ�̶�ֵ
7211 //�����Ҫ����Ϊ5�֣�����ֵ��Ҫ����
7212 security_shared_mode: "NONE",
7213 SSID_Broadcast: target.broadcast(),
7214 SSID_name: target.ssid(),
7215 wan_apn: target.apn(),
7216 wep_default_key: 0,
7217 WPA_ENCRYPTION_hid: target.selectedSecurityMode() == "OPEN" ? "NONE" : target.selectedSecurityMode() == "WPA2PSK" ? 1 : 2,
7218 WPA_PreShared_Key: ciphertext
7219 }
7220
7221 s_quickSettingParameters.wep_default_key = target.keyID();
7222
7223 if(target.encryptType() == "SHARED" || target.selectedSecurityMode() == "WEP") {
7224
7225 s_quickSettingParameters.security_shared_mode = "WEP";
7226
7227 s_quickSettingParameters.wep_key_1 = sv_quickSettingInfo.Key1Str1;
7228 s_quickSettingParameters.wep_key_2 = sv_quickSettingInfo.Key2Str1;
7229 s_quickSettingParameters.wep_key_3 = sv_quickSettingInfo.Key3Str1;
7230 s_quickSettingParameters.wep_key_4 = sv_quickSettingInfo.Key4Str1;
7231
7232 var WEPSelectTmp = '0';
7233
7234 if(target.wepPassword().length =='5' ||target.wepPassword().length =='13'){
7235 WEPSelectTmp = '1';
7236 }else{
7237 WEPSelectTmp = '0';
7238 }
7239
7240 if(target.keyID() =='3'){
7241 s_quickSettingParameters.wep_key_4 = target.wepPassword();
7242 s_quickSettingParameters.WEP4Select = WEPSelectTmp;
7243 }else if(target.keyID() =='2'){
7244 s_quickSettingParameters.wep_key_3 = target.wepPassword();
7245 s_quickSettingParameters.WEP3Select = WEPSelectTmp;
7246 }else if(target.keyID() =='1'){
7247 s_quickSettingParameters.wep_key_2 = target.wepPassword();
7248 s_quickSettingParameters.WEP2Select = WEPSelectTmp;
7249 }else{
7250 s_quickSettingParameters.wep_key_1 = target.wepPassword();
7251 s_quickSettingParameters.WEP1Select = WEPSelectTmp;
7252 }
7253 }else if(target.encryptType() == "WPAPSKWPA2PSK") {
7254 s_quickSettingParameters.security_shared_mode = "NONE";
7255 }else {
7256 s_quickSettingParameters.security_shared_mode = "NONE";
7257 }
7258
7259 service.setQuickSetting4IPv6(s_quickSettingParameters, target.callback);
7260 }
7261
7262 function sf_selectedAuthMode_display() {
7263 var mode = target.selectedAuthMode();
7264 return sf_getAuthModeNameByValue(mode);
7265 }
7266
7267 function sf_selectedSecurityMode_trans() {
7268 var mode = target.selectedSecurityMode();
7269 var modesOption = config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES;
7270 for (var i = 0; i < modesOption.length; i++) {
7271 if (mode == modesOption[i].value) {
7272 target.selectedSecurityMode_display($.i18n.prop("security_mode_" + modesOption[i].value));
7273 return "security_mode_" + modesOption[i].value;
7274 }
7275 }
7276 }
7277
7278 function sf_showWifiPasswordHandler(){
7279 $("#pwdWepKey").parent().find(".error").hide();
7280 $("#codeWPAKey").parent().find(".error").hide();
7281 var checkbox = $("#showWifiPassword:checked");
7282 if(checkbox && checkbox.length == 0){
7283 target.showWifiPassword(true);
7284 }else{
7285 target.showWifiPassword(false);
7286 }
7287 }
7288
7289 }
7290
7291 function init() {
7292 var container = $('#container');
7293 ko.cleanNode(container[0]);
7294 var fwVm = new quickSettingViewModel();
7295 ko.applyBindings(fwVm, container[0]);
7296
7297 $('#quickSettingForm').validate({
7298 submitHandler:function () {
7299 if (fwVm.currentStep() < 5) {
7300 fwVm.next();
7301 } else {
7302 fwVm.save();
7303 }
7304 },
7305 rules:{
7306 txtAPN:"apn_check",
7307 txtIPv6APN:"apn_check",
7308 txtSSID:'ssid',
7309 pwdWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7310 txtWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7311 txtWPAKey:'wifi_password_check',
7312 codeWPAKey:'wifi_password_check',
7313 txtUserName:'ppp_username_check',
7314 txtIPv6UserName:'ppp_username_check',
7315 txtSecretCode:"ppp_secretcode_check",
7316 txtIPv6SecretCode:"ppp_secretcode_check"
7317 },
7318 errorPlacement:function (error, element) {
7319 var id = element.attr("id");
7320 if (id == "pwdWepKey" || id == "txtWepKey"){
7321 error.insertAfter("#lblShowWepPassword");
7322 } else if (id == "txtWPAKey" || id == "codeWPAKey") {
7323 error.insertAfter("#lblShowWifiPassword");
7324 } else {
7325 error.insertAfter(element);
7326 }
7327 }
7328 });
7329 }
7330
7331 return {
7332 init:init
7333 };
7334 }
7335);
7336
7337define("main","set service knockout underscore jquery statusBar echarts".split(" "), function (set, fnc, libko, libus, libjq, barStat, echarts) {
7338
7339 var chartOptions = {
7340 color: ['red', 'red', 'red', 'red', 'red'],
7341 series: [{
7342 name: '��������',
7343 type: 'pie',
7344 radius: ['0', '72'],
7345 itemStyle: {
7346 normal: {
7347 label: {
7348 show: false
7349 },
7350 labelLine: {
7351 show: false
7352 }
7353 }
7354 },
7355 data: [],
7356 selectedOffset: 3
7357 }
7358 ],
7359 animation: false,
7360 title: {
7361 text: '',
7362 x: 'center',
7363 y: 'center',
7364 itemGap: 0,
7365 textStyle: {
7366 color: '#FFF',
7367 fontFamily: '΢���ź�',
7368 fontSize: 20,
7369 fontWeight: 'bolder'
7370 },
7371 subtextStyle: {
7372 color: '#FFF',
7373 fontFamily: '΢���ź�',
7374 fontSize: 16,
7375 fontWeight: 'bolder'
7376 }
7377 },
7378 tooltip: {
7379 formatter: "{b}"
7380 },
7381 };
7382 var languageOld = window.language;
7383 var num_refresh = 0;
7384 var traffic_graphic_chart = null;
7385 var connStat = {
7386 CONNECTED: 1,
7387 DISCONNECTED: 2,
7388 CONNECTING: 3,
7389 DISCONNECTING: 4
7390 };
7391 function init() {
7392 num_refresh = 0;
7393 homeUtil.oldUsedData = null;
7394 homeUtil.oldAlarmData = null;
7395 traffic_graphic_chart = echarts.init(libjq("#traffic_graphic")[0]);
7396 var container = libjq('#container')[0];
7397 libko.cleanNode(container);
7398 var tmp = new VmHome();
7399 libko.applyBindings(tmp, container);
7400 var data = fnc.getLoginData();
7401 var psw_flg = data.psw_changed;
7402 if (psw_flg != "1") {
7403 showConfirm("password_note_first_change", function () {
7404 window.location.hash = '#pwd_mode';
7405 });
7406 return;
7407 }
7408 }
7409
7410 var homeUtil = {
7411 initStatus: null,
7412 initShownStatus: function (data) {
7413 this.initStatus = {};
7414 var ipv6Mode = data.ipv6PdpType.toLowerCase().indexOf("v6") > 0;
7415 if (set.RJ45_SUPPORT) {
7416 var mode = checkCableMode(data.blc_wan_mode);
7417 if (mode) {
7418 this.initStatus.showIpv6WanIpAddr = false;
7419 this.initStatus.showIpv4WanIpAddr = true;
7420 } else if (set.IPV6_SUPPORT) {
7421 if (data.pdpType == "IP") {
7422 this.initStatus.showIpv6WanIpAddr = false;
7423 this.initStatus.showIpv4WanIpAddr = true;
7424 } else if (ipv6Mode) {
7425 if (data.ipv6PdpType == "IPv6") {
7426 this.initStatus.showIpv6WanIpAddr = true;
7427 this.initStatus.showIpv4WanIpAddr = false;
7428 } else {
7429 this.initStatus.showIpv6WanIpAddr = true;
7430 this.initStatus.showIpv4WanIpAddr = true;
7431 }
7432 }
7433 } else {
7434 this.initStatus.showIpv6WanIpAddr = false;
7435 this.initStatus.showIpv4WanIpAddr = true;
7436 }
7437 } else {
7438 if (set.IPV6_SUPPORT) {
7439 if (data.pdpType == "IP") {
7440 this.initStatus.showIpv6WanIpAddr = false;
7441 this.initStatus.showIpv4WanIpAddr = true;
7442 } else if (ipv6Mode) {
7443 if (data.ipv6PdpType == "IPv6") {
7444 this.initStatus.showIpv6WanIpAddr = true;
7445 this.initStatus.showIpv4WanIpAddr = false;
7446 } else {
7447 this.initStatus.showIpv6WanIpAddr = true;
7448 this.initStatus.showIpv4WanIpAddr = true;
7449 }
7450 }
7451 } else {
7452 this.initStatus.showIpv6WanIpAddr = false;
7453 this.initStatus.showIpv4WanIpAddr = true;
7454 }
7455 }
7456 },
7457 wanIpGet: function (data) {
7458 var addrInfo = {
7459 wanIpAddress: '',
7460 ipv6WanIpAddress: ''
7461 };
7462 addrInfo.wanIpAddress = verifyDeviceInfo(data.wanIpAddress);
7463 addrInfo.ipv6WanIpAddress = verifyDeviceInfo(data.ipv6WanIpAddress);
7464 return addrInfo;
7465 },
7466 cachedAPStationBasic: null,
7467 cachedConnectionMode: null,
7468 getCanConnectNetWork: function (param) {
7469 var status = fnc.getStatusInfo();
7470 if (status.simStatus != "modem_init_complete") {
7471 return false;
7472 }
7473 var typeNetworkTmp = status.networkType.toLowerCase();
7474 if (typeNetworkTmp == 'searching') {
7475 return false;
7476 }
7477 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7478 typeNetworkTmp = 'limited_service';
7479 }
7480 if (typeNetworkTmp == 'no service') {
7481 typeNetworkTmp = 'no_service';
7482 }
7483 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7484 if (param.cStatus() != connStat.CONNECTED) {
7485 return false;
7486 }
7487 }
7488 if (set.AP_STATION_SUPPORT) {
7489 if (status.connectWifiStatus == "connect") {
7490 if (status.ap_station_mode == "wifi_pref") {
7491 return false;
7492 }
7493 }
7494 }
7495 return true;
7496 },
7497 doConnect: function () {
7498 showLoading('connecting');
7499 fnc.connect({}, function (data) {
7500 if (data.result) {
7501 successOverlay();
7502 } else {
7503 errorOverlay();
7504 }
7505 });
7506 },
7507 refreshHomeData: function (param) {
7508 var info = fnc.getConnectionInfo();
7509 param.connectStatus(info.connectStatus);
7510 param.canConnect(this.getCanConnectNetWork(param));
7511 param.networkType(homeUtil.getNetworkType(info.networkType));
7512 if (info.connectStatus == "ppp_connected") {
7513 param.current_Flux(transUnit(parseInt(info.data_counter.currentReceived, 10) + parseInt(info.data_counter.currentSent, 10), false));
7514 param.connected_Time(transSecond2Time(info.data_counter.currentConnectedTime));
7515 param.up_Speed(transUnit(info.data_counter.uploadRate, true));
7516 param.down_Speed(transUnit(info.data_counter.downloadRate, true));
7517 } else {
7518 param.current_Flux(transUnit(0, false));
7519 param.connected_Time(transSecond2Time(0));
7520 param.up_Speed(transUnit(0, true));
7521 param.down_Speed(transUnit(0, true));
7522 }
7523 param.trafficAlertEnable(info.limitVolumeEnable);
7524 if (info.limitVolumeEnable) {
7525 if (info.limitVolumeType == '1') {
7526 param.trafficUsed(transUnit(parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10), false));
7527 param.trafficLimited(transUnit(info.limitDataMonth, false));
7528 } else {
7529 param.trafficUsed(transSecond2Time(info.data_counter.monthlyConnectedTime));
7530 param.trafficLimited(transSecond2Time(info.limitTimeMonth));
7531 }
7532 }
7533 if (languageOld != window.language) {
7534 languageOld = window.language;
7535 num_refresh = 1;
7536 }
7537 if (param.showTraffic()) {
7538 homeUtil.updateEcharts(info);
7539 } else {
7540 homeUtil.allFreeEcharts();
7541 }
7542 homeUtil.refreshStationInfo(param);
7543 },
7544 allFreeEcharts: function () {
7545 var usedData = homeUtil.data.free;
7546 usedData.value = 1;
7547 usedData.selected = false;
7548 usedData.name = libjq.i18n.prop("echarts_no");
7549 chartOptions.series[0].data = [usedData];
7550 chartOptions.title.text = '';
7551 homeUtil.setEcharts(chartOptions, libjq.i18n.prop("echarts_no"));
7552 },
7553 getNetworkType: function (networkType) {
7554 var typeNetworkTmp = networkType.toLowerCase();
7555 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7556 typeNetworkTmp = 'limited_service';
7557 }
7558 if (typeNetworkTmp == 'no service') {
7559 typeNetworkTmp = 'no_service';
7560 }
7561 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7562 return libjq.i18n.prop("network_type_" + typeNetworkTmp);
7563 } else {
7564 return networkType;
7565 }
7566 },
7567 data: {
7568 full: {
7569 value: 30,
7570 name: '��������',
7571 itemStyle: {
7572 normal: {
7573 color: '#DF4313'
7574 }
7575 }
7576 },
7577 used: {
7578 value: 30,
7579 name: '��ʹ��',
7580 itemStyle: {
7581 normal: {
7582 color: '#8CC916'
7583 }
7584 }
7585 },
7586 left1: {
7587 value: 50,
7588 name: '����ֵ��δʹ��',
7589 itemStyle: {
7590 normal: {
7591 color: '#D8D8D8'
7592 }
7593 }
7594 },
7595 free: {
7596 value: 50,
7597 name: 'δʹ��',
7598 itemStyle: {
7599 normal: {
7600 color: '#D8D8D8'
7601 }
7602 }
7603 },
7604 alert: {
7605 value: 1,
7606 name: '����ֵ',
7607 itemStyle: {
7608 normal: {
7609 color: '#FF5500'
7610 }
7611 }
7612 },
7613 alarm: {
7614 value: 19.7,
7615 name: '������',
7616 itemStyle: {
7617 normal: {
7618 color: '#8CC916'
7619 }
7620 }
7621 },
7622 start: {
7623 value: 50,
7624 name: '����ֵ��δʹ��',
7625 itemStyle: {
7626 normal: {
7627 color: '#D8D8D8'
7628 }
7629 }
7630 },
7631 },
7632 getDataInfo: function (value) {
7633 return {
7634 data: /\d+(.\d+)?/.exec(value)[0],
7635 unit: /[A-Z]{1,2}/.exec(value)[0]
7636 }
7637 },
7638 oldAlarmData: null,
7639 oldUsedData: null,
7640 updateEcharts: function (info) {
7641 var startName = libjq.i18n.prop("echarts_no");
7642 num_refresh++;
7643 if (num_refresh % 10 != 2) {
7644 return false;
7645 }
7646 var total = 0,
7647 used = 0,
7648 reach = 0,
7649 left = 0,
7650 alarm = 0,
7651 left1 = 0;
7652 if (info.limitVolumeEnable) {
7653 startName = libjq.i18n.prop("echarts_used");
7654 chartOptions.series[0].data = [];
7655 if (info.limitVolumeType == '1') {
7656 var limitedDataFormatted = transUnit(info.limitDataMonth, false);
7657 chartOptions.series[0].data = [];
7658 if (info.limitDataMonth == 0) {
7659 var usedData = homeUtil.data.used;
7660 usedData.value = 1;
7661 usedData.selected = false;
7662 usedData.name = libjq.i18n.prop("echarts_used");
7663 chartOptions.series[0].data.push(usedData);
7664 } else {
7665 var dataInfo = homeUtil.getDataInfo(limitedDataFormatted);
7666 total = dataInfo.data * homeUtil.getUnitValue(dataInfo.unit) * 1048576;
7667 used = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
7668 reach = total * info.limitVolumePercent / 100;
7669 if (used >= total) {
7670 var fullData = homeUtil.data.full;
7671 fullData.value = 100;
7672 fullData.name = libjq.i18n.prop("echarts_full");
7673 chartOptions.series[0].data.push(fullData);
7674 startName = libjq.i18n.prop("echarts_full");
7675 } else {
7676 if (reach - used > 0) {
7677 left1 = reach - used;
7678 left = total - reach;
7679 } else {
7680 alarm = used - reach;
7681 left = total - used;
7682 }
7683 var usedData = homeUtil.data.used;
7684 if (reach - used > 0) {
7685 usedData.value = used;
7686 } else {
7687 usedData.value = reach;
7688 }
7689 usedData.name = libjq.i18n.prop("echarts_used");
7690 chartOptions.series[0].data.push(usedData);
7691 if (left1 > 0) {
7692 var left1Data = homeUtil.data.left1;
7693 left1Data.value = left1;
7694 left1Data.name = libjq.i18n.prop("echarts_left1");
7695 chartOptions.series[0].data.push(left1Data);
7696 }
7697 var alertData = homeUtil.data.alert;
7698 alertData.value = total / 200;
7699 alertData.name = libjq.i18n.prop("echarts_alert");
7700 chartOptions.series[0].data.push(alertData);
7701 if (alarm > 0) {
7702 var alarmData = homeUtil.data.alarm;
7703 alarmData.value = alarm;
7704 alarmData.name = libjq.i18n.prop("echarts_alarm");
7705 chartOptions.series[0].data.push(alarmData);
7706 }
7707 var freeData = homeUtil.data.free;
7708 freeData.value = left;
7709 freeData.name = libjq.i18n.prop("echarts_free");
7710 chartOptions.series[0].data.push(freeData);
7711 }
7712 }
7713 } else {
7714 chartOptions.series[0].data = [];
7715 if (info.limitTimeMonth == 0) {
7716 var usedData = homeUtil.data.used;
7717 usedData.value = 1;
7718 usedData.selected = false;
7719 usedData.name = libjq.i18n.prop("echarts_used");
7720 chartOptions.series[0].data.push(usedData);
7721 } else {
7722 total = info.limitTimeMonth;
7723 used = info.data_counter.monthlyConnectedTime;
7724 reach = total * info.limitVolumePercent / 100;
7725 if (used >= total) {
7726 var fullTime = homeUtil.data.full;
7727 fullTime.value = 100;
7728 fullTime.name = libjq.i18n.prop("echarts_full");
7729 chartOptions.series[0].data.push(fullTime);
7730 startName = libjq.i18n.prop("echarts_full");
7731 } else {
7732 if (reach - used > 0) {
7733 left1 = reach - used;
7734 left = total - reach;
7735 } else {
7736 alarm = used - reach;
7737 left = total - used;
7738 }
7739 var usedTime = homeUtil.data.used;
7740 if (reach - used > 0) {
7741 usedTime.value = used;
7742 } else {
7743 usedTime.value = reach;
7744 }
7745 usedTime.name = libjq.i18n.prop("echarts_used");
7746 chartOptions.series[0].data.push(usedTime);
7747 if (left1 > 0) {
7748 var left1Time = homeUtil.data.left1;
7749 left1Time.value = left1;
7750 left1Time.name = libjq.i18n.prop("echarts_left1");
7751 chartOptions.series[0].data.push(left1Time);
7752 }
7753 var alertTime = homeUtil.data.alert;
7754 alertTime.value = total / 200;
7755 alertTime.name = libjq.i18n.prop("echarts_alert");
7756 chartOptions.series[0].data.push(alertTime);
7757 if (alarm > 0) {
7758 var alarmTime = homeUtil.data.alarm;
7759 alarmTime.value = alarm;
7760 alarmTime.name = libjq.i18n.prop("echarts_alarm");
7761 chartOptions.series[0].data.push(alarmTime);
7762 }
7763 var freeTime = homeUtil.data.free;
7764 freeTime.value = left;
7765 freeTime.name = libjq.i18n.prop("echarts_free");
7766 chartOptions.series[0].data.push(freeTime);
7767 }
7768 }
7769 }
7770 } else {
7771 var usedData = homeUtil.data.used;
7772 usedData.value = 1;
7773 usedData.selected = false;
7774 usedData.name = libjq.i18n.prop("echarts_no");
7775 chartOptions.series[0].data = [usedData];
7776 chartOptions.title.text = '';
7777 }
7778 var firstEle = libus.find(chartOptions.series[0].data, function (n) {
7779 return n.name == libjq.i18n.prop("echarts_used");
7780 });
7781 var alarmEle = libus.find(chartOptions.series[0].data, function (n) {
7782 return n.name == libjq.i18n.prop("echarts_alarm");
7783 });
7784 if (!alarmEle) {
7785 alarmEle = {
7786 value: 0
7787 };
7788 }
7789 if (typeof firstEle == "undefined") {
7790 homeUtil.setEcharts(chartOptions, startName);
7791 } else if (homeUtil.oldUsedData != firstEle.value || homeUtil.oldAlarmData != alarmEle.value) {
7792 homeUtil.oldUsedData = firstEle.value;
7793 homeUtil.oldAlarmData = alarmEle.value;
7794 homeUtil.setEcharts(chartOptions, startName);
7795 }
7796 },
7797 getUnitValue: function (unit) {
7798 unit = unit.toUpperCase();
7799 if (unit == 'GB') {
7800 return '1024';
7801 } else if (unit == 'TB') {
7802 return '1048576';
7803 } else {
7804 return '1';
7805 }
7806 },
7807 setEcharts: function (options, startName) {
7808 var startPart = homeUtil.data.start;
7809 startPart.value = 0;
7810 startPart.name = startName;
7811 startPart.selected = false;
7812 var arr = [startPart].concat(options.series[0].data);
7813 options.series[0].data = arr;
7814 traffic_graphic_chart.setOption(options, true);
7815 addTimeout(function () {
7816 traffic_graphic_chart.resize();
7817 }, 1000);
7818 },
7819 refreshStationInfo: function (param) {
7820 param.wirelessDeviceNum(fnc.getStatusInfo().wirelessDeviceNum);
7821 if (num_refresh % 10 == 2) {
7822 fnc.getAttachedCableDevices({}, function (data) {
7823 param.wireDeviceNum(data.attachedDevices.length);
7824 });
7825 }
7826 },
7827 getUnit: function (val) {
7828 if (val == '1024') {
7829 return 'GB';
7830 } else if (val == '1048576') {
7831 return 'TB';
7832 } else {
7833 return 'MB';
7834 }
7835 },
7836 refreshOpmodeInfo: function (param) {
7837 var obj = fnc.getOpMode();
7838 param.isLoggedIn(obj.loginfo == "ok");
7839 var currentMode = checkCableMode(obj.blc_wan_mode);
7840 if (param.opCurMode() && !currentMode) {
7841 var data = fnc.getLoginData();
7842 var state = data.modem_main_state;
7843 if (state == "modem_sim_undetected" || state == "modem_undetected" || state == "modem_sim_destroy" || state == "modem_waitpin" || state == "modem_waitpuk" || state == "modem_imsi_waitnck") {
7844 window.location.reload();
7845 return;
7846 }
7847 }
7848 param.opCurMode(currentMode);
7849 if (currentMode && obj.ethwan_mode == "DHCP") {
7850 param.enableFlag(false);
7851 } else if ((!currentMode && obj.ppp_status != "ppp_disconnected") || (currentMode && obj.rj45_state != "idle" && obj.rj45_state != "dead")) {
7852 param.enableFlag(true);
7853 } else {
7854 param.enableFlag(false);
7855 }
7856 var mode = (obj.blc_wan_mode == "AUTO_PPP" || obj.blc_wan_mode == "AUTO_PPPOE") ? "AUTO" : obj.blc_wan_mode;
7857 var currentOpMode = "";
7858 switch (mode) {
7859 case "AUTO":
7860 currentOpMode = "opmode_auto";
7861 break;
7862 case "PPPOE":
7863 currentOpMode = "opmode_cable";
7864 break;
7865 case "PPP":
7866 currentOpMode = "opmode_gateway";
7867 break;
7868 default:
7869 break;
7870 }
7871 libjq("#opmode").attr("data-trans", currentOpMode).text(libjq.i18n.prop(currentOpMode));
7872 param.isShowHomeConnect(!currentMode);
7873 param.showTraffic(set.TRAFFIC_SUPPORT && !currentMode);
7874 param.isSupportQuicksetting(set.HAS_QUICK_SETTING && !currentMode);
7875 }
7876 };
7877 function VmHome() {
7878 var target = this;
7879 target.hasSms = set.HAS_SMS;
7880 target.hasPhonebook = set.HAS_PHONEBOOK;
7881 target.isSupportSD = set.SD_CARD_SUPPORT;
7882 target.isCPE = set.PRODUCT_TYPE == 'CPE';
7883 target.hasRj45 = set.RJ45_SUPPORT;
7884 target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';
7885 target.hasParentalControl = set.HAS_PARENTAL_CONTROL;
7886 var wifiInfo = fnc.getWifiBasic();
7887 if (set.WIFI_SUPPORT_QR_SWITCH) {
7888 target.showQRCode = set.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
7889 } else {
7890 target.showQRCode = set.WIFI_SUPPORT_QR_CODE;
7891 }
7892 if(set.WIFI_SUPPORT_QR_CODE){
7893 target.qrcodeSrc = './pic/qrcode_ssid_wifikey.png?_=' + libjq.now();
7894 } else {
7895 target.qrcodeSrc = './pic/res_blacktrans.png';
7896 }
7897 if (target.hasRj45) {
7898 var opModeObj = checkCableMode(fnc.getOpMode().blc_wan_mode);
7899 target.opCurMode = libko.observable(opModeObj);
7900 target.isShowHomeConnect = libko.observable(!opModeObj);
7901 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT && !opModeObj);
7902 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING && !opModeObj);
7903 } else {
7904 target.isShowHomeConnect = libko.observable(true);
7905 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT);
7906 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING);
7907 }
7908 if (set.PRODUCT_TYPE == 'DATACARD') {
7909 libjq('#home_image').addClass('data-card');
7910 }
7911 var info = fnc.getConnectionInfo();
7912 target.networkType = libko.observable(homeUtil.getNetworkType(info.networkType));
7913 target.connectStatus = libko.observable(info.connectStatus);
7914 target.canConnect = libko.observable(false);
7915 target.cStatus = libko.computed(function () {
7916 if (target.connectStatus().indexOf('_connected') != -1) {
7917 return connStat.CONNECTED;
7918 } else if (target.connectStatus().indexOf('_disconnecting') != -1) {
7919 return connStat.DISCONNECTING;
7920 } else if (target.connectStatus().indexOf('_connecting') != -1) {
7921 return connStat.CONNECTING;
7922 } else {
7923 return connStat.DISCONNECTED;
7924 }
7925 });
7926 target.current_Flux = libko.observable(transUnit(0, false));
7927 target.connected_Time = libko.observable(transSecond2Time(0));
7928 target.up_Speed = libko.observable(transUnit(0, true));
7929 target.down_Speed = libko.observable(transUnit(0, true));
7930 target.isLoggedIn = libko.observable(false);
7931 target.enableFlag = libko.observable(true);
7932 target.simSerialNumber = libko.observable('');
7933 target.imei = libko.observable('');
7934 target.imsi = libko.observable('');
7935 target.ssid = libko.observable('');
7936 target.hasWifi = set.HAS_WIFI;
7937 target.showMultiSsid = libko.observable(set.HAS_MULTI_SSID && wifiInfo.multi_ssid_enable == "1");
7938 target.trafficAlertEnable = libko.observable(false);
7939 target.trafficUsed = libko.observable('');
7940 target.trafficLimited = libko.observable('');
7941 target.wireDeviceNum = libko.observable(fnc.getAttachedCableDevices().attachedDevices.length);
7942 target.wirelessDeviceNum = libko.observable(fnc.getStatusInfo().wirelessDeviceNum);
7943 target.showOpModeWindow = function () {
7944 if (target.enableFlag()) {
7945 return;
7946 }
7947 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {});
7948 };
7949 target.currentOpMode = libko.observable("0");
7950 var popoverShown = false;
7951 libjq('#showDetailInfo').popover({
7952 html: true,
7953 placement: 'top',
7954 trigger: 'focus',
7955 title: function () {
7956 return libjq.i18n.prop('device_info')
7957 },
7958 content: function () {
7959 return getDetailInfoContent();
7960 }
7961 }).on('shown.bs.popover', function () {
7962 popoverShown = true;
7963 }).on('hidden.bs.popover', function () {
7964 popoverShown = false;
7965 });
7966 function fetchDeviceInfo() {
7967 var data = fnc.getDeviceInfo();
7968 target.simSerialNumber(verifyDeviceInfo(data.simSerialNumber));
7969 target.imei(verifyDeviceInfo(data.imei));
7970 target.imsi(verifyDeviceInfo(data.imsi));
7971 target.ssid(verifyDeviceInfo(data.ssid));
7972 target.showMultiSsid(set.HAS_MULTI_SSID && data.multi_ssid_enable == "1");
7973 return data;
7974 }
7975 fetchDeviceInfo();
7976 function getDetailInfoContent() {
7977 var data = fetchDeviceInfo();
7978 homeUtil.initShownStatus(data);
7979 var addrInfo = homeUtil.wanIpGet(data);
7980 var compiled = libus.template(libjq("#detailInfoTmpl").html());
7981 var tmpl = compiled({
7982 simSerialNumber: verifyDeviceInfo(data.simSerialNumber),
7983 imei: verifyDeviceInfo(data.imei),
7984 imsi: verifyDeviceInfo(data.imsi),
7985 signal: signalFormat(data.signal),
mj.qud3eabaf2024-12-12 17:51:11 -08007986 cellid: verifyDeviceInfo(data.cellid),
qumengjiaca65ef52024-11-06 15:42:21 +08007987 hasWifi: set.HAS_WIFI,
7988 isCPE: set.PRODUCT_TYPE == 'CPE',
7989 hasRj45: set.RJ45_SUPPORT,
7990 showMultiSsid: set.HAS_MULTI_SSID && data.multi_ssid_enable == "1",
7991 ssid: verifyDeviceInfo(data.ssid),
7992 max_access_num: verifyDeviceInfo(data.max_access_num),
7993 m_ssid: verifyDeviceInfo(data.m_ssid),
7994 m_max_access_num: verifyDeviceInfo(data.m_max_access_num),
7995 wifi_long_mode: "wifi_des_" + data.wifiRange,
7996 lanDomain: verifyDeviceInfo(data.lanDomain),
7997 ipAddress: verifyDeviceInfo(data.ipAddress),
7998 showMacAddress: set.SHOW_MAC_ADDRESS,
7999 macAddress: verifyDeviceInfo(data.macAddress),
8000 showIpv4WanIpAddr: homeUtil.initStatus.showIpv4WanIpAddr,
8001 wanIpAddress: addrInfo.wanIpAddress,
8002 showIpv6WanIpAddr: homeUtil.initStatus.showIpv6WanIpAddr,
8003 ipv6WanIpAddress: addrInfo.ipv6WanIpAddress,
8004 sw_version: verifyDeviceInfo(data.sw_version),
8005 hw_version: verifyDeviceInfo(data.hw_version)
8006 });
8007 return libjq(tmpl).translate();
8008 }
8009 target.connectHandler = function () {
8010 if (target.connectStatus() == "ppp_connected") {
8011 showLoading('disconnecting');
8012 fnc.disconnect({}, function (data) {
8013 if (data.result) {
8014 successOverlay();
8015 } else {
8016 errorOverlay();
8017 }
8018 });
8019 } else {
8020 if (fnc.getStatusInfo().roamingStatus) {
8021 showConfirm('dial_roaming_connect', function () {
8022 target.connect();
8023 });
8024 } else {
8025 target.connect();
8026 }
8027 }
8028 };
8029 target.connect = function () {
8030 var statusInfo = fnc.getStatusInfo();
8031 var trafficResult = barStat.getTrafficResult(statusInfo);
8032 if (statusInfo.limitVolumeEnable && trafficResult.showConfirm) {
8033 var confirmMsg = null;
8034 if (trafficResult.usedPercent > 100) {
8035 confirmMsg = {
8036 msg: 'traffic_beyond_connect_msg'
8037 };
8038 barStat.setTrafficAlertPopuped(true);
8039 } else {
8040 confirmMsg = {
8041 msg: 'traffic_limit_connect_msg',
8042 params: [trafficResult.limitPercent]
8043 };
8044 barStat.setTrafficAlert100Popuped(false);
8045 }
8046 showConfirm(confirmMsg, function () {
8047 homeUtil.doConnect();
8048 });
8049 } else {
8050 homeUtil.doConnect();
8051 }
8052 };
8053 fnc.getSignalStrength({}, function (data) {
8054 var signalTxt = signalFormat(convertSignal(data));
8055 libjq("#fresh_signal_strength").text(signalTxt);
8056 if (popoverShown) {
8057 libjq("#popoverSignalTxt").text(signalTxt);
8058 }
8059 });
8060 homeUtil.refreshHomeData(target);
8061 addInterval(function () {
8062 fnc.getSignalStrength({}, function (data) {
8063 var signalTxt = signalFormat(convertSignal(data));
8064 libjq("#fresh_signal_strength").text(signalTxt);
8065 if (popoverShown) {
8066 libjq("#popoverSignalTxt").text(signalTxt);
8067 }
8068 });
8069 homeUtil.refreshHomeData(target);
8070 }, 1000);
8071 if (target.hasRj45) {
8072 homeUtil.refreshOpmodeInfo(target);
8073 addInterval(function () {
8074 homeUtil.refreshOpmodeInfo(target);
8075 }, 1000);
8076 }
8077 target.showNetworkSettingsWindow = function () {
8078 if (target.hasRj45) {
8079 fnc.getOpMode({}, function (data) {
8080 var mode = checkCableMode(data.blc_wan_mode);
8081 if (mode) {
8082 window.location.hash = '#network_set';
8083 } else {
8084 window.location.hash = '#conn_set';
8085 }
8086 });
8087 } else {
8088 window.location.hash = '#conn_set';
8089 }
8090 }
8091 };
8092 return {
8093 init: init
8094 };
8095});
8096
8097
8098define("language","knockout service jquery set underscore".split(" "),
8099 function(ko, service, $, config, _) {
8100
8101 // ��ȡ��ǰ������
8102 function getCurrentLanguage() {
8103 return service.getLanguage();
8104 }
8105
8106 // �������������������Դ������ҳ���ϵ�body����
8107 // @param {String} current ������:zh-cn
8108 function loadLanguageAndRefresh(current){
8109 window.CURRENT_LANGUAGE = current;
8110 $("body").attr('lang', current);
8111 $.i18n.properties({
8112 name:'Messages',
8113 path:'i18n/',
8114 mode:'map',
8115 cache: true,
8116 language:current,
8117 callback: function() {
8118 jQuery.validator.messages = $.i18n.map;
8119 $('body').translate();
8120 }
8121 });
8122 }
8123
8124 window.language = null;
8125
8126
8127 function LanguageViewModel() {
8128 var target = this;
8129 var currentLan = getCurrentLanguage();
8130 var languages = _.map(config.LANGUAGES, function(item) {
8131 return new Option(item.name, item.value);
8132 });
8133
8134 document.title = config.WEBUI_TITLE;
8135 if($('#webui_title')[0]) {
8136 $('#webui_title').html(config.WEBUI_TITLE);
8137 }
8138
8139 target.languages = ko.observableArray(languages);
8140 target.currentLan = ko.observable(currentLan.Language);
8141 window.language = target.currentLan();
8142
8143 // �л������¼�����
8144 // @event langChangeHandler
8145 target.langChangeHandler = function(info, event) {
8146 clearValidateMsg();
8147
8148 service.setLanguage({Language: target.currentLan()}, function() {
8149 loadLanguageAndRefresh(target.currentLan());
8150 window.language = target.currentLan();
8151 });
8152 };
8153
8154 // ���������б���ˢ�½���
8155 loadLanguageAndRefresh(target.currentLan());
8156 }
8157
8158 // ��ʼ������VM����
8159 function init() {
8160 ko.applyBindings(new LanguageViewModel(), $('#language')[0]);
8161 }
8162
8163 return {
8164 init: init
8165 };
8166});
8167
8168
8169// ��½ ģ��
8170define("entry","jquery knockout set service underscore menu logout CryptoJS".split(" "),
8171 function($, ko,config, service, _, menu, logout, CryptoJS) {
8172
8173
8174 var pageState = {LOGIN:0, WAIT_PIN:1, WAIT_PUK:2, PUK_LOCKED:3, LOGGEDIN:4, LOADING:5};
8175 var timer = loginStatusCheckingTimer();
8176 var loginLockTimer = 0;
8177 var lastLoginStatus = "0";
8178
8179 function loginViewModel() {
8180 var target = this;
8181 var data = service.getLoginData();
8182 var loginStatus = service.getLoginStatus();
8183
8184 target.confirmPIN = ko.observable();
8185 target.leftSeconds = ko.observable(0);
8186 target.loginCount = ko.observable(0);
8187 target.loginSecuritySupport = ko.observable(config.LOGIN_SECURITY_SUPPORT);
8188 target.newPIN = ko.observable();
8189 target.password = ko.observable();
qumengjiad183ca12024-11-20 16:51:24 +08008190 target.username = ko.observable();
qumengjiaca65ef52024-11-06 15:42:21 +08008191 target.PIN = ko.observable();
8192 target.pinNumber = ko.observable(data.pinnumber);
8193 target.PUK = ko.observable();
8194 target.pukNumber = ko.observable(data.puknumber);
8195 target.showEntrance = ko.observable(false);
8196 target.sharePathInvalid = ko.observable(false);
8197 target.uiLoginTimer = ko.observable(300);
8198
8199 // ע��˳�򣬵���ǰ����޷�ˢ�³�����
8200 target.accountLocked = ko.computed(function () {
8201 return target.loginCount() == config.MAX_LOGIN_COUNT && target.leftSeconds() != '-1';
8202 });
8203
8204 target.leftUnlockTime = ko.computed(function () {
8205 target.leftSeconds();
8206 var formatted = transSecond2Time(target.uiLoginTimer());
8207 return formatted.substring(formatted.indexOf(':') + 1, formatted.length);
8208 });
8209
8210
8211 if(config.SD_CARD_SUPPORT){
8212 service.getSDConfiguration({}, function (data) {
8213 target.showEntrance(data.sd_status == "1" && data.share_status == "1" && data.sd_mode == "0");
8214 if(target.showEntrance()){
8215 service.checkFileExists({
8216 path: data.share_file
8217 }, function (data1) {
8218 if (data1.status == 'exist' || data1.status == 'processing') {
8219 target.sharePathInvalid(false);
8220 } else {
8221 target.sharePathInvalid(true);
8222 }
8223 });
8224 }
8225 });
8226 }
8227
8228 var state = computePageState(loginStatus, data);
8229 target.pageState = ko.observable(state);
8230 if (state == pageState.LOADING) {
8231 addTimeout(refreshPage, 500);
8232 }
8233 setFocus();
8234
8235
8236 // login �¼�����
8237
8238 target.login = function () {
8239 if(config.LOGIN_SECURITY_SUPPORT && target.accountLocked()){
8240 showAlert("password_error_account_lock_time", function () {
8241 setFocus();
8242 });
8243 return false;
8244 }
8245 target.pageState(pageState.LOADING);
8246 window.clearInterval(timer);
8247 var ciphertext = "";
8248 if (config.PASSWORD_ENCODE) {
8249 ciphertext = target.password();
qumengjiad183ca12024-11-20 16:51:24 +08008250 var username = target.username();
qumengjiaca65ef52024-11-06 15:42:21 +08008251 } else {
8252 var kparam = service.getDeviceInfoLow();
8253 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
8254 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
8255 ciphertext = CryptoJS.AES.encrypt(target.password(), tkey, {
8256 iv: tiv,
8257 mode: CryptoJS.mode.CBC,
8258 padding: CryptoJS.pad.ZeroPadding
8259 }).toString();
8260 }
8261 service.login({
qumengjiad183ca12024-11-20 16:51:24 +08008262 password:ciphertext,
8263 username: username
qumengjiaca65ef52024-11-06 15:42:21 +08008264 }, function (info) {
8265 setTimeout(function () {
8266 timer = loginStatusCheckingTimer();
8267 }, 1300);
8268 if (info.result) {
8269 target.pageState(pageState.LOGGEDIN);
8270 if(config.LOGIN_SECURITY_SUPPORT){
8271 target.loginCount(0);
8272 target.uiLoginTimer(300);
8273 clearInterval(loginLockTimer);
8274 }
8275 $("#container").empty();
8276 window.location.hash = "#main";
8277 logout.init();
8278 } else {
8279 target.password("");
qumengjiab4911332024-11-26 09:40:33 +08008280 target.username("");
qumengjiaca65ef52024-11-06 15:42:21 +08008281 if(config.LOGIN_SECURITY_SUPPORT){
8282 target.checkLoginData(function(){
8283 if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8284 showAlert("password_error_five_times", function () {
8285 setFocus();
8286 });
8287 target.startLoginLockInterval();
8288 } else {
8289 showAlert({msg: 'password_error_left', params: [config.MAX_LOGIN_COUNT - target.loginCount()]}, function () {
8290 setFocus();
8291 });
8292 }
8293 });
8294 }else {
8295 showAlert("password_error", function () {
8296 setFocus();
8297 });
8298 }
8299 target.pageState(pageState.LOGIN);
8300 }
8301 });
8302 };
8303
8304
8305
8306
8307 // ��ȡ��¼�����Ϣ
8308 target.checkLoginData = function(cb){
8309 service.getLoginData({}, function(r){
8310 var failTimes = parseInt(r.psw_fail_num_str, 10);
8311 target.loginCount(config.MAX_LOGIN_COUNT - failTimes);
8312 target.leftSeconds(r.login_lock_time);
8313 target.uiLoginTimer(r.login_lock_time);
8314 if($.isFunction(cb)){
8315 cb();
8316 } else if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8317 target.startLoginLockInterval();
8318 }
8319 });
8320 };
8321
8322 // ��������ʱ��ʱ����
8323 target.startLoginLockInterval = function () {
8324 loginLockTimer = setInterval(function () {
8325 service.getLoginData({}, function (data) {
8326 if (data.login_lock_time <= 0 || data.psw_fail_num_str == 5) {
8327 target.loginCount(0);
8328 clearInterval(loginLockTimer);
8329 }
8330 if(target.leftSeconds() != data.login_lock_time){
8331 target.leftSeconds(data.login_lock_time);
8332 target.uiLoginTimer(data.login_lock_time);
8333 } else {
8334 target.uiLoginTimer(target.uiLoginTimer() > 0 ? target.uiLoginTimer() - 1 : 0);
8335 }
8336 });
8337 }, 1000);
8338 };
8339
8340 target.checkLoginData();
8341
8342
8343
8344 // ��֤����PIN�¼�����
8345 target.enterPIN = function () {
8346 target.pageState(pageState.LOADING);
8347 var pin = target.PIN();
8348 service.enterPIN({
8349 PinNumber:pin
8350 }, function (data) {
8351 if (!data.result) {
8352 showAlert("pin_error", function () {
8353 refreshPage();
8354 });
8355 target.PIN('');
8356 } else {
8357 refreshPage();
8358 }
8359 });
8360 };
8361
8362 function setFocus(){
8363 setTimeout(function () {
8364 var txtAdmin = $('#txtAdmin:visible');
qumengjiab4911332024-11-26 09:40:33 +08008365 var txtUser = $('#txtUser:visible');
qumengjiaca65ef52024-11-06 15:42:21 +08008366 var txtPIN = $('#txtPIN:visible');
8367 var txtPUK = $('#txtPUK:visible');
qumengjiab4911332024-11-26 09:40:33 +08008368 if(txtUser.length > 0) {
8369 txtUser.focus();
8370 } else if (txtAdmin.length > 0) {
qumengjiaca65ef52024-11-06 15:42:21 +08008371 txtAdmin.focus();
8372 } else if (txtPIN.length > 0) {
8373 txtPIN.focus();
8374 } else if (txtPUK.length > 0) {
8375 txtPUK.focus();
8376 }
8377 }, 100);
8378 }
8379
8380
8381 // ˢ��ҳ��״̬
8382 function refreshPage() {
8383 var data = service.getLoginData();
8384 var loginStatus = service.getLoginStatus();
8385 var state = computePageState(loginStatus, data);
8386 if (state == pageState.LOADING) {
8387 addTimeout(refreshPage, 500);
8388 } else {
8389 target.pageState(state);
8390 target.pinNumber(data.pinnumber);
8391 target.pukNumber(data.puknumber);
8392 }
8393 setFocus();
8394 }
8395
8396 // ����PUK������PIN�¼�����
8397 target.enterPUK = function () {
8398 target.pageState(pageState.LOADING);
8399 var newPIN = target.newPIN();
8400 var confirmPIN = target.confirmPIN();
8401 var params = {};
8402 params.PinNumber = newPIN;
8403 params.PUKNumber = target.PUK();
8404 service.enterPUK(params, function (data) {
8405 if (!data.result) {
8406 showAlert("puk_error", function () {
8407 refreshPage();
8408 });
8409 target.PUK('');
8410 target.newPIN('');
8411 target.confirmPIN('');
8412 } else {
8413 refreshPage();
8414 }
8415 });
8416 };
8417
8418
8419
8420 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
8421 function checkPinAfterLogin(loginStatus, data) {
8422 if (loginStatus.status == "loggedIn") {
8423 var currentState = data.modem_main_state; // cov_2
8424 if (currentState == "modem_waitpin") {
8425 return pageState.WAIT_PIN;
8426 } else if ((currentState == "modem_waitpuk" || data.pinnumber == 0) && (data.puknumber != 0)) {
8427 return pageState.WAIT_PUK;
8428 } else if ((data.puknumber == 0 || currentState == "modem_sim_destroy")
8429 && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8430 return pageState.PUK_LOCKED;
8431 } else {
8432 return pageState.LOGGEDIN;
8433 }
8434 } else {
8435 var currentState = data.modem_main_state;
8436 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8437 return pageState.LOADING;
8438 } else {
8439 return pageState.LOGIN;
8440 }
8441 }
8442 }
8443
8444 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
8445 function computePageState(loginStatus, data) {
8446 //PX-880 �ȵ�¼�ٽ���PIN��֤������router���ԭ�򣬵�¼��PIN��֤���ڵ�¼ҳ����У������ݿ�����֤����һ�¡�
8447 if (config.LOGIN_THEN_CHECK_PIN) {
8448 return checkPinAfterLogin(loginStatus, data);
8449 } else {
8450 return loginAfterCheckPin(loginStatus, data);
8451 }
8452 }
8453
8454 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
8455 function loginAfterCheckPin(loginStatus, data) {
8456 if (loginStatus.status == "loggedIn") {
8457 return pageState.LOGGEDIN;
8458 } else {
8459 var currentState = data.modem_main_state;
8460 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8461 return pageState.LOADING;
8462 } else if (currentState == "modem_waitpin") {
8463 return pageState.WAIT_PIN;
8464 } else if ((currentState == "modem_waitpuk" || parseInt(data.pinnumber) === 0) && (parseInt(data.puknumber) != 0)) {
8465 return pageState.WAIT_PUK;
8466 } else if ((parseInt(data.puknumber) === 0 || currentState == "modem_sim_destroy") && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8467 return pageState.PUK_LOCKED;
8468 } else {
8469 return pageState.LOGIN;
8470 }
8471 }
8472 }
8473 }
8474
8475
8476 // ��鵱ǰwindow.location.hash���쳣����ת��index.html
8477 function gotoLogin() {
8478 if (window.location.hash != config.defaultRoute && _.indexOf(config.GUEST_HASH, window.location.hash) == -1) {
8479 if (!manualLogout && lastLoginStatus == "1") {
8480 manualLogout = false;
8481 lastLoginStatus = 'UNREAL';
8482 showAlert('need_login_again', function () {
8483 window.location = "index.html";
8484 });
8485 } else if (lastLoginStatus == 'UNREAL') {
8486 //do nothing, only popup need_login_again alert one time
8487 return;
8488 } else {
8489 window.location = "index.html";
8490 }
8491 }
8492 }
8493
8494 // ��ʱ����¼״̬
8495 function loginStatusCheckingTimer() {
8496 return setInterval(function () {
8497 var info = service.getStatusInfo();
8498 if (!info.isLoggedIn) {
8499 gotoLogin();
8500 return;
8501 }
8502 lastLoginStatus = service.getStatusInfo().isLoggedIn ? "1" : "0";
8503 }, 1000);
8504 }
8505
8506 function init() {
8507 var info = service.getStatusInfo();
8508 if (info.isLoggedIn) {
8509 window.location.hash = '#main';
8510 return;
8511 }
8512
8513 var container = $('#container')[0];
8514 ko.cleanNode(container);
8515 var fwVm = new loginViewModel();
8516 ko.applyBindings(fwVm, container);
8517
8518 $('#frmLogin').validate({
8519 submitHandler:function () {
8520 fwVm.login();
8521 },
8522 rules: {
8523 txtAdmin: 'login_password_length_check'
8524 }
8525 });
8526 $('#frmPIN').validate({
8527 submitHandler:function () {
8528 fwVm.enterPIN();
8529 },
8530 rules:{
8531 txtPIN:"pin_check"
8532 }
8533 });
8534 $('#frmPUK').validate({
8535 submitHandler:function () {
8536 fwVm.enterPUK();
8537 },
8538 rules:{
8539 txtNewPIN:"pin_check",
8540 txtConfirmPIN:{equalToPin:"#txtNewPIN"},
8541 txtPUK:"puk_check"
8542 }
8543 });
8544 }
8545
8546
8547 return {
8548 init:init,
8549 gotoLogin:gotoLogin
8550 };
8551 });
8552
8553
8554// Logout �
8555define("logout","set service knockout underscore jquery".split(" "),
8556 function (config, service, ko, _, $) {
8557
8558 function logoutViewModel() {
8559 var target = this;
8560 // ��ȡ�Ƿ��¼
8561 var loginFlag = function () {
8562 var loginInfo = service.getLoginStatus();
8563 return (loginInfo.status == "loggedIn");
8564 }
8565 ();
8566 target.loggedIn = ko.observable(loginFlag);
8567
8568 // �˳�ϵͳ
8569 target.logout = function () {
8570 showConfirm("confirm_logout", function () {
8571 manualLogout = true;
8572 service.logout({}, setLocation());
8573 });
8574 };
8575
8576 // �Ƿ���ʾ�˳���ť
8577 target.showLogout = function () {
8578 if (config.HAS_LOGIN) {
8579 return target.loggedIn();
8580 } else {
8581 return false;
8582 }
8583 };
8584 }
8585 function setLocation() {
8586 window.location = 'index.html';
8587 }
8588 function initialize() {
8589 var fwVm = new logoutViewModel();
8590 bindContainer(fwVm);
8591 }
8592 function bindContainer(fwVm) {
8593 var con = $('#logout')[0];
8594 ko.cleanNode(con);
8595 ko.applyBindings(fwVm, con);
8596 }
8597 return {
8598 init: initialize
8599 };
8600});
8601
8602// operation mode �
8603define("opmode","knockout service jquery set underscore".split(" "),
8604
8605 function (ko, service, $, config, _) {
8606
8607 function currentOperationModeViewMode(){
8608 var target = this;
8609 target.isLoggedIn = ko.observable(false);
8610 target.enableFlag = ko.observable(false);
8611
8612 target.showOpModeWindow = function () {
8613 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {
8614 });
8615 };
8616 target.currentOpMode = ko.observable("0");
8617
8618 service.getOpMode({}, function(info){
8619 target.isLoggedIn(info.loginfo == "ok");
8620 if (info.opms_wan_mode != "PPP" && info.rj45_state != "idle" && info.rj45_state != "dead") {
8621 target.enableFlag(false);
8622 } else if (info.opms_wan_mode == "PPP" && info.ppp_status != "ppp_disconnected") {
8623 target.enableFlag(false);
8624 } else if(info.opms_wan_mode == "DHCP"){
8625 target.enableFlag(true);
8626 } else {
8627 target.enableFlag(true);
8628 }
8629
8630 var opmsWanMode = (info.opms_wan_mode == "DHCP" || info.opms_wan_mode == "STATIC") ? "PPPOE" : info.opms_wan_mode;
8631
8632 var currentOperationMode = "";
8633 switch(opmsWanMode){
8634 case "BRIDGE":
8635 currentOperationMode = "opmode_bridge";
8636 break;
8637 case "PPP":
8638 currentOperationMode = "opmode_gateway";
8639 break;
8640 case "PPPOE":
8641 currentOperationMode = "opmode_cable";
8642 break;
8643 default:
8644 break;
8645 }
8646 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8647 });
8648 // ��ʱ��ѯ����ģʽ���״̬�����ý���״̬
8649 setInterval(function(){
8650 var object = service.getConnectionInfo();
8651 if(object.opms_wan_mode == "DHCP") {
8652 target.enableFlag(true);
8653 } else if((object.opms_wan_mode == "PPP" && object.ppp_status != "ppp_disconnected") || (object.opms_wan_mode != "PPP" && object.rj45_state != "idle" && object.rj45_state != "dead")) {
8654 target.enableFlag(false);
8655 } else {
8656 target.enableFlag(true);
8657 }
8658 }, 1000);
8659 }
8660
8661 function init() {
8662 var container = $('#currentOpMode')[0];
8663 ko.cleanNode(container);
8664 var fwVm = new currentOperationModeViewMode();
8665 ko.applyBindings(fwVm, container);
8666 }
8667
8668 return {
8669 init:init
8670 };
8671});
8672
8673// operation mode popup�
8674
8675define("opmode_popup","knockout service jquery set underscore".split(" "),
8676
8677 function (ko, service, $, config, _) {
8678
8679 function operationModeViewMode() {
8680 var target = this;
8681 var currentSelectedOperationMode = "";
8682 target.selectedMode = ko.observable("0");
8683
8684 // ��ʼ������ģʽ��ʾ
8685 service.getOpMode({}, function(info){
8686 if(info.blc_wan_mode == "AUTO_PPP"){
8687 currentSelectedOperationMode = "AUTO";
8688 }else if(info.blc_wan_mode == "AUTO_PPPOE"){
8689 currentSelectedOperationMode = "AUTO";
8690 }else if(info.blc_wan_mode == "PPPOE"){
8691 currentSelectedOperationMode = "PPPOE";
8692 }else{
8693 currentSelectedOperationMode = info.blc_wan_mode;
8694 }
8695 target.selectedMode(currentSelectedOperationMode);
8696 });
8697
8698 // ģʽ����/�л�
8699 target.changeOpMode = function(){
8700 var userSelectedOperationMode = $('input:radio[name="opMode"]:checked').val();
8701 var messageText = "";
8702 if(userSelectedOperationMode == currentSelectedOperationMode) {
8703 hidePopupSettingWindow();
8704 return;
8705 }
8706 if(userSelectedOperationMode == "LTE_BRIDGE"){
8707 messageText = "opmode_msg3";
8708 }else{
8709 messageText = "opmode_msg2";
8710 }
8711 showConfirm(messageText, function(){
8712 showLoading();
8713 service.SetOperationMode({
8714 opMode: userSelectedOperationMode
8715 },function(info){
8716 if (info && info.result == "success") {
8717 var currentOperationMode = "";
8718 switch(userSelectedOperationMode){
8719 case "AUTO":
8720 currentOperationMode = "opmode_auto"
8721 break;
8722 case "PPP":
8723 currentOperationMode = "opmode_gateway";
8724 break;
8725 case "PPPOE":
8726 currentOperationMode = "opmode_cable";
8727 break;
8728 default:
8729 break;
8730 }
8731 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8732 successOverlay();
8733 } else {
8734 errorOverlay();
8735 }
8736 });
8737 });
8738
8739 }
8740
8741 }
8742
8743 function init() {
8744 var fwVm = new operationModeViewMode();
8745 ko.applyBindings(fwVm, $('#popupSettingWindow')[0]);
8746
8747 $("#opmode_form").validate({
8748 submitHandler: function(){
8749 fwVm.changeOpMode();
8750 }
8751 });
8752 }
8753
8754 return {
8755 init:init
8756 };
8757});
8758
8759define("router","underscore jquery menu set service".split(" "),
8760 function (_, $, menu, config, service) {
8761 var currentHash = '';
8762 var container = $('#container');
8763
8764 //�뿪����ʱ����Ƿ��������޸ģ����������ʾ
8765 checkFormContentModify = function (href) {
8766 if (config.CONTENT_MODIFIED.modified && window.location.hash != href) {
8767 if (config.CONTENT_MODIFIED.message == 'sms_to_save_draft') {
8768 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8769 config.resetContentModifyValue();
8770 window.location.hash = href;
8771 } else {
8772 showConfirm(config.CONTENT_MODIFIED.message, {
8773 ok: function () {
8774 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8775 config.resetContentModifyValue();
8776 window.location.hash = href;
8777 },
8778 no: function () {
8779 var result = config.CONTENT_MODIFIED.callback.no(config.CONTENT_MODIFIED.data);
8780 if (!result) {
8781 window.location.hash = href;
8782 config.resetContentModifyValue();
8783 }
8784 }
8785 });
8786 }
8787 return false;
8788 } else {
8789 return true;
8790 }
8791 };
8792
8793 //��ʱ�鿴SIM����״̬������ǰSIM��״̬��Ϊ����״̬��δ��ʾnosimcardҳ�棬����ʾnosimcardҳ��,�Ա��ⲻ�ر�webui�����²���豸�󣬲����ж�SIM��״̬������
8794 function checkSimCardStatus() {
8795 setInterval(function () {
8796 var data = service.getStatusInfo();
8797 var match = menu.findMenu();
8798 if (match.length == 0) {
8799 return false;
8800 }
8801 var requirePinHash = ["phonebook", "sms_list"];
8802 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8803 if (match[0].checkSIMStatus === true) {
8804 var simstatus = data.simStatus == "modem_sim_undetected"
8805 || data.simStatus == "modem_sim_destroy" || data.simStatus == "modem_waitpin"
8806 || data.simStatus == "modem_waitpuk";
8807 var netlockstatus = data.simStatus == "modem_imsi_waitnck";
8808 if (data.isLoggedIn && (
8809 ($('#div-nosimcard')[0] == undefined && simstatus)
8810 || ($('#div-network-lock')[0] == undefined && netlockstatus)
8811 || (($('#div-nosimcard')[0] != undefined || $('#div-network-lock')[0] != undefined) && data.simStatus == "modem_init_complete"))) {
8812 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8813 }
8814 }
8815 }, 1000);
8816 }
8817
8818 //����¼ҳ�汳��
8819 function checkLoginPageBg() {
8820 var h = window.location.hash;
8821 if (h == '#entry' || _.indexOf(config.GUEST_HASH, h) != -1) {
8822 $("#manageContainer").attr("style", "margin-top:-36px;");
8823 } else {
8824 $("#manageContainer").attr("style", "margin-top:0px;");
8825 }
8826
8827 if (window.location.hash == '#entry') {
8828 $("#mainContainer").addClass('loginBackgroundBlue');
8829 } else {
8830 var mainContainer = $("#mainContainer");
8831 if (mainContainer.hasClass('loginBackgroundBlue')) {
8832 $("#container").css({
8833 margin: 0
8834 });
8835 mainContainer.removeClass('loginBackgroundBlue').height('auto');
8836 }
8837 }
8838 }
8839
8840 function fixedLoadResources(menuItem, simStatus, isRequirePin) {
8841 var item = {};
8842 $.extend(item, menuItem);
8843 //û��SIM��ʱ�����homeҳ�治��������
8844 //���类��ʱ��homeҳ����ʾ����ҳ��
8845 if (simStatus == "modem_sim_undetected" || simStatus == "modem_sim_destroy") {
8846 if (!isRequirePin) {
8847 item.path = "sim_abnormal";
8848 }
8849 } else if (simStatus == "modem_waitpin" || simStatus == "modem_waitpuk") {
8850 item.path = "sim_abnormal";
8851 } else if (simStatus == "modem_imsi_waitnck") {
8852 item.path = "locknet";
8853 }
8854 //load tmpl and controller js
8855 loadResources(item);
8856 }
8857
8858 //���ݲ˵�����item���ض�Ӧ����Դ
8859 function loadResources(item) {
8860 var pId = item.path.replace(/\//g, '_');
8861 var $body = $('body').removeClass();
8862 if (pId != 'entry' && pId != 'main') {
8863 $body.addClass('beautiful_bg page_' + pId);
8864 } else {
8865 $body.addClass('page_' + pId);
8866 }
8867 clearTimer();
8868 hideLoading();
8869 var tmplPath = 'text!tmpl/' + item.path + '.html';
8870 //TODO: prevent first menu click cover the second menu content, need test with device
8871 require([tmplPath, item.path], function (tmpl, viewModel) {
8872 container.stop(true, true);
8873 container.hide();
8874 container.html(tmpl);
8875 viewModel.init();
8876 //support backward/forward
8877 menu.refreshMenu();
8878 $('#container').translate();
8879 menu.activeSubMenu();
8880
8881 $("form").attr("autocomplete", "off");
8882 container.fadeIn();
8883 });
8884 }
8885 //�ȶ�hash״̬, ����仯������µ�hashƥ��˵�����,ƥ�䲻��ʱ��ת��homeҳ��, ƥ����ʱ��¼hashֵ����̬���ض�Ӧ����Դ�ļ�
8886 function hashCheck() {
8887 if (window.location.hash != currentHash) {
8888 //�����½���������, ��½�û����ʷǵ�¼�û�ʱҳ�治��ת
8889 var info = service.getStatusInfo();
8890 if (window.location.hash == config.defaultRoute || _.indexOf(config.GUEST_HASH, window.location.hash) != -1) {
8891 if (info.isLoggedIn) {
8892 window.location.hash = currentHash == "" ? "#main" : currentHash;
8893 return;
8894 }
8895 }
8896
8897 var match = menu.findMenu();
8898
8899 if (match.length == 0) {
8900 window.location.hash = config.defaultRoute;
8901 } else {
8902 //��¼ʱ��鹤��ģʽ������ģʽ������������Ҫ���SIM��״̬�����¼���,����ģʽ�������治��Ҫ���SIM��״̬�����¼���
8903 if (config.RJ45_SUPPORT && window.location.hash == "#main") {
8904 if ((match[0].checkSIMStatus && checkCableMode(info.blc_wan_mode)) || (!match[0].checkSIMStatus && !checkCableMode(info.blc_wan_mode))) {
8905 window.location.reload();
8906 return;
8907 }
8908 }
8909 //TODO: �����˵����Ӧ�����˵���һ����л�ʱ�����¼�������, ��TODO: click the same menu ʵ�ַ�ʽ����
8910 var oldMenu = menu.findMenu(currentHash);
8911 currentHash = match[0].hash;
8912 if (currentHash == "#entry") {
8913 $('#indexContainer').addClass('login-page-bg');
8914 menu.rebuild();
8915 } else {
8916 $('#indexContainer').removeClass('login-page-bg');
8917 }
8918
8919 if (oldMenu.length != 0 && match[0].path == oldMenu[0].path && match[0].level != oldMenu[0].level && match[0].level != '1' && oldMenu[0].level != '1') {
8920 return;
8921 }
8922
8923 checkLoginPageBg();
8924 var requirePinHash = ["phonebook", "sms_list"];
8925 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8926 if (match[0].checkSIMStatus === true || isRequirePin) {
8927 //simStatus is undefined when refreshing page
8928 if (info.simStatus == undefined) {
8929 showLoading('waiting');
8930 function checkSIM() {
8931 var data = service.getStatusInfo();
8932 if (data.simStatus == undefined || $.inArray(data.simStatus, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8933 addTimeout(checkSIM, 500);
8934 } else {
8935 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8936 hideLoading();
8937 }
8938 }
8939 checkSIM();
8940 } else {
8941 fixedLoadResources(match[0], info.simStatus, isRequirePin);
8942 }
8943 } else {
8944 loadResources(match[0]);
8945 }
8946 }
8947 }
8948 }
8949
8950 //Ĭ�����ҳ��Ϊ#main, ��ʱ���hash״̬
8951 function init() {
8952 checkSimCardStatus();
8953 window.location.hash = window.location.hash || "#main";
8954 //if support onhashchange then use. If ie8 in ie7 mode, it doesn't trigger onhashchange.
8955 if (('onhashchange' in window) && ((typeof document.documentMode === 'undefined') || document.documentMode == 8)) {
8956 window.onhashchange = hashCheck;
8957 hashCheck();
8958 } else {
8959 setInterval(hashCheck, 200);
8960 }
8961
8962 //����޸���ҳ������, �뿪ʱ������ʾ
8963 $("a[href^='#']").die('click').live('click', function () {
8964 var $this = $(this);
8965 config.CONTENT_MODIFIED.checkChangMethod();
8966 return checkFormContentModify($this.attr('href'));
8967 });
8968 }
8969
8970 return {
8971 init: init
8972 };
8973});
8974
8975// statusBar �
8976
8977define("statusBar", "knockout jquery underscore service set menu tooltip".split(" "),
8978
8979 function (ko, $, _, service, config, menu, tooltip) {
8980
8981 var sv__hasCheckedSMSCapacity = false;
8982 var sv__initSMSCompleted = false;
8983 var sv_newSMSMessageInDealing = false;
8984 var sv_fotaUpdateCancel = null;
8985 var sv_batteryCheckTimer = 0;
8986 var sv_dbMessageIds = [];
8987 var sv_fotaResultAlertPopuped = false;
8988 var sv_isFirstLoadNewMessage = true;
8989 var isLoggedIn = true;
8990 var sv_messagePopStack = {};
8991 var sv_newMessagePopTemplate = null;
8992 var sv_resetTrafficAlertPopuped = false;
8993 var sv_simMessageListTemplate = null;
8994 var sv_smsListTemplate = null;
8995 var sv_trafficAlertPopuped_100 = false;
8996 var sv_trafficAlertPopuped = false;
8997 var sv_timer = 0;
8998
8999 // ��ȡ״̬��Ϣ�������硢SIM��WIFI��
9000 var getCurrentStatusInfo = function () {
9001 return service.getStatusInfo();
9002 };
9003
9004 function statusViewModel() {
9005 var target = this;
9006 var info = getCurrentStatusInfo();
9007 var roamStatus = info.roamingStatus ? true : false;
9008 var $langLogoBar = $("#langLogoBar");
9009
9010
9011 // �����������¼�����
9012 function sf_connect() {
9013 showLoading("connecting");
9014 service.connect({}, function (data) {
9015 if (data.result) {
9016 refreshWifiConnectStatus(target, data.status);
9017 }
9018 successOverlay();
9019 }, function (data) {
9020 errorOverlay();
9021 });
9022 }
9023 // �Ͽ������¼�����
9024 function sf_disconnect() {
9025 showLoading("disconnecting");
9026 service.disconnect({}, function (data) {
9027 if (data.result) {
9028 refreshWifiConnectStatus(target, data.status);
9029 }
9030 successOverlay();
9031 }, function (data) {
9032 errorOverlay();
9033 });
9034 }
9035
9036 if(info.isLoggedIn){
9037 if(!$langLogoBar.hasClass("langborderBg")){
9038 $langLogoBar.addClass("langborderBg");
9039 }
9040 $("#statusBar:hidden").show();
9041 } else {
9042 if($langLogoBar.hasClass("langborderBg")){
9043 $langLogoBar.removeClass("langborderBg");
9044 }
9045 $("#statusBar:visible").hide();
9046 }
9047
9048
9049 //target.attachedDevices = ko.observable(info.attachedDevices);
9050 target.batteryLevel = ko.observable(info.batteryLevel + '%');
9051 target.batteryPers = ko.observable(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
9052 target.batteryStatus = ko.observable(info.batteryStatus);
9053 target.connectionCssClass = ko.observable("");
9054 target.connectStatus = ko.observable(info.connectStatus);
9055 target.connectStatusText = ko.observable();
9056 target.connectStatusTrans = ko.observable();
9057 target.hasWifi = ko.observable(config.HAS_WIFI);
9058 target.hasBattery = ko.observable(config.HAS_BATTERY);
9059 target.isLoggedIn = ko.observable(info.isLoggedIn);
9060 target.isShowConnectionIcon = ko.observable(false);
9061 target.isShowFotaNewversionIcon = ko.observable(info.new_version_state && info.fota_package_already_download != "yes" && !config.isShowFotaIcon);
9062 target.isShowRj45ConnectionIcon = ko.observable(false);
9063 target.networkOperator = ko.observable(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,roamStatus));
9064 target.networkType = ko.observable(getNetworkType(info.networkType));
9065 target.pinStatus = ko.observable(info.pinStatus);
9066 target.pinStatusText = ko.observable();
9067 target.rj45ConnectionCssClass = ko.observable("");
9068 target.roamingStatus = ko.observable(info.roamingStatus ? "R" : "");
9069 target.showAttachedDevices = ko.observable(info.wifiStatus);
9070 target.showSmsDeleteConfirm = ko.observable(false);
9071 target.smsUnreadCount = ko.observable(0);
9072 target.simStatus = ko.observable(sf_convertSimStatusToImage(info.simStatus));
9073 target.signalCssClass = ko.observable(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
9074 target.updateType = ko.observable(service.getUpdateType().update_type);
9075 target.wifiStatusCssClass = ko.observable(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
9076 target.wifiStatusImg = ko.observable(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
9077
9078 sf_getConnectionCssClass(target, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
9079
9080 target.connect = sf_connect;
9081 target.disconnect = sf_disconnect;
9082 }
9083
9084 function sf_gotoSmsList(){
9085 var s_href = '#msg_main';
9086 if(window.location.hash == '#msg_main'){
9087 s_href = '#msg_list';
9088 }
9089 config.CONTENT_MODIFIED.checkChangMethod();
9090 if(checkFormContentModify(s_href)){
9091 window.location.hash = s_href;
9092 }
9093 }
9094
9095 gotoSmsList = sf_gotoSmsList;
9096
9097 function sf_getNetWorkProvider(i_spnB1Flag, i_spnNameData, i_spnB2Flag, i_networkProvider, i_roamStatus) {
9098 if (i_spnNameData == "") {
9099 return i_networkProvider;
9100 } else {
9101 i_spnNameData = decodeMessage(i_spnNameData);
9102 if (i_spnB1Flag == "0" && i_spnB2Flag == "0") {
9103 if (i_roamStatus) {//����
9104 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
9105 } else {//������
9106 return i_spnNameData;
9107 }
9108 }else if (i_spnB1Flag == "1" && i_spnB2Flag == "1") {
9109 if (i_roamStatus) {//����
9110 return i_networkProvider;
9111 } else {//������
9112 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
9113 }
9114 } else if (i_spnB1Flag == "1") {
9115 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
9116 } else if (i_spnB2Flag == "1") {
9117 if (i_roamStatus) {//����
9118 return i_networkProvider;
9119 } else {//������
9120 return i_spnNameData;
9121 }
9122 }
9123 return "";
9124 }
9125 }
9126
9127 // �����¶���Ϣ��ʾ���������������
9128 function sf_addNewMessage(i_message, i_isUpdate, i_type){
9129 config.smsMaxId = i_message.id;
9130 var now = $.now();
9131 sv_messagePopStack["m" + now] = now;
9132 var name = i_message.number;
9133 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
9134 sv_isFirstLoadNewMessage = false;
9135 if(config.HAS_PHONEBOOK){
9136 sf_getPhoneBooks();
9137 }else{
9138 config.phonebook = [];
9139 }
9140 }
9141 for(i in config.phonebook){
9142 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9143 name = config.phonebook[i].pbm_name;
9144 break;
9145 }
9146 }
9147 var s_newMsg = {
9148 mark : "m" + now,
9149 name: name,
9150 title: $.i18n.prop("sms"),
9151 titleTrans: "sms",
9152 tag: i_message.tag,
9153 content : i_message.content,
9154 datetime : i_message.time
9155 };
9156 if(sv_newMessagePopTemplate == null){
9157 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
9158 }
9159 $(".bubbleItem:not(.report)", "#buttom-bubble").remove();
9160 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
9161 if((window.location.hash == "#msg_main" || window.location.hash == "#msg_list") && i_type == "1"){
9162 //sf_dealChosenNumber(s_newMsg.name, i_message.number);
9163 var s_inChating = config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
9164 var s_itemId = getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
9165 var item = $("#smslist-item-" + s_itemId);
9166 if(item && item.length > 0){
9167 // �Ѵ������ݣ��������ݵ���˳��
9168 for(var i = 0; config.listMsgs && i < config.listMsgs.length; i++){
9169 if(getLastNumber(config.listMsgs[i].number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9170 config.listMsgs[i].id = i_message.id;
9171 config.listMsgs[i].latestId = i_message.id;
9172 config.listMsgs[i].latestSms = i_message.content;
9173 config.listMsgs[i].latestTime = i_message.time;
9174 if(!i_isUpdate){
9175 config.listMsgs[i].newCount++;
9176 config.listMsgs[i].totalCount++;
9177 }
9178 break;
9179 }
9180 }
9181 item.find(".smslist-item-checkbox p.checkbox").attr("id", i_message.id);
9182 item.find(".smslist-item-checkbox input:checkbox").val(i_message.id).attr("id", "checkbox" + i_message.id);
9183 if(!i_isUpdate){
9184 var s_itemCount = item.find(".smslist-item-total-count").text();
9185 s_itemCount = Number(s_itemCount.substring(1, s_itemCount.length - 1));
9186 item.find(".smslist-item-total-count").text("(" + (s_itemCount + 1) + ")");
9187 if(!config.currentChatObject || config.currentChatObject != getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9188 var s_newNum = item.find(".smslist-item-new-count").removeClass("hide");
9189 if(s_newNum && s_newNum.text().length > 0){
9190 s_newNum.text(Number(s_newNum.text()) + 1);
9191 }else{
9192 s_newNum.text(1);
9193 }
9194 }
9195 }
9196 if(item.find(".smslist-item-draft-flag").length > 0){
9197 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
9198 item.find(" td:nth-child(2)").removeClass("font-weight-bold");
9199 } else {
9200 item.find(" td:nth-child(2)").addClass("font-weight-bold");
9201 }
9202 }else{
9203 var msgContent = item.find(".smslist-item-msg").text(i_message.content);
9204 msgContent.closest('td').prop('title', i_message.content);
9205 item.find("span.clock-time").text(i_message.time);
9206 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
9207 msgContent.closest('tr').removeClass("font-weight-bold");
9208 } else {
9209 msgContent.closest('tr').addClass("font-weight-bold");
9210 }
9211 }
9212 item.find(".smslist-item-repeat span").die().click(function() {
9213 forwardClickHandler(i_message.id);
9214 });
9215
9216 var s_tmpItem = item;
9217 item.hide().remove();
9218 $("#smslist-table").prepend(s_tmpItem.show());
9219 } else {
9220 // ��������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
9221 var s_theName = "";
9222 if(config.phonebook && config.phonebook.length > 0) {
9223 for(i in config.phonebook){
9224 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9225 s_theName = config.phonebook[i].pbm_name;
9226 break;
9227 }
9228 }
9229 }
9230 var s_theNewMessage = {
9231 id : i_message.id,
9232 name : s_theName,
9233 number : i_message.number,
9234 latestId :i_message.id,
9235 totalCount : 1,
9236 newCount : s_inChating ? 0 : 1,
9237 latestSms : i_message.content,
9238 latestTime : i_message.time,
9239 checked : false,
9240 hasDraft : false,
9241 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
9242 };
9243 if(sv_smsListTemplate == null){
9244 sv_smsListTemplate = $.template("smsTableTmpl", $("#smsTableTmpl"));
9245 }
9246 $.tmpl("smsTableTmpl", {data: [s_theNewMessage]}).prependTo("#smslist-table");
9247 }
9248 if(config.HAS_PHONEBOOK){
9249 $(".sms-add-contact-icon").removeClass("hide");
9250 }else{
9251 $(".sms-add-contact-icon").addClass("hide");
9252 }
9253 if(s_inChating){
9254 var talkItem = $("#talk-item-" + i_message.id, "#chatlist");
9255 if (talkItem && talkItem.length > 0) {// ���¼�����������
9256 $(".J_content pre", talkItem).html(dealContent(i_message.content));
9257 $(".time .smslist-item-time", talkItem).text(i_message.time);
9258 $(".smslist-item-repeat", talkItem).die().click(
9259 function() {
9260 forwardClickHandler(i_message.id);
9261 });
9262 $(".smslist-item-delete", talkItem).die().click(
9263 function() {
9264 deleteSingleItemClickHandler(i_message.id);
9265 });
9266 } else {// �����µĻظ�����
9267 $("#smsOtherTmpl").tmpl(i_message).appendTo("#chatlist");
9268 $(".clear-container", "#chatpanel").animate({
9269 scrollTop : $("#chatlist").height()
9270 });
9271 }
9272 if (!config.SMS_SET_READ_WHEN_COMPLETE) {
9273 service.setSmsRead({ids: [i_message.id]}, $.noop);
9274 } else if (config.SMS_SET_READ_WHEN_COMPLETE && i_message.receivedAll) {
9275 service.setSmsRead({ids: [i_message.id]}, $.noop);
9276 }
9277 }
9278 enableCheckbox($("#smslist-checkAll"));
9279 }
9280 if(window.location.hash == "#msg_sim" && i_type == "0"){
9281 // ��������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
9282 var s_theName = "";
9283 if(config.phonebook && config.phonebook.length > 0) {
9284 for(i in config.phonebook){
9285 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9286 s_theName = config.phonebook[i].pbm_name;
9287 break;
9288 }
9289 }
9290 }
9291 var s_theNewMessage = {
9292 id : i_message.id,
9293 name : s_theName,
9294 number : i_message.number,
9295 content : i_message.content,
9296 time : i_message.time,
9297 tag: i_message.tag,
9298 checked : false,
9299 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
9300 };
9301 if(i_isUpdate){
9302 var s_item = $(".simMsgList-item-class-" + s_theNewMessage.id);
9303 s_item.hide().remove();
9304 }
9305 if(sv_simMessageListTemplate == null){
9306 sv_simMessageListTemplate = $.template("ssimMessageListTemplate", $("#simMessageListTemplate"));
9307 }
9308 $.tmpl("simMessageListTemplate", {data: [s_theNewMessage]}).prependTo("#simMsgList_container");
9309 }
9310 }
9311
9312 function sf_checkBatteryStatusForFota(){
9313 var s_state = service.getCurrentUpgradeState();
9314 if(s_state.current_upgrade_state == 'low_battery'){
9315 showInfo('ota_low_battery');
9316 clearInterval(sv_batteryCheckTimer);
9317 }
9318 }
9319
9320 // ��SIM��״̬ת��Ϊ��Ӧ����������
9321 function sf_convertSimStatusToImage(i_status) {
9322 var s_image;
9323 switch (i_status) {
9324 case "modem_destroy":
9325 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9326 break;
9327 case "modem_imsi_waitnck":
9328 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitnck");
9329 break;
9330 case "modem_init_complete":
9331 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9332 break;
9333 case "modem_sim_destroy":
9334 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9335 break;
9336 case "modem_sim_undetected":
9337 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_undetected");
9338 break;
9339 case "modem_undetected":
9340 s_image = "./pic/simcard_undetected.png";
9341 break;
9342 case "modem_waitpin":
9343 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpin");
9344 break;
9345 case "modem_waitpuk":
9346 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpuk");
9347 break;
9348
9349 default:
9350 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9351 break;
9352 }
9353 return s_image;
9354 }
9355
9356 function sf_dealChosenNumber(i_choosenName, i_choosenNum) {
9357 setTimeout(function () {
9358 var s_choosen = $("#chosenUserSelect");
9359 var s_options = $("option", s_choosen);
9360 for (var index = 0; index < s_options.length; index++) {
9361 if (getLastNumber(i_choosenNum, config.SMS_MATCH_LENGTH) == s_options[index].value) {
9362
9363 s_options[index].text = i_choosenName + '/' + i_choosenNum;
9364 s_options[index].value = i_choosenNum;
9365
9366 break;
9367 }
9368 }
9369 s_choosen.trigger("liszt:updated");
9370 }, 0);
9371 }
9372
9373 // ˫�첽��ȡ�豸���sim����ö���Ϣ��������ϲ�
9374 function sf_dealPhoneBooksResult(i_books){
9375 if($.isArray(i_books.pbm_data) && i_books.pbm_data.length > 0){
9376 config.phonebook = i_books.pbm_data;
9377 }
9378 }
9379
9380 // �������µ�5������Ϣ����δ���ӵ������б��еĵ�����ʾ
9381 function sf_filterNewMessage(i_messages, i_type){
9382 if(!config.dbMsgs){
9383 config.dbMsgs = [];
9384 }
9385 if(sv_dbMessageIds.length == 0){
9386 $.each(config.dbMsgs, function(index_1, i_element){
9387 sv_dbMessageIds.push(i_element.id);
9388 });
9389 }
9390 $.each(i_messages, function(index_2, i_element){
9391 if($.inArray(i_element.id, sv_dbMessageIds) == -1){//�����¶���
9392 sv_dbMessageIds.push(i_element.id);
9393 config.dbMsgs.push(i_element);
9394 if(i_element.tag == '1'){
9395 sf_addNewMessage(i_element, false, i_type);
9396 }
9397 }else{
9398 for(var index = 0; index < config.dbMsgs.length; index++){//���¼�������
9399 if(config.dbMsgs[index].id == i_element.id && config.dbMsgs[index].content != i_element.content && i_element.tag == '1'){
9400 config.dbMsgs[index].content = i_element.content;
9401 sf_addNewMessage(i_element, true, i_type);
9402 break;
9403 }
9404 }
9405 }
9406 });
9407 }
9408
9409 // ������ת��Ϊ��ӦͼƬ
9410 function sf_getBatteryLevelImage(pers, i_status) {
9411 var s_Image = null;
9412 if ("0" == i_status) {
9413 if ("-1" == pers) {
9414 s_Image = null;
9415 } else if ("1" == pers) {
9416 s_Image = "pic/power_one.png";
9417 } else if ("2" == pers) {
9418 s_Image = "pic/power_two.png";
9419 } else if ("3" == pers) {
9420 s_Image = "pic/power_three.png";
9421 } else if ("4" == pers) {
9422 s_Image = "pic/power_full.png";
9423 } else { //"5" == pers || "0" == pers
9424 s_Image = "pic/power_out.png";
9425 }
9426 } else {
9427 s_Image = "pic/power_charging.gif";
9428 }
9429 return s_Image;
9430 }
9431
9432 // ��ȡ����״̬��CSS��ʽ
9433 function sf_getConnectionCssClass(i_fwVm, i_status, i_data_counter, i_wifiSSID, i_wifiStatus, i_rj45Status) {
9434
9435 var s_rj45ConnectionStatus = "icon_connection ";
9436 var s_connectionStatus = "icon_connection ";
9437
9438 if(i_rj45Status == "connect"){
9439 s_rj45ConnectionStatus += "connecting";
9440 }else if(i_rj45Status == "working"){
9441 s_rj45ConnectionStatus += "rj45_connected";
9442 }else{
9443 s_rj45ConnectionStatus += "disconnect";
9444 }
9445
9446 if (i_status == "ppp_connecting" || i_status == "wifi_connecting") {
9447 s_connectionStatus += "connecting";
9448 } else if(i_status == "ppp_connected") {//CPE ppp_statusΪnone ready��ֵ
9449 if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate != '0') {
9450 s_connectionStatus += "connectionBoth";
9451 } else if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate == '0') {
9452 s_connectionStatus += "connectionUp";
9453 } else if (i_data_counter.uploadRate == '0' && i_data_counter.downloadRate != '0') {
9454 s_connectionStatus += "connectionDown";
9455 } else {
9456 s_connectionStatus += "connectionNone";
9457 }
9458 } else if (i_status == "ppp_disconnected") {
9459 if (i_wifiSSID && i_wifiStatus == "connect") {
9460 service.getHotspotList({}, function (data) {
9461 var s_cssName = "icon_connection ";
9462 var s_css = "connecting ";
9463 for (var i = 0, len = data.hotspotList.length; i < len; i++) {
9464 if (data.hotspotList[i].connectStatus == "1") {
9465 s_css = "wifi_connected";
9466 break;
9467 }
9468 }
9469 s_cssName += s_css;
9470 i_fwVm.connectionCssClass(s_cssName);
9471 });
9472 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9473 return;
9474 } else if (i_wifiSSID && (i_wifiStatus == "connecting" || i_wifiStatus =="dhcping")) {
9475 s_connectionStatus += "connecting";
9476 } else {
9477 s_connectionStatus += "disconnect";
9478 }
9479 } else {
9480 s_connectionStatus += "disconnect";
9481 }
9482
9483 i_fwVm.connectionCssClass(s_connectionStatus);
9484 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9485 }
9486
9487 // ��ȡ�绰����Ϣ
9488 function sf_getPhoneBooks() {
9489 var s_books = service.getPhoneBooks({
9490 page : 0,
9491 data_per_page : 2000,
9492 orderBy : "id",
9493 isAsc : false
9494 });
9495 sf_dealPhoneBooksResult(s_books);
9496 }
9497
9498 // ��ȡ�ź�����CSS��ʽ
9499 function sf_getSignalCssClass(siganl, networkType, simStatus) {
9500 networkType = networkType.toLowerCase();
9501 simStatus = simStatus ? simStatus.toLowerCase() : '';
9502 if(networkType == '' || networkType == 'limited_service' || networkType == 'no_service' || networkType == 'limited service' || networkType == 'no service'
9503 || simStatus != 'modem_init_complete'){
9504 siganl = '_none';
9505 }
9506 return "signal signal" + siganl;
9507 }
9508
9509 function sf_getWifiStatusCssClass(i_status, i_deviceSize) {
9510 if (i_status) {
9511 if (i_deviceSize == 0) {
9512 return "wifi_status0";
9513 } else {
9514 return "wifi_status" + i_deviceSize;
9515 }
9516 } else {
9517 return "wifi_status_off";
9518 }
9519 }
9520
9521 // ����wifi״̬��ȡwifi��ͼƬ��Դ
9522 function sf_getWifiStatusImage(i_status, i_deviceSize) {
9523 if (i_status) {
9524 if (i_deviceSize == 0) {
9525 return "./pic/wlan0.png";
9526 } else {
9527 return "./pic/wlan" + i_deviceSize + ".png";
9528 }
9529 } else {
9530 return "./pic/wlan_off.png";
9531 }
9532 }
9533
9534 // ��ȡ��������������С���������ؽ���
9535 function sf_refreshFotaDownloadProgress(){
9536 service.getPackSizeInfo({}, function (data) {
9537 var percents;
9538 if (parseInt(data.fota_pkg_total_size) == 0) {
9539 percents = 0;
9540 } else {
9541 percents = parseInt(parseInt(data.fota_dl_pkg_size) * 100 / parseInt(data.fota_pkg_total_size));
9542 }
9543 if (percents > 100) {
9544 percents = 100;
9545 }
9546 if (percents >= 0) {
9547 if (percents > 95) {
9548 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9549 }
9550 setProgressBar(percents);
9551 }
9552 });
9553 }
9554
9555 // �������ŷ��ͱ���
9556 function sf_responseSmsReport(){
9557 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
9558
9559 sv_isFirstLoadNewMessage = false;
9560
9561 if(config.HAS_PHONEBOOK){
9562 sf_getPhoneBooks();
9563 }else{
9564 config.phonebook = [];
9565 }
9566 }
9567 service.getSMSDeliveryReport({
9568 page: 0,
9569 smsCount: 10
9570 }, function(data){
9571 var s_messages = data.messages;
9572 var s_nums = [];
9573 $.each(s_messages, function(i, i_message){
9574 if($.inArray(i_message.number, s_nums) == -1){
9575 s_nums.push(i_message.number);
9576 window.setTimeout(function(){
9577 var s_now = $.now();
9578 sv_messagePopStack["m" + s_now] = s_now;
9579 i_message.name = i_message.number;
9580 for(i in config.phonebook){
9581 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9582 i_message.name = config.phonebook[i].pbm_name;
9583 break;
9584 }
9585 }
9586 var s_msgContent = $.i18n.prop("sms_delivery_report_" + i_message.content);
9587
9588 var s_newMsg = {
9589 mark : "m" + s_now,
9590 name: i_message.name,
9591 title: $.i18n.prop("sms_report"),
9592 titleTrans: "sms_report",
9593 content : s_msgContent,
9594 datetime : i_message.time,
9595 report : 'report'
9596 };
9597
9598 if(sv_newMessagePopTemplate == null){
9599 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
9600 }
9601
9602 $(".report", "#buttom-bubble").remove();
9603 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
9604 }, 100);
9605 }
9606 });
9607 }, function(){
9608 //No Deal
9609 });
9610 }
9611
9612 function sf_simStatusInvalid(simStatus){
9613 return simStatus == 'modem_sim_undetected' || simStatus == 'modem_undetected' || simStatus == 'modem_sim_destroy'
9614 || simStatus == 'modem_waitpin' || simStatus == 'modem_waitpuk' || simStatus == 'modem_imsi_waitnck';
9615 }
9616
9617 // ��ʾFOTA������ǰ״̬
9618 function sf_showFotaCurrentStatus() {
9619 sv_fotaUpdateCancel = true;
9620 var r = service.getNewVersionState();
9621
9622 function showProgress() {
9623 var upgradingState = ["downloading"];
9624 var info = service.getCurrentUpgradeState();
9625 if(info.current_upgrade_state.toLowerCase() == "idle") {
9626 addTimeout(showProgress, 1000);
9627 } else if(($.inArray(info.current_upgrade_state, upgradingState) != -1)&&(r.fota_new_version_state != "already_has_pkg")) {
9628 hideLoading();
9629 sf_showFotaUpgradeStatus();
9630 }
9631 }
9632 if (!($("#progress").is(":visible"))) {
9633 showProgress();
9634 }
9635 var times = 0;
9636 var getOTAUpgradeState = function () {
9637 var data = null;
9638 if (times <= 3) {
9639 times = times + 1;
9640 data = service.getCurrentUpgradeState();
9641 } else {
9642 data = getCurrentStatusInfo();
9643 }
9644 var state = data.current_upgrade_state;
9645 if(sv_fotaUpdateCancel && isLoggedIn == true){
9646
9647 if(r.fota_new_version_state == "already_has_pkg"){
9648 if(state == 'low_battery'){
9649 hideProgressBar();
9650 sv_fotaUpdateCancel = false;
9651 service.removeTimerThings('fota_current_upgrade_state',function(){});
9652 showInfo('ota_pkg_low_battery');
9653 window.clearTimeout(sv_timer);
9654 return;
9655 }else if(state == 'prepare_install'){
9656 hideProgressBar();
9657 sv_fotaUpdateCancel = false;
9658 service.removeTimerThings('fota_current_upgrade_state',function(){});
9659 showInfo('ota_pkg_download_success');
9660 window.clearTimeout(sv_timer);
9661 sv_batteryCheckTimer = setInterval(function () {
9662 sf_checkBatteryStatusForFota();
9663 }, 1000);
9664 return;
9665 }
9666 }else if(state == 'downloading') {
9667 sf_refreshFotaDownloadProgress();
9668 }else if(state == 'download_failed') {
9669 hideProgressBar();
9670 sv_fotaUpdateCancel = false;
9671 showAlert('ota_download_failed');
9672 window.clearTimeout(sv_timer);
9673 return;
9674 }else if(state == 'low_battery'){
9675 hideProgressBar();
9676 sv_fotaUpdateCancel = false;
9677 service.removeTimerThings('fota_current_upgrade_state',function(){});
9678 showInfo('ota_low_battery');
9679 window.clearTimeout(sv_timer);
9680 return;
9681 }else if(state == 'prepare_install'){
9682 hideProgressBar();
9683 sv_fotaUpdateCancel = false;
9684 service.removeTimerThings('fota_current_upgrade_state',function(){});
9685 showInfo('ota_download_success');
9686 window.clearTimeout(sv_timer);
9687 sv_batteryCheckTimer = setInterval(function () {
9688 sf_checkBatteryStatusForFota();
9689 }, 1000);
9690 return;
9691 }else{
9692 sv_fotaUpdateCancel = false;
9693 hideProgressBar();
9694 window.clearTimeout(sv_timer);
9695 return;
9696 }
9697 sv_timer = window.setTimeout(getOTAUpgradeState , 1000);
9698 }
9699 };
9700
9701 if(sv_fotaUpdateCancel && isLoggedIn == true){
9702 sv_timer = window.setTimeout(getOTAUpgradeState , 100);
9703 }else{
9704 window.clearTimeout(sv_timer);
9705 }
9706 }
9707
9708 // ��ʾFota�������
9709 function sf_showFotaUpdateResult(i_otaResult) {
9710 if ((!($("#loading").is(":visible"))) && (!($("#confirm").is(":visible")))) {
9711 var s_message = i_otaResult ? "ota_update_success" : "ota_update_failed";
9712 sv_fotaResultAlertPopuped = true;
9713 showAlert(s_message, function () {
9714 sv_fotaResultAlertPopuped = false;
9715 if (config.UPGRADE_TYPE == "OTA") {
9716 service.clearUpdateResult({}, $.noop());
9717 }
9718 });
9719 } else {
9720 window.setTimeout(function () {
9721 sf_showFotaUpdateResult(i_otaResult)
9722 }, 1000);
9723 }
9724 }
9725
9726 // ��ʾ��ǰ����״̬
9727 function sf_showFotaUpgradeStatus() {
9728 var s_data = service.getMandatory();
9729 var s_isMandatory = s_data.is_mandatory;
9730 var s_sizeInfo =service.getPackSizeInfo();
9731 var s_percents;
9732
9733 if (parseInt(s_sizeInfo.fota_pkg_total_size) == 0) {
9734 s_percents = 0;
9735 } else {
9736 s_percents = parseInt(parseInt(s_sizeInfo.fota_dl_pkg_size) * 100 / parseInt(s_sizeInfo.fota_pkg_total_size));
9737 }
9738 if (s_percents > 100) {
9739 s_percents = 100;
9740 }
9741
9742 if (s_isMandatory) {
9743 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9744 } else {
9745 var cancelHtml = "";
9746 if (config.UPGRADE_TYPE == "OTA") {
9747 cancelHtml = "<br/><br/><button id='btnStopUpgrade' onclick='stopOTAUpgrade();' class='btn-1 btn-primary'>" + $.i18n.prop("cancel") + "</button>";
9748 }
9749 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning") + cancelHtml);
9750 }
9751
9752 //setProgressBar(0);
9753 if (s_percents >= 0) {
9754 setProgressBar(s_percents);
9755 }
9756 }
9757
9758
9759
9760
9761
9762 function sf_startFotaUpgrade(){
9763 service.setUpgradeSelectOp({selectOp:'1'},function(result){
9764 if (result.result == "success"){
9765 sf_showFotaCurrentStatus();
9766 }});
9767 }
9768
9769 function cancelFotaUpgrade(){
9770 service.setUpgradeSelectOp({selectOp:'0'},function(result){ });
9771 }
9772
9773
9774 function refreshFotaStatusForUserSelector(choice){
9775 var info = getCurrentStatusInfo();
9776 if(choice){
9777 var modeData = service.getOpMode();
9778 if (!checkConnectedStatus(info.connectStatus, modeData.rj45_state, info.connectWifiStatus)) {
9779 showAlert("ota_network_disconnected");
9780 return;
9781 }
9782
9783 if(info.fota_user_selector == 'none'){
9784 sf_startFotaUpgrade();
9785 }else if(info.fota_user_selector == 'accept'){
9786 sf_showFotaCurrentStatus();
9787 }else if(info.fota_user_selector == 'cancel'){
9788 showAlert("ota_have_cancel");
9789 }else if(info.fota_user_selector == 'downloading_cancel'){
9790 showAlert("ota_have_cancel");
9791 }
9792 }else{
9793 if(info.fota_user_selector == 'none'){
9794 cancelFotaUpgrade();
9795 }else if(info.fota_user_selector == 'accept'){
9796 sf_showFotaCurrentStatus();
9797 }else if(info.fota_user_selector == 'cancel'){
9798 // todo:
9799 }else if(info.fota_user_selector == 'downloading_cancel'){
9800 // todo:
9801 }
9802 }
9803 }
9804
9805
9806 // ��ʾ���°汾�������ж��Ƿ������ʾ
9807 function showFotaStatusForUserToConfirm(upgradeState) {
9808 var upgState = upgradeState.current_upgrade_state;
9809 if (upgState == 'upgrade_pack_redownload') {
9810 showConfirm("ota_interrupted", {ok: function () {
9811 refreshFotaStatusForUserSelector(1);
9812 }, no: function () {
9813 refreshFotaStatusForUserSelector(0);
9814 }});
9815 } else {
9816 var upgradingState = ["prepare_install", "low_battery",
9817 "connecting_server", "connect_server_success", "downloading", "accept"];
9818 if ($.inArray(upgState, upgradingState) != -1) {
9819 sf_showFotaCurrentStatus();
9820 } else {
9821
9822 showConfirm($.i18n.prop('ota_new_version'), {ok: function () {
9823 refreshFotaStatusForUserSelector(1);
9824 config.ISNOW_NOTICE = false;
9825 }, no: function () {
9826 refreshFotaStatusForUserSelector(0);
9827 config.ISNOW_NOTICE = false;
9828 }});
9829 }
9830 }
9831 }
9832
9833 showOTAAlert = function () {
9834 config.ISNOW_NOTICE = true;
9835 var is_mandatory = service.getMandatory().is_mandatory;
9836 if (is_mandatory) {
9837 sf_showFotaCurrentStatus();
9838 } else {
9839 var upgradeState = {};
9840 upgradeState = service.getCurrentUpgradeState();
9841 showFotaStatusForUserToConfirm(upgradeState);
9842 }
9843 };
9844
9845 // ��ֹFota����
9846 stopOTAUpgrade = function () {
9847 service.setUpgradeSelectOp({selectOp:'2'},function(result){ });
9848 sv_fotaUpdateCancel = false;
9849 window.clearTimeout(sv_timer);
9850 hideLoading();
9851 showAlert('ota_cancel');
9852 };
9853
9854 // �������������Ƿ����ѹ�
9855 function setTrafficAlertPopuped(val){
9856 sv_trafficAlertPopuped = !!val;
9857 sv_trafficAlertPopuped_100 = !!val;
9858 if(!val){
9859 sv_resetTrafficAlertPopuped = true;
9860 }
9861 }
9862
9863 function setTrafficAlert100Popuped(val){
9864 sv_trafficAlertPopuped_100 = !!val;
9865 if(!val){
9866 sv_resetTrafficAlertPopuped = true;
9867 }
9868 }
9869
9870 // ���������ṹ
9871 function getTrafficResult(info){
9872 var s_trafficResult = {
9873 showConfirm : false,
9874 limitPercent : info.limitVolumePercent
9875 };
9876 if(info.limitVolumeType == '1'){
9877 var monthlyTraffic = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
9878 s_trafficResult.usedPercent = monthlyTraffic / info.limitVolumeSize * 100;
9879 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9880 s_trafficResult.showConfirm = true;
9881 s_trafficResult.type = 'data';
9882 }
9883 }else{
9884 s_trafficResult.usedPercent = info.data_counter.monthlyConnectedTime / info.limitVolumeSize * 100;
9885 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9886 s_trafficResult.showConfirm = true;
9887 s_trafficResult.type = 'time';
9888 }
9889 }
9890 return s_trafficResult;
9891 }
9892
9893 // ��ʼ�� ViewModel����������ͼ��
9894 function init() {
9895 if(config.PRODUCT_TYPE == 'DATACARD') {
9896 $('#statusBar').addClass('padding-right-90');
9897 $('#language').addClass('data-card-language');
9898 }
9899 //preload img
9900 var imgAlert = $('<img />').attr('src', 'pic/res_alert.png');
9901 var imgConfirm = $('<img />').attr('src', 'pic/res_confirm.png');
9902 var imgInfo = $('<img />').attr('src', 'pic/res_info.png');
9903
9904 window.setTimeout(function () {
9905
9906 var fwVm = new statusViewModel();
9907
9908 ko.applyBindings(fwVm, $('#statusBar')[0]);
9909
9910 window.setInterval(function () {
9911 var info = getCurrentStatusInfo();
9912 var s_roamStatus = info.roamingStatus ? true : false;
9913 var $langLogoBar = $("#langLogoBar");
9914 isLoggedIn = info.isLoggedIn;
9915
9916
9917 //fwVm.attachedDevices(info.attachedDevices);
9918 fwVm.batteryLevel(info.batteryLevel + '%');
9919 fwVm.batteryPers(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
9920 fwVm.batteryStatus(info.batteryStatus);
9921 fwVm.isShowFotaNewversionIcon(info.new_version_state && info.fota_user_selector && info.fota_package_already_download != "yes" && config.ISNOW_NOTICE && fwVm.updateType() == 'mifi_fota');
9922 fwVm.isShowRj45ConnectionIcon(config.RJ45_SUPPORT);
9923 fwVm.networkOperator(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,s_roamStatus));
9924 fwVm.networkType(getNetworkType(info.networkType));
9925 fwVm.pinStatus(info.pinStatus);
9926 fwVm.roamingStatus(info.roamingStatus ? "R" : "");
9927 fwVm.showAttachedDevices(info.wifiStatus);
9928 fwVm.simStatus(sf_convertSimStatusToImage(info.simStatus));
9929 fwVm.signalCssClass(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
9930 fwVm.isLoggedIn(info.isLoggedIn);
9931 fwVm.wifiStatusCssClass(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
9932 fwVm.wifiStatusImg(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
9933
9934 if(config.HAS_SMS ){
9935 if(!sv__hasCheckedSMSCapacity && info.isLoggedIn){
9936 checkSMSCapacity(info.smsUnreadCount);
9937 } else {
9938 fwVm.smsUnreadCount(info.smsUnreadCount);
9939 }
9940 }
9941
9942 sf_getConnectionCssClass(fwVm, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
9943 refreshWifiConnectStatus(fwVm, info.connectStatus,info.connectWifiSSID,info.connectWifiStatus);
9944 checkTrafficLimitAlert(fwVm, info);
9945 updateStatusBarTrans({simStatus: info.simStatus, wifiStatus: info.wifiStatus, deviceSize: info.wirelessDeviceNum, networkType: info.networkType});
9946
9947 if(info.isLoggedIn){
9948 $("#statusBar:hidden").show();
9949 } else {
9950 $("#statusBar:visible").hide();
9951 }
9952 }, 500);
9953
9954 if(config.HAS_SMS){
9955 window.setInterval(function(){
9956 if(fwVm.isLoggedIn()){
9957 checkSMSCapacity();
9958 }
9959 }, 10000);
9960 checkSmsModelReady();
9961 }
9962
9963 window.setInterval(function() {
9964 var data = getCurrentStatusInfo();
9965 var upgradingState = ["prepare_install", "low_battery", "download_success","downloading"];
9966
9967 if (fwVm.isLoggedIn() == true && !($("#progress").is(":visible")) && data.defaultWanName != ""){
9968 if ($.inArray(data.current_upgrade_state, upgradingState) != -1){
9969 if(null == sv_fotaUpdateCancel){
9970 if(!data.is_mandatory){
9971 $.modal.close();
9972 }
9973 sf_showFotaCurrentStatus();
9974 }else if(false == sv_fotaUpdateCancel){
9975 sv_fotaUpdateCancel = null;
9976 }
9977 }
9978 }
9979 }, 1000);
9980
9981 var checkFotaUpgradeResult = function () {
9982 var info = service.getStatusInfo();
9983 if (info.isLoggedIn) {
9984 service.getUpgradeResult({}, function (data) {
9985 if (data.upgrade_result == "success") {
9986 sf_showFotaUpdateResult(true);
9987 } else if (data.upgrade_result == "fail") {
9988 sf_showFotaUpdateResult(false);
9989 } else {
9990 window.setTimeout(checkFotaUpgradeResult, 1000);
9991 }
9992 }, function () {
9993 window.setTimeout(checkFotaUpgradeResult, 1000);
9994 });
9995 } else {
9996 window.setTimeout(checkFotaUpgradeResult, 1000);
9997 }
9998 };
9999 if(fwVm.updateType() == "mifi_fota"){
10000 checkFotaUpgradeResult();
10001 window.setInterval(function () {
10002 var info = getCurrentStatusInfo();
10003 if (info.isLoggedIn && info.defaultWanName != "") {
10004 if(info.new_version_state && info.fota_package_already_download != "yes" && !config.ALREADY_NOTICE){
10005 service.getUpgradeResult({}, function (data) {
10006 if (data.upgrade_result == "success") {
10007 sf_showFotaUpdateResult(true);
10008 } else if (data.upgrade_result == "fail") {
10009 sf_showFotaUpdateResult(false);
10010 } else {
10011 if(sv_fotaResultAlertPopuped == false){
10012 config.ALREADY_NOTICE = true;
10013 showOTAAlert();
10014 }
10015 }
10016 });
10017 }
10018 }
10019 }, 1000);
10020 }
10021 function checkSMSCapacity(unreadCount){
10022 service.getSmsCapability({}, function(info){
10023 var showSmsConfirm = false;
10024 if(info.nvTotal != 0 && info.nvUsed >= info.nvTotal){
10025 $("#sms_unread_count").attr("tipTitle", "sms_capacity_is_full");
10026 showSmsConfirm = true;
10027 } else if(info.nvTotal != 0 && info.nvUsed + 5 >= info.nvTotal) {
10028 $("#sms_unread_count").attr("tipTitle", "sms_capacity_will_full");
10029 showSmsConfirm = true;
10030 } else {
10031 $("#sms_unread_count").attr("tipTitle", "sms_unread_count");
10032 }
10033 fwVm.showSmsDeleteConfirm(showSmsConfirm);
10034 if(typeof unreadCount != "undefined"){
10035 fwVm.smsUnreadCount(unreadCount);
10036 }
10037 sv__hasCheckedSMSCapacity = true;
10038 });
10039 }
10040 }, 1200);
10041
10042 tooltip.init();
10043
10044 // ����Ϣģ���ʼ��״̬
10045 function checkSmsModelReady(){
10046 var info = getCurrentStatusInfo();
10047 if(info.isLoggedIn){
10048 service.getSMSReady({}, function (data) {
10049 if (data.sms_cmd_status_result == "1") {
10050 window.setTimeout(function(){checkSmsModelReady();}, 1000);
10051 } else {
10052 sv__initSMSCompleted = true;
10053 }
10054 });
10055 } else {
10056 window.setTimeout(function(){checkSmsModelReady();}, 1000);
10057 }
10058 }
10059
10060 // ����������״̬
10061 checkTrafficLimitAlert = function(fwVm, info){
10062 if(window.location.hash == '#entry'){
10063 return false;
10064 }
10065 var APStationEnabled = config.AP_STATION_SUPPORT ? service.getStatusInfo().ap_station_enable : 'undefined';
10066 var trafficResult = getTrafficResult(info);
10067 var inShow = $("#confirm-container:visible").length > 0;
10068 // var notPPP = (config.PRODUCT_TYPE == 'CPE' && checkCableMode(info.blc_wan_mode)) ? true : false;
10069 var notPPP = false;
10070
10071 // ��ȡAp Stationʹ��״̬���������ѷ�ʽ
10072 if (config.AP_STATION_SUPPORT && (typeof APStationEnabled == "undefined" || APStationEnabled === '')) {
10073 service.refreshAPStationStatus({}, $.noop());
10074 return false;
10075 }
10076 APStationEnabled = APStationEnabled == 1;
10077
10078 if (!info.isLoggedIn || inShow || (sv_trafficAlertPopuped && sv_trafficAlertPopuped_100) || !info.limitVolumeEnable || (!APStationEnabled && !(info.connectStatus == "ppp_connected")) || notPPP) {
10079 return false;
10080 }
10081
10082 if(sv_resetTrafficAlertPopuped){
10083 window.setTimeout(function () {
10084 sv_resetTrafficAlertPopuped = false;
10085 }, 2000);
10086 return false;
10087 }
10088
10089 if(trafficResult.showConfirm){
10090
10091 var confirmMessage = null;
10092
10093 if(trafficResult.usedPercent > 100 && !sv_trafficAlertPopuped_100){
10094
10095 sv_trafficAlertPopuped = true;
10096 sv_trafficAlertPopuped_100 = true;
10097
10098 confirmMessage = {msg: APStationEnabled ? 'traffic_beyond_msg' : 'traffic_beyond_disconnect_msg'};
10099
10100 } else if (!sv_trafficAlertPopuped) {
10101
10102 sv_trafficAlertPopuped = true;
10103 sv_trafficAlertPopuped_100 = false;
10104 confirmMessage = {msg: APStationEnabled ? 'traffic_limit_msg' : 'traffic_limit_disconnect_msg',
10105 params: [trafficResult.limitPercent]};
10106 }
10107
10108 if (confirmMessage != null) {
10109 if (APStationEnabled) {
10110 showAlert(confirmMessage);
10111 } else {
10112 showConfirm(confirmMessage, function () {
10113 showLoading("disconnecting");
10114 service.disconnect({}, function (data) {
10115 if (data.result) {
10116 successOverlay();
10117 } else {
10118 errorOverlay();
10119 }
10120 });
10121 });
10122 }
10123 }
10124 }
10125 return true;
10126 };
10127
10128 // ����״̬�е�tooltip
10129 function updateStatusBarTrans(status){
10130 $("#statusItemSimStatus").attr("tipTitle", "sim_status_" + status.simStatus);
10131 if (status.wifiStatus) {
10132 if (status.deviceSize == 0) {
10133 $("#wifi_status").attr("tipTitle","wifi_status_on");
10134 } else {
10135 $("#wifi_status").attr("tipTitle","wifi_status" + status.deviceSize);
10136 }
10137 } else {
10138 $("#wifi_status").attr("tipTitle","wifi_status_off");
10139 }
10140 }
10141
10142
10143 // ˢ��wifi��������״̬
10144 function refreshWifiConnectStatus(fwVm, status, wifiSSID, wifiStatus) {
10145 fwVm.connectStatus(status);
10146 if (status == "ppp_disconnecting") {
10147 fwVm.connectStatusTrans("disconnecting");
10148 fwVm.connectStatusText($.i18n.prop("disconnecting"));
10149 } else if (status == "ppp_connecting") {
10150 fwVm.connectStatusTrans("connecting");
10151 fwVm.connectStatusText($.i18n.prop("connecting"));
10152 } else if (status == "ppp_connected") {
10153 fwVm.connectStatusTrans("connected");
10154 fwVm.connectStatusText($.i18n.prop("connected"));
10155 } else if(wifiSSID){
10156 if(wifiStatus =="dhcping" || wifiStatus =="connecting"){
10157 fwVm.connectStatus("wifi_connecting");
10158 fwVm.connectStatusTrans("connecting");
10159 fwVm.connectStatusText($.i18n.prop("connecting"));
10160 }else if(wifiStatus =="connect"){
10161 fwVm.connectStatus("wifi_connect");
10162 fwVm.connectStatusTrans("connected");
10163 fwVm.connectStatusText($.i18n.prop("connected"));
10164 }else{
10165 fwVm.connectStatus("ppp_disconnected");
10166 fwVm.connectStatusTrans("disconnected");
10167 fwVm.connectStatusText($.i18n.prop("disconnected"));
10168 }
10169 }else{
10170 fwVm.connectStatusTrans("disconnected");
10171 fwVm.connectStatusText($.i18n.prop("disconnected"));
10172 }
10173 }
10174
10175 // ��ȡ��ǰ����״̬
10176 getNetworkType = function(networkType) {
10177 var networkTypeTmp = networkType.toLowerCase();
10178 if (networkTypeTmp == '' || networkTypeTmp == 'limited service') {
10179 networkTypeTmp = 'limited_service';
10180 }
10181 if(networkTypeTmp == 'no service') {
10182 networkTypeTmp = 'no_service';
10183 }
10184 if (networkTypeTmp == 'limited_service' || networkTypeTmp == 'no_service') {
10185 $("#networkType", "#statusBar").attr("data-trans", "network_type_" + networkTypeTmp);
10186 return $.i18n.prop("network_type_" + networkTypeTmp);
10187 } else {
10188 $("#networkType", "#statusBar").removeAttr("data-trans");
10189 return networkType;
10190 }
10191 };
10192
10193 if(config.HAS_SMS && menu.checkIsMenuExist("sms_list")){
10194 window.setInterval(function () {
10195 var info = getCurrentStatusInfo();
10196 if(window.location.hash == "#entry" || sf_simStatusInvalid(info.simStatus)){
10197 return;
10198 }
10199 for(key in sv_messagePopStack){
10200 var val = sv_messagePopStack[key];
10201 if($.now() - val > 5000){
10202 delete(sv_messagePopStack["m" + val]);
10203 var node = $(".bubbleItem#m" + val, "#buttom-bubble");
10204 node.fadeOut(1000, function(){
10205 $(this).remove();
10206 });
10207 }
10208 }
10209 if(info.isLoggedIn){
10210 if(info.newSmsReceived && !sv_newSMSMessageInDealing){
10211 sv_newSMSMessageInDealing = true;
10212 service.resetNewSmsReceivedVar();
10213 sf_checkNewMessages();
10214 }
10215 if(info.smsReportReceived){
10216 service.resetSmsReportReceivedVar();
10217 sf_responseSmsReport();
10218 }
10219 }
10220 }, 1000);
10221
10222 if(config.SMS_DATABASE_SORT_SUPPORT){
10223 window.setInterval(function(){
10224 if(menu.checkIsMenuExist("sms_list")){
10225 var info = getCurrentStatusInfo();
10226 if(info.isLoggedIn && sv__initSMSCompleted && !sv_newSMSMessageInDealing && !sf_simStatusInvalid(info.simStatus)){
10227 sv_newSMSMessageInDealing = true;
10228 sf_checkNewMessages();
10229 }
10230 }
10231 }, 20001);
10232 }
10233 }
10234
10235 function sf_checkNewMessages(){
10236
10237 var s_tags = 1;
10238 var s_smsCount = 5;
10239
10240 if(!config.dbMsgs || config.dbMsgs.length == 0){
10241 s_smsCount = 500;
10242 s_tags = 10;
10243 }
10244 service.getSMSMessages({
10245 page : 0,
10246 smsCount : s_smsCount,
10247 nMessageStoreType : 0,
10248 tags : s_tags,
10249 orderBy : "order by id desc"
10250 }, function(data){
10251 if(data && data.messages){
10252 sf_filterNewMessage(data.messages, 0);
10253 }
10254 sv_newSMSMessageInDealing = false;
10255 });
10256 service.getSMSMessages({
10257 page : 0,
10258 smsCount : s_smsCount,
10259 nMessageStoreType : 1,
10260 tags : s_tags,
10261 orderBy : "order by id desc"
10262 }, function(data){
10263 if(data && data.messages){
10264 sf_filterNewMessage(data.messages, 1);
10265 }
10266 sv_newSMSMessageInDealing = false;
10267 });
10268 }
10269
10270 if(config.HAS_SMS){
10271 $(".bubbleItem", "#buttom-bubble").live("mouseover", function(){
10272 var $this = $(this);
10273 delete(sv_messagePopStack[$this.attr("id")]);
10274 }).live("mouseout", function(){
10275 var $this = $(this);
10276 var now = $.now();
10277 sv_messagePopStack["m" + now] = now;
10278 $this.attr("id", "m" + now);
10279 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").data("targetid", "m" + now);
10280 });
10281
10282 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").die().live("click", function(){
10283 var id = $(this).data("targetid");
10284 delete(sv_messagePopStack[id]);
10285 var node = $(".bubbleItem#" + id, "#buttom-bubble");
10286 node.fadeOut(1000, function(){
10287 $(this).remove();
10288 });
10289 });
10290 }
10291 }
10292
10293
10294 return {
10295 init:init,
10296 setTrafficAlertPopuped: setTrafficAlertPopuped,
10297 setTrafficAlert100Popuped: setTrafficAlert100Popuped,
10298 getTrafficResult: getTrafficResult,
10299 showOTAAlert:showOTAAlert
10300 };
10301});
10302
10303// ����ͳ������ģ��
10304define("status_traffic_alert","jquery knockout service statusBar echarts".split(" "),
10305
10306 function ($, ko, service, status, echarts) {
10307
10308 var sv_trafficGraph = null;
10309 var sv_sourceData = null;
10310 var sv_usedDataModified = false;
10311 var sv_usedTimeModified = false;
10312
10313 var sv_trafficStaticalInfo = {
10314 // ����ͼ��ʼֵ
10315 data: {
10316 alarm: {
10317
10318 itemStyle: {
10319 normal: {
10320 color: '#8CC916'
10321 }
10322 },
10323 name: '������',
10324 value: 19.7
10325 },
10326 alert: {
10327
10328 itemStyle: {
10329 normal: {
10330 color: '#FF5500'
10331 }
10332 },
10333 name: '����ֵ',
10334 value: 1
10335 },
10336 free: {
10337
10338 itemStyle: {
10339 normal: {
10340 color: '#D8D8D8'
10341 }
10342 },
10343 name: 'δʹ��',
10344 value: 50
10345 },
10346 full: {
10347
10348
10349 itemStyle: {
10350 normal: {
10351 color: '#DF4313'
10352 }
10353 },
10354 name: '��������',
10355 value: 30
10356 },
10357 left1: {
10358
10359 itemStyle: {
10360 normal: {
10361 color: '#D8D8D8'
10362 }
10363 },
10364 name: '����ֵ��δʹ��',
10365 value: 50,
10366 },
10367 start: {
10368
10369 itemStyle: {
10370 normal: {
10371 color: '#D8D8D8'
10372 }
10373 },
10374 name: '����ֵ��δʹ��',
10375 value: 50
10376 },
10377 used: {
10378
10379 itemStyle: {
10380 normal: {
10381 color: '#8CC916'
10382 }
10383 },
10384 name: '��ʹ��',
10385 value: 30
10386 }
10387 },
10388 cacheEle: {},
10389 // Ԫ�ػ�ȡ
10390 getEle: function (i_elementId) {
10391 if (this.cacheEle.hasOwnProperty('id')) {
10392 return this.cacheEle[i_elementId];
10393 } else {
10394 this.cacheEle[i_elementId] = $("#" + i_elementId);
10395 return this.cacheEle[i_elementId];
10396 }
10397 },
10398 // ��ȡ�����澯״ֵ̬
10399 fetchTrafficAlertInfo: function(){
10400 sv_sourceData = getTrafficAlertInfo();
10401 return sv_sourceData;
10402 },
10403 // ��ȡ����ֵ�Ͷ�Ӧ��λֵ
10404 getTrafficStatisticalDatalnfo: function (i_valueInfo) {
10405 return {
10406 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10407 unit: /[A-Z]{1,2}/.exec(i_valueInfo)[0]
10408 }
10409 },
10410
10411 // ��ȡʱ��ʱ���֡���
10412 getTrafficTimeHours: function (i_time) {
10413 var s_timeArray = i_time.split(':');
10414 return {
10415 h: parseInt(s_timeArray[0], 10),
10416 m: parseInt(s_timeArray[1], 10),
10417 s: parseInt(s_timeArray[2], 10)
10418 }
10419 },
10420 // ��ȡͳ��ʱ��Ͷ�Ӧ��λֵ
10421 getTrafficTimeInfo: function (i_valueInfo) {
10422 return {
10423 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10424 unit: /[a-z]{4,6}/.exec(i_valueInfo)[0]
10425 }
10426 },
10427 // ʱ�任���S
10428 getTrafficTimeToSeconds: function (i_time) {
10429 var s_FormattedTime = this.getTrafficTimeHours(i_time);
10430 return s_FormattedTime.h * 3600 + s_FormattedTime.m * 60 + s_FormattedTime.s;
10431 },
10432 // ͨ�����ƻ�ȡ������λ
10433 getTrafficUnitByScale: function (i_scale) {
10434 if (i_scale == '1024') {
10435 return 'GB';
10436 } else if (i_scale == '1048576') {
10437 return 'TB';
10438 } else {
10439 return 'MB';
10440 }
10441 },
10442 // ��λ��Ӧֵ��ȡ
10443 getTrafficValueByStatisticalUnit: function (i_unit) {
10444 i_unit = i_unit.toLowerCase();
10445 if(i_unit == 'minute'){
10446 return '60';
10447 } else if (i_unit == 'gb') {
10448 return '1024';
10449 } else if(i_unit == 'hour'){
10450 return '3600';
10451 } else if (i_unit == 'tb') {
10452 return '1048576';
10453 } else {
10454 return '1';
10455 }
10456 },
10457
10458 // �������Ƿ�ɱ༭
10459 isFormEditable: function (fwVm) {
10460 var s_dataPageEditState = fwVm.dataLimitTypeChecked() == '1' && (fwVm.viewEditUsedData() || fwVm.viewEditAlertData() || fwVm.viewEditTotalData());
10461 var s_timePageEditState = fwVm.dataLimitTypeChecked() == '0' && (fwVm.viewEditUsedTime() || fwVm.viewEditAlertTime() || fwVm.viewEditTotalTime());
10462 if (s_dataPageEditState || s_timePageEditState) {
10463 $('.border-color-transition:visible').addClass('attention-focus');
10464 addTimeout(function () {
10465 $('.border-color-transition:visible').removeClass('attention-focus');
10466 }, 1500);
10467 return true;
10468 } else {
10469 var s_result = false;
10470 if (fwVm.dataLimitTypeChecked() == 1) {
10471 if (fwVm.alertDataReach() == '0') {
10472 fwVm.editAlertDataHandler();
10473 s_result = true;
10474 }
10475 if (fwVm.limitDataMonth() == '0') {
10476 fwVm.editTotalDataHandler();
10477 s_result = true;
10478 }
10479 } else {
10480 if (fwVm.alertTimeReach() == '0') {
10481 fwVm.editAlertTimeHandler();
10482 s_result = true;
10483 }
10484 if (fwVm.limitTimeMonth() == '0') {
10485 fwVm.editTotalTimeHandler();
10486 s_result = true;
10487 }
10488 }
10489
10490 if (s_result) {
10491 $('.border-color-transition:visible').addClass('attention-focus');
10492 addTimeout(function () {
10493 $('.border-color-transition:visible').removeClass('attention-focus');
10494 }, 1500);
10495 }
10496 return s_result;
10497 }
10498 },
10499
10500 // ˢ������ͼ��Ϣ�����������ֵ����ʾ���
10501
10502 refreshFlowDiagramInfo: function (fwVm) {
10503 var s_alarm = 0;
10504 var s_left = 0;
10505 var s_left1 = 0;
10506 var s_reach = 0;
10507 var s_total = 0;
10508 var s_used = 0;
10509
10510
10511 var s_startName = $.i18n.prop("echarts_no");
10512
10513 if (sv_sourceData.dataLimitChecked == '1') { //if (fwVm.dataLimitChecked() == '1') { //����
10514 s_startName = $.i18n.prop("echarts_used");
10515 sv_trafficGraphOptions.series[0].data = [];
10516
10517 if (fwVm.dataLimitTypeChecked() == '1') { // ����
10518 sv_trafficGraphOptions.title.text = "";
10519 sv_trafficGraphOptions.series[0].data = [];
10520
10521 if (fwVm.limitDataMonth() == 0) {
10522 var s_usedData = sv_trafficStaticalInfo.data.used;
10523 s_usedData.value = 1;
10524 s_usedData.name = $.i18n.prop("echarts_used");
10525 s_usedData.selected = false;
10526 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10527 } else {
10528 s_total = fwVm.limitDataMonth() * fwVm.selectedDataUnit() * 1048576;
10529 s_used = parseInt(sv_sourceData.monthlySent, 10) + parseInt(sv_sourceData.monthlyReceived, 10);
10530 s_reach = s_total * fwVm.alertDataReach() / 100;
10531
10532 if (s_used >= s_total) {
10533 var s_fullData = sv_trafficStaticalInfo.data.full;
10534 s_fullData.value = 100;
10535 s_fullData.name = $.i18n.prop("echarts_full");
10536 sv_trafficGraphOptions.series[0].data.push(s_fullData);
10537 s_startName = $.i18n.prop("echarts_full");
10538 } else {
10539 if (s_reach > s_used) {
10540 s_left1 = s_reach - s_used;
10541 s_left = s_total - s_reach;
10542 } else {
10543 s_alarm = s_used - s_reach;
10544 s_left = s_total - s_used;
10545 }
10546
10547 var s_usedData = sv_trafficStaticalInfo.data.used;
10548 if (s_reach - s_used > 0) {
10549 s_usedData.value = s_used;
10550 } else {
10551 s_usedData.value = s_reach;
10552 }
10553 s_usedData.name = $.i18n.prop("echarts_used");
10554 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10555
10556 if (s_left1 > 0) {
10557 var s_left1Data = sv_trafficStaticalInfo.data.left1;
10558 s_left1Data.value = s_left1;
10559 s_left1Data.name = $.i18n.prop("echarts_left1");
10560 sv_trafficGraphOptions.series[0].data.push(s_left1Data);
10561 }
10562
10563 var s_alertData = sv_trafficStaticalInfo.data.alert;
10564 s_alertData.value = s_total / 200;
10565 s_alertData.name = $.i18n.prop("echarts_alert");
10566 sv_trafficGraphOptions.series[0].data.push(s_alertData);
10567
10568 if (s_alarm > 0) {
10569 var s_alarmData = sv_trafficStaticalInfo.data.alarm;
10570 s_alarmData.value = s_alarm;
10571 s_alarmData.name = $.i18n.prop("echarts_alarm");
10572 sv_trafficGraphOptions.series[0].data.push(s_alarmData);
10573 }
10574
10575 var s_freeData = sv_trafficStaticalInfo.data.free;
10576 s_freeData.value = s_left;
10577 s_freeData.name = $.i18n.prop("echarts_free");
10578 sv_trafficGraphOptions.series[0].data.push(s_freeData);
10579 }
10580 }
10581
10582 }else{// ʱ��
10583
10584 sv_trafficGraphOptions.series[0].data = [];
10585
10586 if (fwVm.limitTimeMonth() == 0) {
10587 var s_usedData = sv_trafficStaticalInfo.data.used;
10588 s_usedData.value = 1;
10589 s_usedData.selected = false;
10590 s_usedData.name = $.i18n.prop("echarts_used");
10591 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10592 } else {
10593 s_total = fwVm.limitTimeMonth() * fwVm.selectedTimeUnit();
10594 s_used = sv_sourceData.monthlyConnectedTime;
10595 s_reach = s_total * fwVm.alertTimeReach() / 100;
10596
10597 if (s_used >= s_total) {
10598 var fullTime = sv_trafficStaticalInfo.data.full;
10599 fullTime.value = 100;
10600 fullTime.name = $.i18n.prop("echarts_full");
10601 sv_trafficGraphOptions.series[0].data.push(fullTime);
10602 s_startName = $.i18n.prop("echarts_full");
10603 } else {
10604 if (s_reach - s_used > 0) {
10605 s_left1 = s_reach - s_used;
10606 s_left = s_total - s_reach;
10607 } else {
10608 s_alarm = s_used - s_reach;
10609 s_left = s_total - s_used;
10610 }
10611
10612 var s_usedTime = sv_trafficStaticalInfo.data.used;
10613 if (s_reach - s_used > 0) {
10614 s_usedTime.value = s_used;
10615 } else {
10616 s_usedTime.value = s_reach;
10617 }
10618 s_usedTime.name = $.i18n.prop("echarts_used");
10619 sv_trafficGraphOptions.series[0].data.push(s_usedTime);
10620
10621 if (s_left1 > 0) {
10622 var s_left1Time = sv_trafficStaticalInfo.data.left1;
10623 s_left1Time.value = s_left1;
10624 s_left1Time.name = $.i18n.prop("echarts_left1");
10625 sv_trafficGraphOptions.series[0].data.push(s_left1Time);
10626 }
10627
10628 var s_alertTime = sv_trafficStaticalInfo.data.alert;
10629 s_alertTime.value = s_total / 200;
10630 s_alertTime.name = $.i18n.prop("echarts_alert");
10631 sv_trafficGraphOptions.series[0].data.push(s_alertTime);
10632
10633 if (s_alarm > 0) {
10634 var s_alarmTime = sv_trafficStaticalInfo.data.alarm;
10635 s_alarmTime.value = s_alarm;
10636 s_alarmTime.name = $.i18n.prop("echarts_alarm");
10637 sv_trafficGraphOptions.series[0].data.push(s_alarmTime);
10638 }
10639
10640 var s_freeTime = sv_trafficStaticalInfo.data.free;
10641 s_freeTime.value = s_left;
10642 s_freeTime.name = $.i18n.prop("echarts_free");
10643 sv_trafficGraphOptions.series[0].data.push(s_freeTime);
10644 }
10645 }
10646 }
10647 } else {
10648 var s_usedData = sv_trafficStaticalInfo.data.used;
10649 s_usedData.value = 1;
10650 s_usedData.selected = false;
10651 s_usedData.name = $.i18n.prop("echarts_no");
10652
10653 sv_trafficGraphOptions.series[0].data = [s_usedData];
10654 sv_trafficGraphOptions.title.text = '';
10655 }
10656 sv_trafficStaticalInfo.setFlowDiagramInfo(sv_trafficGraphOptions, s_startName);
10657 },
10658
10659
10660 // �ػ�����ͼ
10661 setFlowDiagramInfo: function (i_options, i_startName) {
10662 var s_startPart = sv_trafficStaticalInfo.data.start;
10663
10664 s_startPart.name = i_startName;
10665 s_startPart.selected = false;
10666 s_startPart.value = 0;
10667
10668 var s_arr = [s_startPart].concat(i_options.series[0].data);
10669 i_options.series[0].data = s_arr;
10670 sv_trafficGraph.setOption(i_options, true);
10671
10672 addTimeout(function () {
10673 sv_trafficGraph.resize();
10674 }, 1000);
10675 }
10676 };
10677
10678
10679 // ����ͼ��������
10680 var sv_trafficGraphOptions = {
10681 animation: false,
10682 color: ['red', 'red', 'red', 'red', 'red'],
10683 series: [
10684 {
10685 name: '��������',
10686 radius: ['0', '75'],
10687 selectedOffset: 3,
10688 type: 'pie',
10689 data: [
10690
10691 ],
10692 itemStyle: {
10693 normal: {
10694 labelLine: {
10695 show: false
10696 },
10697 label: {
10698 show: false
10699 }
10700 }
10701 }
10702 }
10703 ],
10704 title: {
10705 itemGap: 0,
10706 text: '',
10707 subtextStyle: {
10708 color: '#FFF',
10709 fontFamily: '΢���ź�',
10710 fontSize: 16,
10711 fontWeight: 'bolder'
10712 },
10713 textStyle: {
10714 color: '#FFF',
10715 fontFamily: '΢���ź�',
10716 fontSize: 20,
10717 fontWeight: 'bolder'
10718 },
10719 x: 'center',
10720 y: 'center'
10721 },
10722 tooltip: {
10723 formatter: "{b}"
10724 }
10725 };
10726
10727
10728 // ��ȡ������������
10729 function getTrafficAlertInfo() {
10730 return service.getTrafficAlertInfo();
10731 }
10732
10733
10734
10735 // ��������ViewModel
10736
10737 function trafficViewModel() {
10738
10739 var target = this;
10740
10741 var info = sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10742 var dataMonth = info.limitDataMonth.split("_");
10743
10744 sv_usedDataModified = false;
10745 sv_usedTimeModified = false;
10746
10747 target.alertDataReach = ko.observable(info.alertDataReach || 0);
10748 target.alertTimeReach = ko.observable(info.alertTimeReach || 0);
10749 target.dataLimitChecked = ko.observable(info.dataLimitChecked == '0' ? '0' : '1');
10750 target.dataLimitTypeChecked = ko.observable(info.dataLimitTypeChecked == '0' ? '0' : '1');
10751 target.limitTimeMonth = ko.observable(info.limitTimeMonth || 0);
10752
10753
10754 // ע��˳��
10755 target.usedDataText = ko.observable(transUnit(parseInt(info.monthlySent, 10) + parseInt(info.monthlyReceived, 10), false));
10756 var sv_staticalDataInfo = sv_trafficStaticalInfo.getTrafficStatisticalDatalnfo(target.usedDataText());
10757 var sv_staticalInfoData = sv_staticalDataInfo.data;
10758 target.dataUsed = ko.observable(sv_staticalInfoData);
10759 var sv_staticalInfoUnit = sv_staticalDataInfo.unit;
10760 target.selectedDataUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_staticalInfoUnit));
10761 target.usedDataTextDescData = ko.observable("");
10762
10763 target.limitDataMonth = ko.observable(dataMonth[0] || 0);
10764 target.selectedDataUnit = ko.observable(dataMonth[1] || 1);
10765
10766 var limitDataMonthTmp = transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1024 * 1024, false);
10767 var limitDataMonthUnitTmp = limitDataMonthTmp.substring(limitDataMonthTmp.length-2);
10768 target.limitDataMonth(limitDataMonthTmp.substring(0, limitDataMonthTmp.length-2));
10769 target.selectedDataUnit(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(limitDataMonthUnitTmp));
10770
10771 target.usedDataTextDesc = ko.computed(sf_usedDataTextDesc);
10772 target.limitDataMonthDescData = ko.observable("");
10773 target.limitDataMonthDesc = ko.computed(sf_limitDataMonthDesc);
10774 target.alertDataReachDescData = ko.observable("");
10775 target.alertDataReachDesc = ko.computed(sf_alertDataReachDesc);
10776 target.leftDataDescData = ko.observable("");
10777 target.leftDataDesc = ko.computed(sf_leftDataDesc);
10778 target.monthlyConnectedTime = ko.observable(transSecond2Time(info.monthlyConnectedTime));
10779
10780 var sv_timeInfo1 = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(info.monthlyConnectedTime));
10781 target.usedTime = ko.observable(sv_timeInfo1.data);
10782 target.selectedTimeUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfo1.unit));
10783
10784 target.usedTimeTextDescData = ko.observable("");
10785 target.usedTimeTextDesc = ko.computed(sf_usedTimeTextDesc);
10786
10787 var sv_timeInfoNew = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(parseFloat(target.limitTimeMonth()) * 3600));
10788 target.selectedTimeUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfoNew.unit));
10789 target.limitTimeMonth(sv_timeInfoNew.data);
10790
10791
10792 target.limitTimeMonthDescData = ko.observable("");
10793 target.limitTimeMonthDescText = ko.observable("traffic_limit_time_h");
10794 target.limitTimeMonthDesc = ko.computed(sf_limitTimeMonthDesc);
10795 target.alertTimeReachDescData = ko.observable("");
10796 target.alertTimeReachDesc = ko.computed(sf_alertTimeReachDesc);
10797 target.leftTimeDescData = ko.observable("");
10798 target.leftTimeDesc = ko.computed(sf_leftTimeDesc);
10799 target.save = sf_save;
10800 target.viewEditUsedData = ko.observable(false);
10801 target.editUsedDataHandler = sf_editUsedDataHandler;
10802 target.editUsedDataSaveHandler = sf_editUsedDataSaveHandler;
10803 target.saveUsedData = sf_saveUsedData;
10804 target.editUsedDataCancelHandler = sf_editUsedDataCancelHandler;
10805 target.viewEditTotalData = ko.observable(false);
10806 target.editTotalDataHandler = sf_editTotalDataHandler;
10807 target.editTotalDataSaveHandler = sf_editTotalDataSaveHandler;
10808 target.editTotalDataCancelHandler = sf_editTotalDataCancelHandler;
10809 target.viewEditAlertData = ko.observable(false);
10810 target.editAlertDataHandler = sf_editAlertDataHandler;
10811 target.editAlertDataSaveHandler = sf_editAlertDataSaveHandler;
10812 target.editAlertDataCancelHandler = sf_editAlertDataCancelHandler;
10813 target.viewEditUsedTime = ko.observable(false);
10814 target.editUsedTimeHandler = sf_editUsedTimeHandler;
10815 target.saveUsedTime = sf_saveUsedTime;
10816 target.editUsedTimeSaveHandler = sf_editUsedTimeSaveHandler;
10817 target.editUsedTimeCancelHandler = sf_editUsedTimeCancelHandler;
10818 target.viewEditTotalTime = ko.observable(false);
10819 target.editTotalTimeHandler = sf_editTotalTimeHandler ;
10820 target.editTotalTimeSaveHandler = sf_editTotalTimeSaveHandler;
10821 target.editTotalTimeCancelHandler = sf_editTotalTimeCancelHandler;
10822 target.viewEditAlertTime = ko.observable(false);
10823 target.editAlertTimeHandler = sf_editAlertTimeHandler;
10824 target.editAlertTimeSaveHandler = sf_editAlertTimeSaveHandler;
10825 target.editAlertTimeCancelHandler = sf_editAlertTimeCancelHandler;
10826 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10827
10828
10829 // ��������������
10830 function sf_alertDataReachDesc() {
10831 if(isNaN(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach())) {
10832 target.alertDataReachDescData(target.alertDataReach() + ', ');
10833 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), ' ');
10834 }
10835
10836 var s_value = transUnit(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach() * 1048576 / 100, false);
10837 target.alertDataReachDescData(target.alertDataReach() + ',' + s_value);
10838 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), s_value);
10839 }
10840 // ʱ������������
10841 function sf_alertTimeReachDesc() {
10842 if(isNaN(target.limitTimeMonth() * target.alertTimeReach())) {
10843 target.alertTimeReachDescData(target.alertTimeReach() + ', ');
10844 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), ' ');
10845 }
10846 var s_value = transSecond2Time(target.limitTimeMonth() * target.selectedTimeUnit() * target.alertTimeReach() / 100);
10847 target.alertTimeReachDescData(target.alertTimeReach() + ',' + s_value);
10848 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), s_value);
10849 }
10850
10851
10852 // ��������ֵȡ���༭��ť�¼�
10853 function sf_editAlertDataCancelHandler() {
10854 target.alertDataReach(sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue'));
10855 target.viewEditAlertData(false);
10856 }
10857
10858 // ��������ֵ�༭��ť�¼�
10859 function sf_editAlertDataHandler() {
10860 sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue', target.alertDataReach());
10861 target.viewEditAlertData(true);
10862 }
10863
10864 // ��������ֵ����༭��ť�¼�
10865 function sf_editAlertDataSaveHandler() {
10866 if (sv_trafficStaticalInfo.getEle('alertDataReach').valid()) {
10867 target.viewEditAlertData(false);
10868 }
10869 }
10870
10871 // ʱ������ֵȡ���༭��ť�¼�
10872 function sf_editAlertTimeCancelHandler() {
10873 target.alertTimeReach(sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue'));
10874 target.viewEditAlertTime(false);
10875 }
10876 // ʱ������ֵ�༭��ť�¼�
10877 function sf_editAlertTimeHandler() {
10878 sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue', target.alertTimeReach());
10879 target.viewEditAlertTime(true);
10880 }
10881 // ʱ������ֵ����༭��ť�¼�
10882 function sf_editAlertTimeSaveHandler() {
10883 if (sv_trafficStaticalInfo.getEle('alertTimeReach').valid()) {
10884 target.viewEditAlertTime(false);
10885 }
10886 }
10887
10888 // �ײ������༭��ť�¼�
10889 function sf_editTotalDataHandler() {
10890 sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue', target.limitDataMonth());
10891 sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue', target.selectedDataUnit());
10892 target.viewEditTotalData(true);
10893 }
10894
10895 // �ײ���������༭��ť�¼�
10896 function sf_editTotalDataSaveHandler() {
10897 if (sv_trafficStaticalInfo.getEle('limitDataMonth').valid()) {
10898 target.usedDataText(transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1048576, false));
10899 target.viewEditTotalData(false);
10900 }
10901 }
10902
10903 // �ײ�����ȡ���༭��ť�¼�
10904 function sf_editTotalDataCancelHandler() {
10905 target.limitDataMonth(sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue'));
10906 target.selectedDataUnit(sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue'));
10907 target.viewEditTotalData(false);
10908 }
10909 // �ײ�ʱ��ȡ���༭��ť�¼�
10910 function sf_editTotalTimeCancelHandler() {
10911 target.limitTimeMonth(sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue'));
10912 target.viewEditTotalTime(false);
10913 }
10914 // �ײ�ʱ��༭��ť�¼�
10915 function sf_editTotalTimeHandler() {
10916 sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue', target.limitTimeMonth());
10917 target.viewEditTotalTime(true);
10918 }
10919 // �ײ�ʱ�䱣��༭��ť�¼�
10920 function sf_editTotalTimeSaveHandler() {
10921 if (sv_trafficStaticalInfo.getEle('limitTimeMonth').valid()) {
10922 target.viewEditTotalTime(false);
10923 }
10924 }
10925
10926 // ��������ȡ���༭��ť�¼�
10927 function sf_editUsedDataCancelHandler() {
10928 target.dataUsed(sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue'));
10929 target.selectedDataUsedUnit(sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue'));
10930 sv_trafficStaticalInfo.getEle('editUsedDataCancel').siblings('label.error').hide();
10931 target.viewEditUsedData(false);
10932 }
10933 // ���������༭��ť�¼�
10934 function sf_editUsedDataHandler() {
10935 sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue', target.dataUsed());
10936 sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue', target.selectedDataUsedUnit());
10937 target.dataUsed(target.dataUsed());
10938 target.viewEditUsedData(true);
10939 }
10940 // �����������水ť�¼�
10941 function sf_editUsedDataSaveHandler() {
10942 if (sv_trafficStaticalInfo.getEle('dataUsed').valid()) {
10943 sv_usedDataModified = true;
10944 target.viewEditUsedData(false);
10945 }
10946 }
10947 // ����ʱ��ȡ���༭��ť�¼�
10948 function sf_editUsedTimeCancelHandler() {
10949 target.usedTime(sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue'));
10950 target.viewEditUsedTime(false);
10951 }
10952 // ����ʱ��༭��ť�¼�
10953 function sf_editUsedTimeHandler() {
10954 sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue', target.usedTime());
10955 target.viewEditUsedTime(true);
10956 }
10957
10958 // ����ʱ�䱣��༭��ť�¼�
10959 function sf_editUsedTimeSaveHandler() {
10960 if (sv_trafficStaticalInfo.getEle('usedTime').valid()) {
10961 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
10962 target.viewEditUsedTime(false);
10963 sv_usedTimeModified = true;
10964 }
10965 }
10966
10967 // ʣ������������
10968 function sf_leftDataDesc() {
10969 var s_left = (target.limitDataMonth() * target.selectedDataUnit() - target.dataUsed() * target.selectedDataUsedUnit()) * 1048576;
10970 if(s_left < 0) {
10971 s_left = 0;
10972 }
10973
10974 if(isNaN(s_left)) {
10975 target.leftDataDescData('');
10976 return $.i18n.prop('traffic_data_left_text', ' ');
10977 }
10978
10979 target.leftDataDescData(transUnit(s_left, false));
10980 return $.i18n.prop('traffic_data_left_text', transUnit(s_left, false));
10981 }
10982 //ʣ��ʱ��������
10983 function sf_leftTimeDesc() {
10984 var s_surplus = target.limitTimeMonth() * target.selectedTimeUnit() - sv_trafficStaticalInfo.getTrafficTimeToSeconds(target.monthlyConnectedTime());
10985 if(s_surplus < 0) {
10986 s_surplus = 0;
10987 }
10988
10989 if(isNaN(s_surplus)) {
10990 target.leftTimeDescData(' ');
10991 return $.i18n.prop('traffic_data_left_text', ' ');
10992 }
10993 target.leftTimeDescData(transSecond2Time(s_surplus));
10994 return $.i18n.prop('traffic_data_left_text', transSecond2Time(s_surplus));
10995 }
10996 // �ײ�����������
10997 function sf_limitDataMonthDesc() {
10998 if(isNaN(target.limitDataMonth())) {
10999 target.limitDataMonthDescData("");
11000 return $.i18n.prop('traffic_limit_data_text', ' ');
11001 }else{
11002 // todo
11003 }
11004
11005 target.limitDataMonthDescData(target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
11006 return $.i18n.prop('traffic_limit_data_text', target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
11007 }
11008 // �ײ�ʱ��������
11009 function sf_limitTimeMonthDesc() {
11010 if(isNaN(target.limitTimeMonth())) {
11011 target.limitTimeMonthDescData(' ');
11012 target.limitTimeMonthDescText('traffic_limit_time_h');
11013 return $.i18n.prop('traffic_limit_time_h', ' ');
11014 }else{
11015 // todo:
11016 }
11017
11018 target.limitTimeMonthDescData(target.limitTimeMonth());
11019
11020 if(target.selectedTimeUnit() == "60"){
11021 target.limitTimeMonthDescText('traffic_limit_time_m');
11022 return $.i18n.prop('traffic_limit_time_m', target.limitTimeMonth());
11023 }else{
11024 target.limitTimeMonthDescText('traffic_limit_time_h');
11025 return $.i18n.prop('traffic_limit_time_h', target.limitTimeMonth());
11026 }
11027 }
11028
11029 // Ӧ�ð�ť�¼�
11030 function sf_save() {
11031 if (sv_trafficStaticalInfo.isFormEditable(target) && target.dataLimitChecked() == '1') {
11032 return false;
11033 }
11034
11035 if (target.selectedDataUnit() == '1' && target.selectedDataUsedUnit() == '1048576' && target.dataLimitTypeChecked() == "1" && target.dataLimitChecked() == '1' && !(parseInt(target.dataUsed(), 10) < parseInt('4096', 10)) ) {
11036 showAlert('traffic_over_note');
11037 return false;
11038 }
11039
11040 showLoading();
11041 service.setTrafficAlertInfo({
11042 alertDataReach: parseInt(target.alertDataReach(), 10),
11043 alertTimeReach: parseInt(target.alertTimeReach(), 10),
11044 dataLimitChecked: target.dataLimitChecked(),
11045 dataLimitTypeChecked: target.dataLimitTypeChecked(),
11046 limitDataMonth: target.limitDataMonth() + "_" + target.selectedDataUnit(),
11047 limitTimeMonth: target.selectedTimeUnit() == "60" ? target.limitTimeMonth()/60 : target.limitTimeMonth()//save by hours
11048 }, function (data) {
11049 if (data.result == 'success') {
11050 if(target.dataLimitTypeChecked() == "1" && sv_usedDataModified) {
11051 target.saveUsedData();
11052 } else if(target.dataLimitTypeChecked() == "0" && sv_usedTimeModified) {
11053 target.saveUsedTime();
11054 } else {
11055 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11056 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11057 status.setTrafficAlertPopuped(false);
11058 successOverlay();
11059 }
11060 } else {
11061 errorOverlay();
11062 }
11063 }, function () {
11064 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11065 errorOverlay();
11066 });
11067 }
11068
11069 // ����������������
11070 function sf_saveUsedData() {
11071 var val = target.dataUsed() * target.selectedDataUsedUnit();
11072 service.trafficCalibration({
11073 way: 'data',
11074 value: val
11075 }, function(){
11076 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11077 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11078 successOverlay();
11079 target.viewEditUsedData(false);
11080 status.setTrafficAlertPopuped(false);
11081 sv_usedDataModified = false;
11082 }, function(){
11083 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11084 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11085 errorOverlay();
11086 });
11087 }
11088
11089
11090
11091 function sf_saveUsedTime() {
11092 service.trafficCalibration({
11093 way: 'time',
11094 value: target.selectedTimeUsedUnit() == "60" ? parseFloat(target.usedTime())/60 : target.usedTime()
11095 }, function(){
11096 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11097 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11098 successOverlay();
11099 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
11100 target.viewEditUsedTime(false);
11101 status.setTrafficAlertPopuped(false);
11102 sv_usedTimeModified = false;
11103 }, function(){
11104 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11105 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11106 errorOverlay();
11107 });
11108 }
11109
11110
11111 // ��������������
11112 function sf_usedDataTextDesc() {
11113 if(isNaN(target.dataUsed())) {
11114 target.usedDataTextDescData("");
11115 return $.i18n.prop('traffic_used_text', ' ');
11116 }
11117 target.usedDataTextDescData(target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
11118 return $.i18n.prop('traffic_used_text', target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
11119 }
11120 // ����ʱ��������
11121 function sf_usedTimeTextDesc() {
11122 target.usedTimeTextDescData(target.monthlyConnectedTime());
11123 return $.i18n.prop('traffic_used_text', target.monthlyConnectedTime());
11124 }
11125
11126
11127 }
11128
11129 function init() {
11130 sv_trafficGraph = echarts.init($("#traffic_graphic")[0]);
11131 window.onresize = sv_trafficGraph.resize;
11132 var s_container = $('#container');
11133 ko.cleanNode(s_container[0]);
11134 var fwVm = new trafficViewModel();
11135 ko.applyBindings(fwVm, s_container[0]);
11136 $('#trafficAlertForm').validate({
11137 submitHandler: function () {
11138 fwVm.save();
11139 },
11140
11141
11142 errorPlacement: function (error, para) {
11143 if (para.attr("name") == "alertDataReach") {
11144 error.insertAfter("#editAlertDataDiv");
11145 } else if (para.attr("name") == "alertTimeReach") {
11146 error.insertAfter("#editAlertTimeDiv");
11147 } else if (para.attr("name") == "dataUsed") {
11148 error.insertAfter("#editUsedDataDiv");
11149 } else if (para.attr("name") == "limitDataMonth") {
11150 error.insertAfter("#editTotalDataDiv");
11151 } else if (para.attr("name") == "limitTimeMonth") {
11152 error.insertAfter("#editTotalTimeDiv");
11153 } else if (para.attr("name") == "usedTime") {
11154 error.insertAfter("#editUsedTimeDiv");
11155 } else {
11156 error.insertAfter(para);
11157 }
11158 },
11159
11160 rules: {
11161 alertDataReach: {
11162 range: [ 1, 100 ],
11163 digits: true
11164 },
11165 alertTimeReach: {
11166 range: [ 1, 100 ],
11167 digits: true
11168 },
11169 dataUsed: {
11170 range : [ 0, 9999 ],
11171 decimalRange : true
11172 },
11173 limitDataMonth: {
11174 range : [ 1, 9999 ],
11175 decimalRange : true
11176 },
11177 limitTimeMonth: {
11178 range : [ 1, 9999 ],
11179 decimalRange : true
11180 },
11181 usedTime: {
11182 range : [ 0, 9999 ],
11183 decimalRange : true
11184 }
11185 }
11186
11187 });
11188
11189 var sv_originalLan = window.language;
11190 window.setInterval(function(){
11191 if(sv_originalLan != window.language){
11192 sv_originalLan = window.language;
11193 sv_trafficStaticalInfo.refreshFlowDiagramInfo(fwVm);
11194 }
11195 }, 1000);
11196
11197 }
11198
11199 return {
11200 init: init
11201 };
11202});
11203
11204// ״̬����ʾ��ʵ��
11205define("tooltip",[ "jquery" ],
11206
11207 function($) {
11208
11209
11210 // ����Ԫ��λ����Ϣ
11211 // @method calculatePositionInfo
11212 // @param trigger Ԫ��
11213 // @param tooltip ״̬��
11214 // @param {JSON} config �����
11215
11216 function calculatePositionInfo(trigger, tooltip, config) {
11217 var top = trigger.offset().top;
11218 var left = trigger.offset().left;
11219 var position = config.position[0];
11220 var height = tooltip.outerHeight() + trigger.outerHeight();
11221 var width = tooltip.outerWidth() + trigger.outerWidth();
11222
11223 top -= tooltip.outerHeight() - config.offset[0];
11224 left += trigger.outerWidth() + config.offset[1];
11225
11226 if (/iPad/i.test(navigator.userAgent)) {
11227 top -= $(window).scrollTop();
11228 }
11229
11230 if (position == 'center') {
11231 top += height / 2;
11232 }
11233 if (position == 'bottom') {
11234 top += height;
11235 }
11236 position = config.position[1];
11237 if (position == 'center') {
11238 left -= width / 2;
11239 }else if (position == 'left') {
11240 left -= width;
11241 }
11242
11243 return {
11244 top : top,
11245 left : left
11246 };
11247 }
11248
11249 // ״̬����ʼ��
11250 function init() {
11251
11252 $(".statusItem", "#statusBar").each(function(i, n){
11253 var $this = $(this);
11254 $this.attr("tipTitle", $this.attr("title")).removeAttr("title");
11255 }).hover(
11256 function() {
11257 var $this = $(this);
11258 var title = $this.attr("tipTitle");
11259 var tooltip = $("<div>").addClass("tooltip in").appendTo(document.body).hide()
11260 .append($this.attr("i18n") ? $.i18n.prop(title) : title);
11261 if ($this.attr("i18n")) {
11262 tooltip.attr("data-trans", title).attr("id", "tooltip_" + $this.attr("id"));
11263 }
11264 var pos = calculatePositionInfo($this, tooltip, {
11265 position : [ 'bottom', 'center' ],
11266 offset : [ 0, 0 ]
11267 });
11268 tooltip.css({
11269 position : 'absolute',
11270 top : pos.top,
11271 left : pos.left
11272 }).show();
11273 }, function() {
11274 $(".tooltip").hide().remove();
11275 });
11276 }
11277
11278 return {
11279 init : init
11280 };
11281 });
11282
11283define("menu","set service knockout underscore jquery".split(" "),
11284 function (set, fnc, libko, libus, libjq) {
11285 var displayMenuWhenLogout = false;
11286 var vmMenu;
11287 var menu = [];
11288 var menuResource = "";
11289
11290 function menuExistCheck(path) {
11291 for (var i = 0; i < menu.length; i++) {
11292 if (menu[i].path == path) {
11293 return true;
11294 }
11295 }
11296 return false;
11297 }
11298
11299 function getIsLoggedin() {
11300 var loginStatus = fnc.getLoginStatus();
11301 return (loginStatus.status == "loggedIn");
11302 }
11303
11304 function buildNew() {
11305 var loggedIn = getIsLoggedin();
11306 var menuMain = libus.filter(menu, function (param) {
11307 return (param.level == '1' && ((param.requireLogin && loggedIn) || !param.requireLogin) && param.hash != "#entry");
11308 });
11309 vmMenu.menuMain(menuMain);
11310 vmMenu.loggedIn(loggedIn);
11311
11312 getMainWth(vmMenu.menuMain().length);
11313 vmMenu.showMenu(loggedIn || displayMenuWhenLogout);
11314 libjq("#nav").translate();
11315 }
11316
11317 function getMainWth(len) {
11318 var width = 100 / len;
11319 libjq('ul#list-nav li').each(function () {
11320 libjq(this).css('width', width + '%');
11321 });
11322 }
11323
11324 function menuRefresh() {
11325 var currentHash = window.location.hash;
11326 var itmRoot = libus.find(menu, function (param) {
11327 return param.hash == currentHash;
11328 });
11329 while (itmRoot.parent) {
11330 itmRoot = libus.find(menu, function (param) {
11331 return param.hash == itmRoot.parent;
11332 });
11333 }
11334 if (!itmRoot.parent) {
11335 libjq("#list-nav li").removeClass("active");
11336 var mid = itmRoot.hash.substring(1, itmRoot.hash.length);
11337 libjq("#list-nav li[mid=" + mid + "]").addClass("active");
11338 }
11339 vmMenu.changeMenu(itmRoot);
11340 }
11341
11342 function menuSearch(hashVal) {
11343 hashVal = hashVal || window.location.hash;
11344 var loggedIn = getIsLoggedin();
11345 return libus.filter(menu, function (param) {
11346 return (hashVal == param.hash && ((param.requireLogin && loggedIn) || !param.requireLogin));
11347 });
11348 }
11349
11350 function menuRenderSub(level, baseItem) {
11351 var levelItem = libus.find(menu, function (param) {
11352 return param.parent == baseItem.hash && param.path == baseItem.path;
11353 });
11354 libjq(".menu-" + level + "-level").removeClass("active");
11355 if (levelItem) {
11356 if (level == "two") {
11357 menuRenderSub("three", levelItem);
11358 //forward/backward support
11359 clickMenuTrig(levelItem.hash, level);
11360 }
11361 libjq(".menu-" + level + "-level." + levelItem.hash.substring(1)).addClass("active");
11362 }
11363 }
11364
11365 function menuActSub() {
11366 var currentHash = window.location.hash;
11367 var itmRoot = libus.find(menu, function (param) {
11368 return param.hash == currentHash;
11369 });
11370 if (itmRoot.level == 1) {
11371 menuRenderSub("two", itmRoot);
11372 }
11373 if (itmRoot.level == 2) {
11374 menuRenderSub("three", itmRoot);
11375 //forward/backward support
11376 clickMenuTrig(itmRoot.hash, itmRoot.level);
11377 }
11378 if (itmRoot.level == 3) {
11379 //forward/backward support
11380 clickMenuTrig(itmRoot.parent, itmRoot.level);
11381 libjq(".menu-three-level").removeClass("active");
11382 libjq(".menu-three-level." + itmRoot.hash.substring(1)).addClass("active");
11383 }
11384 }
11385
11386 function clickMenuTrig(hash, level) {
11387 libjqobj = libjq(".menu-two-level." + hash.substring(1));
11388 var levelArr = ['3', 'three', '2', 'two'];
11389 if (libus.indexOf(levelArr, level) != -1 && libjqobj.hasClass('active')) {
11390 return;
11391 }
11392
11393 libjqobj.siblings().removeClass('active');
11394 libjqobj.addClass('active');
11395
11396 libjqobj.siblings().not('.menu-two-level').slideUp();
11397 libjqobj.next().has('ul li').slideDown();
11398 }
11399
11400 set.blc_wan_mode = fnc.getOpMode().blc_wan_mode;
11401 if (!set.RJ45_SUPPORT) {
11402 menuResource = "menu";
11403 } else {
11404 switch (set.blc_wan_mode) {
11405 case "PPPOE":
11406 case "AUTO_PPPOE":
11407 menuResource = "menu_pppoe";
11408 break;
11409 default:
11410 menuResource = "menu";
11411 break;
11412 }
11413 }
11414
11415 require([set.DEVICE + '/' + menuResource], function (otherMenu) {
11416 menu = otherMenu;
11417 if (set.SD_CARD_SUPPORT) {
11418 menu = menu.concat([{ hash: '#httpshare_guest', path: 'sd_httpshare', level: '', requireLogin: false, checkSIMStatus: false},
11419 { hash: '#sdcard', path: 'sd', level: '', requireLogin: true, checkSIMStatus: false},
11420 { hash: '#httpshare', path: 'sd_httpshare', level: '', requireLogin: true, checkSIMStatus: false}]);
11421 }
11422 });
11423
11424 function initialize() {
11425 vmMenu = new Menu_vm();
11426 }
11427
11428 function Menu_vm() {
11429 var loginState = getIsLoggedin();
11430 var target = this;
11431 target.loggedIn = libko.observable(loginState);
11432
11433 target.showMenu = libko.observable(loginState || displayMenuWhenLogout);
11434
11435 var menuMain = libus.filter(menu, function (param) {
11436 return (param.level == '1' && ((param.requireLogin && target.loggedIn()) || !param.requireLogin) && param.hash != "#entry");
11437 });
11438
11439 target.menuMain = libko.observableArray(menuMain);
11440 target.secondMenu = libko.observableArray([]);
11441 //target.curThirdMenu; cov_2
11442 target.changeMenu = function (data) {
11443 var secondMenu = getSubMenu(data);
11444 if (secondMenu.length == 0) {
11445 libjq("#container").addClass("fixContainerWidth");
11446 } else {
11447 libjq("#container").removeClass("fixContainerWidth");
11448 }
11449
11450 target.secondMenu(secondMenu);
11451 return true;
11452 };
11453 target.thirdMenu = function () {
11454 return target.curThirdMenu;
11455 };
11456 target.getThirdMenu = function (data) {
11457 target.curThirdMenu = getSubMenu(data);
11458 };
11459 function getSubMenu(data) {
11460 return libus.filter(menu, function (param) {
11461 return ((param.parent && param.parent == data.hash) && ((param.requireLogin && target.loggedIn()) || !param.requireLogin));
11462 });
11463 }
11464 }
11465
11466 return {
11467 activeSubMenu: menuActSub,
11468 checkIsMenuExist: menuExistCheck,
11469 findMenu: menuSearch,
11470 rebuild: buildNew,
11471 refreshMenu: menuRefresh,
11472 init: initialize
11473 };
11474});