blob: e3432ad4fe5006fc88445c4bede7bc9180f3ad83 [file] [log] [blame]
zw.wang96c5d4e2025-07-01 11:35:13 +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",
mj.qu6ac12722025-07-03 02:12:24 -070094 password: config.PASSWORD_ENCODE ? Base64.encode(values.password) : values.password,
95 username: config.PASSWORD_ENCODE ? Base64.encode(values.username) : values.username
zw.wang96c5d4e2025-07-01 11:35:13 +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 }
501 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,
515 cellid: result.lte_cellid,
516 band: result.lte_band
517 };
518 }
519 }
520 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 = {};
mj.qufce8b442025-08-03 23:56:29 -07002847 valueReq.cmd = "WirelessMode,CountryCode,Channel,HT_MCS,wifi_band,wifi_11n_cap,wifi_11n_cap_5g,MAX_Access_num,m_MAX_Access_num,MAX_Station_num,wifi_sta_connection";
zw.wang96c5d4e2025-07-01 11:35:13 +08002848 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',
mj.qufce8b442025-08-03 23:56:29 -07002859 //bandwidth: paramD.wifi_11n_cap,
2860 bandwidth: paramD.wifi_band == 'a' ? paramD.wifi_11n_cap_5g : paramD.wifi_11n_cap,
zw.wang96c5d4e2025-07-01 11:35:13 +08002861 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
2862 MAX_Access_num: paramD.MAX_Access_num,
2863 m_MAX_Access_num: paramD.m_MAX_Access_num,
2864 ap_station_enable: paramD.wifi_sta_connection
2865 };
2866 return result;
2867 } else {
2868 return errUnknownObj;
2869 }
2870 }
2871 }
2872 function setWifiAdvance() {
2873 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
2874 function prepare(values) {
2875 var valueReq = {
2876 goformId: "SET_WIFI_INFO",
2877 wifiMode: values.mode,
2878 countryCode: values.countryCode,
2879 MAX_Access_num: values.station,
2880 m_MAX_Access_num: values.m_station
2881 };
2882 if (config.WIFI_BAND_SUPPORT) {
2883 valueReq.wifi_band = values.wifiBand;
2884 }
2885 if (config.WIFI_BAND_SUPPORT && values.wifiBand == 'a') {
2886 valueReq.selectedChannel = 'auto';
2887 } else {
2888 valueReq.selectedChannel = values.channel;
2889 valueReq.abg_rate = values.rate;
2890 }
2891 if (config.WIFI_BANDWIDTH_SUPPORT) {
2892 valueReq.wifi_11n_cap = values.bandwidth;
2893 }
2894 return valueReq;
2895 }
2896 function deal(paramD) {
2897 if (paramD) {
2898 return paramD;
2899 } else {
2900 return errUnknownObj;
2901 }
2902 }
2903 }
2904 function getDeviceInfo() {
2905 return stuffMake(arguments, {}, prepare, deal, null, false);
2906 function prepare(values, isPost) {
2907 var wpask = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
2908 var valueReq = {
mj.qu6ac12722025-07-03 02:12:24 -07002909 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",
zw.wang96c5d4e2025-07-01 11:35:13 +08002910 multi_data: 1
2911 };
2912 return valueReq;
2913 }
2914 function deal(paramD) {
2915 if (paramD) {
2916 return {
2917 ssid: paramD.SSID1,
2918 authMode: paramD.AuthMode,
2919 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
2920 m_ssid: paramD.m_SSID,
2921 m_AuthMode: paramD.m_AuthMode,
2922 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
2923 m_max_access_num: paramD.m_MAX_Access_num,
2924 multi_ssid_enable: paramD.m_ssid_enable,
2925 ipAddress: paramD.lan_ipaddr,
2926 wanIpAddress: paramD.wan_ipaddr,
2927 staticWanIpAddress: paramD.static_wan_ipaddr,
2928 ipv6WanIpAddress: paramD.ipv6_wan_ipaddr,
2929 ipv6PdpType: paramD.ipv6_pdp_type,
2930 macAddress: paramD.mac_address,
2931 simSerialNumber: paramD.msisdn,
2932 lanDomain: paramD.LocalDomain,
2933 imei: paramD.imei,
2934 signal: convertSignal(paramD),
zw.wang96c5d4e2025-07-01 11:35:13 +08002935 cellid: paramD.cell_id,
mj.qu6ac12722025-07-03 02:12:24 -07002936 imsi: paramD.imsi || paramD.sim_imsi,
zw.wang96c5d4e2025-07-01 11:35:13 +08002937 sw_version: paramD.cr_version,
2938 hw_version: paramD.hw_version,
2939 max_access_num: paramD.MAX_Access_num,
2940 wifiRange: paramD.wifi_coverage,
2941 pdpType: paramD.pdp_type,
2942 rj45ConnectStatus: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
2943 blc_wan_mode: informationAll.blc_wan_mode,
2944 connectStatus: paramD.ppp_status,
2945 wifiConStatus: paramD.sta_ip_status,
2946 ethwan_mode: paramD.ethwan_mode.toUpperCase()
2947 };
2948 } else {
2949 return errUnknownObj;
2950 }
2951 }
2952 }
2953 function getDeviceInfoLow() {
2954 return stuffMake(arguments, {}, prepare, deal, null, false);
2955 function prepare(values, isPost) {
2956 var valueReq = {
2957 cmd: "imei,rnum_js",
2958 multi_data: 1
2959 };
2960 return valueReq;
2961 }
2962 function deal(paramD) {
2963 if (paramD) {
2964 var kstr = paramD.rnum_js + paramD.imei + "FFFFFFFFFFFFFFFFFFFFFFFF";
2965 var kstr_final;
2966 var kiv_final;
2967
2968 kstr_final = kstr.substring(0, 24);
2969 kiv_final = kstr.substring(0, 16);
2970
2971 return {
2972 skey: kstr_final,
2973 siv: kiv_final
2974 };
2975 } else {
2976
2977 return {
2978 skey: "FFFFFFFFFFFFFFFFFFFFFFFF",
2979 siv: "FFFFFFFFFFFFFFFF"
2980 };
2981 }
2982 }
2983 }
2984 function getWifiRange() {
2985 return stuffMake(arguments, {}, prepare, deal, null, false);
2986 function prepare(values, isPost) {
2987 var valueReq = {};
2988 valueReq.cmd = "wifi_coverage";
2989 return valueReq;
2990 }
2991 function deal(paramD) {
2992 if (paramD) {
2993 var result = {};
2994 result.wifiRangeMode = paramD.wifi_coverage;
2995 return result;
2996 } else {
2997 return errUnknownObj;
2998 }
2999 }
3000 }
3001 function setWifiRange() {
3002 return stuffMake(arguments, {}, prepare, deal, null, true);
3003 function prepare(values, isPost) {
3004 var valueReq = {};
3005 valueReq.goformId = "SET_WIFI_COVERAGE";
3006 valueReq.wifi_coverage = values.wifiRangeMode;
3007 return valueReq;
3008 }
3009 function deal(paramD) {
3010 if (paramD) {
3011 return paramD;
3012 } else {
3013 return errUnknownObj;
3014 }
3015 }
3016 }
3017 function getUpnpSetting() {
3018 return stuffMake(arguments, {}, prepare, deal, null, false);
3019 function prepare(values, isPost) {
3020 var valueReq = {};
3021 valueReq.cmd = "upnpEnabled";
3022 valueReq.multi_data = 1;
3023 return valueReq;
3024 }
3025 function deal(paramD) {
3026 if (paramD) {
3027 var result = {};
3028 result.upnpSetting = paramD.upnpEnabled == "1" ? "1" : "0";
3029 return result;
3030 } else {
3031 return errUnknownObj;
3032 }
3033 }
3034 }
3035 function setUpnpSetting() {
3036 return stuffMake(arguments, {}, prepare, deal, null, true);
3037 function prepare(values, isPost) {
3038 var valueReq = {};
3039 valueReq.goformId = "UPNP_SETTING";
3040 valueReq.upnp_setting_option = values.upnpSetting;
3041 return valueReq;
3042 }
3043 function deal(paramD) {
3044 if (paramD) {
3045 return paramD;
3046 } else {
3047 return errUnknownObj;
3048 }
3049 }
3050 }
3051 function getDmzSetting() {
3052 return stuffMake(arguments, {}, prepare, deal, null, false);
3053 function prepare(values, isPost) {
3054 var valueReq = {};
3055 valueReq.cmd = "DMZEnable,DMZIPAddress";
3056 valueReq.multi_data = 1;
3057 return valueReq;
3058 }
3059 function deal(paramD) {
3060 if (paramD) {
3061 var result = {};
3062 result.dmzSetting = paramD.DMZEnable == "1" ? "1" : "0";
3063 result.ipAddress = paramD.DMZIPAddress;
3064 return result;
3065 } else {
3066 return errUnknownObj;
3067 }
3068 }
3069 }
3070 function setDmzSetting() {
3071 return stuffMake(arguments, {}, prepare, deal, null, true);
3072 function prepare(values, isPost) {
3073 var valueReq = {};
3074 valueReq.goformId = "DMZ_SETTING";
3075 valueReq.DMZEnabled = values.dmzSetting;
3076 if (valueReq.DMZEnabled == '1') {
3077 valueReq.DMZIPAddress = values.ipAddress;
3078 }
3079 return valueReq;
3080 }
3081 function deal(paramD) {
3082 if (paramD) {
3083 return paramD;
3084 } else {
3085 return errUnknownObj;
3086 }
3087 }
3088 }
3089 function getPortMap() {
3090 return stuffMake(arguments, {}, prepare, deal, null, false);
3091 function prepare(values, isPost) {
3092 var valueReq = {};
3093 valueReq.cmd = "PortMapEnable,PortMapRules_0,PortMapRules_1,PortMapRules_2,PortMapRules_3,PortMapRules_4,PortMapRules_5,PortMapRules_6,PortMapRules_7,PortMapRules_8,PortMapRules_9",
3094 valueReq.multi_data = 1;
3095 return valueReq;
3096 }
3097 function deal(paramD) {
3098 if (paramD) {
3099 var result = {};
3100 result.portMapEnable = paramD.PortMapEnable;
3101 var rules = [];
3102 if (paramD.PortMapRules_0 != "") {
3103 rules.push([0, paramD.PortMapRules_0]);
3104 }
3105 if (paramD.PortMapRules_1 != "") {
3106 rules.push([1, paramD.PortMapRules_1]);
3107 }
3108 if (paramD.PortMapRules_2 != "") {
3109 rules.push([2, paramD.PortMapRules_2]);
3110 }
3111 if (paramD.PortMapRules_3 != "") {
3112 rules.push([3, paramD.PortMapRules_3]);
3113 }
3114 if (paramD.PortMapRules_4 != "") {
3115 rules.push([4, paramD.PortMapRules_4]);
3116 }
3117 if (paramD.PortMapRules_5 != "") {
3118 rules.push([5, paramD.PortMapRules_5]);
3119 }
3120 if (paramD.PortMapRules_6 != "") {
3121 rules.push([6, paramD.PortMapRules_6]);
3122 }
3123 if (paramD.PortMapRules_7 != "") {
3124 rules.push([7, paramD.PortMapRules_7]);
3125 }
3126 if (paramD.PortMapRules_8 != "") {
3127 rules.push([8, paramD.PortMapRules_8]);
3128 }
3129 if (paramD.PortMapRules_9 != "") {
3130 rules.push([9, paramD.PortMapRules_9]);
3131 }
3132 result.portMapRules = parsePortMapRules(rules);
3133 return result;
3134 } else {
3135 return errUnknownObj;
3136 }
3137 }
3138 function parsePortMapRules(paramD) {
3139 var rules = [];
3140 if (paramD && paramD.length > 0) {
3141 for (var i = 0; i < paramD.length; i++) {
3142 var aRule = {};
3143 var elements = paramD[i][1].split(",");
3144 aRule.index = paramD[i][0];
3145 aRule.sourcePort = elements[1];
3146 aRule.destIpAddress = elements[0];
3147 aRule.destPort = elements[2];
3148 aRule.protocol = transProtocol(elements[3]);
3149 aRule.comment = elements[4];
3150 rules.push(aRule);
3151 }
3152 }
3153 return rules;
3154 }
3155 }
3156 function setPortMap() {
3157 return stuffMake(arguments, {}, prepare, deal, null, true);
3158 function prepare(values, isPost) {
3159 var valueReq = {};
3160 valueReq.goformId = "ADD_PORT_MAP";
3161 valueReq.portMapEnabled = values.portMapEnable;
3162 valueReq.fromPort = values.sourcePort;
3163 valueReq.ip_address = values.destIpAddress;
3164 valueReq.toPort = values.destPort;
3165 valueReq.protocol = values.protocol;
3166 valueReq.comment = values.comment;
3167 return valueReq;
3168 }
3169 function deal(paramD) {
3170 if (paramD) {
3171 return paramD;
3172 } else {
3173 return errUnknownObj;
3174 }
3175 }
3176 }
3177 function enablePortMap() {
3178 return stuffMake(arguments, {}, prepare, deal, null, true);
3179 function prepare(values, isPost) {
3180 var valueReq = {};
3181 valueReq.goformId = "ADD_PORT_MAP";
3182 valueReq.portMapEnabled = values.portMapEnable;
3183 return valueReq;
3184 }
3185 function deal(paramD) {
3186 if (paramD) {
3187 return paramD;
3188 } else {
3189 return errUnknownObj;
3190 }
3191 }
3192 }
3193 function deleteMapRules() {
3194 return stuffMake(arguments, {}, prepare, deal, null, true);
3195 function prepare(values, isPost) {
3196 var valueReq = {};
3197 valueReq.goformId = "DEL_PORT_MAP";
3198 valueReq.delete_id = values.indexs.join(';') + ";";
3199 return valueReq;
3200 }
3201 function deal(paramD) {
3202 if (paramD) {
3203 return paramD;
3204 } else {
3205 return errUnknownObj;
3206 }
3207 }
3208 }
3209 function getTrafficAlertInfo() {
3210 return stuffMake(arguments, {}, prepare, deal, null, false);
3211 function prepare(values, isPost) {
3212 return {
3213 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",
3214 multi_data: 1
3215 };
3216 }
3217 function deal(paramD) {
3218 if (paramD) {
3219 var isData = paramD.data_volume_limit_unit == 'data';
3220 var result = {
3221 dataLimitChecked: paramD.data_volume_limit_switch,
3222 dataLimitTypeChecked: isData ? '1' : '0',
3223 limitDataMonth: isData ? paramD.data_volume_limit_size : '0',
3224 alertDataReach: isData ? paramD.data_volume_alert_percent : '0',
3225 limitTimeMonth: isData ? '0' : paramD.data_volume_limit_size,
3226 alertTimeReach: isData ? '0' : paramD.data_volume_alert_percent,
3227 monthlySent: paramD.monthly_tx_bytes == '' ? 0 : paramD.monthly_tx_bytes,
3228 monthlyReceived: paramD.monthly_rx_bytes == '' ? 0 : paramD.monthly_rx_bytes,
3229 monthlyConnectedTime: paramD.monthly_time == '' ? 0 : paramD.monthly_time,
3230 traffic_alined_delta: paramD.traffic_alined_delta == '' ? 0 : paramD.traffic_alined_delta
3231 };
3232 return result;
3233 } else {
3234 return errUnknownObj;
3235 }
3236 }
3237 }
3238 function setTrafficAlertInfo() {
3239 return stuffMake(arguments, {}, prepare, deal, null, true);
3240 function prepare(values, isPost) {
3241 var isData = values.dataLimitTypeChecked == '1';
3242 var valueReq = {
3243 goformId: "DATA_LIMIT_SETTING",
3244 data_volume_limit_switch: values.dataLimitChecked
3245 };
3246 if (values.dataLimitChecked == '1') {
3247 valueReq.data_volume_limit_unit = isData ? 'data' : 'time';
3248 valueReq.data_volume_limit_size = isData ? values.limitDataMonth : values.limitTimeMonth;
3249 valueReq.data_volume_alert_percent = isData ? values.alertDataReach : values.alertTimeReach;
3250 }
3251 return valueReq;
3252 }
3253 function deal(paramD) {
3254 if (paramD) {
3255 return paramD;
3256 } else {
3257 return errUnknownObj;
3258 }
3259 }
3260 }
3261 function getUSSDResponse() {
3262 var callback = arguments[1];
3263 return stuffMake(arguments, {}, prepare, deal, null, true);
3264 function prepare(values, isPost) {
3265 if (values.sendOrReply == "send") {
3266 return {
3267 goformId: "USSD_PROCESS",
3268 USSD_operator: values.operator,
3269 USSD_send_number: values.strUSSDCommand,
3270 notCallback: true
3271 };
3272 } else if (values.sendOrReply == "reply") {
3273 return {
3274 goformId: "USSD_PROCESS",
3275 USSD_operator: values.operator,
3276 USSD_reply_number: values.strUSSDCommand,
3277 notCallback: true
3278 };
3279 }
3280 }
3281 function deal(paramD) {
3282 if (!paramD) {
3283 callback(false, "ussd_fail");
3284 return;
3285 }
3286 if (paramD.result == "success") {
3287 callbackTemp = callback;
3288 getResponse();
3289 } else {
3290 callback(false, "ussd_fail");
3291 }
3292 }
3293 }
3294 function getResponse() {
3295 $.ajax({
3296 url: "/reqproc/proc_get",
3297 data: {
3298 cmd: "ussd_write_flag"
3299 },
3300 cache: false,
3301 async: true,
3302 dataType: "json",
3303 success: function (result) {
3304 if (result.ussd_write_flag == "1") {
3305 callbackTemp(false, "ussd_no_service");
3306 } else if (result.ussd_write_flag == "4" || result.ussd_write_flag == "unknown" || result.ussd_write_flag == "3") {
3307 callbackTemp(false, "ussd_timeout");
3308 } else if (result.ussd_write_flag == "15") {
3309 setTimeout(getResponse, 1000);
3310 } else if (result.ussd_write_flag == "10") {
3311 callbackTemp(false, "ussd_retry");
3312 } else if (result.ussd_write_flag == "99") {
3313 callbackTemp(false, "ussd_unsupport");
3314 } else if (result.ussd_write_flag == "41") {
3315 callbackTemp(false, "operation_not_supported");
3316 } else if (result.ussd_write_flag == "2") {
3317 callbackTemp(false, "network_terminated");
3318 } else if (result.ussd_write_flag == "16") {
3319 $.ajax({
3320 url: "/reqproc/proc_get",
3321 data: {
3322 cmd: "ussd_data_info"
3323 },
3324 dataType: "json",
3325 async: true,
3326 cache: false,
3327 success: function (paramD) {
3328 var content = {};
3329 content.data = paramD.ussd_data;
3330 content.ussd_action = paramD.ussd_action;
3331 content.ussd_dcs = paramD.ussd_dcs;
3332 callbackTemp(true, content);
3333 },
3334 error: function () {
3335 callbackTemp(false, "ussd_info_error");
3336 }
3337 });
3338 } else {
3339 callbackTemp(false, "ussd_fail");
3340 }
3341 },
3342 error: function () {
3343 callbackTemp(false, "ussd_fail");
3344 }
3345 });
3346 }
3347 function USSDReplyCancel(callback) {
3348 $.ajax({
3349 url: "/reqproc/proc_post",
3350 data: {
3351 goformId: "USSD_PROCESS",
3352 USSD_operator: "ussd_cancel"
3353 },
3354 cache: false,
3355 dataType: "json",
3356 success: function (paramD) {
3357 if (paramD.result == "success") {
3358 getCancelResponse();
3359 } else {
3360 callback(false);
3361 }
3362 }
3363 });
3364 function getCancelResponse() {
3365 $.ajax({
3366 url: "/reqproc/proc_get",
3367 data: {
3368 cmd: "ussd_write_flag"
3369 },
3370 cache: false,
3371 async: true,
3372 dataType: "json",
3373 success: function (result) {
3374 if (result.ussd_write_flag == "15") {
3375 setTimeout(getCancelResponse, 1000);
3376 } else if (result.ussd_write_flag == "13") {
3377 callback(true);
3378 } else {
3379 callback(false);
3380 }
3381 },
3382 error: function () {
3383 callback(false);
3384 }
3385 });
3386 }
3387 }
3388 function unlockNetwork() {
3389 var callback = arguments[1];
3390 var checkPoint = 0;
3391 return stuffMake(arguments, {}, prepare, deal, null, true);
3392 function prepare(values) {
3393 return {
3394 goformId: "UNLOCK_NETWORK",
3395 notCallback: true,
3396 unlock_network_code: values.unlock_network_code
3397 };
3398 }
3399 function deal(paramD) {
3400 if (paramD && paramD.result == "success") {
3401 addCallback(checkUnlockNetworkStatus);
3402 } else {
3403 callback({
3404 result: 'fail'
3405 });
3406 }
3407 }
3408 function checkUnlockNetworkStatus() {
3409 if (checkPoint > 5) {
3410 removeCallback(checkUnlockNetworkStatus);
3411 callback({
3412 result: 'fail'
3413 });
3414 } else if (informationAll.simStatus != 'modem_imsi_waitnck') {
3415 removeCallback(checkUnlockNetworkStatus);
3416 callback({
3417 result: 'success'
3418 });
3419 }
3420 checkPoint++;
3421 }
3422 }
3423 function getNetworkUnlockTimes() {
3424 return stuffMake(arguments, {}, prepare, deal, null, false);
3425 function prepare(values, isPost) {
3426 return {
3427 cmd: "unlock_nck_time"
3428 };
3429 }
3430 function deal(paramD) {
3431 if (paramD) {
3432 return paramD;
3433 } else {
3434 return errUnknownObj;
3435 }
3436 }
3437 }
3438 function setUpdateInfoWarning() {
3439 var callback = arguments[1];
3440 return stuffMake(arguments, {}, prepare, deal, null, true);
3441 function prepare(values) {
3442 return {
3443 goformId: "SET_UPGRADE_NOTICE",
3444 upgrade_notice_flag: values.upgrade_notice_flag,
3445 notCallback: true
3446 };
3447 }
3448 function deal(paramD) {
3449 if (paramD.result == "success") {
3450 callback(true);
3451 } else {
3452 callback(false);
3453 }
3454 }
3455 }
3456 function getUpdateInfoWarning() {
3457 return stuffMake(arguments, {}, prepare, deal, null, false);
3458 function prepare(values, isPost) {
3459 return {
3460 cmd: "upgrade_notice_flag"
3461 };
3462 }
3463 function deal(paramD) {
3464 if (paramD) {
3465 return paramD;
3466 } else {
3467 return errUnknownObj;
3468 }
3469 }
3470 }
3471 function getAPStationBasic() {
3472 return stuffMake(arguments, {}, prepare, deal, null, false);
3473 function prepare(values, isPost) {
3474 return {
3475 multi_data: 1,
3476 cmd: "wifi_sta_connection,pswan_priority,wifiwan_priority,ethwan_priority"
3477 };
3478 }
3479 function deal(paramD) {
3480 if (paramD) {
3481 return {
3482 ap_station_enable: paramD.wifi_sta_connection,
3483 ap_station_mode: parseInt(paramD.wifiwan_priority, 10) > parseInt(paramD.pswan_priority, 10) ? "wifi_pref" : "dial_pref"
3484 }
3485 } else {
3486 return errUnknownObj;
3487 }
3488 }
3489 }
3490 function setAPStationBasic() {
3491 var tmp = arguments[0];
3492 return stuffMake(arguments, {}, prepare, deal, null, true);
3493 function prepare(values) {
3494 return {
3495 goformId: "WIFI_STA_CONTROL",
3496 wifi_sta_connection: values.ap_station_enable
3497 };
3498 }
3499 function deal(paramD) {
3500 if (paramD && paramD.result == "success") {
3501 informationAll.ap_station_enable = tmp.ap_station_enable == 1;
3502 return paramD;
3503 } else {
3504 return errUnknownObj;
3505 }
3506 }
3507 }
3508 function refreshAPStationStatus() {
3509 return getAPStationBasic({}, function (paramD) {
3510 informationAll.ap_station_enable = paramD.ap_station_enable == 1;
3511 informationAll.ap_station_mode = paramD.ap_station_mode;
3512 });
3513 }
3514 function getHotspotList() {
3515 return stuffMake(arguments, {}, prepare, deal, null, false);
3516 function prepare(values, isPost) {
3517 var cmdStr = "wifi_profile_num,wifi_profile";
3518 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3519 cmdStr = cmdStr + ",wifi_profile" + i;
3520 }
3521 return {
3522 multi_data: 1,
3523 cmd: cmdStr
3524 };
3525 }
3526 function deal(paramD) {
3527 if (paramD) {
3528 var wifiList = [];
3529 for (var i = 0; i < config.AP_STATION_LIST_LENGTH; i++) {
3530 var wifiStr = "";
3531 if (i == 0) {
3532 wifiStr = paramD.wifi_profile;
3533 } else {
3534 wifiStr = paramD["wifi_profile" + i];
3535 }
3536 var wifiArray = wifiStr.split(";");
3537 for (var j = 0; j < wifiArray.length; j++) {
3538 var item = wifiArray[j].split(",");
3539 if (!item[0]) {
3540 break;
3541 }
3542 var wifiJson = {
3543 profileName: item[0],
3544 fromProvider: item[1],
3545 connectStatus: item[2],
3546 signal: item[3],
3547 ssid: item[4],
3548 authMode: item[5],
3549 encryptType: item[6],
3550 password: item[7] == "0" ? "" : item[7],
3551 keyID: item[8],
3552 mac: item[9]
3553 };
3554 wifiList.push(wifiJson);
3555 }
3556 }
3557 return {
3558 hotspotList: wifiList
3559 };
3560 } else {
3561 return errUnknownObj;
3562 }
3563 }
3564 }
3565 function searchHotspot() {
3566 return stuffMake(arguments, {}, prepare, deal, null, true);
3567 function prepare(values) {
3568 return {
3569 goformId: "WLAN_SET_STA_REFRESH"
3570 };
3571 }
3572 function deal(paramD) {
3573 if (paramD) {
3574 return paramD;
3575 } else {
3576 return errUnknownObj;
3577 }
3578 }
3579 }
3580 function getSearchHotspotList() {
3581 return stuffMake(arguments, {}, prepare, deal, null, false);
3582 function prepare(values, isPost) {
3583 return {
3584 multi_data: 1,
3585 cmd: "scan_finish,EX_APLIST,EX_APLIST1"
3586 }
3587 }
3588 function deal(paramD) {
3589 if (paramD) {
3590 if (paramD.scan_finish == "0") {
3591 return {
3592 scan_finish: "0",
3593 hotspotList: []
3594 };
3595 }
3596 if (paramD.scan_finish == "2") {
3597 return {
3598 scan_finish: "2",
3599 hotspotList: []
3600 };
3601 }
3602 var wifiList = [];
3603 for (var i = 0; i <= 1; i++) {
3604 var wifiStr;
3605 if (i == 0) {
3606 wifiStr = paramD.EX_APLIST;
3607 } else {
3608 wifiStr = paramD.EX_APLIST1;
3609 }
3610 var wifiArray = wifiStr.split(";");
3611 for (var j = 0; j < wifiArray.length; j++) {
3612 var item = wifiArray[j].split(",");
3613 if (!item[0]) {
3614 break;
3615 }
3616 var wifiJson = {
3617 fromProvider: item[0],
3618 connectStatus: item[1],
3619 ssid: item[2],
3620 signal: item[3],
3621 channel: item[4],
3622 authMode: item[5],
3623 encryptType: item[6],
3624 mac: item[7]
3625 }
3626 wifiList.push(wifiJson);
3627 }
3628 }
3629 return {
3630 scan_finish: "1",
3631 hotspotList: wifiList
3632 };
3633 } else {
3634 return errUnknownObj;
3635 }
3636 }
3637 }
3638 function creatHotspotString(hotspot) {
3639 var tmp = [];
3640 tmp.push(hotspot.profileName);
3641 tmp.push(hotspot.fromProvider || "0");
3642 tmp.push(hotspot.connectStatus || "0");
3643 tmp.push(hotspot.signal);
3644 tmp.push(hotspot.ssid);
3645 tmp.push(hotspot.authMode);
3646 tmp.push(hotspot.encryptType);
3647 tmp.push(hotspot.password || "0");
3648 tmp.push(hotspot.keyID);
3649 tmp.push(hotspot.mac);
3650 return tmp.join(",");
3651 }
3652 function saveHotspot() {
3653 return stuffMake(arguments, {}, prepare, deal, null, true);
3654 function prepare(values) {
3655 var apList = values.apList;
3656 var action = "modify";
3657 if (values.profileName == "") {
3658 action = "add";
3659 var newName = (jQuery.fn.jquery + Math.random()).replace(/\D/g, "");
3660 values.profileName = newName;
3661 apList.push({
3662 profileName: newName,
3663 fromProvider: "0",
3664 connectStatus: "0",
3665 signal: values.signal,
3666 ssid: values.ssid,
3667 authMode: values.authMode,
3668 encryptType: values.encryptType,
3669 password: values.password || "0",
3670 keyID: values.keyID,
3671 mac: values.mac
3672 });
3673 }
3674 var wifi = {
3675 "profile0": []
3676 };
3677 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3678 wifi["profile" + i] = [];
3679 }
3680 var activeHotspotStr = "";
3681 for (var i = 0; i < apList.length; i++) {
3682 var hotspotStr = "";
3683 if (values.profileName == apList[i].profileName) {
3684 hotspotStr = creatHotspotString(values);
3685 activeHotspotStr = hotspotStr;
3686 } else {
3687 hotspotStr = creatHotspotString(apList[i]);
3688 }
3689 var index = parseInt(i % 10);
3690 wifi["profile" + index].push(hotspotStr);
3691 }
3692 var profileParams = {
3693 wifi_profile: wifi.profile0.join(";")
3694 };
3695 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3696 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3697 }
3698 var valueReq = $.extend({
3699 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3700 wifi_profile_num: apList.length,
3701 wifi_update_profile: activeHotspotStr,
3702 action: action
3703 }, profileParams);
3704 return valueReq;
3705 }
3706 function deal(paramD) {
3707 if (paramD) {
3708 return paramD;
3709 } else {
3710 return errUnknownObj;
3711 }
3712 }
3713 }
3714 function deleteHotspot() {
3715 return stuffMake(arguments, {}, prepare, deal, null, true);
3716 function prepare(values) {
3717 var apList = values.apList;
3718 var wifi = {
3719 "profile0": []
3720 };
3721 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3722 wifi["profile" + i] = [];
3723 }
3724 var foundDelete = false;
3725 var activeHotspotStr = "";
3726 for (var i = 0; i < apList.length; i++) {
3727 var hotspotStr = creatHotspotString(apList[i]);
3728 if (apList[i].profileName == values.profileName) {
3729 foundDelete = true;
3730 activeHotspotStr = hotspotStr;
3731 continue;
3732 }
3733 var idIndex = i;
3734 if (foundDelete) {
3735 idIndex = i - 1;
3736 }
3737 var index = parseInt(idIndex % 10);
3738 wifi["profile" + index].push(hotspotStr);
3739 }
3740 var num = foundDelete ? apList.length - 1 : apList.length;
3741 var profileParams = {
3742 wifi_profile: wifi.profile0.join(";")
3743 };
3744 for (var i = 1; i < config.AP_STATION_LIST_LENGTH; i++) {
3745 profileParams["wifi_profile" + i] = wifi["profile" + i].join(";");
3746 }
3747 var valueReq = $.extend({
3748 goformId: "WIFI_SPOT_PROFILE_UPDATE",
3749 wifi_profile_num: num,
3750 wifi_update_profile: activeHotspotStr,
3751 action: "delete"
3752 }, profileParams);
3753 return valueReq;
3754 }
3755 function deal(paramD) {
3756 if (paramD) {
3757 return paramD;
3758 } else {
3759 return errUnknownObj;
3760 }
3761 }
3762 }
3763 function connectHotspot() {
3764 return stuffMake(arguments, {}, prepare, deal, null, true);
3765 function prepare(values) {
3766 return {
3767 goformId: "WLAN_SET_STA_CON",
3768 EX_SSID1: values.EX_SSID1,
3769 EX_AuthMode: values.EX_AuthMode,
3770 EX_EncrypType: values.EX_EncrypType,
3771 EX_DefaultKeyID: values.EX_DefaultKeyID,
3772 EX_WEPKEY: values.EX_WEPKEY,
3773 EX_WPAPSK1: values.EX_WPAPSK1,
3774 EX_wifi_profile: values.EX_wifi_profile,
3775 EX_mac: values.EX_mac
3776 };
3777 }
3778 function deal(paramD) {
3779 if (paramD && (paramD.result == "success" || paramD.result == "processing")) {
3780 return paramD;
3781 } else {
3782 return errUnknownObj;
3783 }
3784 }
3785 }
3786 function disconnectHotspot() {
3787 return stuffMake(arguments, {}, prepare, deal, null, true);
3788 function prepare(values) {
3789 return {
3790 goformId: "WLAN_SET_STA_DISCON"
3791 };
3792 }
3793 function deal(paramD) {
3794 if (paramD && paramD.result == "success") {
3795 return paramD;
3796 } else {
3797 return errUnknownObj;
3798 }
3799 }
3800 }
3801 function getOpMode() {
3802 return stuffMake(arguments, {}, prepare, deal, null, false);
3803 function prepare(values, isPost) {
3804 return {
3805 multi_data: 1,
3806 cmd: "blc_wan_mode,blc_wan_auto_mode,loginfo,ppp_status,rj45_state,ethwan_mode"
3807 };
3808 }
3809 function deal(paramD) {
3810 if (paramD) {
3811 var result = {};
3812 if (paramD.blc_wan_mode == 'AUTO') {
3813 result.blc_wan_mode = paramD.blc_wan_auto_mode ? paramD.blc_wan_auto_mode : 'AUTO_PPP';
3814 } else {
3815 result.blc_wan_mode = paramD.blc_wan_mode ? paramD.blc_wan_mode : 'PPP';
3816 }
3817 result.loginfo = paramD.loginfo;
3818 result.ppp_status = paramD.ppp_status;
3819 result.rj45_state = (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state;
3820 result.ethwan_mode = paramD.ethwan_mode.toUpperCase();
3821 return result;
3822 } else {
3823 return errUnknownObj;
3824 }
3825 }
3826 }
3827 function getRj45PlugState() {
3828 return stuffMake(arguments, {}, prepare, deal, null, false);
3829 function prepare(values, isPost) {
3830 return {
3831 cmd: "rj45_plug"
3832 };
3833 }
3834 function deal(paramD) {
3835 if (paramD) {
3836 var result = {};
3837 result.rj45_plug = paramD.rj45_plug == "" ? "wan_lan_off" : paramD.rj45_plug;
3838 return result;
3839 } else {
3840 return errUnknownObj;
3841 }
3842 }
3843 }
3844 function checkOpMode(opmode, rj45state) {
3845 if (config.RJ45_SUPPORT) {
3846 if (rj45state == "dead" || rj45state == "") {
3847 return 'PPP';
3848 } else if (!opmode || opmode == "undefined") {
3849 if (rj45state == "working") {
3850 return 'PPPOE';
3851 } else {
3852 return 'PPP';
3853 }
3854 } else {
3855 return opmode;
3856 }
3857 } else {
3858 return 'PPP';
3859 }
3860 }
3861 function SetOperationMode(values, callback) {
3862 return stuffMake(arguments, {}, prepare, deal, null, true);
3863 function prepare(values) {
3864 var valueReq = $.extend({
3865 goformId: "OPERATION_MODE"
3866 }, values);
3867 return valueReq;
3868 }
3869 function deal(paramD) {
3870 if (paramD && paramD.result == "success") {
3871 return paramD;
3872 } else {
3873 return errUnknownObj;
3874 }
3875 }
3876 }
3877 function getPppoeParams() {
3878 return stuffMake(arguments, {}, prepare, deal, null, false);
3879 function prepare(values, isPost) {
3880 return {
3881 multi_data: 1,
3882 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"
3883 };
3884 }
3885 function deal(paramD) {
3886 if (paramD) {
3887 return {
3888 opms_wan_auto_mode: paramD.opms_wan_auto_mode,
3889 ethwan_mode: paramD.ethwan_mode.toUpperCase(),
3890 pppoe_username: paramD.pppoe_username,
3891 pppoe_cc: paramD.pppoe_cc,
3892 ethwan_dialmode: paramD.ethwan_dialmode == "manual" ? "manual_dial" : "auto_dial",
3893 ppp_status: paramD.ppp_status,
3894 static_wan_ipaddr: paramD.static_wan_ipaddr,
3895 static_wan_netmask: paramD.static_wan_netmask,
3896 static_wan_gateway: paramD.static_wan_gateway,
3897 static_wan_primary_dns: paramD.static_wan_primary_dns,
3898 static_wan_secondary_dns: paramD.static_wan_secondary_dns,
3899 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state,
3900 lan_ipaddr: paramD.lan_ipaddr,
3901 lan_netmask: paramD.lan_netmask
3902 }
3903 } else {
3904 return errUnknownObj;
3905 }
3906 }
3907 }
3908 function setPppoeDialMode(values, callback) {
3909 return stuffMake(arguments, {}, prepare, deal, null, true);
3910 function prepare(values) {
3911 var valueReq = $.extend({
3912 notCallback: true
3913 }, values);
3914 return valueReq;
3915 }
3916 function deal(paramD) {
3917 if (paramD.result == "success") {
3918 callback({
3919 result: true
3920 });
3921 } else {
3922 callback({
3923 result: false
3924 });
3925 }
3926 }
3927 }
3928 function getSntpParams(values, callback) {
3929 return stuffMake(arguments, {}, prepare, deal, null, false);
3930 function prepare(values, isPost) {
3931 return {
3932 multi_data: 1,
3933 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"
3934 };
3935 }
3936 function deal(paramD) {
3937 if (paramD) {
3938 var sntp_servers = getSntpServers(paramD);
3939 return {
3940 sntp_year: paramD.sntp_year,
3941 sntp_month: paramD.sntp_month,
3942 sntp_day: paramD.sntp_day,
3943 sntp_hour: paramD.sntp_hour,
3944 sntp_minute: paramD.sntp_minute,
3945 sntp_second: paramD.sntp_second,
3946 sntp_time_set_mode: paramD.sntp_time_set_mode,
3947 sntp_servers: sntp_servers,
3948 sntp_server0: paramD.sntp_server0,
3949 sntp_server1: paramD.sntp_server1,
3950 sntp_server2: paramD.sntp_server2,
3951 sntp_static_server0: paramD.sntp_static_server0,
3952 sntp_static_server1: paramD.sntp_static_server1,
3953 sntp_static_server2: paramD.sntp_static_server2,
3954 sntp_other_server0: paramD.sntp_other_server0,
3955 sntp_other_server1: paramD.sntp_other_server1,
3956 sntp_other_server2: paramD.sntp_other_server2,
3957 sntp_timezone: paramD.sntp_timezone,
3958 sntp_timezone_index: paramD.sntp_timezone_index ? paramD.sntp_timezone_index : "0",
3959 sntp_dst_enable: paramD.sntp_dst_enable,
3960 ppp_status: paramD.ppp_status,
3961 blc_wan_mode: informationAll.blc_wan_mode,
3962 sntp_process_result: paramD.sntp_process_result,
3963 rj45_state: (typeof paramD.rj45_state == 'undefined' || paramD.rj45_state == '') ? 'dead' : paramD.rj45_state
3964 }
3965 } else {
3966 return errUnknownObj;
3967 }
3968 }
3969 function getSntpServers(paramD) {
3970 var serverArray = [];
3971 for (var i = 0; i < 3; i++) {
3972 var tmp = "sntp_static_server" + (i).toString();
3973 if (paramD[tmp] != "") {
3974 var obj = {};
3975 obj.name = paramD[tmp];
3976 obj.value = paramD[tmp];
3977 serverArray.push(obj);
3978 }
3979 }
3980 var otherArray = [{
3981 name: "Other",
3982 value: "Other"
3983 }, {
3984 name: "NONE",
3985 value: ""
3986 }
3987 ];
3988 for (var j = 0; j < 2; j++) {
3989 serverArray.push(otherArray[j]);
3990 }
3991 return serverArray;
3992 }
3993 }
3994 function setSNTPDate(values, callback) {
3995 return stuffMake(arguments, {}, prepare, deal, null, true);
3996 function prepare(values) {
3997 var valueReq = $.extend({}, values);
3998 return valueReq;
3999 }
4000 function deal(paramD) {
4001 if (paramD && paramD.result == "success") {
4002 return paramD;
4003 } else {
4004 return errUnknownObj;
4005 }
4006 }
4007 }
4008 function setSntpSetting(values, callback) {
4009 var valueReq = $.extend({}, values); {
4010 $.post("reqproc/proc_post", valueReq, function (paramD) {
4011 if (paramD && paramD.result == "success") {
4012 if (values.manualsettime == "auto") {
4013 setTimeout(checkSyncStatus, 2000);
4014 callback(paramD);
4015 } else {
4016 callback(true);
4017 }
4018 } else if (paramD && paramD.result == "processing") {
4019 callback(paramD);
4020 } else {
4021 callback(false);
4022 }
4023 }, "json");
4024 }
4025 function checkSyncStatus() {
4026 $.ajax({
4027 url: "reqproc/proc_get",
4028 dataType: "json",
4029 data: {
4030 cmd: "sntp_process_result"
4031 },
4032 cache: false,
4033 async: false,
4034 success: function (paramD) {
4035 if (paramD.sntp_process_result == "failure") {
4036 callback(false);
4037 } else if (paramD.sntp_process_result == "success") {
4038 callback(true);
4039 } else {
4040 setTimeout(checkSyncStatus, 2000);
4041 }
4042 },
4043 error: function () {
4044 callback(false);
4045 }
4046 });
4047 }
4048 }
4049 function addUrlFilterRule(values, callback) {
4050 return stuffMake(arguments, {}, prepare, deal, null, true);
4051 function prepare(values) {
4052 var valueReq = $.extend({}, values);
4053 return valueReq;
4054 }
4055 function deal(paramD) {
4056 if (paramD && paramD.result == "success") {
4057 return paramD;
4058 } else {
4059 return errUnknownObj;
4060 }
4061 }
4062 }
4063 function getUrlFilterList() {
4064 return stuffMake(arguments, {}, prepare, deal, null, false);
4065 function prepare(values, isPost) {
4066 return {
4067 cmd: "websURLFilters"
4068 };
4069 }
4070 function deal(paramD) {
4071 var urlFilterRules = [];
4072 if (paramD) {
4073 if (paramD.websURLFilters.length == 0) {
4074 return {
4075 urlFilterRules: []
4076 };
4077 } else {
4078 var tempArray = paramD.websURLFilters.split(";");
4079 for (var i = 0; i < tempArray.length; i++) {
4080 var aRule = {};
4081 aRule.index = i;
4082 aRule.url = tempArray[i];
4083 urlFilterRules.push(aRule);
4084 }
4085 return {
4086 urlFilterRules: urlFilterRules
4087 };
4088 }
4089 } else {
4090 return errUnknownObj;
4091 }
4092 }
4093 }
4094 function deleteSelectedRules(values, callback) {
4095 return stuffMake(arguments, {}, prepare, deal, null, true);
4096 function prepare(values) {
4097 var valueReq = $.extend({}, values);
4098 return valueReq;
4099 }
4100 function deal(paramD) {
4101 if (paramD && paramD.result == "success") {
4102 return paramD;
4103 } else {
4104 return errUnknownObj;
4105 }
4106 }
4107 }
4108 function getWdsInfo() {
4109 return stuffMake(arguments, {}, prepare, deal, null, false);
4110 function prepare(values, isPost) {
4111 return {
4112 multi_data: "1",
4113 cmd: "wifi_wds_mode,wifi_wds_ssid,wifi_wds_AuthMode,wifi_wds_EncrypType,wifi_wds_WPAPSK1,wifi_cur_state "
4114 };
4115 }
4116 function deal(paramD) {
4117 if (paramD) {
4118 return {
4119 currentMode: paramD.wifi_wds_mode,
4120 wdsSSID: paramD.wifi_wds_ssid,
4121 wdsAuthMode: paramD.wifi_wds_AuthMode,
4122 wdsEncrypType: paramD.wifi_wds_EncrypType,
4123 wdsWPAPSK1: paramD.wifi_wds_WPAPSK1,
4124 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0"
4125 };
4126 } else {
4127 return errUnknownObj;
4128 }
4129 }
4130 }
4131 function setWDS(values, callback) {
4132 return stuffMake(arguments, {}, prepare, deal, null, true);
4133 function prepare(values) {
4134 var valueReq = $.extend({}, values);
4135 return valueReq;
4136 }
4137 function deal(paramD) {
4138 if (paramD && paramD.result == "success") {
4139 return paramD;
4140 } else {
4141 return errUnknownObj;
4142 }
4143 }
4144 }
4145 function getSyslogInfo() {
4146 return stuffMake(arguments, {}, prepare, deal, null, false);
4147 function prepare(values, isPost) {
4148 return {
4149 multi_data: "1",
4150 cmd: "syslog_mode,debug_level"
4151 };
4152 }
4153 function deal(paramD) {
4154 if (paramD) {
4155 return {
4156 currentMode: paramD.syslog_mode,
4157 debugLevel: paramD.debug_level
4158 };
4159 } else {
4160 return errUnknownObj;
4161 }
4162 }
4163 }
4164 function setSysLog(values, callback) {
4165 return stuffMake(arguments, {}, prepare, deal, null, true);
4166 function prepare(values) {
4167 var valueReq = $.extend({}, values);
4168 return valueReq;
4169 }
4170 function deal(paramD) {
4171 if (paramD && paramD.result == "success") {
4172 return paramD;
4173 } else {
4174 return errUnknownObj;
4175 }
4176 }
4177 }
4178 function getMacFilterInfo() {
4179 return stuffMake(arguments, {}, prepare, deal, null, false);
4180 function prepare(values, isPost) {
4181 return {
4182 multi_data: "1",
4183 cmd: "ACL_mode,wifi_mac_black_list,wifi_hostname_black_list,wifi_cur_state,user_ip_addr,client_mac_address,wifi_mac_white_list"
4184 };
4185 }
4186 function deal(paramD) {
4187 if (paramD) {
4188 return {
4189 ACL_mode: paramD.ACL_mode,
4190 wifi_mac_black_list: paramD.wifi_mac_black_list,
4191 wifi_hostname_black_list: paramD.wifi_hostname_black_list,
4192 RadioOff: paramD.wifi_cur_state == "1" ? "1" : "0",
4193 user_ip_addr: paramD.user_ip_addr,
4194 client_mac_address: paramD.client_mac_address,
4195 wifi_mac_white_list: paramD.wifi_mac_white_list
4196 };
4197 } else {
4198 return errUnknownObj;
4199 }
4200 }
4201 }
4202 function setMacFilter() {
4203 return stuffMake(arguments, {}, prepare, deal, null, true);
4204 function prepare(values) {
4205 var valueReq = $.extend({
4206 goformId: 'WIFI_MAC_FILTER',
4207 }, values);
4208 return valueReq;
4209 }
4210 function deal(paramD) {
4211 if (paramD && paramD.result == "success") {
4212 return paramD;
4213 } else {
4214 return errUnknownObj;
4215 }
4216 }
4217 }
4218 function getFastbootSetting() {
4219 return stuffMake(arguments, {}, prepare, deal, null, false);
4220 function prepare(values) {
4221 return {
4222 cmd: "mgmt_quicken_power_on,need_hard_reboot,need_sim_pin",
4223 multi_data: 1
4224 };
4225 }
4226 function deal(paramD) {
4227 return {
4228 fastbootEnabled: paramD.mgmt_quicken_power_on == '1' ? '1' : '0',
4229 need_hard_reboot: paramD.need_hard_reboot,
4230 need_sim_pin: paramD.need_sim_pin == 'yes' ? 'yes' : 'no'
4231 };
4232 }
4233 }
4234 function setFastbootSetting() {
4235 return stuffMake(arguments, {}, prepare, deal, null, true);
4236 function prepare(values) {
4237 return {
4238 goformId: "MGMT_CONTROL_POWER_ON_SPEED",
4239 mgmt_quicken_power_on: values.fastbootEnabled
4240 };
4241 }
4242 function deal(paramD) {
4243 if (paramD && paramD.result == "success") {
4244 return paramD;
4245 } else {
4246 return errUnknownObj;
4247 }
4248 }
4249 }
4250 function turnOffDevice() {
4251 return stuffMake(arguments, {}, prepare, deal, null, true);
4252 function prepare(values, isPost) {
4253 var valueReq = {};
4254 valueReq.goformId = "TURN_OFF_DEVICE";
4255 return valueReq;
4256 }
4257 function deal(paramD) {
4258 if (paramD) {
4259 return paramD;
4260 } else {
4261 return errUnknownObj;
4262 }
4263 }
4264 }
4265 function restart() {
4266 return stuffMake(arguments, {}, prepare, deal, null, true);
4267 function prepare(values, isPost) {
4268 var valueReq = {};
4269 valueReq.goformId = "REBOOT_DEVICE";
4270 return valueReq;
4271 }
4272 function deal(paramD) {
4273 if (paramD) {
4274 return paramD;
4275 } else {
4276 return errUnknownObj;
4277 }
4278 }
4279 }
4280 function getScheduleSetting() {
4281 return stuffMake(arguments, {}, prepare, deal, null, false);
4282 function prepare(values, isPost) {
4283 var valueReq = {};
4284 valueReq.cmd = "schedule_restart_enable,schedule_restart_hour,schedule_restart_minute";
4285 valueReq.multi_data = 1;
4286 return valueReq;
4287 }
4288 function deal(paramD) {
4289 if (paramD) {
4290 var result = {};
4291 result.scheduleSetting = paramD.schedule_restart_enable == "1" ? "1" : "0";
4292 result.scheduleHour = paramD.schedule_restart_hour;
4293 result.scheduleMinute = paramD.schedule_restart_minute;
4294 return result;
4295 } else {
4296 return errUnknownObj;
4297 }
4298 }
4299 }
4300 function setScheduleSetting() {
4301 return stuffMake(arguments, {}, prepare, deal, null, true);
4302 function prepare(values, isPost) {
4303 var valueReq = {};
4304 valueReq.goformId = "SCHEDULE_SETTING";
4305 valueReq.scheduleEnabled = values.scheduleSetting;
4306 if (valueReq.scheduleEnabled == '1') {
4307 valueReq.scheduleHour = values.scheduleHour;
4308 valueReq.scheduleMinute = values.scheduleMinute;
4309 }
4310 return valueReq;
4311 }
4312 function deal(paramD) {
4313 if (paramD) {
4314 return paramD;
4315 } else {
4316 return errUnknownObj;
4317 }
4318 }
4319 }
4320 function getCwmpSetting() {
4321 return stuffMake(arguments, {}, prepare, deal, null, false);
4322 function prepare(values, isPost) {
4323 var valueReq = {};
4324 valueReq.cmd = "cwmp_enable,acs_url,acs_username,acs_password,periodic_enable,periodic_interval,cpe_username,cpe_password";
4325 valueReq.multi_data = 1;
4326 return valueReq;
4327 }
4328 function deal(paramD) {
4329 if (paramD) {
4330 var result = {};
4331 result.cwmpSetting = paramD.cwmp_enable == "1" ? "1" : "0";
4332 result.acsUrl = paramD.acs_url;
4333 result.acsUsername = paramD.acs_username;
4334 result.acsPassword = paramD.acs_password;
4335 result.periodicEnabled = paramD.periodic_enable == "1" ? "1" : "0";
4336 result.periodicInterval = paramD.periodic_interval;
4337 result.cpeUsername = paramD.cpe_username;
4338 result.cpePassword = paramD.cpe_password;
4339 return result;
4340 } else {
4341 return errUnknownObj;
4342 }
4343 }
4344 }
4345 function setCwmpSetting() {
4346 return stuffMake(arguments, {}, prepare, deal, null, true);
4347 function prepare(values, isPost) {
4348 var valueReq = {};
4349 valueReq.goformId = "CWMP_SETTING";
4350 valueReq.cwmpEnabled = values.cwmpSetting;
4351 if (valueReq.cwmpEnabled == '1') {
4352 valueReq.acsUrl = values.acsUrl;
4353 valueReq.acsUsername = values.acsUsername;
4354 valueReq.acsPassword = values.acsPassword;
4355 valueReq.periodicEnabled = values.periodicEnabled;
4356 if (valueReq.periodicEnabled == '1') {
4357 valueReq.periodicInterval = values.periodicInterval;
4358 }
4359 valueReq.cpeUsername = values.cpeUsername;
4360 valueReq.cpePassword = values.cpePassword;
4361 }
4362 return valueReq;
4363 }
4364 function deal(paramD) {
4365 if (paramD) {
4366 return paramD;
4367 } else {
4368 return errUnknownObj;
4369 }
4370 }
4371 }
4372 function getNewVersionState() {
4373 return stuffMake(arguments, {}, prepare, deal, null, false);
4374 function prepare(values, isPost) {
4375 var valueReq = {};
4376 valueReq.cmd = "fota_new_version_state,fota_current_upgrade_state,fota_package_already_download";
4377 valueReq.multi_data = 1;
4378 return valueReq;
4379 }
4380 function deal(paramD) {
4381 if (paramD) {
4382 var hasNewVersion = (paramD.fota_new_version_state == 'has_critical' || paramD.fota_new_version_state == 'has_optional' || paramD.fota_new_version_state == 'already_has_pkg');
4383 paramD.hasNewVersion = hasNewVersion;
4384 return paramD;
4385 } else {
4386 return errUnknownObj;
4387 }
4388 }
4389 }
4390 function getMandatory() {
4391 return stuffMake(arguments, {}, prepare, deal, null, false);
4392 function prepare(values, isPost) {
4393 var valueReq = {};
4394 if (config.UPGRADE_TYPE == "OTA") {
4395 valueReq.cmd = "is_mandatory";
4396 } else {
4397 valueReq.cmd = "fota_new_version_state";
4398 }
4399 return valueReq;
4400 }
4401 function deal(paramD) {
4402 if (paramD) {
4403 if (config.UPGRADE_TYPE == "OTA") {
4404 return {
4405 "is_mandatory": paramD.is_mandatory == "1"
4406 };
4407 } else {
4408 return {
4409 "is_mandatory": paramD.fota_new_version_state == "has_critical"
4410 };
4411 }
4412 } else {
4413 return errUnknownObj;
4414 }
4415 }
4416 }
4417 function getUpgradeResult() {
4418 return stuffMake(arguments, {}, prepare, deal, null, false);
4419 function prepare(values, isPost) {
4420 var valueReq = {};
4421 valueReq.cmd = "upgrade_result";
4422 return valueReq;
4423 }
4424 function deal(paramD) {
4425 if (paramD) {
4426 return paramD;
4427 } else {
4428 return errUnknownObj;
4429 }
4430 }
4431 }
4432 function getCurrentUpgradeState() {
4433 return stuffMake(arguments, {}, prepare, deal, null, false);
4434 function prepare(values, isPost) {
4435 var valueReq = {};
4436 valueReq.cmd = "fota_current_upgrade_state";
4437 return valueReq;
4438 }
4439 function deal(paramD) {
4440 if (paramD) {
4441 paramD.current_upgrade_state = paramD.fota_current_upgrade_state;
4442 return paramD;
4443 } else {
4444 return errUnknownObj;
4445 }
4446 }
4447 }
4448 function getPackSizeInfo() {
4449 return stuffMake(arguments, {}, prepare, deal, null, false);
4450 function prepare(values, isPost) {
4451 var valueReq = {};
4452 valueReq.cmd = "fota_pkg_total_size,fota_dl_pkg_size";
4453 valueReq.multi_data = 1;
4454 return valueReq;
4455 }
4456 function deal(paramD) {
4457 if (paramD) {
4458 return paramD;
4459 } else {
4460 return errUnknownObj;
4461 }
4462 }
4463 }
4464 function setUpgradeSelectOp() {
4465 return stuffMake(arguments, {}, prepare, deal, null, true);
4466 function prepare(values, isPost) {
4467 var valueReq = {};
4468 valueReq.goformId = "IF_UPGRADE";
4469 valueReq.select_op = values.selectOp;
4470 if (valueReq.select_op == 'check') {
4471 valueReq.ota_manual_check_roam_state = 1;
4472 }
4473 return valueReq;
4474 }
4475 function deal(paramD) {
4476 if (paramD) {
4477 return paramD;
4478 } else {
4479 return errUnknownObj;
4480 }
4481 }
4482 }
4483 function getOTAUpdateSetting() {
4484 return stuffMake(arguments, {}, prepare, deal, null, false);
4485 function prepare(values, isPost) {
4486 var valueReq = {};
4487 valueReq.cmd = "fota_updateMode,fota_updateIntervalDay,fota_allowRoamingUpdate";
4488 valueReq.multi_data = 1;
4489 return valueReq;
4490 }
4491 function deal(paramD) {
4492 if (paramD) {
4493 return {
4494 updateMode: paramD.fota_updateMode,
4495 updateIntervalDay: paramD.fota_updateIntervalDay,
4496 allowRoamingUpdate: paramD.fota_allowRoamingUpdate
4497 };
4498 } else {
4499 return errUnknownObj;
4500 }
4501 }
4502 }
4503 function setOTAUpdateSetting() {
4504 return stuffMake(arguments, {}, prepare, deal, null, true);
4505 function prepare(values, isPost) {
4506 var valueReq = {};
4507 valueReq.goformId = "SetUpgAutoSetting";
4508 valueReq.UpgMode = values.updateMode;
4509 valueReq.UpgIntervalDay = values.updateIntervalDay;
4510 valueReq.UpgRoamPermission = values.allowRoamingUpdate;
4511 return valueReq;
4512 }
4513 function deal(paramD) {
4514 if (paramD && paramD.result == "success") {
4515 return paramD;
4516 } else {
4517 return errUnknownObj;
4518 }
4519 }
4520 }
4521 function getManualOTAUpdateSetting() {
4522 return stuffMake(arguments, {}, prepare, deal, null, false);
4523 function prepare(values, isPost) {
4524 var valueReq = {};
4525 valueReq.cmd = "fota_manualUpgradeURL";
4526 valueReq.multi_data = 1;
4527 return valueReq;
4528 }
4529 function deal(paramD) {
4530 if (paramD) {
4531 return {
4532 updateURL: paramD.fota_manualUpgradeURL
4533 };
4534 } else {
4535 return errUnknownObj;
4536 }
4537 }
4538 }
4539 function setManualOTAUpdateSetting() {
4540 return stuffMake(arguments, {}, prepare, deal, null, true);
4541 function prepare(values, isPost) {
4542 var valueReq = {};
4543 valueReq.goformId = "SetUpgManualSetting";
4544 valueReq.UpgURL = values.updateURL;
4545 return valueReq;
4546 }
4547 function deal(paramD) {
4548 if (paramD && paramD.result == "success") {
4549 return paramD;
4550 } else {
4551 return errUnknownObj;
4552 }
4553 }
4554 }
4555 function getOTAlastCheckTime() {
4556 return getParams({
4557 nv: ['dm_last_check_time']
4558 }, arguments[1], arguments[2]);
4559 }
4560 function getSignalStrength() {
4561 return getParams({
4562 nv: ['network_type', 'sub_network_type', 'rssi', 'rscp', 'lte_rsrp']
4563 }, arguments[1], arguments[2]);
4564 }
4565 function clearUpdateResult() {
4566 return stuffMake(arguments, {}, prepare, deal, null, true);
4567 function prepare(values, isPost) {
4568 var valueReq = {};
4569 valueReq.goformId = "RESULT_RESTORE";
4570 return valueReq;
4571 }
4572 function deal(paramD) {
4573 if (paramD && paramD.result == "success") {
4574 return paramD;
4575 } else {
4576 return errUnknownObj;
4577 }
4578 }
4579 }
4580 function childGroupList() {
4581 return stuffMake(arguments, {}, prepare, deal, null, false);
4582 function prepare(values, isPost) {
4583 var valueReq = {
4584 cmd: "childGroupList"
4585 };
4586 return valueReq;
4587 }
4588 function deal(paramD) {
4589 if (paramD && (paramD.childGroupList || paramD.devices)) {
4590 return paramD;
4591 } else {
4592 return {
4593 devices: []
4594 };
4595 }
4596 }
4597 }
4598 function addChildGroup() {
4599 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4600 : {
4601 errorType: 'no_auth'
4602 }, prepare, deal, null, true);
4603 function prepare(values, isPost) {
4604 var valueReq = {
4605 goformId: "ADD_DEVICE",
4606 mac: values.macAddress
4607 };
4608 return valueReq;
4609 }
4610 function deal(paramD) {
4611 if (paramD && paramD.result == 'success') {
4612 return paramD;
4613 } else {
4614 return errUnknownObj;
4615 }
4616 }
4617 }
4618 function removeChildGroup() {
4619 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4620 : {
4621 errorType: 'no_auth'
4622 }, prepare, deal, null, true);
4623 function prepare(values, isPost) {
4624 var valueReq = {
4625 goformId: "DEL_DEVICE",
4626 mac: values.mac
4627 };
4628 return valueReq;
4629 }
4630 function deal(paramD) {
4631 if (paramD && paramD.result == 'success') {
4632 return paramD;
4633 } else {
4634 return errUnknownObj;
4635 }
4636 }
4637 }
4638 function checkCurrentUserInChildGroup(devices) {
4639 if (typeof config.currentUserInChildGroup == "undefined") {
4640 var childGroupDevice = [];
4641 if (typeof devices != "undefined") {
4642 childGroupDevice = devices;
4643 } else {
4644 childGroupDevice = childGroupList({}).devices;
4645 }
4646 var userMacAddr = getUserMacAddr({}).get_user_mac_addr;
4647 var found = _.find(childGroupDevice, function (item) {
4648 return item.mac == userMacAddr;
4649 });
4650 config.currentUserInChildGroup = typeof found != 'undefined';
4651 return {
4652 result: typeof found != 'undefined'
4653 };
4654 }
4655 return {
4656 result: config.currentUserInChildGroup
4657 };
4658 }
4659 function getUserMacAddr() {
4660 return getParams({
4661 nv: 'get_user_mac_addr'
4662 }, arguments[1], arguments[2]);
4663 }
4664 function getHostNameList() {
4665 return stuffMake(arguments, {}, prepare, deal, null, false);
4666 function prepare(values, isPost) {
4667 var valueReq = {
4668 cmd: "hostNameList"
4669 };
4670 return valueReq;
4671 }
4672 function deal(paramD) {
4673 if (paramD && (paramD.hostNameList || paramD.devices)) {
4674 return paramD;
4675 } else {
4676 return {
4677 devices: []
4678 };
4679 }
4680 }
4681 }
4682 function editHostName() {
4683 return stuffMake(arguments, {}, prepare, deal, null, true);
4684 function prepare(values, isPost) {
4685 var valueReq = {
4686 goformId: "EDIT_HOSTNAME",
4687 mac: values.mac,
4688 hostname: values.hostname
4689 };
4690 return valueReq;
4691 }
4692 function deal(paramD) {
4693 if (paramD && paramD.result == 'success') {
4694 return paramD;
4695 } else {
4696 return errUnknownObj;
4697 }
4698 }
4699 }
4700 function getSiteWhiteList() {
4701 return stuffMake(arguments, {}, prepare, deal, null, false);
4702 function prepare(values, isPost) {
4703 var valueReq = {
4704 cmd: "site_white_list"
4705 };
4706 return valueReq;
4707 }
4708 function deal(paramD) {
4709 if (paramD && (paramD.site_white_list || paramD.siteList)) {
4710 return paramD;
4711 } else {
4712 return {
4713 siteList: []
4714 };
4715 }
4716 }
4717 }
4718 function removeSiteWhite() {
4719 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4720 : {
4721 errorType: 'no_auth'
4722 }, prepare, deal, null, true);
4723 function prepare(values, isPost) {
4724 var valueReq = {
4725 goformId: "REMOVE_WHITE_SITE",
4726 ids: values.ids.join(',')
4727 };
4728 return valueReq;
4729 }
4730 function deal(paramD) {
4731 if (paramD && paramD.result == 'success') {
4732 return paramD;
4733 } else {
4734 return errUnknownObj;
4735 }
4736 }
4737 }
4738 function saveSiteWhite() {
4739 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4740 : {
4741 errorType: 'no_auth'
4742 }, prepare, deal, null, true);
4743 function prepare(values, isPost) {
4744 var valueReq = {
4745 goformId: "ADD_WHITE_SITE",
4746 name: values.name,
4747 site: values.site
4748 };
4749 return valueReq;
4750 }
4751 function deal(paramD) {
4752 if (paramD && paramD.result == 'success') {
4753 return paramD;
4754 } else {
4755 return errUnknownObj;
4756 }
4757 }
4758 }
4759 function getTimeLimited() {
4760 var defaultResult = {
4761 '0': [],
4762 '1': [],
4763 '2': [],
4764 '3': [],
4765 '4': [],
4766 '5': [],
4767 '6': []
4768 };
4769 return stuffMake(arguments, {}, prepare, deal, null, false);
4770 function prepare(values, isPost) {
4771 var valueReq = {
4772 cmd: "time_limited"
4773 };
4774 return valueReq;
4775 }
4776 function deal(paramD) {
4777 if (paramD) {
4778 return parseTimeLimited(paramD);
4779 } else {
4780 return defaultResult;
4781 }
4782 }
4783 function parseTimeLimited(paramD) {
4784 if (paramD.time_limited == '') {
4785 return {
4786 time_limited: []
4787 };
4788 }
4789 var weeks = paramD.time_limited.split(';');
4790 _.each(weeks, function (week) {
4791 var weekTime = week.split('+');
4792 if (weekTime.length == 2) {
4793 defaultResult[weekTime[0]] = weekTime[1].split(',');
4794 }
4795 });
4796 return defaultResult;
4797 }
4798 }
4799 function saveTimeLimited() {
4800 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4801 : {
4802 errorType: 'no_auth'
4803 }, prepare, deal, null, true);
4804 function prepare(values, isPost) {
4805 var valueReq = {
4806 goformId: "SAVE_TIME_LIMITED",
4807 time_limited: values.time
4808 };
4809 return valueReq;
4810 }
4811 function deal(paramD) {
4812 if (paramD && paramD.result == 'success') {
4813 return paramD;
4814 } else {
4815 return errUnknownObj;
4816 }
4817 }
4818 }
4819 function getTsw() {
4820 return stuffMake(arguments, {}, prepare, deal, null, false);
4821 function prepare(values, isPost) {
4822 var valueReq = {
4823 cmd: "openEnable,closeEnable,openTime,closeTime",
4824 multi_data: '1'
4825 };
4826 return valueReq;
4827 }
4828 function deal(paramD) {
4829 if (paramD) {
4830 if (paramD.openTime.indexOf(':') != -1) {
4831 var open = paramD.openTime.split(':');
4832 paramD.openH = leftInsert(open[0], 2, '0');
4833 paramD.openM = leftInsert(open[1], 2, '0');
4834 } else {
4835 paramD.openH = '06';
4836 paramD.openM = '00';
4837 }
4838 if (paramD.closeTime.indexOf(':') != -1) {
4839 var close = paramD.closeTime.split(':');
4840 paramD.closeH = leftInsert(close[0], 2, '0');
4841 paramD.closeM = leftInsert(close[1], 2, '0');
4842 } else {
4843 paramD.closeH = '22';
4844 paramD.closeM = '00';
4845 }
4846 return paramD;
4847 } else {
4848 return errUnknownObj;
4849 }
4850 }
4851 }
4852 function saveTsw() {
4853 return stuffMake(arguments, {}, prepare, deal, null, true);
4854 function prepare(values, isPost) {
4855 var valueReq = {
4856 goformId: "SAVE_TSW",
4857 openEnable: values.openEnable,
4858 closeEnable: values.closeEnable
4859 };
4860 if (values.openEnable == '1') {
4861 valueReq.openTime = values.openTime;
4862 valueReq.closeTime = values.closeTime;
4863 }
4864 return valueReq;
4865 }
4866 function deal(paramD) {
4867 if (paramD && paramD.result == 'success') {
4868 return paramD;
4869 } else if (paramD && paramD.result == 'failure') {
4870 return paramD;
4871 } else {
4872 return errUnknownObj;
4873 }
4874 }
4875 }
4876 function trafficCalibration() {
4877 return stuffMake(arguments, {}, prepare, deal, null, true);
4878 function prepare(values, isPost) {
4879 var valueReq = {
4880 goformId: "FLOW_CALIBRATION_MANUAL",
4881 calibration_way: values.way,
4882 time: values.way == 'time' ? values.value : 0,
4883 data: values.way == 'data' ? values.value : 0
4884 };
4885 return valueReq;
4886 }
4887 function deal(paramD) {
4888 if (paramD && paramD.result == 'success') {
4889 return paramD;
4890 } else {
4891 return errUnknownObj;
4892 }
4893 }
4894 }
4895 function getParams() {
4896 return stuffMake(arguments, {}, prepare, deal, null, false);
4897 function prepare(values, isPost) {
4898 var valueReq = {};
4899 if (_.isArray(values.nv)) {
4900 valueReq.cmd = values.nv.join(',');
4901 valueReq.multi_data = 1;
4902 } else {
4903 valueReq.cmd = values.nv;
4904 }
4905 return valueReq;
4906 }
4907 function deal(paramD) {
4908 if (paramD) {
4909 return paramD;
4910 } else {
4911 return errUnknownObj;
4912 }
4913 }
4914 }
4915 function getRedirectData() {
4916 return stuffMake(arguments, {}, prepare, deal, null, false);
4917 function prepare(values, isPost) {
4918 var valueReq = {};
4919 valueReq.cmd = "vwim_mc_state,traffic_overrun,detect_new_version";
4920 valueReq.multi_data = 1;
4921 return valueReq;
4922 }
4923 function deal(paramD) {
4924 if (paramD) {
4925 var result = {};
4926 result.vwim_mc_state = paramD.vwim_mc_state;
4927 result.traffic_overrun = paramD.traffic_overrun;
4928 result.detect_new_version = paramD.detect_new_version;
4929 result.blc_wan_mode = informationAll.blc_wan_mode;
4930 return result;
4931 } else {
4932 return errUnknownObj;
4933 }
4934 }
4935 }
4936 function clearRedirectFlag() {
4937 return stuffMake(arguments, {}, prepare, deal, null, true);
4938 function prepare(values, isPost) {
4939 var valueReq = {};
4940 valueReq.goformId = "CLEAR_REDIRECT_FLAG";
4941 valueReq.flag_id = values.redirectFlags;
4942 return valueReq;
4943 }
4944 function deal(paramD) {
4945 if (paramD) {
4946 return paramD;
4947 } else {
4948 return errUnknownObj;
4949 }
4950 }
4951 }
4952 function getV4Switch() {
4953 return stuffMake(arguments, {}, prepare, deal, null, false);
4954 function prepare(values, isPost) {
4955 var valueReq = {};
4956 valueReq.cmd = "lock_zone_enable,pin_interlock_and_V4_lock";
4957 valueReq.multi_data = 1;
4958 return valueReq;
4959 }
4960 function deal(paramD) {
4961 if (paramD) {
4962 return paramD;
4963 } else {
4964 return errUnknownObj;
4965 }
4966 }
4967 }
4968 function setV4Switch() {
4969 return stuffMake(arguments, {}, prepare, deal, null, true);
4970 function prepare(values, isPost) {
4971 var valueReq = {};
4972 valueReq.goformId = "PIN_LOCK_V4_ENCODE";
4973 valueReq.pin_interlock_and_V4_lock = values.pin_interlock_and_V4_lock;
4974 valueReq.TspLock_key_data = values.TspLock_key_data;
4975 return valueReq;
4976 }
4977 function deal(paramD) {
4978 if (paramD && paramD.result == "success") {
4979 return paramD;
4980 } else {
4981 return errUnknownObj;
4982 }
4983 }
4984 }
4985 function getCellId() {
4986 return stuffMake(arguments, {}, prepare, deal, null, false);
4987 function prepare(values, isPost) {
4988 var valueReq = {};
4989 valueReq.cmd = "cell_id_list,global_cell_id,network_type,sub_network_type,cell_not_correct";
4990 valueReq.multi_data = 1;
4991 return valueReq;
4992 }
4993 function deal(paramD) {
4994 if (paramD) {
4995 return paramD;
4996 } else {
4997 return errUnknownObj;
4998 }
4999 }
5000 }
5001 function setCellIdSwitch() {
5002 return stuffMake(arguments, {}, prepare, deal, null, true);
5003 function prepare(values, isPost) {
5004 var valueReq = {};
5005 valueReq.goformId = "LOCK_ZONE";
5006 valueReq.lock_zone_enable = values.lock_zone_enable;
5007 return valueReq;
5008 }
5009 function deal(paramD) {
5010 if (paramD && paramD.result == "success") {
5011 return paramD;
5012 } else {
5013 return errUnknownObj;
5014 }
5015 }
5016 }
5017 function getUpdateType() {
5018 return stuffMake(arguments, {}, prepare, deal, null, false);
5019 function prepare(values, isPost) {
5020 var valueReq = {
5021 cmd: "update_type"
5022 };
5023 return valueReq;
5024 }
5025 function deal(paramD) {
5026 return {
5027 update_type: paramD.update_type ? paramD.update_type : "mifi_fota"
5028 }
5029 }
5030 }
5031 function getSecurityInfo() {
5032 return stuffMake(arguments, {}, prepare, deal, null, false);
5033 function prepare(values, isPost) {
5034 var valueReq = {};
5035 valueReq.cmd = "AuthMode,passPhrase";
5036 valueReq.multi_data = 1;
5037 return valueReq;
5038 }
5039 function deal(paramD) {
5040 if (paramD) {
5041 var result = {};
5042 result.AuthMode = paramD.AuthMode;
5043 result.passPhrase = config.PASSWORD_ENCODE ? Base64.decode(paramD.passPhrase) : paramD.passPhrase;
5044 return result;
5045 } else {
5046 return errUnknownObj;
5047 }
5048 }
5049 }
5050 //can delete
5051 function setSecurityInfo() {
5052 return stuffMake(arguments, {}, prepare, deal, null, true);
5053 function prepare(values, isPost) {
5054 var valueReq = {};
5055 valueReq.goformId = "SET_WIFI_SECURITY_INFO";
5056 valueReq.AuthMode = values.AuthMode;
5057 if (valueReq.AuthMode == "WPAPSKWPA2PSK") {
5058 valueReq.passPhrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
5059 }
5060 return valueReq;
5061 }
5062 function deal(paramD) {
5063 if (paramD) {
5064 return paramD;
5065 } else {
5066 return errUnknownObj;
5067 }
5068 }
5069 }
5070 function setWifiBasic() {
5071 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5072 function prepare(values) {
5073 var valueReq = {
5074 goformId: "SET_WIFI_SSID1_SETTINGS",
5075 ssid: values.SSID,
5076 broadcastSsidEnabled: values.broadcast,
5077 MAX_Access_num: values.station,
5078 security_mode: values.AuthMode,
5079 cipher: values.cipher,
5080 NoForwarding: values.NoForwarding,
5081 show_qrcode_flag: values.show_qrcode_flag
5082 };
5083 if (config.WIFI_WEP_SUPPORT) {
5084 valueReq.wep_default_key = values.wep_default_key;
5085 valueReq.wep_key_1 = values.wep_key_1;
5086 valueReq.wep_key_2 = values.wep_key_2;
5087 valueReq.wep_key_3 = values.wep_key_3;
5088 valueReq.wep_key_4 = values.wep_key_4;
5089 if (values.wep_default_key == '1') {
5090 valueReq.WEP2Select = values.WEP2Select;
5091 } else if (values.wep_default_key == '2') {
5092 valueReq.WEP3Select = values.WEP3Select;
5093 } else if (values.wep_default_key == '3') {
5094 valueReq.WEP4Select = values.WEP4Select;
5095 } else {
5096 valueReq.WEP1Select = values.WEP1Select;
5097 }
5098 }
5099 if (values.AuthMode == "WPAPSK" || values.AuthMode == "WPA2PSK" || values.AuthMode == "WPAPSKWPA2PSK" || values.AuthMode == "WPA3Personal" || values.AuthMode == "WPA2WPA3") {
5100 valueReq.security_shared_mode = values.cipher;
5101 valueReq.passphrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
5102 } else if (values.AuthMode == "SHARED") {
5103 valueReq.security_shared_mode = "WEP";
5104 valueReq.security_mode = "SHARED";
5105 } else {
5106 if (values.encryptType == "WEP") {
5107 valueReq.security_shared_mode = "WEP";
5108 valueReq.security_mode = "OPEN";
5109 } else {
5110 valueReq.security_shared_mode = "NONE";
5111 }
5112 }
5113 return valueReq;
5114 }
5115 function deal(paramD) {
5116 if (paramD) {
5117 return paramD;
5118 } else {
5119 return errUnknownObj;
5120 }
5121 }
5122 }
5123 function setWifiBasic4SSID2() {
5124 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5125 function prepare(values) {
5126 var valueReq = {
5127 goformId: "SET_WIFI_SSID2_SETTINGS",
5128 m_SSID: values.m_SSID,
5129 m_HideSSID: values.m_broadcast,
5130 m_MAX_Access_num: values.m_station,
5131 m_AuthMode: values.m_AuthMode,
5132 cipher: values.m_cipher,
5133 m_NoForwarding: values.m_NoForwarding,
5134 m_show_qrcode_flag: values.m_show_qrcode_flag
5135 };
5136 if (config.WIFI_WEP_SUPPORT) {
5137 valueReq.m_DefaultKeyID = values.m_wep_default_key;
5138 valueReq.m_Key1Str1 = values.m_wep_key_1;
5139 valueReq.m_Key2Str1 = values.m_wep_key_2;
5140 valueReq.m_Key3Str1 = values.m_wep_key_3;
5141 valueReq.m_Key4Str1 = values.m_wep_key_4;
5142 if (values.m_wep_default_key == '1') {
5143 valueReq.m_Key2Type = values.m_WEP2Select;
5144 } else if (values.m_wep_default_key == '2') {
5145 valueReq.m_Key3Type = values.m_WEP3Select;
5146 } else if (values.m_wep_default_key == '3') {
5147 valueReq.m_Key4Type = values.m_WEP4Select;
5148 } else {
5149 valueReq.m_Key1Type = values.m_WEP1Select;
5150 }
5151 }
5152 if (values.m_AuthMode == "WPAPSK" || values.m_AuthMode == "WPA2PSK" || values.m_AuthMode == "WPAPSKWPA2PSK" || values.m_AuthMode == "WPA3Personal" || values.m_AuthMode == "WPA2WPA3") {
5153 valueReq.m_EncrypType = values.m_cipher;
5154 valueReq.m_WPAPSK1 = config.PASSWORD_ENCODE ? Base64.encode(values.m_passPhrase) : values.m_passPhrase;
5155 } else if (values.m_AuthMode == "SHARED") {
5156 valueReq.m_EncrypType = "WEP";
5157 valueReq.m_security_mode = "SHARED";
5158 } else {
5159 if (values.m_encryptType == "WEP") {
5160 valueReq.m_EncrypType = "WEP";
5161 valueReq.m_security_mode = "OPEN";
5162 } else {
5163 valueReq.m_EncrypType = "NONE";
5164 }
5165 }
5166 return valueReq;
5167 }
5168 function deal(paramD) {
5169 if (paramD) {
5170 return paramD;
5171 } else {
5172 return errUnknownObj;
5173 }
5174 }
5175 }
5176 function getWifiBasic() {
5177 return stuffMake(arguments, {}, prepare, deal, null, false);
5178 function prepare(values, isPost) {
5179 var valueReq = {};
5180 var wpapsk = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "imei,rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
5181 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";
5182 valueReq.multi_data = 1;
5183 return valueReq;
5184 }
5185 function deal(paramD) {
5186 if (paramD) {
5187 var result = {
5188 wifi_enable: paramD.wifi_cur_state == "1" ? "1" : "0",
5189 multi_ssid_enable: paramD.m_ssid_enable,
5190 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
5191 AuthMode: paramD.AuthMode,
5192 SSID: paramD.SSID1,
5193 broadcast: paramD.HideSSID,
5194 apIsolation: paramD.NoForwarding,
5195 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
5196 MAX_Access_num: paramD.MAX_Access_num,
5197 cipher: paramD.EncrypType == "TKIP" ? "0" : paramD.EncrypType == "AES" ? 1 : 2,
5198 encryptType: paramD.EncrypType,
5199 show_qrcode_flag: paramD.show_qrcode_flag == "1" ? true : false,
5200 keyID: paramD.DefaultKeyID,
5201 Key1Str1: paramD.Key1Str1,
5202 Key2Str1: paramD.Key2Str1,
5203 Key3Str1: paramD.Key3Str1,
5204 Key4Str1: paramD.Key4Str1,
5205 m_SSID: paramD.m_SSID,
5206 m_broadcast: paramD.m_HideSSID,
5207 m_apIsolation: paramD.m_NoForwarding,
5208 m_MAX_Access_num: paramD.m_MAX_Access_num,
5209 m_AuthMode: paramD.m_AuthMode,
5210 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
5211 m_cipher: paramD.m_EncrypType == "TKIP" ? "0" : paramD.m_EncrypType == "AES" ? 1 : 2,
5212 m_show_qrcode_flag: paramD.m_show_qrcode_flag == "1" ? true : false,
5213 m_encryptType: paramD.m_EncrypType,
5214 m_keyID: paramD.m_DefaultKeyID,
5215 m_Key1Str1: paramD.m_Key1Str1,
5216 m_Key2Str1: paramD.m_Key2Str1,
5217 m_Key3Str1: paramD.m_Key3Str1,
5218 m_Key4Str1: paramD.m_Key4Str1,
5219 rotationFlag: paramD.rotationFlag,
5220 ap_station_enable: paramD.wifi_sta_connection
5221 };
5222 return result;
5223 } else {
5224 return errUnknownObj;
5225 }
5226 }
5227 }
5228 function setWifiBasicMultiSSIDSwitch() {
5229 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5230 function prepare(values) {
5231 var paraTemp = values;
5232 if (values.wifiEnabled == '0') {
5233 paraTemp = {
5234 wifiEnabled: values.wifiEnabled
5235 }
5236 }
5237 var valueReq = $.extend({
5238 goformId: "SET_WIFI_INFO",
5239 }, paraTemp);
5240 return valueReq;
5241 }
5242 function deal(paramD) {
5243 if (paramD) {
5244 return paramD;
5245 } else {
5246 return errUnknownObj;
5247 }
5248 }
5249 }
5250 function stuffMake(array, result, prepare, dealMethod, errorObject, isPost) {
5251 var values = array[0],
5252 callback = array[1],
5253 errorCallback = array[2];
5254 var objectToReturn;
5255 if (result && typeof result.errorType === 'string') {
5256 objectToReturn = $.extend(errUnknownObj, result);
5257 if (!callback) {
5258 return objectToReturn;
5259 }
5260 doCallback(objectToReturn, callback, errorCallback);
5261 } else {
5262 objectToReturn = $.extend({}, result);
5263 var valueReq;
5264 if (prepare) {
5265 valueReq = prepare(values, isPost);
5266 } else {
5267 valueReq = values;
5268 }
5269 if (!callback) {
5270 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5271 var r = reqSync(valueReq, isPost);
5272 if (dealMethod) {
5273 objectToReturn = $.extend({}, dealMethod(r));
5274 } else {
5275 objectToReturn = r;
5276 }
5277 }
5278 return objectToReturn;
5279 } else {
5280 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5281 reqAsync(valueReq, function (paramD) {
5282 if (dealMethod) {
5283 objectToReturn = $.extend({}, dealMethod(paramD));
5284 } else {
5285 objectToReturn = $.extend({}, paramD);
5286 }
5287 if (!valueReq.notCallback) {
5288 doCallback(objectToReturn, callback, errorCallback);
5289 }
5290 }, function () {
5291 if (errorObject) {
5292 objectToReturn = $.extend(errUnknownObj, errorObject);
5293 } else {
5294 objectToReturn = $.extend(errUnknownObj, {
5295 errorType: 'Unknown'
5296 });
5297 }
5298 doCallback(objectToReturn, callback, errorCallback);
5299 }, isPost);
5300 } else {
5301 doCallback(objectToReturn, callback, errorCallback);
5302 }
5303 }
5304 }
5305 function doCallback(resultToReturn, callback, errorCallback) {
5306 errorCallback = errorCallback ? errorCallback : callback;
5307 if (isErrorObject(resultToReturn)) {
5308 switch (resultToReturn.errorType) {
5309 case 'cellularNetworkError':
5310 case 'deviceError':
5311 case 'wifiConnectionError':
5312 window.receivedNonSpecificError(resultToReturn);
5313 break;
5314 default:
5315 errorCallback(resultToReturn);
5316 }
5317 } else {
5318 callback(resultToReturn);
5319 }
5320 }
5321 }
5322
5323 function getDialTimeInfo() {
5324 return stuffMake(arguments, {}, prepare, deal, null, false);
5325 function prepare(values, isPost) {
5326 var valueReq = {};
5327 valueReq.cmd = "voice_dial_time";
5328 return valueReq;
5329 }
5330 function deal(paramD) {
5331 if (paramD) {
5332 var result = {};
5333 result.dialTimeSeconds = paramD.voice_dial_time;
5334 return result;
5335 } else {
5336 return errUnknownObj;
5337 }
5338 }
5339 }
5340 function setDialTimeInfo() {
5341 return stuffMake(arguments, {}, prepare, deal, null, true);
5342 function prepare(values, isPost) {
5343 var valueReq = {};
5344 valueReq.goformId = "DIAL_TIME_SETTING";
5345 valueReq.dialTimeSeconds = values.dialTimeSeconds;
5346 return valueReq;
5347 }
5348 function deal(paramD) {
5349 if (paramD) {
5350 return paramD;
5351 } else {
5352 return errUnknownObj;
5353 }
5354 }
5355 }
5356
5357 function getCallTimeInfo() {
5358 return stuffMake(arguments, {}, prepare, deal, null, false);
5359 function prepare(values, isPost) {
5360 var valueReq = {};
5361 valueReq.cmd = "calling_time_enable,calling_time_duration,called_time_enable,called_time_duration";
5362 valueReq.multi_data = 1;
5363 return valueReq;
5364 }
5365 function deal(paramD) {
5366 if (paramD) {
5367 var result = {};
5368 result.callingLimitSetting = paramD.calling_time_enable == "1" ? "1" : "0";
5369 result.callingTimeMinutes = paramD.calling_time_duration;
5370 result.calledLimitSetting = paramD.called_time_enable == "1" ? "1" : "0";
5371 result.calledTimeMinutes = paramD.called_time_duration;
5372 return result;
5373 } else {
5374 return errUnknownObj;
5375 }
5376 }
5377 }
5378 function setCallTimeInfo() {
5379 return stuffMake(arguments, {}, prepare, deal, null, true);
5380 function prepare(values, isPost) {
5381 var valueReq = {};
5382 valueReq.goformId = "CALL_TIME_SETTING";
5383 valueReq.callingLimitSetting = values.callingLimitSetting;
5384 if (valueReq.callingLimitSetting == '1') {
5385 valueReq.callingTimeMinutes = values.callingTimeMinutes;
5386 }
5387 valueReq.calledLimitSetting = values.calledLimitSetting;
5388 if (valueReq.calledLimitSetting == '1') {
5389 valueReq.calledTimeMinutes = values.calledTimeMinutes;
5390 }
5391 return valueReq;
5392
5393 }
5394 function deal(paramD) {
5395 if (paramD) {
5396 return paramD;
5397 } else {
5398 return errUnknownObj;
5399 }
5400 }
5401 }
5402
5403 function getCallHoldInfo() {
5404 return stuffMake(arguments, {}, prepare, deal, null, false);
5405 function prepare(values, isPost) {
5406 var valueReq = {};
5407 valueReq.cmd = "call_hold_enable";
5408 return valueReq;
5409 }
5410 function deal(paramD) {
5411 if (paramD) {
5412 var result = {};
5413 result.callHoldSetting = paramD.call_hold_enable == "1" ? "1" : "0";
5414 return result;
5415 } else {
5416 return errUnknownObj;
5417 }
5418 }
5419 }
5420 function setCallHoldInfo() {
5421 return stuffMake(arguments, {}, prepare, deal, null, true);
5422 function prepare(values, isPost) {
5423 var valueReq = {};
5424 valueReq.goformId = "CALL_HOLD_SETTING";
5425 valueReq.callHoldSetting = values.callHoldSetting;
5426 return valueReq;
5427 }
5428 function deal(paramD) {
5429 if (paramD) {
5430 return paramD;
5431 } else {
5432 return errUnknownObj;
5433 }
5434 }
5435 }
5436
5437 function getHotlineInfo() {
5438 return stuffMake(arguments, {}, prepare, deal, null, false);
5439 function prepare(values, isPost) {
5440 var valueReq = {};
5441 valueReq.cmd = "hotline_enable,hotline_time,hotline_accempt_time,hotline_number";
5442 valueReq.multi_data = 1;
5443 return valueReq;
5444 }
5445 function deal(paramD) {
5446 if (paramD) {
5447 var result = {};
5448 result.hotlineSetting = paramD.hotline_enable == "1" ? "1" : "0";
5449 result.hotlineSeconds = paramD.hotline_time;
5450 result.hotlineAttemptsNumber = paramD.hotline_accempt_time;
5451 result.hotlineNumber = paramD.hotline_number;
5452 return result;
5453 } else {
5454 return errUnknownObj;
5455 }
5456 }
5457 }
5458 function setHotlineInfo() {
5459 return stuffMake(arguments, {}, prepare, deal, null, true);
5460 function prepare(values, isPost) {
5461 var valueReq = {};
5462 valueReq.goformId = "HOTLINE_SETTING";
5463 valueReq.hotlineSetting = values.hotlineSetting;
5464 if (valueReq.hotlineSetting == '1') {
5465 valueReq.hotlineSeconds = values.hotlineSeconds;
5466 valueReq.hotlineAttemptsNumber = values.hotlineAttemptsNumber;
5467 valueReq.hotlineNumber = values.hotlineNumber;
5468 }
5469 return valueReq;
5470 }
5471 function deal(paramD) {
5472 if (paramD) {
5473 return paramD;
5474 } else {
5475 return errUnknownObj;
5476 }
5477 }
5478 }
5479
5480 function getCallbackInfo() {
5481 return stuffMake(arguments, {}, prepare, deal, null, false);
5482 function prepare(values, isPost) {
5483 var valueReq = {};
5484 valueReq.cmd = "callback_enable,callback_time,callback_accempt_time,callback_answer_time,callback_shutdown_time";
5485 valueReq.multi_data = 1;
5486 return valueReq;
5487 }
5488 function deal(paramD) {
5489 if (paramD) {
5490 var result = {};
5491 result.callBackSetting = paramD.callback_enable == "1" ? "1" : "0";
5492 result.callBackTime = paramD.callback_time;
5493 result.callBackAttemptNumber = paramD.callback_accempt_time;
5494 result.callBackAnswerTime = paramD.callback_answer_time;
5495 result.callBackShutdownTime = paramD.callback_shutdown_time;
5496 return result;
5497 } else {
5498 return errUnknownObj;
5499 }
5500 }
5501 }
5502 function setCallbackInfo() {
5503 return stuffMake(arguments, {}, prepare, deal, null, true);
5504 function prepare(values, isPost) {
5505 var valueReq = {};
5506 valueReq.goformId = "CALL_BACK_SETTING";
5507 valueReq.callBackSetting = values.callBackSetting;
5508 if (valueReq.callBackSetting == '1') {
5509 valueReq.callBackTime = values.callBackTime;
5510 valueReq.callBackAttemptNumber = values.callBackAttemptNumber;
5511 valueReq.callBackAnswerTime = values.callBackAnswerTime;
5512 valueReq.callBackShutdownTime = values.callBackShutdownTime;
5513 }
5514 return valueReq;
5515 }
5516 function deal(paramD) {
5517 if (paramD) {
5518 return paramD;
5519 } else {
5520 return errUnknownObj;
5521 }
5522 }
5523 }
5524
5525 function getCallHideInfo() {
5526 return stuffMake(arguments, {}, prepare, deal, null, false);
5527 function prepare(values, isPost) {
5528 var valueReq = {};
5529 valueReq.cmd = "call_hide_enable";
5530 return valueReq;
5531 }
5532 function deal(paramD) {
5533 if (paramD) {
5534 var result = {};
5535 result.callHideSetting = paramD.call_hide_enable == "1" ? "1" : "0";
5536 return result;
5537 } else {
5538 return errUnknownObj;
5539 }
5540 }
5541 }
5542 function setCallHideInfo() {
5543 return stuffMake(arguments, {}, prepare, deal, null, true);
5544 function prepare(values, isPost) {
5545 var valueReq = {};
5546 valueReq.goformId = "CALL_HIDE_SETTING";
5547 valueReq.callHideSetting = values.callHideSetting;
5548 return valueReq;
5549 }
5550 function deal(paramD) {
5551 if (paramD) {
5552 return paramD;
5553 } else {
5554 return errUnknownObj;
5555 }
5556 }
5557 }
5558
5559 function getCallWhiteInfo() {
5560 return stuffMake(arguments, {}, prepare, deal, null, false);
5561 function prepare(values, isPost) {
5562 var valueReq = {};
5563 valueReq.cmd = "calling_white_enable,called_white_enable";
5564 valueReq.multi_data = 1;
5565 return valueReq;
5566 }
5567 function deal(paramD) {
5568 if (paramD) {
5569 var result = {};
5570 result.callingWhiteSetting = paramD.calling_white_enable == "1" ? "1" : "0";
5571 result.calledWhiteSetting = paramD.called_white_enable == "1" ? "1" : "0";
5572 return result;
5573 } else {
5574 return errUnknownObj;
5575 }
5576 }
5577 }
5578 function setCallWhiteInfo() {
5579 return stuffMake(arguments, {}, prepare, deal, null, true);
5580 function prepare(values, isPost) {
5581 var valueReq = {};
5582 valueReq.goformId = "CALL_WHITE_SETTING";
5583 valueReq.callingWhiteSetting = values.callingWhiteSetting;
5584 valueReq.calledWhiteSetting = values.calledWhiteSetting;
5585 return valueReq;
5586 }
5587 function deal(paramD) {
5588 if (paramD) {
5589 return paramD;
5590 } else {
5591 return errUnknownObj;
5592 }
5593 }
5594 }
5595
5596 function getCallBlackInfo() {
5597 return stuffMake(arguments, {}, prepare, deal, null, false);
5598 function prepare(values, isPost) {
5599 var valueReq = {};
5600 valueReq.cmd = "calling_black_enable,called_black_enable";
5601 valueReq.multi_data = 1;
5602 return valueReq;
5603 }
5604 function deal(paramD) {
5605 if (paramD) {
5606 var result = {};
5607 result.callingBlackSetting = paramD.calling_black_enable == "1" ? "1" : "0";
5608 result.calledBlackSetting = paramD.called_black_enable == "1" ? "1" : "0";
5609 return result;
5610 } else {
5611 return errUnknownObj;
5612 }
5613 }
5614 }
5615 function setCallBlackInfo() {
5616 return stuffMake(arguments, {}, prepare, deal, null, true);
5617 function prepare(values, isPost) {
5618 var valueReq = {};
5619 valueReq.goformId = "CALL_BLACK_SETTING";
5620 valueReq.callingBlackSetting = values.callingBlackSetting;
5621 valueReq.calledBlackSetting = values.calledBlackSetting;
5622 return valueReq;
5623 }
5624 function deal(paramD) {
5625 if (paramD) {
5626 return paramD;
5627 } else {
5628 return errUnknownObj;
5629 }
5630 }
5631 }
5632
5633 function getCallForwardAllInfo() {
5634 return stuffMake(arguments, {}, prepare, deal, null, false);
5635 function prepare(values, isPost) {
5636 var valueReq = {};
5637 valueReq.cmd = "call_forward_all_number";
5638 return valueReq;
5639 }
5640 function deal(paramD) {
5641 if (paramD) {
5642 var result = {};
5643 result.forwardAllNumber = paramD.call_forward_all_number;
5644 return result;
5645 } else {
5646 return errUnknownObj;
5647 }
5648 }
5649 }
5650 function setCallForwardAllInfo() {
5651 return stuffMake(arguments, {}, prepare, deal, null, true);
5652 function prepare(values, isPost) {
5653 var valueReq = {};
5654 valueReq.goformId = "CALL_FORWARD_ALL_SETTING";
5655 valueReq.forwardAllNumber = values.forwardAllNumber;
5656 return valueReq;
5657 }
5658 function deal(paramD) {
5659 if (paramD) {
5660 return paramD;
5661 } else {
5662 return errUnknownObj;
5663 }
5664 }
5665 }
5666
5667 function getCallNoAnswerInfo() {
5668 return stuffMake(arguments, {}, prepare, deal, null, false);
5669 function prepare(values, isPost) {
5670 var valueReq = {};
5671 valueReq.cmd = "call_forward_no_answer_number";
5672 return valueReq;
5673 }
5674 function deal(paramD) {
5675 if (paramD) {
5676 var result = {};
5677 result.forwardNoAnswerNumber = paramD.call_forward_no_answer_number;
5678 return result;
5679 } else {
5680 return errUnknownObj;
5681 }
5682 }
5683 }
5684 function setCallNoAnswerInfo() {
5685 return stuffMake(arguments, {}, prepare, deal, null, true);
5686 function prepare(values, isPost) {
5687 var valueReq = {};
5688 valueReq.goformId = "CALL_FORWARD_NO_ANSWER_SETTING";
5689 valueReq.forwardNoAnswerNumber = values.forwardNoAnswerNumber;
5690 return valueReq;
5691 }
5692 function deal(paramD) {
5693 if (paramD) {
5694 return paramD;
5695 } else {
5696 return errUnknownObj;
5697 }
5698 }
5699 }
5700
5701 function getCallNoReachInfo() {
5702 return stuffMake(arguments, {}, prepare, deal, null, false);
5703 function prepare(values, isPost) {
5704 var valueReq = {};
5705 valueReq.cmd = "call_forward_out_reach_number";
5706 return valueReq;
5707 }
5708 function deal(paramD) {
5709 if (paramD) {
5710 var result = {};
5711 result.forwardNoReachNumber = paramD.call_forward_out_reach_number;
5712 return result;
5713 } else {
5714 return errUnknownObj;
5715 }
5716 }
5717 }
5718 function setCallNoReachInfo() {
5719 return stuffMake(arguments, {}, prepare, deal, null, true);
5720 function prepare(values, isPost) {
5721 var valueReq = {};
5722 valueReq.goformId = "CALL_FORWARD_OUT_REACH_SETTING";
5723 valueReq.forwardNoReachNumber = values.forwardNoReachNumber;
5724 return valueReq;
5725 }
5726 function deal(paramD) {
5727 if (paramD) {
5728 return paramD;
5729 } else {
5730 return errUnknownObj;
5731 }
5732 }
5733 }
5734
5735 function getCallBusyInfo() {
5736 return stuffMake(arguments, {}, prepare, deal, null, false);
5737 function prepare(values, isPost) {
5738 var valueReq = {};
5739 valueReq.cmd = "call_forward_busy_number";
5740 return valueReq;
5741 }
5742 function deal(paramD) {
5743 if (paramD) {
5744 var result = {};
5745 result.forwardBusyNumber = paramD.call_forward_busy_number;
5746 return result;
5747 } else {
5748 return errUnknownObj;
5749 }
5750 }
5751 }
5752 function setCallBusyInfo() {
5753 return stuffMake(arguments, {}, prepare, deal, null, true);
5754 function prepare(values, isPost) {
5755 var valueReq = {};
5756 valueReq.goformId = "CALL_FORWARD_BUSY_SETTING";
5757 valueReq.forwardBusyNumber = values.forwardBusyNumber;
5758 return valueReq;
5759 }
5760 function deal(paramD) {
5761 if (paramD) {
5762 return paramD;
5763 } else {
5764 return errUnknownObj;
5765 }
5766 }
5767 }
5768
5769 function getCallingLockInfo() {
5770 return stuffMake(arguments, {}, prepare, deal, null, false);
5771 function prepare(values, isPost) {
5772 var valueReq = {};
5773 valueReq.cmd = "local_call_block_enable,ddd_call_block_enable,ddi_call_block_enable";
5774 valueReq.multi_data = 1;
5775 return valueReq;
5776 }
5777 function deal(paramD) {
5778 if (paramD) {
5779 var result = {};
5780 result.localCallLockSetting = paramD.local_call_block_enable == "1" ? "1" : "0";
5781 result.dddCallLockSetting = paramD.ddd_call_block_enable == "1" ? "1" : "0";
5782 result.ddiCallLockSetting = paramD.ddi_call_block_enable == "1" ? "1" : "0";
5783 return result;
5784 } else {
5785 return errUnknownObj;
5786 }
5787 }
5788 }
5789 function setCallingLockInfo() {
5790 return stuffMake(arguments, {}, prepare, deal, null, true);
5791 function prepare(values, isPost) {
5792 var valueReq = {};
5793 valueReq.goformId = "CALLING_LOCK_SETTING";
5794 valueReq.localCallLockSetting = values.localCallLockSetting;
5795 valueReq.dddCallLockSetting = values.dddCallLockSetting;
5796 valueReq.ddiCallLockSetting = values.ddiCallLockSetting;
5797 return valueReq;
5798 }
5799 function deal(paramD) {
5800 if (paramD) {
5801 return paramD;
5802 } else {
5803 return errUnknownObj;
5804 }
5805 }
5806 }
5807
5808 function getCalledLockInfo() {
5809 return stuffMake(arguments, {}, prepare, deal, null, false);
5810 function prepare(values, isPost) {
5811 var valueReq = {};
5812 valueReq.cmd = "received_call_block_enable";
5813 return valueReq;
5814 }
5815 function deal(paramD) {
5816 if (paramD) {
5817 var result = {};
5818 result.receiveCallLockSetting = paramD.received_call_block_enable == "1" ? "1" : "0";
5819 return result;
5820 } else {
5821 return errUnknownObj;
5822 }
5823 }
5824 }
5825 function setCalledLockInfo() {
5826 return stuffMake(arguments, {}, prepare, deal, null, true);
5827 function prepare(values, isPost) {
5828 var valueReq = {};
5829 valueReq.goformId = "CALLED_LOCK_SETTING";
5830 valueReq.receiveCallLockSetting = values.receiveCallLockSetting;
5831 return valueReq;
5832 }
5833 function deal(paramD) {
5834 if (paramD) {
5835 return paramD;
5836 } else {
5837 return errUnknownObj;
5838 }
5839 }
5840 }
5841
5842 function getCallCspInfo() {
5843 return stuffMake(arguments, {}, prepare, deal, null, false);
5844 function prepare(values, isPost) {
5845 var valueReq = {};
5846 valueReq.cmd = "call_csp_enable,call_csp_number";
5847 valueReq.multi_data = 1;
5848 return valueReq;
5849 }
5850 function deal(paramD) {
5851 if (paramD) {
5852 var result = {};
5853 result.cspSetting = paramD.call_csp_enable == "1" ? "1" : "0";
5854 result.cspNumber = paramD.call_csp_number;
5855 return result;
5856 } else {
5857 return errUnknownObj;
5858 }
5859 }
5860 }
5861 function setCallCspInfo() {
5862 return stuffMake(arguments, {}, prepare, deal, null, true);
5863 function prepare(values, isPost) {
5864 var valueReq = {};
5865 valueReq.goformId = "CALL_CSP_SETTING";
5866 valueReq.cspSetting = values.cspSetting;
5867 if (valueReq.cspSetting == '1') {
5868 valueReq.cspNumber = values.cspNumber;
5869 }
5870 return valueReq;
5871 }
5872 function deal(paramD) {
5873 if (paramD) {
5874 return paramD;
5875 } else {
5876 return errUnknownObj;
5877 }
5878 }
5879 }
5880
5881 function getCallbackNumbersInfo() {
5882 return stuffMake(arguments, {}, prepare, deal, null, false);
5883 function prepare(values, isPost) {
5884 var obj = {
5885 cmd: "GET_CALLBACK_NUMBERS"
5886 };
5887 return obj;
5888 }
5889 function deal(paramD) {
5890 var callbackList = paramD.call_back_list || [];
5891 return {
5892 callbackList: callbackList
5893 };
5894 }
5895 }
5896
5897 function addCallbackNumbers() {
5898 return stuffMake(arguments, {}, prepare, deal, null, true);
5899 function prepare(values, isPost) {
5900 var valueReq = {};
5901 valueReq.goformId = "ADD_CALLBACK_NUMBERS";
5902 valueReq.addNumber = values.addNumber;
5903 return valueReq;
5904 }
5905 function deal(paramD) {
5906 if (paramD) {
5907 return paramD;
5908 } else {
5909 return errUnknownObj;
5910 }
5911 }
5912 }
5913
5914 function deleteCallbackNumbers() {
5915 return stuffMake(arguments, {}, prepare, deal, null, true);
5916 function prepare(values, isPost) {
5917 var valueReq = {};
5918 valueReq.goformId = "DELETE_CALLBACK_NUMBERS";
5919 valueReq.deleteIndex = values.deleteIndex;
5920 return valueReq;
5921 }
5922 function deal(paramD) {
5923 if (paramD) {
5924 return paramD;
5925 } else {
5926 return errUnknownObj;
5927 }
5928 }
5929 }
5930
5931 function clearCallbackNumbers() {
5932 return stuffMake(arguments, {}, prepare, deal, null, true);
5933 function prepare(values, isPost) {
5934 var valueReq = {};
5935 valueReq.goformId = "CLEAR_CALLBACK_NUMBERS";
5936 return valueReq;
5937 }
5938 function deal(paramD) {
5939 if (paramD) {
5940 return paramD;
5941 } else {
5942 return errUnknownObj;
5943 }
5944 }
5945 }
5946
5947 function getCallingWhiteNumbersInfo() {
5948 return stuffMake(arguments, {}, prepare, deal, null, false);
5949 function prepare(values, isPost) {
5950 var obj = {
5951 cmd: "GET_CALLING_WHITE_NUMBERS"
5952 };
5953 return obj;
5954 }
5955 function deal(paramD) {
5956 var callingList = paramD.calling_white_list || [];
5957 return {
5958 callingList: callingList
5959 };
5960 }
5961 }
5962
5963 function addCallingWhiteNumbers() {
5964 return stuffMake(arguments, {}, prepare, deal, null, true);
5965 function prepare(values, isPost) {
5966 var valueReq = {};
5967 valueReq.goformId = "ADD_CALLING_WHITE_NUMBERS";
5968 valueReq.addNumber = values.addNumber;
5969 return valueReq;
5970 }
5971 function deal(paramD) {
5972 if (paramD) {
5973 return paramD;
5974 } else {
5975 return errUnknownObj;
5976 }
5977 }
5978 }
5979
5980 function deleteCallingWhiteNumbers() {
5981 return stuffMake(arguments, {}, prepare, deal, null, true);
5982 function prepare(values, isPost) {
5983 var valueReq = {};
5984 valueReq.goformId = "DELETE_CALLING_WHITE_NUMBERS";
5985 valueReq.deleteIndex = values.deleteIndex;
5986 return valueReq;
5987 }
5988 function deal(paramD) {
5989 if (paramD) {
5990 return paramD;
5991 } else {
5992 return errUnknownObj;
5993 }
5994 }
5995 }
5996
5997 function clearCallingWhiteNumbers() {
5998 return stuffMake(arguments, {}, prepare, deal, null, true);
5999 function prepare(values, isPost) {
6000 var valueReq = {};
6001 valueReq.goformId = "CLEAR_CALLING_WHITE_NUMBERS";
6002 return valueReq;
6003 }
6004 function deal(paramD) {
6005 if (paramD) {
6006 return paramD;
6007 } else {
6008 return errUnknownObj;
6009 }
6010 }
6011 }
6012
6013 function getCalledWhiteNumbersInfo() {
6014 return stuffMake(arguments, {}, prepare, deal, null, false);
6015 function prepare(values, isPost) {
6016 var obj = {
6017 cmd: "GET_CALLED_WHITE_NUMBERS"
6018 };
6019 return obj;
6020 }
6021 function deal(paramD) {
6022 var calledList = paramD.called_white_list || [];
6023 return {
6024 calledList: calledList
6025 };
6026 }
6027 }
6028
6029 function addCalledWhiteNumbers() {
6030 return stuffMake(arguments, {}, prepare, deal, null, true);
6031 function prepare(values, isPost) {
6032 var valueReq = {};
6033 valueReq.goformId = "ADD_CALLED_WHITE_NUMBERS";
6034 valueReq.addNumber = values.addNumber;
6035 return valueReq;
6036 }
6037 function deal(paramD) {
6038 if (paramD) {
6039 return paramD;
6040 } else {
6041 return errUnknownObj;
6042 }
6043 }
6044 }
6045
6046 function deleteCalledWhiteNumbers() {
6047 return stuffMake(arguments, {}, prepare, deal, null, true);
6048 function prepare(values, isPost) {
6049 var valueReq = {};
6050 valueReq.goformId = "DELETE_CALLED_WHITE_NUMBERS";
6051 valueReq.deleteIndex = values.deleteIndex;
6052 return valueReq;
6053 }
6054 function deal(paramD) {
6055 if (paramD) {
6056 return paramD;
6057 } else {
6058 return errUnknownObj;
6059 }
6060 }
6061 }
6062
6063 function clearCalledWhiteNumbers() {
6064 return stuffMake(arguments, {}, prepare, deal, null, true);
6065 function prepare(values, isPost) {
6066 var valueReq = {};
6067 valueReq.goformId = "CLEAR_CALLED_WHITE_NUMBERS";
6068 return valueReq;
6069 }
6070 function deal(paramD) {
6071 if (paramD) {
6072 return paramD;
6073 } else {
6074 return errUnknownObj;
6075 }
6076 }
6077 }
6078
6079 function getCallingBlackNumbersInfo() {
6080 return stuffMake(arguments, {}, prepare, deal, null, false);
6081 function prepare(values, isPost) {
6082 var obj = {
6083 cmd: "GET_CALLING_BLACK_NUMBERS"
6084 };
6085 return obj;
6086 }
6087 function deal(paramD) {
6088 var callingList = paramD.calling_black_list || [];
6089 return {
6090 callingList: callingList
6091 };
6092 }
6093 }
6094
6095 function addCallingBlackNumbers() {
6096 return stuffMake(arguments, {}, prepare, deal, null, true);
6097 function prepare(values, isPost) {
6098 var valueReq = {};
6099 valueReq.goformId = "ADD_CALLING_BLACK_NUMBERS";
6100 valueReq.addNumber = values.addNumber;
6101 return valueReq;
6102 }
6103 function deal(paramD) {
6104 if (paramD) {
6105 return paramD;
6106 } else {
6107 return errUnknownObj;
6108 }
6109 }
6110 }
6111
6112 function deleteCallingBlackNumbers() {
6113 return stuffMake(arguments, {}, prepare, deal, null, true);
6114 function prepare(values, isPost) {
6115 var valueReq = {};
6116 valueReq.goformId = "DELETE_CALLING_BLACK_NUMBERS";
6117 valueReq.deleteIndex = values.deleteIndex;
6118 return valueReq;
6119 }
6120 function deal(paramD) {
6121 if (paramD) {
6122 return paramD;
6123 } else {
6124 return errUnknownObj;
6125 }
6126 }
6127 }
6128
6129 function clearCallingBlackNumbers() {
6130 return stuffMake(arguments, {}, prepare, deal, null, true);
6131 function prepare(values, isPost) {
6132 var valueReq = {};
6133 valueReq.goformId = "CLEAR_CALLING_BLACK_NUMBERS";
6134 return valueReq;
6135 }
6136 function deal(paramD) {
6137 if (paramD) {
6138 return paramD;
6139 } else {
6140 return errUnknownObj;
6141 }
6142 }
6143 }
6144
6145 function getCalledBlackNumbersInfo() {
6146 return stuffMake(arguments, {}, prepare, deal, null, false);
6147 function prepare(values, isPost) {
6148 var obj = {
6149 cmd: "GET_CALLED_BLACK_NUMBERS"
6150 };
6151 return obj;
6152 }
6153 function deal(paramD) {
6154 var calledList = paramD.called_black_list || [];
6155 return {
6156 calledList: calledList
6157 };
6158 }
6159 }
6160
6161 function addCalledBlackNumbers() {
6162 return stuffMake(arguments, {}, prepare, deal, null, true);
6163 function prepare(values, isPost) {
6164 var valueReq = {};
6165 valueReq.goformId = "ADD_CALLED_BLACK_NUMBERS";
6166 valueReq.addNumber = values.addNumber;
6167 return valueReq;
6168 }
6169 function deal(paramD) {
6170 if (paramD) {
6171 return paramD;
6172 } else {
6173 return errUnknownObj;
6174 }
6175 }
6176 }
6177
6178 function deleteCalledBlackNumbers() {
6179 return stuffMake(arguments, {}, prepare, deal, null, true);
6180 function prepare(values, isPost) {
6181 var valueReq = {};
6182 valueReq.goformId = "DELETE_CALLED_BLACK_NUMBERS";
6183 valueReq.deleteIndex = values.deleteIndex;
6184 return valueReq;
6185 }
6186 function deal(paramD) {
6187 if (paramD) {
6188 return paramD;
6189 } else {
6190 return errUnknownObj;
6191 }
6192 }
6193 }
6194
6195 function clearCalledBlackNumbers() {
6196 return stuffMake(arguments, {}, prepare, deal, null, true);
6197 function prepare(values, isPost) {
6198 var valueReq = {};
6199 valueReq.goformId = "CLEAR_CALLED_BLACK_NUMBERS";
6200 return valueReq;
6201 }
6202 function deal(paramD) {
6203 if (paramD) {
6204 return paramD;
6205 } else {
6206 return errUnknownObj;
6207 }
6208 }
6209 }
6210
6211 function reqSync(values, isPost) {
6212 return reqAJAX(values, null, null, false, isPost);
6213 }
6214 function reqAsync(values, successCallback, errorCallback, isPost) {
6215 reqAJAX(values, successCallback, errorCallback, true, isPost);
6216 }
6217 function getString(values){
6218 var regexp = /^[A-z0-9]+$/;
6219 var matches = values.match(regexp);
6220 if (matches == null){
6221 return "error";
6222 } else {
6223 return values;
6224 }
6225 }
6226 function reqAJAX(values, successCallback, errorCallback, async, isPost) {
6227 var result = null;
6228 $.ajax({
6229 type: !!isPost ? "POST" : "GET",
6230 url: isPost ? "/reqproc/proc_post" : values.cmd ? "/reqproc/proc_get" : "/reqproc/proc_post",
6231 data: values,
6232 dataType: "json",
6233 async: !!async,
6234 cache: false,
6235 error: function (paramD) {
6236 if (async) {
6237 errorCallback(paramD);
6238 } else if (paramD.status == 200) {
6239 result = jQuery.parseJSON('(' + getString(paramD.responseText) + ')');
6240 }
6241 },
6242 success: function (paramD) {
6243 if (async) {
6244 successCallback(paramD);
6245 } else {
6246 result = paramD;
6247 }
6248 }
6249 });
6250 if (!async) {
6251 return result;
6252 }
6253 }
6254 var informationAll = {
6255 networkType: "",
6256 signalImg: "0",
6257 spn_b1_flag: "1",
6258 spn_name_data: "",
6259 spn_b2_flag: "1",
6260 networkOperator: "China Mobile",
6261 connectStatus: "ppp_disconnected",
6262 rj45ConnectStatus: "rj45_dead",
6263 attachedDevices: [],
6264 ssid1AttachedNum: 0,
6265 ssid2AttachedNum: 0,
6266 data_counter: {
6267 uploadRate: 0,
6268 downloadRate: 0,
6269 totalSent: 0,
6270 totalReceived: 0,
6271 totalConnectedTime: 0,
6272 currentSent: 0,
6273 currentReceived: 0,
6274 currentConnectedTime: 0,
6275 monthlySent: 0,
6276 monthlyReceived: 0,
6277 monthlyConnectedTime: 0,
6278 month: ''
6279 },
6280 newSmsReceived: false,
6281 smsReportReceived: false,
6282 smsUnreadCount: "0",
6283 isLoggedIn: undefined,
6284 limitVolumeEnable: false,
6285 limitVolumeType: '1',
6286 limitVolumePercent: "100",
6287 limitVolumeSize: "0",
6288 allowRoamingUpdate: "0",
6289 blc_wan_mode: "",
6290 ap_station_enable: undefined,
6291 ap_station_mode: undefined,
6292 dialMode: '',
6293 ethWanMode: 'AUTO',
6294 fota_user_selector: '',
6295 defaultWanName: ""
6296 };
6297 var errUnknownObj = {
6298 errorType: 'UnknownError',
6299 errorId: '123',
6300 errorText: 'UnknownError'
6301 };
6302 var updateTimerFlag = true;
6303 return {
6304 clearRedirectFlag: clearRedirectFlag,
6305 connect: connect,
6306 disconnect: disconnect,
6307 getSIMPhoneBookCapacity: getSIMPhoneBookCapacity,
6308 getDevicePhoneBookCapacity: getDevicePhoneBookCapacity,
6309 getDevicePhoneBooks: getDevicePhoneBooks,
6310 getSIMPhoneBooks: getSIMPhoneBooks,
6311 getPhoneBooks: getPhoneBooks,
6312 getPhoneBookReady: getPhoneBookReady,
6313 getPhoneBooksByGroup: getPhoneBooksByGroup,
6314 deletePhoneBooks: deletePhoneBooks,
6315 deleteAllPhoneBooks: deleteAllPhoneBooks,
6316 deleteAllPhoneBooksByGroup: deleteAllPhoneBooksByGroup,
6317 savePhoneBook: savePhoneBook,
6318 deleteAllMessages: deleteAllMessages,
6319 deleteMessage: deleteMessage,
6320 setSmsRead: setSmsRead,
6321 sendSMS: sendSMS,
6322 saveSMS: saveSMS,
6323 getSMSReady: getSMSReady,
6324 getSMSMessages: getSMSMessages,
6325 getSMSDeliveryReport: getSMSDeliveryReport,
6326 getSmsCapability: getSmsCapability,
6327 resetNewSmsReceivedVar: resetNewSmsReceivedVar,
6328 resetSmsReportReceivedVar: resetSmsReportReceivedVar,
6329 getSmsSetting: getSmsSetting,
6330 setSmsSetting: setSmsSetting,
6331 getAttachedCableDevices: getAttachedCableDevices,
6332 getCurrentlyAttachedDevicesInfo: getCurrentlyAttachedDevicesInfo,
6333 getConnectionInfo: getConnectionInfo,
6334 getRedirectData: getRedirectData,
6335 getLanguage: getLanguage,
6336 setLanguage: setLanguage,
6337 getNetSelectInfo: getNetSelectInfo,
6338 getSecurityInfo: getSecurityInfo,
6339 setSecurityInfo: setSecurityInfo,
6340 getStatusInfo: getStatusInfo,
6341 getConnectionMode: getConnectionMode,
6342 setConnectionMode: setConnectionMode,
6343 getWifiBasic: getWifiBasic,
6344 setWifiBasic: setWifiBasic,
6345 setWifiBasic4SSID2: setWifiBasic4SSID2,
6346 setWifiBasicMultiSSIDSwitch: setWifiBasicMultiSSIDSwitch,
6347 getWpsInfo: getWpsInfo,
6348 openWps: openWps,
6349 getSleepMode: getSleepMode,
6350 setSleepMode: setSleepMode,
6351 getWifiAdvance: getWifiAdvance,
6352 setWifiAdvance: setWifiAdvance,
6353 getWifiRange: getWifiRange,
6354 setWifiRange: setWifiRange,
6355
6356 getLoginStatus: getLoginStatus,
6357 getLoginData: getLoginData,
6358 login: login,
6359 logout: logout,
6360 changeManageInfo: changeManageInfo,
6361 getPinData: getPinData,
6362 enablePin: enablePin,
6363 disablePin: disablePin,
6364 changePin: changePin,
6365 enterPIN: enterPIN,
6366 enterPUK: enterPUK,
6367 getLanInfo: getLanInfo,
6368 setLanInfo: setLanInfo,
6369 getApnSettings: getApnSettings,
6370 getNetworkStatus: getNetworkStatus,
6371 deleteApn: deleteApn,
6372 setDefaultApn: setDefaultApn,
6373 addOrEditApn: addOrEditApn,
6374 getQuickSettingInfo: getQuickSettingInfo,
6375 setQuickSetting4IPv6: setQuickSetting4IPv6,
6376 scanForNetwork: scanForNetwork,
6377 setBearerPreference: setBearerPreference,
6378 editHostName: editHostName,
6379 getSiteWhiteList: getSiteWhiteList,
6380 removeSiteWhite: removeSiteWhite,
6381 saveSiteWhite: saveSiteWhite,
6382 setNetwork: setNetwork,
6383 getUpnpSetting: getUpnpSetting,
6384 setUpnpSetting: setUpnpSetting,
6385 getDmzSetting: getDmzSetting,
6386 setDmzSetting: setDmzSetting,
6387 getDeviceInfo: getDeviceInfo,
6388 getDeviceInfoLow: getDeviceInfoLow,
6389 getPortForward: getPortForward,
6390 setPortForward: setPortForward,
6391 getPortFilter: getPortFilter,
6392 setPortFilterBasic: setPortFilterBasic,
6393 setPortFilter: setPortFilter,
6394 deleteFilterRules: deleteFilterRules,
6395 getPortMap: getPortMap,
6396 setPortMap: setPortMap,
6397 enablePortMap: enablePortMap,
6398 deleteMapRules: deleteMapRules,
6399 getTrafficAlertInfo: getTrafficAlertInfo,
6400 setTrafficAlertInfo: setTrafficAlertInfo,
6401 getCurrentUpgradeState: getCurrentUpgradeState,
6402 setUpgradeSelectOp: setUpgradeSelectOp,
6403 addTimerThings: addTimerSomething,
6404 removeTimerThings: removeTimerSomething,
6405 getPackSizeInfo: getPackSizeInfo,
6406 getMandatory: getMandatory,
6407 getOTAUpdateSetting: getOTAUpdateSetting,
6408 setOTAUpdateSetting: setOTAUpdateSetting,
6409 getManualOTAUpdateSetting: getManualOTAUpdateSetting,
6410 setManualOTAUpdateSetting: setManualOTAUpdateSetting,
6411 getSignalStrength: getSignalStrength,
6412 getOTAlastCheckTime: getOTAlastCheckTime,
6413 clearUpdateResult: clearUpdateResult,
6414 refreshAPStationStatus: refreshAPStationStatus,
6415 getSntpParams: getSntpParams,
6416 setSntpSetting: setSntpSetting,
6417 setSNTPDate: setSNTPDate,
6418 restoreFactorySettings: restoreFactorySettings,
6419 checkRestoreStatus: checkRestoreStatus,
6420 getSysSecurity: getSysSecurity,
6421 setSysSecurity: setSysSecurity,
6422 deleteForwardRules: deleteForwardRules,
6423 enableVirtualServer: enableVirtualServer,
6424 getSDConfiguration: getSDConfiguration,
6425 setSdCardMode: setSdCardMode,
6426 checkFileExists: checkFileExists,
6427 getFileList: getFileList,
6428 fileRename: fileRename,
6429 getSdMemorySizes: getSdMemorySizes,
6430 deleteFilesAndFolders: deleteFilesAndFolders,
6431 createFolder: createFolder,
6432 setSdCardSharing: setSdCardSharing,
6433 setUpdateInfoWarning: setUpdateInfoWarning,
6434 getUpdateInfoWarning: getUpdateInfoWarning,
6435 getAPStationBasic: getAPStationBasic,
6436 setAPStationBasic: setAPStationBasic,
6437 getWdsInfo: getWdsInfo,
6438 setWDS: setWDS,
6439 addUrlFilterRule: addUrlFilterRule,
6440 getUrlFilterList: getUrlFilterList,
6441 deleteSelectedRules: deleteSelectedRules,
6442 getMacFilterInfo: getMacFilterInfo,
6443 setMacFilter: setMacFilter,
6444 getFastbootSetting: getFastbootSetting,
6445 setFastbootSetting: setFastbootSetting,
6446 turnOffDevice: turnOffDevice,
6447 restart: restart,
6448 getScheduleSetting: getScheduleSetting,
6449 setScheduleSetting: setScheduleSetting,
6450 getCwmpSetting: getCwmpSetting,
6451 setCwmpSetting: setCwmpSetting,
6452 updateTimerFlag: updateTimerFlag,
6453 childGroupList: childGroupList,
6454 addChildGroup: addChildGroup,
6455 removeChildGroup: removeChildGroup,
6456 checkCurrentUserInChildGroup: checkCurrentUserInChildGroup,
6457 getTimeLimited: getTimeLimited,
6458 saveTimeLimited: saveTimeLimited,
6459 getHostNameList: getHostNameList,
6460 getHotspotList: getHotspotList,
6461 searchHotspot: searchHotspot,
6462 getSearchHotspotList: getSearchHotspotList,
6463 saveHotspot: saveHotspot,
6464 deleteHotspot: deleteHotspot,
6465 connectHotspot: connectHotspot,
6466 disconnectHotspot: disconnectHotspot,
6467 getOpMode: getOpMode,
6468 getRj45PlugState: getRj45PlugState,
6469 SetOperationMode: SetOperationMode,
6470 getPppoeParams: getPppoeParams,
6471 setPppoeDialMode: setPppoeDialMode,
6472 getTsw: getTsw,
6473 saveTsw: saveTsw,
6474 trafficCalibration: trafficCalibration,
6475 getParams: getParams,
6476 getNewVersionState: getNewVersionState,
6477 getUpgradeResult: getUpgradeResult,
6478 getV4Switch: getV4Switch,
6479 setV4Switch: setV4Switch,
6480 getCellId: getCellId,
6481 setCellIdSwitch: setCellIdSwitch,
6482 getDdnsParams: getDdnsParams,
6483 setDDNSForward: setDDNSForward,
6484 getUpdateType: getUpdateType,
6485 getCurretnMAC: getCurretnMAC,
6486 getUSSDResponse: getUSSDResponse,
6487 USSDReplyCancel: USSDReplyCancel,
6488 getNetworkUnlockTimes: getNetworkUnlockTimes,
6489 unlockNetwork: unlockNetwork,
6490 getSyslogInfo: getSyslogInfo,
6491 setSysLog: setSysLog,
6492 getDialTimeInfo: getDialTimeInfo,
6493 setDialTimeInfo: setDialTimeInfo,
6494 getCallTimeInfo: getCallTimeInfo,
6495 setCallTimeInfo: setCallTimeInfo,
6496 getCallHoldInfo: getCallHoldInfo,
6497 setCallHoldInfo: setCallHoldInfo,
6498 getHotlineInfo: getHotlineInfo,
6499 setHotlineInfo: setHotlineInfo,
6500 getCallbackInfo: getCallbackInfo,
6501 setCallbackInfo: setCallbackInfo,
6502 getCallHideInfo: getCallHideInfo,
6503 setCallHideInfo: setCallHideInfo,
6504 getCallWhiteInfo: getCallWhiteInfo,
6505 setCallWhiteInfo: setCallWhiteInfo,
6506 getCallBlackInfo: getCallBlackInfo,
6507 setCallBlackInfo: setCallBlackInfo,
6508 getCallForwardAllInfo: getCallForwardAllInfo,
6509 setCallForwardAllInfo: setCallForwardAllInfo,
6510 getCallNoAnswerInfo: getCallNoAnswerInfo,
6511 setCallNoAnswerInfo: setCallNoAnswerInfo,
6512 getCallNoReachInfo: getCallNoReachInfo,
6513 setCallNoReachInfo: setCallNoReachInfo,
6514 getCallBusyInfo: getCallBusyInfo,
6515 setCallBusyInfo: setCallBusyInfo,
6516 getCallingLockInfo: getCallingLockInfo,
6517 setCallingLockInfo: setCallingLockInfo,
6518 getCalledLockInfo: getCalledLockInfo,
6519 setCalledLockInfo: setCalledLockInfo,
6520 getCallCspInfo: getCallCspInfo,
6521 setCallCspInfo: setCallCspInfo,
6522 getCallbackNumbersInfo: getCallbackNumbersInfo,
6523 addCallbackNumbers: addCallbackNumbers,
6524 deleteCallbackNumbers: deleteCallbackNumbers,
6525 clearCallbackNumbers: clearCallbackNumbers,
6526 getCallingWhiteNumbersInfo: getCallingWhiteNumbersInfo,
6527 addCallingWhiteNumbers: addCallingWhiteNumbers,
6528 deleteCallingWhiteNumbers: deleteCallingWhiteNumbers,
6529 clearCallingWhiteNumbers: clearCallingWhiteNumbers,
6530 getCalledWhiteNumbersInfo: getCalledWhiteNumbersInfo,
6531 addCalledWhiteNumbers: addCalledWhiteNumbers,
6532 deleteCalledWhiteNumbers: deleteCalledWhiteNumbers,
6533 clearCalledWhiteNumbers: clearCalledWhiteNumbers,
6534 getCallingBlackNumbersInfo: getCallingBlackNumbersInfo,
6535 addCallingBlackNumbers: addCallingBlackNumbers,
6536 deleteCallingBlackNumbers: deleteCallingBlackNumbers,
6537 clearCallingBlackNumbers: clearCallingBlackNumbers,
6538 getCalledBlackNumbersInfo: getCalledBlackNumbersInfo,
6539 addCalledBlackNumbers: addCalledBlackNumbers,
6540 deleteCalledBlackNumbers: deleteCalledBlackNumbers,
6541 clearCalledBlackNumbers: clearCalledBlackNumbers,
6542 };
6543});
6544
6545 // Router����
6546
6547define("adm_lan","jquery knockout set service".split(" "),
6548
6549 function ($, ko, config, service) {
6550
6551 var originfrmLan = "";
6552
6553 // ��ȡ·�����������Ϣ
6554 function getLanInfo() {
6555 return service.getLanInfo();
6556 }
6557
6558 function hex(val) {
6559 var h = (val - 0).toString(16);
6560 if (h.length == 1)
6561 h = '0' + h;
6562 return h.toUpperCase();
6563 }
6564
6565 function LanViewModel() {
6566 var target = this;
6567
6568 var info = getLanInfo();
6569
6570 target.dhcpStart = ko.observable(info.dhcpStart);
6571 target.dhcpEnd = ko.observable(info.dhcpEnd);
6572 target.dhcpLease = ko.observable(info.dhcpLease);
6573
6574 target.ipAddress = ko.observable(info.ipAddress);
6575 target.subnetMask = ko.observable(info.subnetMask);
6576 target.dhcpServer = ko.observable(info.dhcpServer);
6577
6578 target.macAddress = ko.observable(info.macAddress);
6579 target.showMacAddress = ko.observable(config.SHOW_MAC_ADDRESS);
6580
6581 target.hasWifi = ko.observable(config.HAS_WIFI);
6582 target.hasUssd = config.HAS_USSD;
6583 target.hasDdns = config.DDNS_SUPPORT;
6584
6585 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
6586
6587 target.clear = function () {
6588 clearTimer();
6589 init();
6590 clearValidateMsg();
6591 };
6592
6593 target.refreshStatus = function () {
6594 var connInfo = service.getConnectionInfo();
6595 if (connInfo.connectStatus == 'ppp_disconnected') {
6596 $('input', '#frmLan').each(function () {
6597 $(this).attr("disabled", false);
6598 });
6599 } else {
6600 $('input', '#frmLan').each(function () {
mj.qu6ac12722025-07-03 02:12:24 -07006601 $(this).attr("disabled", false);
zw.wang96c5d4e2025-07-01 11:35:13 +08006602 });
6603
6604 clearValidateMsg();
6605 }
6606 };
6607
6608 // ������Ӧ�������������ñ���
6609 target.saveAct = function () {
6610 showLoading();
6611 var params = {
6612 ipAddress: target.ipAddress(),
6613 subnetMask: target.subnetMask(),
6614 dhcpServer: target.dhcpServer(),
6615 dhcpStart: target.dhcpStart(),
6616 dhcpEnd: target.dhcpEnd(),
6617 dhcpLease: target.dhcpLease()
6618 };
6619
6620 service.setLanInfo(params, function (result) {
6621 if (result.result == "success") {
6622 successOverlay();
6623 target.clear();
6624 } else {
6625 errorOverlay();
6626 }
6627 });
6628 };
6629
6630 // ������Ӧ�������������ñ���
6631 target.save = function () {
6632 var frmLanObj = $('#frmLan').serialize();
6633 if (frmLanObj == originfrmLan) {
6634 showAlert("setting_no_change");
6635 return false;
6636 }
6637 if (config.RJ45_SUPPORT) {
6638 var pppObj = service.getPppoeParams();
6639 if (sf_isValidate_StaticIP(pppObj.static_wan_ipaddr, target.ipAddress(), target.subnetMask())) {
6640 showAlert("lan_tip_staticip_notsame");
6641 return false;
6642 }
6643 }
6644 showConfirm("lan_confirm_reopen", function () {
6645 target.saveAct();
6646 });
6647 };
6648
6649 target.refreshStatus();
6650 // dhcpServer�л���Ӧ����
6651 target.dhcpServerHandler = function () {
6652 $("#txtIpAddress").parent().find(".error").hide();
6653 $("#txtIpAddress").show();
6654 return true;
6655 };
6656 addTimeout(function () {
6657 originfrmLan = $('#frmLan').serialize();
6658 }, 500);
6659 }
6660
6661
6662 function sf_opAnd4Byte(i_v1, i_v2) {
6663 var index;
6664 var var1 = [];
6665 var var2 = [];
6666 var result='0x';
6667
6668 for (index=2,index_tmp=0; index<10; index+=2,index_tmp++) {
6669 var1[index_tmp]='0x'+i_v1.substring(index,index+2);
6670 var2[index_tmp]='0x'+i_v2.substring(index,index+2);
6671 }
6672
6673 for (index=0; index<4; index++) {
6674 result = result + hex(var1[index]&var2[index]);
6675 }
6676
6677 return result - 0;
6678 }
6679
6680 // ������ر���У�����
6681 $.validator.addMethod("dhcp_check", function (i_value, i_element, i_parameter) {
6682 var dhcpIp = i_parameter == "start" ? $('#txtDhcpIpPoolStart').val() : $('#txtDhcpIpPoolEnd').val();
6683 var result = sf_isValidate_Gateway($('#txtIpAddress').val(), $('#txtSubnetMask').val(), dhcpIp);
6684 return this.optional(i_element) || result;
6685 });
6686
6687 $.validator.addMethod("dhcpCompare", function (i_value, i_element, i_parameter) {
6688 var result;
6689 if(i_parameter == "#txtDhcpIpPoolStart") {
6690 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), $(i_parameter).val(), i_value);
6691 }
6692 else {
6693 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), i_value, $(i_parameter).val());
6694 }
6695 return result != 1;
6696 });
6697
6698 $.validator.addMethod("ipRange", function (i_value, i_element, i_parameter) {
6699 var DHCP_flag = false;
6700 if($('#dhcpEnable').is(':checked')){
6701 DHCP_flag = true;
6702 }
6703 var result = sf_isValidate_StartEndIp(i_value, $('#txtSubnetMask').val(), $('#txtDhcpIpPoolStart').val(), $('#txtDhcpIpPoolEnd').val(), DHCP_flag);
6704 return result != 2;
6705 });
6706
6707 $.validator.addMethod("subnetmask_check", function (i_value, i_element, i_parameter) {
6708 var result = sf_isValidate_Netmask(i_value);
6709 return this.optional(i_element) || result;
6710 });
6711
6712
6713 // ��̬��ЧIPУ�麯��
6714 function sf_isValidate_StaticIP(i_ip, i_lanIp, i_lanMask){
6715 if(!i_ip || !i_lanIp || !i_lanMask){//������������
6716 return false;
6717 }
6718
6719 //������IP���
6720 if (i_ip == i_lanIp) {
6721 return true;
6722 }
6723
6724 var res1 = [];
6725 var res2 = [];
6726
6727 var mask_array = [];
6728
6729 ip_array = i_ip.split(".");
6730 lanIp_array = i_lanIp.split(".");
6731 mask_array = i_lanMask.split(".");
6732 for(var index = 0; index < ip_array.length; index += 1){
6733 res1.push(parseInt(mask_array[index]) & parseInt(ip_array[index]));
6734 res2.push(parseInt(mask_array[index]) & parseInt(lanIp_array[index]));
6735 }
6736 if(res2.join(".") != res1.join(".")){//�ڲ�ͬ����
6737 return false;
6738 }else{//��ͬһ����
6739 return true;
6740 }
6741 }
6742
6743
6744 function sf_isValidate_NetmaskIP(i_ip) {
6745 return (i_ip == 255
6746 || i_ip == 254
6747 || i_ip == 252
6748 || i_ip == 248
6749 || i_ip == 240
6750 || i_ip == 224
6751 || i_ip == 192
6752 || i_ip == 128
6753 || i_ip == 0);
6754 }
6755
6756 function sf_convertIpToString(i_ip)
6757 {
6758 var s_i1 = i_ip.indexOf('.');
6759 var s_i2 = i_ip.indexOf('.', (s_i1 + 1));
6760 var s_i3 = i_ip.indexOf('.', (s_i2 + 1));
6761 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));
6762 o_ip = '0x' + o_ip;
6763
6764 return o_ip;
6765 }
6766
6767 function sf_getIpString_3(i_ip)
6768 {
6769 var i1 = i_ip.indexOf('.');
6770 var i2 = i_ip.indexOf('.', (i1 + 1));
6771 var i3 = i_ip.indexOf('.', (i2 + 1));
6772 var i4 = i_ip.substring((i3+1),i_ip.length)-0;
6773
6774 return i4;
6775 }
6776
6777
6778 // ����У�麯��
6779 function sf_isValidate_Gateway(i_wanIp, i_netmaskIp, i_gatewayIp) {
6780 var s_wanIp = sf_convertIpToString(i_wanIp);
6781 var lan4 = sf_getIpString_3(i_wanIp);
6782
6783 var s_netmaskIp = sf_convertIpToString(i_netmaskIp);
6784 var mask4 = sf_getIpString_3(i_netmaskIp);
6785
6786 var s_gatewayIp = sf_convertIpToString(i_gatewayIp);
6787 var pool4 = sf_getIpString_3(i_gatewayIp);
6788
6789 var net_no;
6790 var lo_broadcast;
6791
6792 if (sf_opAnd4Byte(s_wanIp, s_netmaskIp) != sf_opAnd4Byte(s_gatewayIp, s_netmaskIp)) {
6793 return false;
6794 }
6795
6796 net_no = (lan4 & mask4);
6797 lo_broadcast = (lan4 & mask4) + (255-mask4);
6798
6799 return !(pool4==net_no || pool4==lo_broadcast);
6800
6801 }
6802
6803 // ��������У�麯��
6804 function sf_isValidate_Netmask(i_netmask) {
6805 var addr = i_netmask.split(".");
6806
6807 if ("0.0.0.0" == i_netmask || "255.255.255.255" == i_netmask) {
6808 return false;
6809 }
6810
6811 if (addr.length != 4) {
6812 return false;
6813 }
6814
6815 addr[0] = parseInt(addr[0]);
6816 addr[1] = parseInt(addr[1]);
6817 addr[2] = parseInt(addr[2]);
6818 addr[3] = parseInt(addr[3]);
6819
6820 if (addr[3] != 0) {
6821 if (addr[0] != 255 || addr[1] != 255 || addr[2] != 255) {
6822 return false;
6823 } else {
6824 if (!sf_isValidate_NetmaskIP(addr[3])) {
6825 return false;
6826 }
6827 }
6828 }
6829
6830 if (addr[2] != 0) {
6831 if (addr[0] != 255 || addr[1] != 255) {
6832 return false;
6833 } else {
6834 if (!sf_isValidate_NetmaskIP(addr[2])) {
6835 return false;
6836 }
6837 }
6838 }
6839
6840 if (addr[1] != 0) {
6841 if (addr[0] != 255) {
6842 return false;
6843 } else {
6844 if (!sf_isValidate_NetmaskIP(addr[1])) {
6845 return false;
6846 }
6847 }
6848 }
6849
6850 if (addr[0] != 255) {
6851 return false;
6852 }
6853
6854 return true;
6855 }
6856
6857 // DHCP IP��У�麯��
6858 function sf_isValidate_StartEndIp(i_lanIpaddr, i_netIp, i_startIp, i_endIp, i_DHCPFlag) {
6859 s_startIp = sf_convertIpToString(i_startIp);
6860 s_endIp = sf_convertIpToString(i_endIp);
6861 s_lanIp = sf_convertIpToString(i_lanIpaddr);
6862
6863 if(s_startIp>s_endIp) {
6864 return 1;
6865 }
6866
6867 if(s_lanIp >= s_startIp && s_lanIp <= s_endIp) {
6868 return 2;
6869 }
6870
6871 return 0;
6872 }
6873
6874
6875 function init() {
6876 var container = $('#container');
6877 ko.cleanNode(container[0]);
6878 var fwVm = new LanViewModel();
6879 ko.applyBindings(fwVm, container[0]);
6880
mj.qu6ac12722025-07-03 02:12:24 -07006881 //addInterval(fwVm.refreshStatus, 1000);
zw.wang96c5d4e2025-07-01 11:35:13 +08006882
6883 $('#frmLan').validate({
6884 submitHandler:function () {
6885 fwVm.save();
6886 },
6887
6888 rules:{
6889 txtIpAddress: {
6890 lanip_check: true,
6891 ipRange: true
6892 },
6893 txtSubnetMask: {
6894 ipv4: true,
6895 subnetmask_check: true
6896 },
6897 txtDhcpIpPoolStart: {
6898 lanip_check: true,
6899 dhcp_check: "start",
6900 dhcpCompare: "#txtDhcpIpPoolEnd"
6901 },
6902 txtDhcpIpPoolEnd: {
6903 lanip_check: true,
6904 dhcp_check: "end",
6905 dhcpCompare: "#txtDhcpIpPoolStart"
6906 },
6907 txtDhcpLease: {
6908 range: [1, 65535],
6909 digits: true
6910 }
6911 },
6912
6913 groups: {
6914 lanip_check: "txtDhcpIpPoolStart txtDhcpIpPoolEnd"
6915 },
6916
6917 errorPlacement: function (error, element) {
6918 if (element.attr("name") == "txtDhcpLease") {
6919 error.insertAfter("#errorHolder");
6920 } else if (element.attr("name") == "txtDhcpIpPoolStart") {
6921 error.insertAfter("#txtDhcpIpPoolEnd");
6922 } else {
6923 error.insertAfter(element);
6924 }
6925 }
6926 });
6927
6928 }
6929
6930
6931 return {
6932 init:init
6933 }
6934});
6935
6936define("tr069","jquery knockout set service".split(" "),
6937
6938 function ($, ko, config, service) {
6939 function Tr069ViewModel() {
6940 var target = this;
6941 target.hasUssd = config.HAS_USSD;
6942 target.hasDdns = config.DDNS_SUPPORT;
6943 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
6944
6945 var cwmpInfo = service.getCwmpSetting();
6946
6947 target.cwmp_active = ko.observable(cwmpInfo.cwmpSetting);
6948 target.cwmp_acs_server_url = ko.observable(cwmpInfo.acsUrl);
6949 target.cwmp_acs_username = ko.observable(cwmpInfo.acsUsername);
6950 target.cwmp_acs_password = ko.observable(cwmpInfo.acsPassword);
6951 target.cwmp_periodic_inform_active = ko.observable(cwmpInfo.periodicEnabled);
6952 target.cwmp_periodic_inform_interval = ko.observable(cwmpInfo.periodicInterval);
6953 target.cwmp_conn_request_username = ko.observable(cwmpInfo.cpeUsername);
6954 target.cwmp_conn_request_password = ko.observable(cwmpInfo.cpePassword);
6955
6956 // target.cwmp_stun_active=ko.observable('');
6957 // target.cwmp_stun_server_addr=ko.observable('');
6958 // target.cwmp_stun_server_port=ko.observable('');
6959 // target.cwmp_stun_username=ko.observable('');
6960 // target.cwmp_stun_password=ko.observable('');
6961 // target.cwmp_stun_min_keep_alive_interval=ko.observable('');
6962 // target.cwmp_stun_max_keep_alive_interval=ko.observable('');
6963 // target.cwmp_udp_notify_limit_num=ko.observable('');
6964 // target.cwmp_udp_conn_req_addr=ko.observable('');
6965 // target.cwmp_nat_detected_mark=ko.observable('');
6966
6967 // target.btn=function(name,id,enableName){
6968 // if($('#'+id).is(':checked')){
6969 // $("."+name).animate({left: '22px'});
6970 // //$('#'+name).css('background-color','#FD8204');
6971 // if(enableName==='cwmp_active'){
6972 // target.cwmp_active('1')
6973 // }
6974 // else{
6975 // target.cwmp_stun_active("1")
6976 // }
6977 // }
6978 // else{
6979 // $("."+name).animate({left: '-1px'});
6980 // $('#'+name).css('background-color','white');
6981 // if(enableName==='cwmp_active'){
6982 // target.cwmp_active('0')
6983 // }
6984 // else{
6985 // target.cwmp_stun_active("0")
6986 // }
6987 // }
6988 // }
6989 // ���TR069
6990 target.setting= function() {
6991 showLoading();
6992 var param = {};
6993 param.cwmpSetting = target.cwmp_active();
6994 param.acsUrl = target.cwmp_acs_server_url();
6995 param.acsUsername = target.cwmp_acs_username();
6996 param.acsPassword = target.cwmp_acs_password();
6997 param.periodicEnabled = target.cwmp_periodic_inform_active();
6998 param.periodicInterval =target.cwmp_periodic_inform_interval();
6999 param.cpeUsername = target.cwmp_conn_request_username();
7000 param.cpePassword = target.cwmp_conn_request_password();
7001 service.setCwmpSetting(param, function (result) {
7002 if (result.result != "success") {
7003 errorOverlay();
7004 } else {
7005 successOverlay();
7006 }
7007 });
7008 }
7009 // ���STUN
7010 target.stun=function(){
7011 console.log(99999);
7012 }
7013 }
7014
7015 function init() {
7016 var container = $('#container');
7017 ko.cleanNode(container[0]);
7018 var imVm = new Tr069ViewModel();
7019 ko.applyBindings(imVm, container[0]);
7020
7021 $('#frmTr069').validate({
7022 submitHandler:function () {
7023 imVm.setting();
7024 },
7025 rules:{
7026 cwmp_acs_server_url: {
7027 url_span: false
7028 },
7029 },
7030 });
7031 $('#frmTrtun').validate({
7032 submitHandler:function () {
7033 imVm.stun();
7034 },
7035 rules:{},
7036 });
7037 $.validator.addMethod("url_span", validURLWithProtocol);
7038 }
7039 return {
7040 init:init
7041 }
7042});
7043
7044// others ����:Fast Boot Settings��Restart and Reset��SNTP��Turn Off Device��PIN Management
7045define("adm_others","jquery knockout set service underscore".split(" "),
7046
7047 function ($, ko, config, service, _) {
7048
7049 var timeSetModes = _.map(config.sntpTimeSetMode, function(item) {
7050 return new Option(item.name, item.value);
7051 });
7052
7053 var timeZones = _.map(config.timeZone, function(item){
7054 return new Option(item.name, item.value);
7055 });
7056
7057 var daylightSave = _.map(config.daylightSave, function(item){
7058 return new Option(item.name, item.value);
7059 });
7060
7061 var sv_sntpYears = [];
7062 var sv_sntpMonths = [];
7063 var sv_sntpDates = []; //���ݴ�С����������
7064 var sv_sntpHours = [];
7065 var sv_sntpMinutes = [];
7066 var sc_startpHours = [];
7067 var sc_startMinutes = [];
7068
7069 var sf_bigMonth = [1, 3, 5, 7, 8, 10, 12];
7070 var sf_smallMonth = [4, 6, 9, 11];
7071
7072 function sf_produceArray(start, end, arryName) {
7073 var item = {};
7074 for(var i = start; i <= end; i++) {
7075 item.name = i;
7076 item.value = i;
7077 arryName.push(new Option(item.name, item.value));
7078 }
7079 }
7080
7081 //�����ꡢ�¡�ʱ���ֵ�����
7082 sf_produceArray(2000, 2037, sv_sntpYears);
7083 sf_produceArray(1, 12, sv_sntpMonths);
7084 sf_produceArray(0, 23, sv_sntpHours);
7085 sf_produceArray(0, 59, sv_sntpMinutes);
7086 sf_produceArray(0, 23, sc_startpHours);
7087 sf_produceArray(0, 59, sc_startMinutes);
7088
7089 function othersViewModel() {
7090 var target = this;
7091
7092 var inChildGroup = false;
7093 var scheduleInfo = service.getScheduleSetting();
7094
7095 target.fastbootSupport = config.FAST_BOOT_SUPPORT;
7096 target.turnOffSupport = config.TURN_OFF_SUPPORT;
7097 target.SNTPSupport = config.HAS_SNTP;
7098 target.hasUssd = config.HAS_USSD;
7099 target.hasDdns = config.DDNS_SUPPORT;
7100 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
7101 target.scheduleSetting = ko.observable(scheduleInfo.scheduleSetting);
7102 target.scheduleHour = ko.observable(parseInt(scheduleInfo.scheduleHour));
7103 target.scheduleMinute = ko.observable(parseInt(scheduleInfo.scheduleMinute));
7104 target.scr_hours = ko.observableArray(sc_startpHours);
7105 target.scr_minutes = ko.observableArray(sc_startMinutes);
7106
7107
7108 if (config.HAS_PARENTAL_CONTROL) {
7109 inChildGroup = service.checkCurrentUserInChildGroup().result;
7110 }
7111 target.currentUserInChildGroup = ko.observable(inChildGroup);
7112
7113 var sv_fastbootInfo = service.getFastbootSetting();
7114 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");
7115 target.fastbootSetting = ko.observable(sv_fastbootInfo.fastbootEnabled);
7116
7117
7118 // @method addInterval
7119 addInterval(function(){
7120 target.fastbootEnableFlag(config.RJ45_SUPPORT ? (sv_fastbootInfo.need_sim_pin != "yes" && service.getRj45PlugState().rj45_plug == "wan_lan_off") : sv_fastbootInfo.need_sim_pin != "yes");
7121 }, 1000);
7122
7123 // �ָ���������
7124 // @event restore
7125 target.restore = function () {
7126 showConfirm("restore_confirm", function () {
7127 showLoading("restoring");
7128 service.restoreFactorySettings({}, function (info) {
7129 if (info && info.result == "success") {
7130 successOverlay();
7131 } else {
7132 errorOverlay();
7133 }
7134 }, function (result) {
7135 if (isErrorObject(result) && result.errorType == 'no_auth') {
7136 errorOverlay();
7137 }
7138 });
7139 });
7140 };
7141
7142 target.restart = function () {
7143 showConfirm("restart_confirm", function () {
7144 restartDevice(service);
7145 });
7146 };
7147
7148 target.scheduleRestart = function () {
7149 showLoading();
7150 var params = {};
7151 params.scheduleSetting = target.scheduleSetting();
7152 params.scheduleHour = target.scheduleHour();
7153 params.scheduleMinute = target.scheduleMinute();
7154 service.setScheduleSetting(params, function (result) {
7155 if (result.result != "success") {
7156 errorOverlay();
7157 } else {
7158 successOverlay();
7159 }
7160 });
7161 };
7162
7163 // ���ٿ��ػ�����
7164 target.saveFastBoot = function() {
7165 showLoading();
7166 var params = {
7167 fastbootEnabled: target.fastbootSetting(),
7168 need_hard_reboot: sv_fastbootInfo.need_hard_reboot
7169 };
7170 service.setFastbootSetting(params, function(result) {
7171 if (result.result == "success") {
7172 successOverlay();
7173 } else {
7174 errorOverlay();
7175 }
7176 });
7177 };
7178
7179 // �ػ�
7180 target.turnoff = function () {
7181 showConfirm("turnoff_confirm", function () {
7182 showLoading("turnoff");
7183 service.turnOffDevice({}, function (info) {
7184 if (info && info.result == "success") {
7185 successOverlay();
7186 } else {
7187 errorOverlay();
7188 }
7189 }, $.noop);
7190 });
7191 };
7192
7193 //SNTP����serverУ׼ʱ��
7194 service.setSNTPDate({
7195 goformId: "SNTP_Getdatastatic"
7196 });
7197
7198 var target = this;
7199 var sntpInfo = service.getSntpParams();
7200
7201 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));
7202
7203 target.day = ko.observable();
7204 target.localTime = ko.observable();
7205
7206 //��ʼ����ǰ����ʱ��
7207 //target.updateCurrentTime; cov_2
7208 target.timeSetModes = ko.observableArray(timeSetModes);
7209 target.isManualSetTime = ko.observable(false);
7210 target.isAutoSntpTime = ko.observable(false);
7211
7212 target.currentMode = ko.observable(sntpInfo.sntp_time_set_mode);
7213
7214 changeSetTimeMode();
7215 target.changeSetTimeMode = function(){
7216 changeSetTimeMode();
7217 };
7218
7219 target.currentYear = ko.observable(parseInt(sntpInfo.sntp_year, 10));
7220 target.currentMonth = ko.observable(parseInt(sntpInfo.sntp_month, 10));
7221 target.currentDate = ko.observable(parseInt(sntpInfo.sntp_day, 10));
7222 target.currentHour = ko.observable(parseInt(sntpInfo.sntp_hour, 10));
7223 target.currentMinute = ko.observable(parseInt(sntpInfo.sntp_minute, 10));
7224
7225
7226 // ��Ҫ��������ˢ�������б����ݣ�ע��˳��
7227
7228 target.years = ko.observableArray(sv_sntpYears);
7229 target.months = ko.observableArray(sv_sntpMonths);
7230 //���û�ѡ���·ݵ�ʱ��ı�����ѡ����ѡ��
7231 target.initDateList = function(){
7232 initDateList();
7233 target.dates(sv_sntpDates);
7234 }
7235
7236 //��ʼ�������б�
7237 initDateList();
7238 target.dates = ko.observableArray(sv_sntpDates);
7239 target.hours = ko.observableArray(sv_sntpHours);
7240 target.minutes = ko.observableArray(sv_sntpMinutes);
7241
7242 //�Զ�SNTP��ȡʱ�����ݰ󶨴���
7243 var serverArray = _.map(sntpInfo.sntp_servers, function(item) {
7244 return new Option(item.name, item.value)
7245 });
7246
7247 target.serverList = ko.observableArray(serverArray);
7248
7249 // �������ֲ����޸ģ��޸��޷�ˢ����ҳ
7250
7251 target.currentServer0 = ko.observable(sntpInfo.sntp_server0);
7252 target.currentServer1 = ko.observable(sntpInfo.sntp_server1);
7253 target.currentServer2 = ko.observable(sntpInfo.sntp_server2);
7254 target.customServer0 = ko.observable(sntpInfo.sntp_other_server0);
7255 target.customServer1 = ko.observable(sntpInfo.sntp_other_server1);
7256 target.customServer2 = ko.observable(sntpInfo.sntp_other_server2);
7257 target.isOther0 = ko.observable(false);
7258 target.isOther1 = ko.observable(false);
7259 target.isOther2 = ko.observable(false);
7260
7261 initOtherServer();
7262
7263 target.changeServerSelect = function(){
7264 initOtherServer();
7265 }
7266
7267 target.timeZones = ko.observableArray(timeZones);
7268 target.currentTimeZone = ko.observable(sntpInfo.sntp_timezone + "_" + sntpInfo.sntp_timezone_index);
7269 target.daylightSaves = ko.observableArray(daylightSave);
7270 target.currentDaylightSave = ko.observable(sntpInfo.sntp_dst_enable);
7271
7272 //���µ�ǰ��ʾʱ��
7273 target.updateCurrentTime = function() {
7274 var globalDay = globalTime.getDay();
7275
7276 switch(globalDay){
7277 case 6:
7278 target.day($.i18n.prop("saturday"));
7279 break;
7280 case 5:
7281 target.day($.i18n.prop("friday"));
7282 break;
7283 case 4:
7284 target.day($.i18n.prop("thursday"));
7285 break;
7286 case 3:
7287 target.day($.i18n.prop("wednesday"));
7288 break;
7289 case 2:
7290 target.day($.i18n.prop("tuesday"));
7291 break;
7292 case 1:
7293 target.day($.i18n.prop("monday"));
7294 break;
7295 case 0:
7296 target.day($.i18n.prop("sunday"));
7297 break;
7298 default:
7299 break;
7300 }
7301
7302 var localCurrentTime = globalTime.getFullYear() + "-" + getTwoDigit(globalTime.getMonth()+1) + "-" + getTwoDigit(globalTime.getDate()) + " " + getTwoDigit(globalTime.getHours()) + ":" + getTwoDigit(globalTime.getMinutes()) + ":" + getTwoDigit(globalTime.getSeconds());
7303 target.localTime(localCurrentTime);
7304 globalTime.setTime(globalTime.getTime()+1000);
7305 };
7306
7307 // SNTP����
7308 target.apply = function(){
7309 var tmpArray = [];
7310 for(var i=0; i< sntpInfo.sntp_servers.length; i++){
7311 tmpArray.push(sntpInfo.sntp_servers[i].value);
7312 }
7313 var staInfo = service.getStatusInfo();
7314 if(!checkConnectedStatus(staInfo.connectStatus, staInfo.rj45ConnectStatus, staInfo.connectWifiStatus) && target.currentMode() == "auto"){
7315 showAlert("sntp_syn_time_wan_connected");
7316 return;
7317 }
7318
7319 showLoading("");
7320 var requestParams = {
7321 goformId: "SNTP",
7322 manualsettime : target.currentMode(),
7323 sntp_server1_ip : target.currentServer0(),
7324 sntp_server2_ip : target.currentServer1(),
7325 sntp_server3_ip : target.currentServer2(),
7326 sntp_other_server0 : target.customServer0(),
7327 sntp_other_server1 : target.customServer1(),
7328 sntp_other_server2 : target.customServer2(),
7329 timezone : target.currentTimeZone().split("_")[0],
7330 sntp_timezone_index : target.currentTimeZone().split("_")[1],
7331 DaylightEnabled : target.currentDaylightSave(),
7332 time_year : target.currentYear(),
7333 time_month : target.currentMonth(),
7334 time_day : target.currentDate(),
7335 time_hour : target.currentHour(),
7336 time_minute : target.currentMinute()
7337 };
7338
7339 service.setSntpSetting(requestParams, function(data2){
7340 if(data2) {
7341 if(data2.result == "success" && target.currentMode() == "auto"){
7342 successOverlay("sntp_req_success");
7343 //hideLoading();
7344 }else if(data2.result == "processing" && target.currentMode() == "auto"){
7345 successOverlay("sntp_processing");
7346 }else{
7347 //����serverУ׼ʱ��
7348 service.setSNTPDate({
7349 goformId: "SNTP_Getdatastatic"
7350 }, function(result){
7351 var sntpInfo = service.getSntpParams();
7352 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));
7353 successOverlay();
7354 });
7355 }
7356 } else {
7357 errorOverlay();
7358 }
7359 });
7360 }
7361
7362 // �ֶ�/�Զ��л���Ӧ����
7363 function changeSetTimeMode() {
7364 if(target.currentMode() == "manual") {
7365 target.isManualSetTime(true);
7366 target.isAutoSntpTime(false);
7367 } else {
7368 target.isManualSetTime(false);
7369 target.isAutoSntpTime(true);
7370 }
7371 return true;
7372 }
7373
7374 // ��ʼ��ʱ��
7375 function initDateList(){
7376 sv_sntpDates = [];
7377 if($.inArray(parseInt(target.currentMonth(), 10), sf_smallMonth) != -1) {
7378 sf_produceArray(1, 30, sv_sntpDates);
7379 } else if($.inArray(parseInt(target.currentMonth(), 10), sf_bigMonth) != -1) {
7380 sf_produceArray(1, 31, sv_sntpDates);
7381 } else if(parseInt(target.currentYear(), 10)%4 == 0) {
7382 sf_produceArray(1, 29, sv_sntpDates);
7383 } else {
7384 sf_produceArray(1, 28, sv_sntpDates);
7385 }
7386 }
7387
7388 // ��ʼ������������
7389 function initOtherServer(){
7390 target.isOther0(target.currentServer0() == "Other");
7391 target.isOther1(target.currentServer1() == "Other");
7392 target.isOther2(target.currentServer2() == "Other");
7393 !target.isOther0() && $("#sntp_server0").find(".error").hide();
7394 !target.isOther1() && $("#sntp_server1").find(".error").hide();
7395 !target.isOther2() && $("#sntp_server2").find(".error").hide();
7396 }
7397
7398
7399 }
7400
7401 // ��ʼ�� ViewModel����������ͼ��
7402 function init() {
7403 var fwVm = new othersViewModel();
7404 var container = $('#container')[0];
7405 ko.cleanNode(container);
7406 ko.applyBindings(fwVm, container);
7407 fwVm.updateCurrentTime();
7408
7409 addInterval(function(){
7410 fwVm.updateCurrentTime();
7411 }, 1000);
7412
7413 $("#sntpForm").validate({
7414 submitHandler: function(){
7415 fwVm.apply();
7416 },
7417 rules: {
7418 sntp_other_server0 : "sntp_invalid_server_name",
7419 sntp_other_server1 : "sntp_invalid_server_name",
7420 sntp_other_server2 : "sntp_invalid_server_name"
7421 }
7422 });
7423 }
7424
7425 return {
7426 init:init
7427 }
7428 });
w.denged536982025-07-21 10:24:31 +08007429const errorMessages = {
7430 "en": {
7431 txtCurrent: {
7432 manage_info_check: "Please enter a valid password."
7433 },
7434 txtNew: {
7435 manage_info_check: "Please enter a valid password."
7436 },
7437 txtConfirm: {
7438 equalTo: "The new password and the confirmed password do not match or contain illegal characters."
7439 }
7440 },
7441 "zh": {
7442 txtCurrent: {
7443 manage_info_check: "请输入有效的密码"
7444 },
7445 txtNew: {
7446 manage_info_check: "请输入有效的密码"
7447 },
7448 txtConfirm: {
7449 equalTo: "新密码和确认密码不匹配或者包含非法字符"
7450 }
7451 }
7452};
zw.wang96c5d4e2025-07-01 11:35:13 +08007453// ������� �
7454
7455define("adm_management","jquery knockout set service underscore CryptoJS".split(" "),
7456
7457 function ($, ko, config, service, _, CryptoJS) {
7458
7459 function manageViewModel() {
7460 var target = this;
7461
7462 target.currentValue = ko.observable();
7463 target.newValue = ko.observable();
7464 target.confirmValue = ko.observable();
7465
7466 function sf_changeValue() {
7467 var sv_manageInfo = {};
7468 if (config.PASSWORD_ENCODE) {
7469 sv_manageInfo.oldValue = target.currentValue();
7470 sv_manageInfo.newValue = target.newValue();
7471 } else {
7472 var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,32}');
7473
7474 if (!pwdRegex.test(target.newValue())) {
7475 showConfirm("password_note_too_low", function () {
7476
7477 var kparam = service.getDeviceInfoLow();
7478 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
7479 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
7480 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
7481 iv: tiv,
7482 mode: CryptoJS.mode.CBC,
7483 padding: CryptoJS.pad.ZeroPadding
7484 }).toString();
7485 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
7486 iv: tiv,
7487 mode: CryptoJS.mode.CBC,
7488 padding: CryptoJS.pad.ZeroPadding
7489 }).toString();
7490
7491 sv_manageInfo.oldValue = cipherold;
7492 sv_manageInfo.newValue = ciphernew;
7493
7494 showLoading();
7495
7496 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
7497 target.cancel();
7498 if (resultInfo && resultInfo.result == true) {
7499 successOverlay();
7500 } else {
7501 if (resultInfo && resultInfo.errorType == "badPassword") {
7502 hideLoading();
7503 showAlert("current_password_error",function(){
7504 $("#txtCurrent").focus();
7505 });
7506 } else {
7507 errorOverlay();
7508 }
7509 }
7510 });
7511 });
7512 return;
7513 }
7514 var kparam = service.getDeviceInfoLow();
7515 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
7516 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
7517 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
7518 iv: tiv,
7519 mode: CryptoJS.mode.CBC,
7520 padding: CryptoJS.pad.ZeroPadding
7521 }).toString();
7522 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
7523 iv: tiv,
7524 mode: CryptoJS.mode.CBC,
7525 padding: CryptoJS.pad.ZeroPadding
7526 }).toString();
7527
7528 sv_manageInfo.oldValue = cipherold;
7529 sv_manageInfo.newValue = ciphernew;
7530 }
7531
7532 showLoading();
7533
7534 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
7535 target.cancel();
7536 if (resultInfo && resultInfo.result == true) {
7537 successOverlay();
7538 } else {
7539 if (resultInfo && resultInfo.errorType == "badPassword") {
7540 hideLoading();
7541 showAlert("current_password_error",function(){
7542 $("#txtCurrent").focus();
7543 });
7544 } else {
7545 errorOverlay();
7546 }
7547 }
7548 });
7549 }
7550
7551 // ������������
7552 function sf_cancel() {
7553 target.currentValue("");
7554 target.newValue("");
7555 target.confirmValue("");
7556 }
7557
7558 target.cancel = sf_cancel;
7559
7560 // �޸�����
7561 target.changeValue = sf_changeValue;
7562 }
7563
7564 function init() {
7565 var container = $('#container');
7566 ko.cleanNode(container[0]);
7567 var fwVm = new manageViewModel();
7568 ko.applyBindings(fwVm, container[0]);
7569
mj.qu7af1f5b2025-07-31 19:31:40 -07007570 const langObj = service.getLanguage();
7571 const langCode = (langObj && langObj.Language || 'en').split('-')[0];
7572 const messages = errorMessages[langCode] || errorMessages['en'];
7573 console.log('langCode =', langCode);
w.denged536982025-07-21 10:24:31 +08007574
zw.wang96c5d4e2025-07-01 11:35:13 +08007575 $('#frmPassword').validate({
7576 submitHandler:function () {
7577 fwVm.changeValue();
7578 },
7579 rules:{
7580 txtCurrent:"manage_info_check",
7581 txtNew:"manage_info_check",
7582 txtConfirm:{ equalTo:"#txtNew"}
w.denged536982025-07-21 10:24:31 +08007583 },
7584 messages: messages
zw.wang96c5d4e2025-07-01 11:35:13 +08007585 });
7586 }
7587
7588 return {
7589 init:init
7590 }
7591 }
7592);
7593// PIN�����
7594
7595define("adm_pin","jquery knockout set service".split(" "),
7596
7597 function ($, ko, config, service) {
7598 var pageState = {common:0, requirePin:1, modifyPin:2, requirePuk:3, destroyed:4};
7599 var pinStatus = {enable:"1", disable:"0"};
7600
7601
7602 function pinViewModel() {
7603 var target = this;
7604 var sv_currentPinData = service.getPinData();
7605
7606 target.isDataCard = config.PRODUCT_TYPE == 'DATACARD';
7607 target.originPinStatus = ko.observable(sv_currentPinData.pin_status);
7608
7609 target.pinStatus = ko.observable(sv_currentPinData.pin_status);
7610 target.pinNumber = ko.observable(sv_currentPinData.pinnumber);
7611 target.pukNumber = ko.observable(sv_currentPinData.puknumber);
7612
7613 target.currentPin = ko.observable();
7614 target.newPin = ko.observable();
7615 target.confirmPin = ko.observable();
7616
7617 target.puk = ko.observable();
7618
7619 target.pageState = ko.observable();
7620 // ���������ɹ���־λ
7621 target.operateSuccessFlag = true;
7622
7623 target.callback = sf_callback;
7624
7625 function sf_callback(info) {
7626 if (info && info.result == true) {
7627 target.operateSuccessFlag = true;
7628 successOverlay();
7629 } else {
7630 target.operateSuccessFlag = false;
7631
7632 // ���һ��ǰҪ������ʾ
7633 if(target.pinNumber() == 2){
7634 showAlert("last_enter_pin");
7635 } else if(target.pukNumber() == 2){
7636 showAlert("last_enter_puk");
7637 }
7638 else{
7639 errorOverlay();
7640 }
7641 }
7642 init(target);
7643 }
7644
7645
7646 // ȷ����ť�¼������������޸�PIN������PUK����PIN������PIN��ʹ��״̬
7647
7648 function sf_changePin() {
7649 if (target.isConnectedNetWork()) {
7650 showAlert("cannot_operate_when_connected");
7651 return;
7652 }
7653
7654 if (target.pageState() == pageState.common) {
7655 return;
7656 }
7657
7658 var sv_pinPara = {
7659 oldPin:target.currentPin(),
7660 newPin:target.newPin()
7661 };
7662 showLoading();
7663
7664 if (target.pageState() == pageState.modifyPin) {
7665 service.changePin(sv_pinPara, target.callback);
7666 } else if (target.pageState() == pageState.requirePuk) {
7667 sv_pinPara = {
7668 PinNumber:target.newPin(),
7669 PUKNumber:target.puk()
7670 };
7671 service.enterPUK(sv_pinPara, target.callback);
7672 } else {
7673 if (target.pinStatus() == pinStatus.enable) {
7674 service.enablePin(sv_pinPara, target.callback);
7675 } else {
7676 service.disablePin(sv_pinPara, target.callback);
7677 }
7678 }
7679 }
7680
7681
7682 // ȡ���¼�����
7683 function sf_cancel() {
7684 target.pageState(pageState.common);
7685 target.pinStatus(target.originPinStatus());
7686 target.clear();
7687 }
7688
7689 // ���ҳ������ͼ����Ϣ
7690 function sf_clear() {
7691 target.confirmPin("");
7692 target.currentPin("");
7693 target.newPin("");
7694 target.puk("");
7695 clearValidateMsg();
7696 }
7697
7698 // �������ݣ����õ�ǰ��ҳ��״̬
7699 function sf_computePageState(i_pinData) {
7700 if (i_pinData.pinnumber > 0) {
7701 //�����ɹ�ҳ��ص���ʼ״̬������ʧ�ܲ���pinnumber>0,ҳ�治��ת
7702 if (target.operateSuccessFlag) {
7703 target.cancel();
7704 } else {
7705 target.clear();
7706 }
7707 } else {
7708 target.clear();
7709 if (i_pinData.puknumber > 0) {
7710 target.pageState(pageState.requirePuk);
7711 } else {
7712 target.pageState(pageState.destroyed);
7713 }
7714 }
7715 }
7716
7717 // ����PIN�޸�״̬�¼�����
7718 function sf_displayModifyPinPage() {
7719 if (target.isConnectedNetWork()) {
7720 showAlert("cannot_operate_when_connected");
7721 return;
7722 }
7723 target.pinStatus(target.originPinStatus());
7724 target.pageState(pageState.modifyPin);
7725 target.clear();
7726 }
7727
7728 // ����ҳ��Ԫ�ص�ʹ��״̬
7729 function sf_fixPageEnable() {
7730 if (target.isConnectedNetWork()) {
7731 $('#frmPin :input').each(function () {
7732 disableBtn($(this));
7733 });
7734 clearValidateMsg();
7735 } else {
7736 $('#frmPin :input').each(function () {
7737 if (this.id == "txtPin" || this.id == "btnPinApply") {
7738 if (target.pageState() == pageState.common) {
7739 disableBtn($(this));
7740 return;
7741 }
7742 }
7743 if (this.id == "btnModifyPin") {
7744 if (target.originPinStatus() != pinStatus.enable) {
7745 disableBtn($(this));
7746 return;
7747 }
7748 }
7749 if (this.id == "pinEnable" || this.id == "pinDisable") {
7750 if (target.pageState() == pageState.modifyPin) {
7751 disableBtn($(this));
7752 return;
7753 }
7754 }
7755 enableBtn($(this));
7756 });
7757
7758 }
7759 }
7760
7761 // �Ƿ�������
7762 function sf_isConnectedNetWork() {
7763 var info = service.getConnectionInfo();
7764 return info.connectStatus == "ppp_connected";
7765 }
7766
7767 // PINʹ�ܸı�ʱ�¼�����
7768 function sf_pinStatusChangeEvent() {
7769 if (target.pinStatus() == target.originPinStatus()) {
7770 target.pageState(pageState.common);
7771 } else {
7772 target.pageState(pageState.requirePin);
7773 }
7774 target.clear();
7775 }
7776
7777 target.changePin = sf_changePin;
7778 target.cancel = sf_cancel;
7779 target.clear = sf_clear;
7780 target.computePageState = sf_computePageState;
7781
7782 target.computePageState(sv_currentPinData);
7783
7784 target.displayModifyPinPage = sf_displayModifyPinPage;
7785 target.fixPageEnable = sf_fixPageEnable;
7786 target.isConnectedNetWork = sf_isConnectedNetWork;
7787
7788 target.pinStatusChangeEvent = ko.dependentObservable(sf_pinStatusChangeEvent, this);
7789 }
7790
7791 function init(oldViewModel) {
7792
7793 var fwVm = oldViewModel;
7794
7795 if (fwVm) {
7796 var sv_currentPinData = service.getPinData();
7797 fwVm.originPinStatus(sv_currentPinData.pin_status);
7798 fwVm.pinNumber(sv_currentPinData.pinnumber);
7799 fwVm.pukNumber(sv_currentPinData.puknumber);
7800 fwVm.computePageState(sv_currentPinData);
7801 } else {
7802 fwVm = new pinViewModel();
7803 addInterval(function () {
7804 fwVm.fixPageEnable();
7805 }, 1000);
7806 }
7807
7808 var container = $('#container')[0];
7809 ko.cleanNode(container);
7810 ko.applyBindings(fwVm, container);
7811 fwVm.fixPageEnable();
7812
7813 $('#frmPin').validate({
7814 submitHandler:function () {
7815 fwVm.changePin();
7816 },
7817 rules:{
7818 txtPuk:"puk_check",
7819 txtPin:"pin_check",
7820 txtNewPin:"pin_check",
7821 txtConfirmPin:{equalToPin:"#txtNewPin"}
7822 }
7823 });
7824 }
7825
7826 return {
7827 init:init
7828 }
7829 }
7830);
7831
7832// ��������
7833define("adm_quick_set","jquery knockout set service underscore CryptoJS".split(" "),
7834
7835 function ($, ko, config, service, _, CryptoJS) {
7836
7837 var sv_wifiState = {ok:0, wps_on:1, wifi_off:2};
7838 var sv_apnMode = {auto:"auto", manual:"manual"};
7839 var sv_minStep = 1;
7840 var sv_maxStep = 5;
7841
7842 // ��ȡ��Ȩ��ʽ
7843 function sf_fetchAuthenticationModes() {
7844 return _.map(config.APN_AUTH_MODES, function (item) {
7845 return new Option(item.name, item.value);
7846 });
7847 }
7848
7849 // WIFI��ȫģʽѡ��
7850 var sv_securityModes = _.map(config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES, function (item) {
7851 return new Option(item.name, item.value);
7852 });
7853
7854
7855 function quickSettingViewModel() {
7856 var target = this;
7857
7858 var sv_quickSettingInfo = service.getQuickSettingInfo();
7859
7860 target.currentStep = ko.observable(sv_minStep);
7861 target.ipType = ko.observable(sv_quickSettingInfo.pdp_type == "IP" ? "IP" : sv_quickSettingInfo.ipv6_pdp_type);
7862 target.supportIPv6 = config.IPV6_SUPPORT;
7863 target.supportIpv4AndIpv6 = config.IPV4_AND_V6_SUPPORT;
7864
7865 target.wpsFlag = ko.observable(sv_quickSettingInfo.WscModeOption);
7866
7867 function sf_apnDisabled() {
7868 return (sv_quickSettingInfo.apn_index < config.defaultApnSize || sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting");
7869 }
7870
7871 function sf_apnModeDisabled() {
7872 return (sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting" || (!target.profileName() && target.apnMode() == sv_apnMode.auto));//ѡ��Ϊ�ջ��������ӻ�������
7873 }
7874
7875 function sf_currAPN() {
7876 var sv_APNText = sv_quickSettingInfo["APN_configtmp" + sv_quickSettingInfo.apn_index];
7877 var strIPv6APN = sv_quickSettingInfo["ipv6_APN_configtmp" + sv_quickSettingInfo.apn_index];
7878
7879 var sv_apn = [];
7880 var sv_ipv6APNItems = [];
7881
7882 if (sv_APNText) {
7883 sv_apn = sv_APNText.split("($)");
7884 }
7885
7886 if (strIPv6APN) {
7887 sv_ipv6APNItems = strIPv6APN.split("($)");
7888 }
7889
7890 return {
7891 m_profile_name:sv_apn[0],
7892 wan_apn:sv_apn[1],
7893 ppp_auth_mode: sv_apn[4] == "" || typeof(sv_apn[4]) == "undefined" ? "" : sv_apn[4].toLowerCase(),
7894 ppp_username:sv_apn[5],
7895 ppp_passtmp:sv_apn[6],
7896 pdp_type: sv_apn[7] == "" || typeof(sv_apn[7]) == "undefined" ? sv_ipv6APNItems[7] : sv_apn[7],
7897 ipv6_wan_apn:sv_ipv6APNItems[1],
7898 ipv6_ppp_auth_mode:typeof(sv_ipv6APNItems[4]) == "undefined" || sv_ipv6APNItems[4] == ""? "" : sv_ipv6APNItems[4].toLowerCase(),
7899 ipv6_ppp_username:sv_ipv6APNItems[5],
7900 ipv6_ppp_passtmp:sv_ipv6APNItems[6],
7901 ipv6_pdp_type:sv_ipv6APNItems[7]
7902 }
7903 }
7904
7905 // ��ǰAPN����
7906 target.currAPN = ko.computed(sf_currAPN);
7907
7908 target.apn = ko.observable(target.currAPN().wan_apn);
7909 target.ipType = ko.observable(target.currAPN().pdp_type);
7910 target.ipv6_apn = ko.observable(target.currAPN().ipv6_wan_apn);
7911 target.ipv6_selectedAuthMode = ko.observable(target.currAPN().ipv6_ppp_auth_mode);
7912 target.ipv6_username = ko.observable(target.currAPN().ipv6_ppp_username);
7913 target.ipv6_password = ko.observable(target.currAPN().ipv6_ppp_passtmp);
7914 target.profileName = ko.observable(target.currAPN().m_profile_name);
7915 target.selectedAuthMode = ko.observable(target.currAPN().ppp_auth_mode);
7916 target.username = ko.observable(target.currAPN().ppp_username);
7917 target.password = ko.observable(target.currAPN().ppp_passtmp);
7918
7919 target.transAPN = ko.observable("apn_ipv4_apn");
7920 target.transAPNIPv6 = ko.observable("apn_ipv6_apn");
7921 target.transAuthMode = ko.observable("apn_authentication_ipv4");
7922 target.transAuthModeIPv6 = ko.observable("apn_authentication_ipv6");
7923 target.transUserName = ko.observable("apn_user_name_ipv4");
7924 target.transPassword = ko.observable("apn_password_ipv4");
7925 target.transUserNameIPv6 = ko.observable("apn_user_name_ipv6");
7926 target.transPasswordIPv6 = ko.observable("apn_password_ipv6");
7927
7928
7929
7930 target.apnDisabled = ko.computed(sf_apnDisabled);
7931 target.apnMode = ko.observable(sv_quickSettingInfo.apn_mode);
7932 target.apnModeDisabled = ko.computed(sf_apnModeDisabled);
7933 target.authModes = ko.observableArray(sf_fetchAuthenticationModes());
7934
7935 if (target.ipType() == "IPv6") {
7936 target.showIPv4 = false;
7937 target.showIPv6 = true;
7938 target.transAPNIPv6("apn");
7939 target.transAuthModeIPv6("apn_authentication");
7940 target.transUserNameIPv6("apn_user_name");
7941 target.transPasswordIPv6("apn_password");
7942 } else if (config.IPV4_AND_V6_SUPPORT && target.ipType() == "IPv4v6") {
7943 target.showIPv4 = true;
7944 target.showIPv6 = true;
7945 //ʹ��Ĭ��
7946 } else if (target.ipType() == "IP" || target.ipType() == "IPv4") {
7947 target.showIPv4 = true;
7948 target.showIPv6 = false;
7949 target.transAPN("apn");
7950 target.transAuthMode("apn_authentication");
7951 target.transUserName("apn_user_name");
7952 target.transPassword("apn_password");
7953 } else { //pdp_type == "IPv4v6" && config.IPV4V6_SUPPORT
7954 target.showIPv4 = true;
7955 target.showIPv6 = false;
7956 target.transAPN("apn");
7957 target.transAuthMode("apn_authentication");
7958 target.transUserName("apn_user_name");
7959 target.transPassword("apn_password");
7960 }
7961
7962 target.wifiDisabled = (sv_quickSettingInfo.wifi_cur_state != "1");
7963 target.ssid = ko.observable(sv_quickSettingInfo.SSID1);
7964 target.broadcast = ko.observable(sv_quickSettingInfo.HideSSID);
7965 target.hasWifiWep = config.WIFI_WEP_SUPPORT;
7966 target.hasWifiWpa3 = config.WIFI_WAP3_SUPPORT;
7967 target.hasWifiWpa23 = config.WIFI_WPA2_WAP3_SUPPORT;
7968
7969 target.securityModes = ko.observableArray(sv_securityModes);
7970 target.selectedSecurityMode = ko.observable(sv_quickSettingInfo.AuthMode);
7971 target.WPAKey = ko.observable(sv_quickSettingInfo.WPAPSK1);
7972
7973 target.apnMode_display = ko.observable("");
7974
7975 target.apnMode_trans = ko.computed(sf_apnMode_trans);
7976 target.selectedAuthMode_display = ko.computed(sf_selectedAuthMode_display);
7977 target.ipv6_selectedAuthMode_display = ko.computed(sf_ipv6_selectedAuthMode_display);
7978
7979 target.showWifiPassword = ko.observable(false);
7980 target.showWifiPasswordHandler = sf_showWifiPasswordHandler;
7981
7982 //�ж��Ƿ���802 n only��
7983 var sv_adInfo = service.getWifiAdvance();
7984 target.adBand = ko.observable(sv_adInfo.wifiBand);
7985 target.adMode = ko.observable(sv_adInfo.mode);
7986
7987 target.encryptType = ko.observable(sv_quickSettingInfo.EncrypType);
7988 target.keyID = ko.observable(sv_quickSettingInfo.DefaultKeyID);
7989 target.wepPassword = ko.observable("");
7990
7991 target.getWepPassword = sf_getWepPassword;
7992 target.wepPassword(target.getWepPassword());
7993 target.profileChangeHandler = sf_profileChangeHandler;
7994
7995 target.broadcast_display = ko.observable("");
7996 target.broadcast_trans = ko.computed(sf_broadcast_trans);
7997
7998 target.selectedSecurityMode_display = ko.observable();
7999 target.selectedSecurityMode_trans = ko.computed(sf_selectedSecurityMode_trans);
8000
8001
8002 target.callback = sf_callback;
8003 target.next = sf_button_next;
8004 target.previous = sf_button_previous;
8005 target.save = sf_button_save;
8006
8007 function sf_apnMode_trans() {
8008 if (sv_apnMode.auto == target.apnMode()) {
8009 target.apnMode_display($.i18n.prop("apn_auto_apn"));
8010 return "apn_auto_apn";
8011 } else {
8012 target.apnMode_display($.i18n.prop("apn_manual_apn"));
8013 return "apn_manual_apn";
8014 }
8015 }
8016
8017 function sf_broadcast_trans() {
8018 if ("0" == target.broadcast()) {
8019 target.broadcast_display($.i18n.prop("enable"));
8020 return "enable";
8021 } else {
8022 target.broadcast_display($.i18n.prop("disable"));
8023 return "disable";
8024 }
8025 }
8026
8027 function sf_button_next() {
8028 var currentStep = target.currentStep();
8029 var toStep = target.currentStep() + 1;
8030 sf_changeStep(toStep);
8031
8032 if (currentStep == 1 && target.apnMode() == sv_apnMode.auto) {
8033 toStep = target.currentStep() + 1;
8034 sf_changeStep(toStep);
8035 }
8036 }
8037
8038 function sf_button_previous() {
8039
8040 var currentStep = target.currentStep();
8041 var toStep = target.currentStep() - 1;
8042
8043 sf_changeStep(toStep);
8044
8045 if (currentStep == 3 && target.apnMode() == sv_apnMode.auto) {
8046 toStep = target.currentStep() - 1;
8047 sf_changeStep(toStep);
8048 }
8049 }
8050 function sf_button_save() {
8051 var submit = function () {
8052 sf_quickSetting4IPv6();
8053 };
8054 var result = sf_isDisabled_Wifi();
8055 if(result == sv_wifiState.wifi_off){
8056 showConfirm("quick_setting_wifi_disable_confirm", submit);
8057 } else if (result == sv_wifiState.wps_on) {
8058 showAlert("wps_on_info");
8059 } else{
8060 showConfirm("quick_setting_param_changed_confirm", submit);//submit();
8061 }
8062 }
8063 // ���������ύ��Ļص�����
8064 function sf_callback(data) {
8065 if (data.result == "success") {
8066 successOverlay();
mj.qu7b3dd3a2025-07-10 01:31:18 -07008067 location.hash = "#main";
w.dengf2f56832025-08-06 14:49:13 +08008068 location.reload();
zw.wang96c5d4e2025-07-01 11:35:13 +08008069 }
8070 else {
8071 errorOverlay();
8072 }
8073 }
8074
8075 // �任����ʱ����
8076 function sf_changeStep(i_step) {
8077 if (i_step > sv_maxStep) {
8078 i_step = sv_maxStep;
8079 } else if (i_step < sv_minStep) {
8080 i_step = sv_minStep;
8081 }
8082
8083 target.currentStep(i_step);
8084 return true;
8085 }
8086
8087 function sf_ipv6_selectedAuthMode_display() {
8088 var mode = target.ipv6_selectedAuthMode();
8089 return sf_getAuthModeNameByValue(mode);
8090 }
8091 // ���ݼ�Ȩģʽ��ֵ��������
8092 function sf_getAuthModeNameByValue(authMode) {
8093 for (var i = 0; i < config.APN_AUTH_MODES.length; i++) {
8094 if (authMode == config.APN_AUTH_MODES[i].value) {
8095 return config.APN_AUTH_MODES[i].name;
8096 }
8097 }
8098 }
8099
8100 function sf_getWepPassword(){
8101 return target.keyID() == '3' ? sv_quickSettingInfo.Key4Str1 : (target.keyID() == '2' ? sv_quickSettingInfo.Key3Str1 : target.keyID() == '1' ? sv_quickSettingInfo.Key2Str1 : sv_quickSettingInfo.Key1Str1);
8102 }
8103
8104 function sf_isDisabled_Wifi() {
8105 var s_wpsInfo = service.getWpsInfo();
8106 if(s_wpsInfo.radioFlag == "0"){
8107 return sv_wifiState.wifi_off;
8108 }else if (s_wpsInfo.wpsFlag == '1') {
8109 return sv_wifiState.wps_on;
8110 }
8111 return sv_wifiState.ok;
8112 }
8113 function sf_profileChangeHandler(i_data, i_event) {
8114 $("#pwdWepKey").parent().find("label[class='error']").hide();
8115 target.wepPassword(target.getWepPassword());
8116 return true;
8117 }
8118
8119 // ���������ύ(֧��IPv6��
8120 function sf_quickSetting4IPv6() {
8121 showLoading();
8122 var useIPv4ForV6 = config.IPV4V6_SUPPORT && target.currAPN().pdp_type == "IPv4v6";
8123
8124 var ciphertext = "";
8125 if (config.PASSWORD_ENCODE) {
8126 ciphertext = target.WPAKey();
8127 } else {
8128 var kparam = service.getDeviceInfoLow();
8129 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
8130 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
8131 ciphertext = CryptoJS.AES.encrypt(target.WPAKey(), tkey, {
8132 iv: tiv,
8133 mode: CryptoJS.mode.CBC,
8134 padding: CryptoJS.pad.ZeroPadding
8135 }).toString();
8136 }
8137
8138 var s_quickSettingParameters = {
8139 apn_index: sv_quickSettingInfo.apn_index,
8140 apnMode: target.apnMode(),
8141 Encryption_Mode_hid: target.selectedSecurityMode(),
8142 ipv6_ppp_auth_mode: useIPv4ForV6 ? target.selectedAuthMode() : target.ipv6_selectedAuthMode(),
8143 ipv6_ppp_username: useIPv4ForV6 ? target.username() : target.ipv6_username(),
8144 ipv6_ppp_passtmp: useIPv4ForV6 ? target.password() : target.ipv6_password(),
8145 ipv6_wan_apn: useIPv4ForV6 ? target.apn() : target.ipv6_apn(),
8146 pdp_type: target.ipType(),
8147 ppp_auth_mode: target.selectedAuthMode(),
8148 ppp_username: target.username(),
8149 ppp_passtmp: target.password(),
8150 profile_name: target.profileName(),
8151 //Ŀǰ����ģʽֻ��2�֣�����3������Ϊ�̶�ֵ
8152 //�����Ҫ����Ϊ5�֣�����ֵ��Ҫ����
8153 security_shared_mode: "NONE",
8154 SSID_Broadcast: target.broadcast(),
8155 SSID_name: target.ssid(),
8156 wan_apn: target.apn(),
8157 wep_default_key: 0,
8158 WPA_ENCRYPTION_hid: target.selectedSecurityMode() == "OPEN" ? "NONE" : target.selectedSecurityMode() == "WPA2PSK" ? 1 : 2,
8159 WPA_PreShared_Key: ciphertext
8160 }
8161
8162 s_quickSettingParameters.wep_default_key = target.keyID();
8163
8164 if(target.encryptType() == "SHARED" || target.selectedSecurityMode() == "WEP") {
8165
8166 s_quickSettingParameters.security_shared_mode = "WEP";
8167
8168 s_quickSettingParameters.wep_key_1 = sv_quickSettingInfo.Key1Str1;
8169 s_quickSettingParameters.wep_key_2 = sv_quickSettingInfo.Key2Str1;
8170 s_quickSettingParameters.wep_key_3 = sv_quickSettingInfo.Key3Str1;
8171 s_quickSettingParameters.wep_key_4 = sv_quickSettingInfo.Key4Str1;
8172
8173 var WEPSelectTmp = '0';
8174
8175 if(target.wepPassword().length =='5' ||target.wepPassword().length =='13'){
8176 WEPSelectTmp = '1';
8177 }else{
8178 WEPSelectTmp = '0';
8179 }
8180
8181 if(target.keyID() =='3'){
8182 s_quickSettingParameters.wep_key_4 = target.wepPassword();
8183 s_quickSettingParameters.WEP4Select = WEPSelectTmp;
8184 }else if(target.keyID() =='2'){
8185 s_quickSettingParameters.wep_key_3 = target.wepPassword();
8186 s_quickSettingParameters.WEP3Select = WEPSelectTmp;
8187 }else if(target.keyID() =='1'){
8188 s_quickSettingParameters.wep_key_2 = target.wepPassword();
8189 s_quickSettingParameters.WEP2Select = WEPSelectTmp;
8190 }else{
8191 s_quickSettingParameters.wep_key_1 = target.wepPassword();
8192 s_quickSettingParameters.WEP1Select = WEPSelectTmp;
8193 }
8194 }else if(target.encryptType() == "WPAPSKWPA2PSK") {
8195 s_quickSettingParameters.security_shared_mode = "NONE";
8196 }else {
8197 s_quickSettingParameters.security_shared_mode = "NONE";
8198 }
8199
8200 service.setQuickSetting4IPv6(s_quickSettingParameters, target.callback);
8201 }
8202
8203 function sf_selectedAuthMode_display() {
8204 var mode = target.selectedAuthMode();
8205 return sf_getAuthModeNameByValue(mode);
8206 }
8207
8208 function sf_selectedSecurityMode_trans() {
8209 var mode = target.selectedSecurityMode();
8210 var modesOption = config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES;
8211 for (var i = 0; i < modesOption.length; i++) {
8212 if (mode == modesOption[i].value) {
8213 target.selectedSecurityMode_display($.i18n.prop("security_mode_" + modesOption[i].value));
8214 return "security_mode_" + modesOption[i].value;
8215 }
8216 }
8217 }
8218
8219 function sf_showWifiPasswordHandler(){
8220 $("#pwdWepKey").parent().find(".error").hide();
8221 $("#codeWPAKey").parent().find(".error").hide();
8222 var checkbox = $("#showWifiPassword:checked");
8223 if(checkbox && checkbox.length == 0){
8224 target.showWifiPassword(true);
8225 }else{
8226 target.showWifiPassword(false);
8227 }
8228 }
8229
8230 }
8231
8232 function init() {
8233 var container = $('#container');
8234 ko.cleanNode(container[0]);
8235 var fwVm = new quickSettingViewModel();
8236 ko.applyBindings(fwVm, container[0]);
8237
8238 $('#quickSettingForm').validate({
8239 submitHandler:function () {
8240 if (fwVm.currentStep() < 5) {
8241 fwVm.next();
8242 } else {
8243 fwVm.save();
8244 }
8245 },
8246 rules:{
8247 txtAPN:"apn_check",
8248 txtIPv6APN:"apn_check",
8249 txtSSID:'ssid',
8250 pwdWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
8251 txtWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
8252 txtWPAKey:'wifi_password_check',
8253 codeWPAKey:'wifi_password_check',
8254 txtUserName:'ppp_username_check',
8255 txtIPv6UserName:'ppp_username_check',
8256 txtSecretCode:"ppp_secretcode_check",
8257 txtIPv6SecretCode:"ppp_secretcode_check"
8258 },
8259 errorPlacement:function (error, element) {
8260 var id = element.attr("id");
8261 if (id == "pwdWepKey" || id == "txtWepKey"){
8262 error.insertAfter("#lblShowWepPassword");
8263 } else if (id == "txtWPAKey" || id == "codeWPAKey") {
8264 error.insertAfter("#lblShowWifiPassword");
8265 } else {
8266 error.insertAfter(element);
8267 }
8268 }
8269 });
8270 }
8271
8272 return {
8273 init:init
8274 };
8275 }
8276);
8277
8278define("main","set service knockout underscore jquery statusBar echarts".split(" "), function (set, fnc, libko, libus, libjq, barStat, echarts) {
8279
8280 var chartOptions = {
8281 color: ['red', 'red', 'red', 'red', 'red'],
8282 series: [{
8283 name: '��������',
8284 type: 'pie',
8285 radius: ['0', '72'],
8286 itemStyle: {
8287 normal: {
8288 label: {
8289 show: false
8290 },
8291 labelLine: {
8292 show: false
8293 }
8294 }
8295 },
8296 data: [],
8297 selectedOffset: 3
8298 }
8299 ],
8300 animation: false,
8301 title: {
8302 text: '',
8303 x: 'center',
8304 y: 'center',
8305 itemGap: 0,
8306 textStyle: {
8307 color: '#FFF',
8308 fontFamily: '΢���ź�',
8309 fontSize: 20,
8310 fontWeight: 'bolder'
8311 },
8312 subtextStyle: {
8313 color: '#FFF',
8314 fontFamily: '΢���ź�',
8315 fontSize: 16,
8316 fontWeight: 'bolder'
8317 }
8318 },
8319 tooltip: {
8320 formatter: "{b}"
8321 },
8322 };
8323 var languageOld = window.language;
8324 var num_refresh = 0;
8325 var traffic_graphic_chart = null;
8326 var connStat = {
8327 CONNECTED: 1,
8328 DISCONNECTED: 2,
8329 CONNECTING: 3,
8330 DISCONNECTING: 4
8331 };
8332 function init() {
8333 num_refresh = 0;
8334 homeUtil.oldUsedData = null;
8335 homeUtil.oldAlarmData = null;
8336 traffic_graphic_chart = echarts.init(libjq("#traffic_graphic")[0]);
8337 var container = libjq('#container')[0];
8338 libko.cleanNode(container);
8339 var tmp = new VmHome();
8340 libko.applyBindings(tmp, container);
8341 var data = fnc.getLoginData();
8342 var psw_flg = data.psw_changed;
8343 if (psw_flg != "1") {
8344 showConfirm("password_note_first_change", function () {
8345 window.location.hash = '#pwd_mode';
8346 });
8347 return;
8348 }
8349 }
8350
8351 var homeUtil = {
8352 initStatus: null,
8353 initShownStatus: function (data) {
8354 this.initStatus = {};
8355 var ipv6Mode = data.ipv6PdpType.toLowerCase().indexOf("v6") > 0;
8356 if (set.RJ45_SUPPORT) {
8357 var mode = checkCableMode(data.blc_wan_mode);
8358 if (mode) {
8359 this.initStatus.showIpv6WanIpAddr = false;
8360 this.initStatus.showIpv4WanIpAddr = true;
8361 } else if (set.IPV6_SUPPORT) {
8362 if (data.pdpType == "IP") {
8363 this.initStatus.showIpv6WanIpAddr = false;
8364 this.initStatus.showIpv4WanIpAddr = true;
8365 } else if (ipv6Mode) {
8366 if (data.ipv6PdpType == "IPv6") {
8367 this.initStatus.showIpv6WanIpAddr = true;
8368 this.initStatus.showIpv4WanIpAddr = false;
8369 } else {
8370 this.initStatus.showIpv6WanIpAddr = true;
8371 this.initStatus.showIpv4WanIpAddr = true;
8372 }
8373 }
8374 } else {
8375 this.initStatus.showIpv6WanIpAddr = false;
8376 this.initStatus.showIpv4WanIpAddr = true;
8377 }
8378 } else {
8379 if (set.IPV6_SUPPORT) {
8380 if (data.pdpType == "IP") {
8381 this.initStatus.showIpv6WanIpAddr = false;
8382 this.initStatus.showIpv4WanIpAddr = true;
8383 } else if (ipv6Mode) {
8384 if (data.ipv6PdpType == "IPv6") {
8385 this.initStatus.showIpv6WanIpAddr = true;
8386 this.initStatus.showIpv4WanIpAddr = false;
8387 } else {
8388 this.initStatus.showIpv6WanIpAddr = true;
8389 this.initStatus.showIpv4WanIpAddr = true;
8390 }
8391 }
8392 } else {
8393 this.initStatus.showIpv6WanIpAddr = false;
8394 this.initStatus.showIpv4WanIpAddr = true;
8395 }
8396 }
8397 },
8398 wanIpGet: function (data) {
8399 var addrInfo = {
8400 wanIpAddress: '',
8401 ipv6WanIpAddress: ''
8402 };
8403 addrInfo.wanIpAddress = verifyDeviceInfo(data.wanIpAddress);
8404 addrInfo.ipv6WanIpAddress = verifyDeviceInfo(data.ipv6WanIpAddress);
8405 return addrInfo;
8406 },
8407 cachedAPStationBasic: null,
8408 cachedConnectionMode: null,
8409 getCanConnectNetWork: function (param) {
8410 var status = fnc.getStatusInfo();
8411 if (status.simStatus != "modem_init_complete") {
8412 return false;
8413 }
8414 var typeNetworkTmp = status.networkType.toLowerCase();
8415 if (typeNetworkTmp == 'searching') {
8416 return false;
8417 }
8418 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
8419 typeNetworkTmp = 'limited_service';
8420 }
8421 if (typeNetworkTmp == 'no service') {
8422 typeNetworkTmp = 'no_service';
8423 }
8424 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
8425 if (param.cStatus() != connStat.CONNECTED) {
8426 return false;
8427 }
8428 }
8429 if (set.AP_STATION_SUPPORT) {
8430 if (status.connectWifiStatus == "connect") {
8431 if (status.ap_station_mode == "wifi_pref") {
8432 return false;
8433 }
8434 }
8435 }
8436 return true;
8437 },
8438 doConnect: function () {
8439 showLoading('connecting');
8440 fnc.connect({}, function (data) {
8441 if (data.result) {
8442 successOverlay();
8443 } else {
8444 errorOverlay();
8445 }
8446 });
8447 },
8448 refreshHomeData: function (param) {
8449 var info = fnc.getConnectionInfo();
8450 param.connectStatus(info.connectStatus);
8451 param.canConnect(this.getCanConnectNetWork(param));
8452 param.networkType(homeUtil.getNetworkType(info.networkType));
8453 if (info.connectStatus == "ppp_connected") {
8454 param.current_Flux(transUnit(parseInt(info.data_counter.currentReceived, 10) + parseInt(info.data_counter.currentSent, 10), false));
8455 param.connected_Time(transSecond2Time(info.data_counter.currentConnectedTime));
8456 param.up_Speed(transUnit(info.data_counter.uploadRate, true));
8457 param.down_Speed(transUnit(info.data_counter.downloadRate, true));
8458 } else {
8459 param.current_Flux(transUnit(0, false));
8460 param.connected_Time(transSecond2Time(0));
8461 param.up_Speed(transUnit(0, true));
8462 param.down_Speed(transUnit(0, true));
8463 }
8464 param.trafficAlertEnable(info.limitVolumeEnable);
8465 if (info.limitVolumeEnable) {
8466 if (info.limitVolumeType == '1') {
8467 param.trafficUsed(transUnit(parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10), false));
8468 param.trafficLimited(transUnit(info.limitDataMonth, false));
8469 } else {
8470 param.trafficUsed(transSecond2Time(info.data_counter.monthlyConnectedTime));
8471 param.trafficLimited(transSecond2Time(info.limitTimeMonth));
8472 }
8473 }
8474 if (languageOld != window.language) {
8475 languageOld = window.language;
8476 num_refresh = 1;
8477 }
8478 if (param.showTraffic()) {
8479 homeUtil.updateEcharts(info);
8480 } else {
8481 homeUtil.allFreeEcharts();
8482 }
8483 homeUtil.refreshStationInfo(param);
8484 },
8485 allFreeEcharts: function () {
8486 var usedData = homeUtil.data.free;
8487 usedData.value = 1;
8488 usedData.selected = false;
8489 usedData.name = libjq.i18n.prop("echarts_no");
8490 chartOptions.series[0].data = [usedData];
8491 chartOptions.title.text = '';
8492 homeUtil.setEcharts(chartOptions, libjq.i18n.prop("echarts_no"));
8493 },
8494 getNetworkType: function (networkType) {
8495 var typeNetworkTmp = networkType.toLowerCase();
8496 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
8497 typeNetworkTmp = 'limited_service';
8498 }
8499 if (typeNetworkTmp == 'no service') {
8500 typeNetworkTmp = 'no_service';
8501 }
8502 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
8503 return libjq.i18n.prop("network_type_" + typeNetworkTmp);
8504 } else {
8505 return networkType;
8506 }
8507 },
8508 data: {
8509 full: {
8510 value: 30,
8511 name: '��������',
8512 itemStyle: {
8513 normal: {
8514 color: '#DF4313'
8515 }
8516 }
8517 },
8518 used: {
8519 value: 30,
8520 name: '��ʹ��',
8521 itemStyle: {
8522 normal: {
8523 color: '#8CC916'
8524 }
8525 }
8526 },
8527 left1: {
8528 value: 50,
8529 name: '����ֵ��δʹ��',
8530 itemStyle: {
8531 normal: {
8532 color: '#D8D8D8'
8533 }
8534 }
8535 },
8536 free: {
8537 value: 50,
8538 name: 'δʹ��',
8539 itemStyle: {
8540 normal: {
8541 color: '#D8D8D8'
8542 }
8543 }
8544 },
8545 alert: {
8546 value: 1,
8547 name: '����ֵ',
8548 itemStyle: {
8549 normal: {
8550 color: '#FF5500'
8551 }
8552 }
8553 },
8554 alarm: {
8555 value: 19.7,
8556 name: '������',
8557 itemStyle: {
8558 normal: {
8559 color: '#8CC916'
8560 }
8561 }
8562 },
8563 start: {
8564 value: 50,
8565 name: '����ֵ��δʹ��',
8566 itemStyle: {
8567 normal: {
8568 color: '#D8D8D8'
8569 }
8570 }
8571 },
8572 },
8573 getDataInfo: function (value) {
8574 return {
8575 data: /\d+(.\d+)?/.exec(value)[0],
8576 unit: /[A-Z]{1,2}/.exec(value)[0]
8577 }
8578 },
8579 oldAlarmData: null,
8580 oldUsedData: null,
8581 updateEcharts: function (info) {
8582 var startName = libjq.i18n.prop("echarts_no");
8583 num_refresh++;
8584 if (num_refresh % 10 != 2) {
8585 return false;
8586 }
8587 var total = 0,
8588 used = 0,
8589 reach = 0,
8590 left = 0,
8591 alarm = 0,
8592 left1 = 0;
8593 if (info.limitVolumeEnable) {
8594 startName = libjq.i18n.prop("echarts_used");
8595 chartOptions.series[0].data = [];
8596 if (info.limitVolumeType == '1') {
8597 var limitedDataFormatted = transUnit(info.limitDataMonth, false);
8598 chartOptions.series[0].data = [];
8599 if (info.limitDataMonth == 0) {
8600 var usedData = homeUtil.data.used;
8601 usedData.value = 1;
8602 usedData.selected = false;
8603 usedData.name = libjq.i18n.prop("echarts_used");
8604 chartOptions.series[0].data.push(usedData);
8605 } else {
8606 var dataInfo = homeUtil.getDataInfo(limitedDataFormatted);
8607 total = dataInfo.data * homeUtil.getUnitValue(dataInfo.unit) * 1048576;
8608 used = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
8609 reach = total * info.limitVolumePercent / 100;
8610 if (used >= total) {
8611 var fullData = homeUtil.data.full;
8612 fullData.value = 100;
8613 fullData.name = libjq.i18n.prop("echarts_full");
8614 chartOptions.series[0].data.push(fullData);
8615 startName = libjq.i18n.prop("echarts_full");
8616 } else {
8617 if (reach - used > 0) {
8618 left1 = reach - used;
8619 left = total - reach;
8620 } else {
8621 alarm = used - reach;
8622 left = total - used;
8623 }
8624 var usedData = homeUtil.data.used;
8625 if (reach - used > 0) {
8626 usedData.value = used;
8627 } else {
8628 usedData.value = reach;
8629 }
8630 usedData.name = libjq.i18n.prop("echarts_used");
8631 chartOptions.series[0].data.push(usedData);
8632 if (left1 > 0) {
8633 var left1Data = homeUtil.data.left1;
8634 left1Data.value = left1;
8635 left1Data.name = libjq.i18n.prop("echarts_left1");
8636 chartOptions.series[0].data.push(left1Data);
8637 }
8638 var alertData = homeUtil.data.alert;
8639 alertData.value = total / 200;
8640 alertData.name = libjq.i18n.prop("echarts_alert");
8641 chartOptions.series[0].data.push(alertData);
8642 if (alarm > 0) {
8643 var alarmData = homeUtil.data.alarm;
8644 alarmData.value = alarm;
8645 alarmData.name = libjq.i18n.prop("echarts_alarm");
8646 chartOptions.series[0].data.push(alarmData);
8647 }
8648 var freeData = homeUtil.data.free;
8649 freeData.value = left;
8650 freeData.name = libjq.i18n.prop("echarts_free");
8651 chartOptions.series[0].data.push(freeData);
8652 }
8653 }
8654 } else {
8655 chartOptions.series[0].data = [];
8656 if (info.limitTimeMonth == 0) {
8657 var usedData = homeUtil.data.used;
8658 usedData.value = 1;
8659 usedData.selected = false;
8660 usedData.name = libjq.i18n.prop("echarts_used");
8661 chartOptions.series[0].data.push(usedData);
8662 } else {
8663 total = info.limitTimeMonth;
8664 used = info.data_counter.monthlyConnectedTime;
8665 reach = total * info.limitVolumePercent / 100;
8666 if (used >= total) {
8667 var fullTime = homeUtil.data.full;
8668 fullTime.value = 100;
8669 fullTime.name = libjq.i18n.prop("echarts_full");
8670 chartOptions.series[0].data.push(fullTime);
8671 startName = libjq.i18n.prop("echarts_full");
8672 } else {
8673 if (reach - used > 0) {
8674 left1 = reach - used;
8675 left = total - reach;
8676 } else {
8677 alarm = used - reach;
8678 left = total - used;
8679 }
8680 var usedTime = homeUtil.data.used;
8681 if (reach - used > 0) {
8682 usedTime.value = used;
8683 } else {
8684 usedTime.value = reach;
8685 }
8686 usedTime.name = libjq.i18n.prop("echarts_used");
8687 chartOptions.series[0].data.push(usedTime);
8688 if (left1 > 0) {
8689 var left1Time = homeUtil.data.left1;
8690 left1Time.value = left1;
8691 left1Time.name = libjq.i18n.prop("echarts_left1");
8692 chartOptions.series[0].data.push(left1Time);
8693 }
8694 var alertTime = homeUtil.data.alert;
8695 alertTime.value = total / 200;
8696 alertTime.name = libjq.i18n.prop("echarts_alert");
8697 chartOptions.series[0].data.push(alertTime);
8698 if (alarm > 0) {
8699 var alarmTime = homeUtil.data.alarm;
8700 alarmTime.value = alarm;
8701 alarmTime.name = libjq.i18n.prop("echarts_alarm");
8702 chartOptions.series[0].data.push(alarmTime);
8703 }
8704 var freeTime = homeUtil.data.free;
8705 freeTime.value = left;
8706 freeTime.name = libjq.i18n.prop("echarts_free");
8707 chartOptions.series[0].data.push(freeTime);
8708 }
8709 }
8710 }
8711 } else {
8712 var usedData = homeUtil.data.used;
8713 usedData.value = 1;
8714 usedData.selected = false;
8715 usedData.name = libjq.i18n.prop("echarts_no");
8716 chartOptions.series[0].data = [usedData];
8717 chartOptions.title.text = '';
8718 }
8719 var firstEle = libus.find(chartOptions.series[0].data, function (n) {
8720 return n.name == libjq.i18n.prop("echarts_used");
8721 });
8722 var alarmEle = libus.find(chartOptions.series[0].data, function (n) {
8723 return n.name == libjq.i18n.prop("echarts_alarm");
8724 });
8725 if (!alarmEle) {
8726 alarmEle = {
8727 value: 0
8728 };
8729 }
8730 if (typeof firstEle == "undefined") {
8731 homeUtil.setEcharts(chartOptions, startName);
8732 } else if (homeUtil.oldUsedData != firstEle.value || homeUtil.oldAlarmData != alarmEle.value) {
8733 homeUtil.oldUsedData = firstEle.value;
8734 homeUtil.oldAlarmData = alarmEle.value;
8735 homeUtil.setEcharts(chartOptions, startName);
8736 }
8737 },
8738 getUnitValue: function (unit) {
8739 unit = unit.toUpperCase();
8740 if (unit == 'GB') {
8741 return '1024';
8742 } else if (unit == 'TB') {
8743 return '1048576';
8744 } else {
8745 return '1';
8746 }
8747 },
8748 setEcharts: function (options, startName) {
8749 var startPart = homeUtil.data.start;
8750 startPart.value = 0;
8751 startPart.name = startName;
8752 startPart.selected = false;
8753 var arr = [startPart].concat(options.series[0].data);
8754 options.series[0].data = arr;
8755 traffic_graphic_chart.setOption(options, true);
8756 addTimeout(function () {
8757 traffic_graphic_chart.resize();
8758 }, 1000);
8759 },
8760 refreshStationInfo: function (param) {
8761 param.wirelessDeviceNum(fnc.getStatusInfo().wirelessDeviceNum);
8762 if (num_refresh % 10 == 2) {
8763 fnc.getAttachedCableDevices({}, function (data) {
8764 param.wireDeviceNum(data.attachedDevices.length);
8765 });
8766 }
8767 },
8768 getUnit: function (val) {
8769 if (val == '1024') {
8770 return 'GB';
8771 } else if (val == '1048576') {
8772 return 'TB';
8773 } else {
8774 return 'MB';
8775 }
8776 },
8777 refreshOpmodeInfo: function (param) {
8778 var obj = fnc.getOpMode();
8779 param.isLoggedIn(obj.loginfo == "ok");
8780 var currentMode = checkCableMode(obj.blc_wan_mode);
8781 if (param.opCurMode() && !currentMode) {
8782 var data = fnc.getLoginData();
8783 var state = data.modem_main_state;
8784 if (state == "modem_sim_undetected" || state == "modem_undetected" || state == "modem_sim_destroy" || state == "modem_waitpin" || state == "modem_waitpuk" || state == "modem_imsi_waitnck") {
8785 window.location.reload();
8786 return;
8787 }
8788 }
8789 param.opCurMode(currentMode);
8790 if (currentMode && obj.ethwan_mode == "DHCP") {
8791 param.enableFlag(false);
8792 } else if ((!currentMode && obj.ppp_status != "ppp_disconnected") || (currentMode && obj.rj45_state != "idle" && obj.rj45_state != "dead")) {
8793 param.enableFlag(true);
8794 } else {
8795 param.enableFlag(false);
8796 }
8797 var mode = (obj.blc_wan_mode == "AUTO_PPP" || obj.blc_wan_mode == "AUTO_PPPOE") ? "AUTO" : obj.blc_wan_mode;
8798 var currentOpMode = "";
8799 switch (mode) {
8800 case "AUTO":
8801 currentOpMode = "opmode_auto";
8802 break;
8803 case "PPPOE":
8804 currentOpMode = "opmode_cable";
8805 break;
8806 case "PPP":
8807 currentOpMode = "opmode_gateway";
8808 break;
8809 default:
8810 break;
8811 }
8812 libjq("#opmode").attr("data-trans", currentOpMode).text(libjq.i18n.prop(currentOpMode));
8813 param.isShowHomeConnect(!currentMode);
8814 param.showTraffic(set.TRAFFIC_SUPPORT && !currentMode);
8815 param.isSupportQuicksetting(set.HAS_QUICK_SETTING && !currentMode);
8816 }
8817 };
8818 function VmHome() {
8819 var target = this;
8820 target.hasSms = set.HAS_SMS;
8821 target.hasPhonebook = set.HAS_PHONEBOOK;
8822 target.isSupportSD = set.SD_CARD_SUPPORT;
8823 target.isCPE = set.PRODUCT_TYPE == 'CPE';
8824 target.hasRj45 = set.RJ45_SUPPORT;
8825 target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';
8826 target.hasParentalControl = set.HAS_PARENTAL_CONTROL;
zw.wang96c5d4e2025-07-01 11:35:13 +08008827 target.hasVoice = set.HAS_VOICE;
8828 var wifiInfo = fnc.getWifiBasic();
8829 if (set.WIFI_SUPPORT_QR_SWITCH) {
8830 target.showQRCode = set.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
8831 } else {
8832 target.showQRCode = set.WIFI_SUPPORT_QR_CODE;
8833 }
8834 if(set.WIFI_SUPPORT_QR_CODE){
8835 target.qrcodeSrc = './pic/qrcode_ssid_wifikey.png?_=' + libjq.now();
8836 } else {
8837 target.qrcodeSrc = './pic/res_blacktrans.png';
8838 }
8839 if (target.hasRj45) {
8840 var opModeObj = checkCableMode(fnc.getOpMode().blc_wan_mode);
8841 target.opCurMode = libko.observable(opModeObj);
8842 target.isShowHomeConnect = libko.observable(!opModeObj);
8843 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT && !opModeObj);
8844 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING && !opModeObj);
8845 } else {
8846 target.isShowHomeConnect = libko.observable(true);
8847 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT);
8848 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING);
8849 }
8850 if (set.PRODUCT_TYPE == 'DATACARD') {
8851 libjq('#home_image').addClass('data-card');
8852 }
8853 var info = fnc.getConnectionInfo();
8854 target.networkType = libko.observable(homeUtil.getNetworkType(info.networkType));
8855 target.connectStatus = libko.observable(info.connectStatus);
8856 target.canConnect = libko.observable(false);
8857 target.cStatus = libko.computed(function () {
8858 if (target.connectStatus().indexOf('_connected') != -1) {
8859 return connStat.CONNECTED;
8860 } else if (target.connectStatus().indexOf('_disconnecting') != -1) {
8861 return connStat.DISCONNECTING;
8862 } else if (target.connectStatus().indexOf('_connecting') != -1) {
8863 return connStat.CONNECTING;
8864 } else {
8865 return connStat.DISCONNECTED;
8866 }
8867 });
8868 target.current_Flux = libko.observable(transUnit(0, false));
8869 target.connected_Time = libko.observable(transSecond2Time(0));
8870 target.up_Speed = libko.observable(transUnit(0, true));
8871 target.down_Speed = libko.observable(transUnit(0, true));
8872 target.isLoggedIn = libko.observable(false);
8873 target.enableFlag = libko.observable(true);
8874 target.simSerialNumber = libko.observable('');
8875 target.imei = libko.observable('');
8876 target.imsi = libko.observable('');
zw.wang96c5d4e2025-07-01 11:35:13 +08008877 target.ssid = libko.observable('');
8878 target.hasWifi = set.HAS_WIFI;
8879 target.showMultiSsid = libko.observable(set.HAS_MULTI_SSID && wifiInfo.multi_ssid_enable == "1");
8880 target.trafficAlertEnable = libko.observable(false);
8881 target.trafficUsed = libko.observable('');
8882 target.trafficLimited = libko.observable('');
8883 target.wireDeviceNum = libko.observable(fnc.getAttachedCableDevices().attachedDevices.length);
8884 target.wirelessDeviceNum = libko.observable(fnc.getStatusInfo().wirelessDeviceNum);
8885 target.showOpModeWindow = function () {
8886 if (target.enableFlag()) {
8887 return;
8888 }
8889 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {});
8890 };
8891 target.currentOpMode = libko.observable("0");
8892 var popoverShown = false;
8893 libjq('#showDetailInfo').popover({
8894 html: true,
8895 placement: 'top',
8896 trigger: 'focus',
8897 title: function () {
8898 return libjq.i18n.prop('device_info')
8899 },
8900 content: function () {
8901 return getDetailInfoContent();
8902 }
8903 }).on('shown.bs.popover', function () {
8904 popoverShown = true;
8905 }).on('hidden.bs.popover', function () {
8906 popoverShown = false;
8907 });
8908 function fetchDeviceInfo() {
8909 var data = fnc.getDeviceInfo();
8910 target.simSerialNumber(verifyDeviceInfo(data.simSerialNumber));
8911 target.imei(verifyDeviceInfo(data.imei));
8912 target.imsi(verifyDeviceInfo(data.imsi));
zw.wang96c5d4e2025-07-01 11:35:13 +08008913 target.ssid(verifyDeviceInfo(data.ssid));
8914 target.showMultiSsid(set.HAS_MULTI_SSID && data.multi_ssid_enable == "1");
8915 return data;
8916 }
8917 fetchDeviceInfo();
8918 function getDetailInfoContent() {
8919 var data = fetchDeviceInfo();
8920 homeUtil.initShownStatus(data);
8921 var addrInfo = homeUtil.wanIpGet(data);
8922 var compiled = libus.template(libjq("#detailInfoTmpl").html());
8923 var tmpl = compiled({
8924 simSerialNumber: verifyDeviceInfo(data.simSerialNumber),
8925 imei: verifyDeviceInfo(data.imei),
8926 imsi: verifyDeviceInfo(data.imsi),
zw.wang96c5d4e2025-07-01 11:35:13 +08008927 signal: signalFormat(data.signal),
mj.qu6ac12722025-07-03 02:12:24 -07008928 cellid: verifyDeviceInfo(data.cellid),
zw.wang96c5d4e2025-07-01 11:35:13 +08008929 hasWifi: set.HAS_WIFI,
8930 isCPE: set.PRODUCT_TYPE == 'CPE',
8931 hasRj45: set.RJ45_SUPPORT,
8932 showMultiSsid: set.HAS_MULTI_SSID && data.multi_ssid_enable == "1",
8933 ssid: verifyDeviceInfo(data.ssid),
8934 max_access_num: verifyDeviceInfo(data.max_access_num),
8935 m_ssid: verifyDeviceInfo(data.m_ssid),
8936 m_max_access_num: verifyDeviceInfo(data.m_max_access_num),
8937 wifi_long_mode: "wifi_des_" + data.wifiRange,
8938 lanDomain: verifyDeviceInfo(data.lanDomain),
8939 ipAddress: verifyDeviceInfo(data.ipAddress),
8940 showMacAddress: set.SHOW_MAC_ADDRESS,
8941 macAddress: verifyDeviceInfo(data.macAddress),
8942 showIpv4WanIpAddr: homeUtil.initStatus.showIpv4WanIpAddr,
8943 wanIpAddress: addrInfo.wanIpAddress,
8944 showIpv6WanIpAddr: homeUtil.initStatus.showIpv6WanIpAddr,
8945 ipv6WanIpAddress: addrInfo.ipv6WanIpAddress,
8946 sw_version: verifyDeviceInfo(data.sw_version),
8947 hw_version: verifyDeviceInfo(data.hw_version)
8948 });
8949 return libjq(tmpl).translate();
8950 }
8951 target.connectHandler = function () {
8952 if (target.connectStatus() == "ppp_connected") {
8953 showLoading('disconnecting');
8954 fnc.disconnect({}, function (data) {
8955 if (data.result) {
8956 successOverlay();
8957 } else {
8958 errorOverlay();
8959 }
8960 });
8961 } else {
8962 if (fnc.getStatusInfo().roamingStatus) {
8963 showConfirm('dial_roaming_connect', function () {
8964 target.connect();
8965 });
8966 } else {
8967 target.connect();
8968 }
8969 }
8970 };
8971 target.connect = function () {
8972 var statusInfo = fnc.getStatusInfo();
8973 var trafficResult = barStat.getTrafficResult(statusInfo);
8974 if (statusInfo.limitVolumeEnable && trafficResult.showConfirm) {
8975 var confirmMsg = null;
8976 if (trafficResult.usedPercent > 100) {
8977 confirmMsg = {
8978 msg: 'traffic_beyond_connect_msg'
8979 };
8980 barStat.setTrafficAlertPopuped(true);
8981 } else {
8982 confirmMsg = {
8983 msg: 'traffic_limit_connect_msg',
8984 params: [trafficResult.limitPercent]
8985 };
8986 barStat.setTrafficAlert100Popuped(false);
8987 }
8988 showConfirm(confirmMsg, function () {
8989 homeUtil.doConnect();
8990 });
8991 } else {
8992 homeUtil.doConnect();
8993 }
8994 };
8995 fnc.getSignalStrength({}, function (data) {
8996 var signalTxt = signalFormat(convertSignal(data));
8997 libjq("#fresh_signal_strength").text(signalTxt);
8998 if (popoverShown) {
8999 libjq("#popoverSignalTxt").text(signalTxt);
9000 }
9001 });
9002 homeUtil.refreshHomeData(target);
9003 addInterval(function () {
9004 fnc.getSignalStrength({}, function (data) {
9005 var signalTxt = signalFormat(convertSignal(data));
9006 libjq("#fresh_signal_strength").text(signalTxt);
9007 if (popoverShown) {
9008 libjq("#popoverSignalTxt").text(signalTxt);
9009 }
9010 });
9011 homeUtil.refreshHomeData(target);
9012 }, 1000);
9013 if (target.hasRj45) {
9014 homeUtil.refreshOpmodeInfo(target);
9015 addInterval(function () {
9016 homeUtil.refreshOpmodeInfo(target);
9017 }, 1000);
9018 }
9019 target.showNetworkSettingsWindow = function () {
9020 if (target.hasRj45) {
9021 fnc.getOpMode({}, function (data) {
9022 var mode = checkCableMode(data.blc_wan_mode);
9023 if (mode) {
9024 window.location.hash = '#network_set';
9025 } else {
9026 window.location.hash = '#conn_set';
9027 }
9028 });
9029 } else {
9030 window.location.hash = '#conn_set';
9031 }
9032 }
9033 };
9034 return {
9035 init: init
9036 };
9037});
9038
9039
9040define("language","knockout service jquery set underscore".split(" "),
9041 function(ko, service, $, config, _) {
9042
9043 // ��ȡ��ǰ������
9044 function getCurrentLanguage() {
9045 return service.getLanguage();
9046 }
9047
9048 // �������������������Դ������ҳ���ϵ�body����
9049 // @param {String} current ������:zh-cn
9050 function loadLanguageAndRefresh(current){
9051 window.CURRENT_LANGUAGE = current;
9052 $("body").attr('lang', current);
9053 $.i18n.properties({
9054 name:'Messages',
9055 path:'i18n/',
9056 mode:'map',
9057 cache: true,
9058 language:current,
9059 callback: function() {
9060 jQuery.validator.messages = $.i18n.map;
9061 $('body').translate();
9062 }
9063 });
9064 }
9065
9066 window.language = null;
9067
9068
9069 function LanguageViewModel() {
9070 var target = this;
9071 var currentLan = getCurrentLanguage();
9072 var languages = _.map(config.LANGUAGES, function(item) {
9073 return new Option(item.name, item.value);
9074 });
9075
9076 document.title = config.WEBUI_TITLE;
9077 if($('#webui_title')[0]) {
9078 $('#webui_title').html(config.WEBUI_TITLE);
9079 }
9080
9081 target.languages = ko.observableArray(languages);
9082 target.currentLan = ko.observable(currentLan.Language);
9083 window.language = target.currentLan();
9084
9085 // �л������¼�����
9086 // @event langChangeHandler
9087 target.langChangeHandler = function(info, event) {
9088 clearValidateMsg();
9089
9090 service.setLanguage({Language: target.currentLan()}, function() {
9091 loadLanguageAndRefresh(target.currentLan());
9092 window.language = target.currentLan();
9093 });
9094 };
9095
9096 // ���������б���ˢ�½���
9097 loadLanguageAndRefresh(target.currentLan());
9098 }
9099
9100 // ��ʼ������VM����
9101 function init() {
9102 ko.applyBindings(new LanguageViewModel(), $('#language')[0]);
9103 }
9104
9105 return {
9106 init: init
9107 };
9108});
9109
9110
9111// ��½ ģ��
9112define("entry","jquery knockout set service underscore menu logout CryptoJS".split(" "),
9113 function($, ko,config, service, _, menu, logout, CryptoJS) {
9114
9115
9116 var pageState = {LOGIN:0, WAIT_PIN:1, WAIT_PUK:2, PUK_LOCKED:3, LOGGEDIN:4, LOADING:5};
9117 var timer = loginStatusCheckingTimer();
9118 var loginLockTimer = 0;
9119 var lastLoginStatus = "0";
9120
9121 function loginViewModel() {
9122 var target = this;
9123 var data = service.getLoginData();
9124 var loginStatus = service.getLoginStatus();
9125
9126 target.confirmPIN = ko.observable();
9127 target.leftSeconds = ko.observable(0);
9128 target.loginCount = ko.observable(0);
9129 target.loginSecuritySupport = ko.observable(config.LOGIN_SECURITY_SUPPORT);
9130 target.newPIN = ko.observable();
9131 target.password = ko.observable();
mj.qu6ac12722025-07-03 02:12:24 -07009132 target.username = ko.observable();
zw.wang96c5d4e2025-07-01 11:35:13 +08009133 target.PIN = ko.observable();
9134 target.pinNumber = ko.observable(data.pinnumber);
9135 target.PUK = ko.observable();
9136 target.pukNumber = ko.observable(data.puknumber);
9137 target.showEntrance = ko.observable(false);
9138 target.sharePathInvalid = ko.observable(false);
9139 target.uiLoginTimer = ko.observable(300);
9140
9141 // ע��˳�򣬵���ǰ����޷�ˢ�³�����
9142 target.accountLocked = ko.computed(function () {
9143 return target.loginCount() == config.MAX_LOGIN_COUNT && target.leftSeconds() != '-1';
9144 });
9145
9146 target.leftUnlockTime = ko.computed(function () {
9147 target.leftSeconds();
9148 var formatted = transSecond2Time(target.uiLoginTimer());
9149 return formatted.substring(formatted.indexOf(':') + 1, formatted.length);
9150 });
9151
9152
9153 if(config.SD_CARD_SUPPORT){
9154 service.getSDConfiguration({}, function (data) {
9155 target.showEntrance(data.sd_status == "1" && data.share_status == "1" && data.sd_mode == "0");
9156 if(target.showEntrance()){
9157 service.checkFileExists({
9158 path: data.share_file
9159 }, function (data1) {
9160 if (data1.status == 'exist' || data1.status == 'processing') {
9161 target.sharePathInvalid(false);
9162 } else {
9163 target.sharePathInvalid(true);
9164 }
9165 });
9166 }
9167 });
9168 }
9169
9170 var state = computePageState(loginStatus, data);
9171 target.pageState = ko.observable(state);
9172 if (state == pageState.LOADING) {
9173 addTimeout(refreshPage, 500);
9174 }
9175 setFocus();
9176
9177
9178 // login �¼�����
9179
9180 target.login = function () {
9181 if(config.LOGIN_SECURITY_SUPPORT && target.accountLocked()){
9182 showAlert("password_error_account_lock_time", function () {
9183 setFocus();
9184 });
9185 return false;
9186 }
9187 target.pageState(pageState.LOADING);
9188 window.clearInterval(timer);
9189 var ciphertext = "";
9190 if (config.PASSWORD_ENCODE) {
9191 ciphertext = target.password();
mj.qu6ac12722025-07-03 02:12:24 -07009192 var username = target.username();
zw.wang96c5d4e2025-07-01 11:35:13 +08009193 } else {
9194 var kparam = service.getDeviceInfoLow();
9195 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
9196 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
9197 ciphertext = CryptoJS.AES.encrypt(target.password(), tkey, {
9198 iv: tiv,
9199 mode: CryptoJS.mode.CBC,
9200 padding: CryptoJS.pad.ZeroPadding
9201 }).toString();
9202 }
9203 service.login({
mj.qu6ac12722025-07-03 02:12:24 -07009204 password:ciphertext,
9205 username: username
zw.wang96c5d4e2025-07-01 11:35:13 +08009206 }, function (info) {
9207 setTimeout(function () {
9208 timer = loginStatusCheckingTimer();
9209 }, 1300);
9210 if (info.result) {
9211 target.pageState(pageState.LOGGEDIN);
9212 if(config.LOGIN_SECURITY_SUPPORT){
9213 target.loginCount(0);
9214 target.uiLoginTimer(300);
9215 clearInterval(loginLockTimer);
9216 }
9217 $("#container").empty();
9218 window.location.hash = "#main";
9219 logout.init();
9220 } else {
9221 target.password("");
mj.qu6ac12722025-07-03 02:12:24 -07009222 target.username("");
zw.wang96c5d4e2025-07-01 11:35:13 +08009223 if(config.LOGIN_SECURITY_SUPPORT){
9224 target.checkLoginData(function(){
9225 if (target.loginCount() == config.MAX_LOGIN_COUNT) {
9226 showAlert("password_error_five_times", function () {
9227 setFocus();
9228 });
9229 target.startLoginLockInterval();
9230 } else {
9231 showAlert({msg: 'password_error_left', params: [config.MAX_LOGIN_COUNT - target.loginCount()]}, function () {
9232 setFocus();
9233 });
9234 }
9235 });
9236 }else {
9237 showAlert("password_error", function () {
9238 setFocus();
9239 });
9240 }
9241 target.pageState(pageState.LOGIN);
9242 }
9243 });
9244 };
9245
9246
9247
9248
9249 // ��ȡ��¼�����Ϣ
9250 target.checkLoginData = function(cb){
9251 service.getLoginData({}, function(r){
9252 var failTimes = parseInt(r.psw_fail_num_str, 10);
9253 target.loginCount(config.MAX_LOGIN_COUNT - failTimes);
9254 target.leftSeconds(r.login_lock_time);
9255 target.uiLoginTimer(r.login_lock_time);
9256 if($.isFunction(cb)){
9257 cb();
9258 } else if (target.loginCount() == config.MAX_LOGIN_COUNT) {
9259 target.startLoginLockInterval();
9260 }
9261 });
9262 };
9263
9264 // ��������ʱ��ʱ����
9265 target.startLoginLockInterval = function () {
9266 loginLockTimer = setInterval(function () {
9267 service.getLoginData({}, function (data) {
9268 if (data.login_lock_time <= 0 || data.psw_fail_num_str == 5) {
9269 target.loginCount(0);
9270 clearInterval(loginLockTimer);
9271 }
9272 if(target.leftSeconds() != data.login_lock_time){
9273 target.leftSeconds(data.login_lock_time);
9274 target.uiLoginTimer(data.login_lock_time);
9275 } else {
9276 target.uiLoginTimer(target.uiLoginTimer() > 0 ? target.uiLoginTimer() - 1 : 0);
9277 }
9278 });
9279 }, 1000);
9280 };
9281
9282 target.checkLoginData();
9283
9284
9285
9286 // ��֤����PIN�¼�����
9287 target.enterPIN = function () {
9288 target.pageState(pageState.LOADING);
9289 var pin = target.PIN();
9290 service.enterPIN({
9291 PinNumber:pin
9292 }, function (data) {
9293 if (!data.result) {
9294 showAlert("pin_error", function () {
9295 refreshPage();
9296 });
9297 target.PIN('');
9298 } else {
9299 refreshPage();
9300 }
9301 });
9302 };
9303
9304 function setFocus(){
9305 setTimeout(function () {
9306 var txtAdmin = $('#txtAdmin:visible');
mj.qu6ac12722025-07-03 02:12:24 -07009307 var txtUser = $('#txtUser:visible');
zw.wang96c5d4e2025-07-01 11:35:13 +08009308 var txtPIN = $('#txtPIN:visible');
9309 var txtPUK = $('#txtPUK:visible');
mj.qu6ac12722025-07-03 02:12:24 -07009310 if(txtUser.length > 0) {
9311 txtUser.focus();
9312 } else if (txtAdmin.length > 0) {
zw.wang96c5d4e2025-07-01 11:35:13 +08009313 txtAdmin.focus();
9314 } else if (txtPIN.length > 0) {
9315 txtPIN.focus();
9316 } else if (txtPUK.length > 0) {
9317 txtPUK.focus();
9318 }
9319 }, 100);
9320 }
9321
9322
9323 // ˢ��ҳ��״̬
9324 function refreshPage() {
9325 var data = service.getLoginData();
9326 var loginStatus = service.getLoginStatus();
9327 var state = computePageState(loginStatus, data);
9328 if (state == pageState.LOADING) {
9329 addTimeout(refreshPage, 500);
9330 } else {
9331 target.pageState(state);
9332 target.pinNumber(data.pinnumber);
9333 target.pukNumber(data.puknumber);
9334 }
9335 setFocus();
9336 }
9337
9338 // ����PUK������PIN�¼�����
9339 target.enterPUK = function () {
9340 target.pageState(pageState.LOADING);
9341 var newPIN = target.newPIN();
9342 var confirmPIN = target.confirmPIN();
9343 var params = {};
9344 params.PinNumber = newPIN;
9345 params.PUKNumber = target.PUK();
9346 service.enterPUK(params, function (data) {
9347 if (!data.result) {
9348 showAlert("puk_error", function () {
9349 refreshPage();
9350 });
9351 target.PUK('');
9352 target.newPIN('');
9353 target.confirmPIN('');
9354 } else {
9355 refreshPage();
9356 }
9357 });
9358 };
9359
9360
9361
9362 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
9363 function checkPinAfterLogin(loginStatus, data) {
9364 if (loginStatus.status == "loggedIn") {
9365 var currentState = data.modem_main_state; // cov_2
9366 if (currentState == "modem_waitpin") {
9367 return pageState.WAIT_PIN;
9368 } else if ((currentState == "modem_waitpuk" || data.pinnumber == 0) && (data.puknumber != 0)) {
9369 return pageState.WAIT_PUK;
9370 } else if ((data.puknumber == 0 || currentState == "modem_sim_destroy")
9371 && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
9372 return pageState.PUK_LOCKED;
9373 } else {
9374 return pageState.LOGGEDIN;
9375 }
9376 } else {
9377 var currentState = data.modem_main_state;
9378 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
9379 return pageState.LOADING;
9380 } else {
9381 return pageState.LOGIN;
9382 }
9383 }
9384 }
9385
9386 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
9387 function computePageState(loginStatus, data) {
9388 //PX-880 �ȵ�¼�ٽ���PIN��֤������router���ԭ�򣬵�¼��PIN��֤���ڵ�¼ҳ����У������ݿ�����֤����һ�¡�
9389 if (config.LOGIN_THEN_CHECK_PIN) {
9390 return checkPinAfterLogin(loginStatus, data);
9391 } else {
9392 return loginAfterCheckPin(loginStatus, data);
9393 }
9394 }
9395
9396 // ���ݵ�¼״̬��SIM��״̬����ҳ��״̬
9397 function loginAfterCheckPin(loginStatus, data) {
9398 if (loginStatus.status == "loggedIn") {
9399 return pageState.LOGGEDIN;
9400 } else {
9401 var currentState = data.modem_main_state;
9402 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
9403 return pageState.LOADING;
9404 } else if (currentState == "modem_waitpin") {
9405 return pageState.WAIT_PIN;
9406 } else if ((currentState == "modem_waitpuk" || parseInt(data.pinnumber) === 0) && (parseInt(data.puknumber) != 0)) {
9407 return pageState.WAIT_PUK;
9408 } else if ((parseInt(data.puknumber) === 0 || currentState == "modem_sim_destroy") && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
9409 return pageState.PUK_LOCKED;
9410 } else {
9411 return pageState.LOGIN;
9412 }
9413 }
9414 }
9415 }
9416
9417
9418 // ��鵱ǰwindow.location.hash���쳣����ת��index.html
9419 function gotoLogin() {
9420 if (window.location.hash != config.defaultRoute && _.indexOf(config.GUEST_HASH, window.location.hash) == -1) {
9421 if (!manualLogout && lastLoginStatus == "1") {
9422 manualLogout = false;
9423 lastLoginStatus = 'UNREAL';
9424 showAlert('need_login_again', function () {
9425 window.location = "index.html";
9426 });
9427 } else if (lastLoginStatus == 'UNREAL') {
9428 //do nothing, only popup need_login_again alert one time
9429 return;
9430 } else {
9431 window.location = "index.html";
9432 }
9433 }
9434 }
9435
9436 // ��ʱ����¼״̬
9437 function loginStatusCheckingTimer() {
9438 return setInterval(function () {
9439 var info = service.getStatusInfo();
9440 if (!info.isLoggedIn) {
9441 gotoLogin();
9442 return;
9443 }
9444 lastLoginStatus = service.getStatusInfo().isLoggedIn ? "1" : "0";
9445 }, 1000);
9446 }
9447
9448 function init() {
9449 var info = service.getStatusInfo();
9450 if (info.isLoggedIn) {
9451 window.location.hash = '#main';
9452 return;
9453 }
9454
9455 var container = $('#container')[0];
9456 ko.cleanNode(container);
9457 var fwVm = new loginViewModel();
9458 ko.applyBindings(fwVm, container);
9459
9460 $('#frmLogin').validate({
9461 submitHandler:function () {
9462 fwVm.login();
9463 },
9464 rules: {
9465 txtAdmin: 'login_password_length_check'
9466 }
9467 });
9468 $('#frmPIN').validate({
9469 submitHandler:function () {
9470 fwVm.enterPIN();
9471 },
9472 rules:{
9473 txtPIN:"pin_check"
9474 }
9475 });
9476 $('#frmPUK').validate({
9477 submitHandler:function () {
9478 fwVm.enterPUK();
9479 },
9480 rules:{
9481 txtNewPIN:"pin_check",
9482 txtConfirmPIN:{equalToPin:"#txtNewPIN"},
9483 txtPUK:"puk_check"
9484 }
9485 });
9486 }
9487
9488
9489 return {
9490 init:init,
9491 gotoLogin:gotoLogin
9492 };
9493 });
9494
9495
9496// Logout �
9497define("logout","set service knockout underscore jquery".split(" "),
9498 function (config, service, ko, _, $) {
9499
9500 function logoutViewModel() {
9501 var target = this;
9502 // ��ȡ�Ƿ��¼
9503 var loginFlag = function () {
9504 var loginInfo = service.getLoginStatus();
9505 return (loginInfo.status == "loggedIn");
9506 }
9507 ();
9508 target.loggedIn = ko.observable(loginFlag);
9509
9510 // �˳�ϵͳ
9511 target.logout = function () {
9512 showConfirm("confirm_logout", function () {
9513 manualLogout = true;
9514 service.logout({}, setLocation());
9515 });
9516 };
9517
9518 // �Ƿ���ʾ�˳���ť
9519 target.showLogout = function () {
9520 if (config.HAS_LOGIN) {
9521 return target.loggedIn();
9522 } else {
9523 return false;
9524 }
9525 };
9526 }
9527 function setLocation() {
9528 window.location = 'index.html';
9529 }
9530 function initialize() {
9531 var fwVm = new logoutViewModel();
9532 bindContainer(fwVm);
9533 }
9534 function bindContainer(fwVm) {
9535 var con = $('#logout')[0];
9536 ko.cleanNode(con);
9537 ko.applyBindings(fwVm, con);
9538 }
9539 return {
9540 init: initialize
9541 };
9542});
9543
9544// operation mode �
9545define("opmode","knockout service jquery set underscore".split(" "),
9546
9547 function (ko, service, $, config, _) {
9548
9549 function currentOperationModeViewMode(){
9550 var target = this;
9551 target.isLoggedIn = ko.observable(false);
9552 target.enableFlag = ko.observable(false);
9553
9554 target.showOpModeWindow = function () {
9555 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {
9556 });
9557 };
9558 target.currentOpMode = ko.observable("0");
9559
9560 service.getOpMode({}, function(info){
9561 target.isLoggedIn(info.loginfo == "ok");
9562 if (info.opms_wan_mode != "PPP" && info.rj45_state != "idle" && info.rj45_state != "dead") {
9563 target.enableFlag(false);
9564 } else if (info.opms_wan_mode == "PPP" && info.ppp_status != "ppp_disconnected") {
9565 target.enableFlag(false);
9566 } else if(info.opms_wan_mode == "DHCP"){
9567 target.enableFlag(true);
9568 } else {
9569 target.enableFlag(true);
9570 }
9571
9572 var opmsWanMode = (info.opms_wan_mode == "DHCP" || info.opms_wan_mode == "STATIC") ? "PPPOE" : info.opms_wan_mode;
9573
9574 var currentOperationMode = "";
9575 switch(opmsWanMode){
9576 case "BRIDGE":
9577 currentOperationMode = "opmode_bridge";
9578 break;
9579 case "PPP":
9580 currentOperationMode = "opmode_gateway";
9581 break;
9582 case "PPPOE":
9583 currentOperationMode = "opmode_cable";
9584 break;
9585 default:
9586 break;
9587 }
9588 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
9589 });
9590 // ��ʱ��ѯ����ģʽ���״̬�����ý���״̬
9591 setInterval(function(){
9592 var object = service.getConnectionInfo();
9593 if(object.opms_wan_mode == "DHCP") {
9594 target.enableFlag(true);
9595 } 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")) {
9596 target.enableFlag(false);
9597 } else {
9598 target.enableFlag(true);
9599 }
9600 }, 1000);
9601 }
9602
9603 function init() {
9604 var container = $('#currentOpMode')[0];
9605 ko.cleanNode(container);
9606 var fwVm = new currentOperationModeViewMode();
9607 ko.applyBindings(fwVm, container);
9608 }
9609
9610 return {
9611 init:init
9612 };
9613});
9614
9615// operation mode popup�
9616
9617define("opmode_popup","knockout service jquery set underscore".split(" "),
9618
9619 function (ko, service, $, config, _) {
9620
9621 function operationModeViewMode() {
9622 var target = this;
9623 var currentSelectedOperationMode = "";
9624 target.selectedMode = ko.observable("0");
9625
9626 // ��ʼ������ģʽ��ʾ
9627 service.getOpMode({}, function(info){
9628 if(info.blc_wan_mode == "AUTO_PPP"){
9629 currentSelectedOperationMode = "AUTO";
9630 }else if(info.blc_wan_mode == "AUTO_PPPOE"){
9631 currentSelectedOperationMode = "AUTO";
9632 }else if(info.blc_wan_mode == "PPPOE"){
9633 currentSelectedOperationMode = "PPPOE";
9634 }else{
9635 currentSelectedOperationMode = info.blc_wan_mode;
9636 }
9637 target.selectedMode(currentSelectedOperationMode);
9638 });
9639
9640 // ģʽ����/�л�
9641 target.changeOpMode = function(){
9642 var userSelectedOperationMode = $('input:radio[name="opMode"]:checked').val();
9643 var messageText = "";
9644 if(userSelectedOperationMode == currentSelectedOperationMode) {
9645 hidePopupSettingWindow();
9646 return;
9647 }
9648 if(userSelectedOperationMode == "LTE_BRIDGE"){
9649 messageText = "opmode_msg3";
9650 }else{
9651 messageText = "opmode_msg2";
9652 }
9653 showConfirm(messageText, function(){
9654 showLoading();
9655 service.SetOperationMode({
9656 opMode: userSelectedOperationMode
9657 },function(info){
9658 if (info && info.result == "success") {
9659 var currentOperationMode = "";
9660 switch(userSelectedOperationMode){
9661 case "AUTO":
9662 currentOperationMode = "opmode_auto"
9663 break;
9664 case "PPP":
9665 currentOperationMode = "opmode_gateway";
9666 break;
9667 case "PPPOE":
9668 currentOperationMode = "opmode_cable";
9669 break;
9670 default:
9671 break;
9672 }
9673 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
9674 successOverlay();
9675 } else {
9676 errorOverlay();
9677 }
9678 });
9679 });
9680
9681 }
9682
9683 }
9684
9685 function init() {
9686 var fwVm = new operationModeViewMode();
9687 ko.applyBindings(fwVm, $('#popupSettingWindow')[0]);
9688
9689 $("#opmode_form").validate({
9690 submitHandler: function(){
9691 fwVm.changeOpMode();
9692 }
9693 });
9694 }
9695
9696 return {
9697 init:init
9698 };
9699});
9700
9701define("router","underscore jquery menu set service".split(" "),
9702 function (_, $, menu, config, service) {
9703 var currentHash = '';
9704 var container = $('#container');
9705
9706 //�뿪����ʱ����Ƿ��������޸ģ����������ʾ
9707 checkFormContentModify = function (href) {
9708 if (config.CONTENT_MODIFIED.modified && window.location.hash != href) {
9709 if (config.CONTENT_MODIFIED.message == 'sms_to_save_draft') {
9710 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
9711 config.resetContentModifyValue();
9712 window.location.hash = href;
9713 } else {
9714 showConfirm(config.CONTENT_MODIFIED.message, {
9715 ok: function () {
9716 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
9717 config.resetContentModifyValue();
9718 window.location.hash = href;
9719 },
9720 no: function () {
9721 var result = config.CONTENT_MODIFIED.callback.no(config.CONTENT_MODIFIED.data);
9722 if (!result) {
9723 window.location.hash = href;
9724 config.resetContentModifyValue();
9725 }
9726 }
9727 });
9728 }
9729 return false;
9730 } else {
9731 return true;
9732 }
9733 };
9734
9735 //��ʱ�鿴SIM����״̬������ǰSIM��״̬��Ϊ����״̬��δ��ʾnosimcardҳ�棬����ʾnosimcardҳ��,�Ա��ⲻ�ر�webui�����²���豸�󣬲����ж�SIM��״̬������
9736 function checkSimCardStatus() {
9737 setInterval(function () {
9738 var data = service.getStatusInfo();
9739 var match = menu.findMenu();
9740 if (match.length == 0) {
9741 return false;
9742 }
9743 var requirePinHash = ["phonebook", "sms_list"];
9744 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
9745 if (match[0].checkSIMStatus === true) {
9746 var simstatus = data.simStatus == "modem_sim_undetected"
9747 || data.simStatus == "modem_sim_destroy" || data.simStatus == "modem_waitpin"
9748 || data.simStatus == "modem_waitpuk";
9749 var netlockstatus = data.simStatus == "modem_imsi_waitnck";
9750 if (data.isLoggedIn && (
9751 ($('#div-nosimcard')[0] == undefined && simstatus)
9752 || ($('#div-network-lock')[0] == undefined && netlockstatus)
9753 || (($('#div-nosimcard')[0] != undefined || $('#div-network-lock')[0] != undefined) && data.simStatus == "modem_init_complete"))) {
9754 fixedLoadResources(match[0], data.simStatus, isRequirePin);
9755 }
9756 }
9757 }, 1000);
9758 }
9759
9760 //����¼ҳ�汳��
9761 function checkLoginPageBg() {
9762 var h = window.location.hash;
9763 if (h == '#entry' || _.indexOf(config.GUEST_HASH, h) != -1) {
9764 $("#manageContainer").attr("style", "margin-top:-36px;");
9765 } else {
9766 $("#manageContainer").attr("style", "margin-top:0px;");
9767 }
9768
9769 if (window.location.hash == '#entry') {
9770 $("#mainContainer").addClass('loginBackgroundBlue');
9771 } else {
9772 var mainContainer = $("#mainContainer");
9773 if (mainContainer.hasClass('loginBackgroundBlue')) {
9774 $("#container").css({
9775 margin: 0
9776 });
9777 mainContainer.removeClass('loginBackgroundBlue').height('auto');
9778 }
9779 }
9780 }
9781
9782 function fixedLoadResources(menuItem, simStatus, isRequirePin) {
9783 var item = {};
9784 $.extend(item, menuItem);
9785 //û��SIM��ʱ�����homeҳ�治��������
9786 //���类��ʱ��homeҳ����ʾ����ҳ��
9787 if (simStatus == "modem_sim_undetected" || simStatus == "modem_sim_destroy") {
9788 if (!isRequirePin) {
9789 item.path = "sim_abnormal";
9790 }
9791 } else if (simStatus == "modem_waitpin" || simStatus == "modem_waitpuk") {
9792 item.path = "sim_abnormal";
9793 } else if (simStatus == "modem_imsi_waitnck") {
9794 item.path = "locknet";
9795 }
9796 //load tmpl and controller js
9797 loadResources(item);
9798 }
9799
9800 //���ݲ˵�����item���ض�Ӧ����Դ
9801 function loadResources(item) {
9802 var pId = item.path.replace(/\//g, '_');
9803 var $body = $('body').removeClass();
9804 if (pId != 'entry' && pId != 'main') {
9805 $body.addClass('beautiful_bg page_' + pId);
9806 } else {
9807 $body.addClass('page_' + pId);
9808 }
9809 clearTimer();
9810 hideLoading();
9811 var tmplPath = 'text!tmpl/' + item.path + '.html';
9812 //TODO: prevent first menu click cover the second menu content, need test with device
9813 require([tmplPath, item.path], function (tmpl, viewModel) {
9814 container.stop(true, true);
9815 container.hide();
9816 container.html(tmpl);
9817 viewModel.init();
9818 //support backward/forward
9819 menu.refreshMenu();
9820 $('#container').translate();
9821 menu.activeSubMenu();
9822
9823 $("form").attr("autocomplete", "off");
9824 container.fadeIn();
9825 });
9826 }
9827 //�ȶ�hash״̬, ����仯������µ�hashƥ��˵�����,ƥ�䲻��ʱ��ת��homeҳ��, ƥ����ʱ��¼hashֵ����̬���ض�Ӧ����Դ�ļ�
9828 function hashCheck() {
9829 if (window.location.hash != currentHash) {
9830 //�����½���������, ��½�û����ʷǵ�¼�û�ʱҳ�治��ת
9831 var info = service.getStatusInfo();
9832 if (window.location.hash == config.defaultRoute || _.indexOf(config.GUEST_HASH, window.location.hash) != -1) {
9833 if (info.isLoggedIn) {
9834 window.location.hash = currentHash == "" ? "#main" : currentHash;
9835 return;
9836 }
9837 }
9838
9839 var match = menu.findMenu();
9840
9841 if (match.length == 0) {
9842 window.location.hash = config.defaultRoute;
9843 } else {
9844 //��¼ʱ��鹤��ģʽ������ģʽ������������Ҫ���SIM��״̬�����¼���,����ģʽ�������治��Ҫ���SIM��״̬�����¼���
9845 if (config.RJ45_SUPPORT && window.location.hash == "#main") {
9846 if ((match[0].checkSIMStatus && checkCableMode(info.blc_wan_mode)) || (!match[0].checkSIMStatus && !checkCableMode(info.blc_wan_mode))) {
9847 window.location.reload();
9848 return;
9849 }
9850 }
9851 //TODO: �����˵����Ӧ�����˵���һ����л�ʱ�����¼�������, ��TODO: click the same menu ʵ�ַ�ʽ����
9852 var oldMenu = menu.findMenu(currentHash);
9853 currentHash = match[0].hash;
9854 if (currentHash == "#entry") {
9855 $('#indexContainer').addClass('login-page-bg');
9856 menu.rebuild();
9857 } else {
9858 $('#indexContainer').removeClass('login-page-bg');
9859 }
9860
9861 if (oldMenu.length != 0 && match[0].path == oldMenu[0].path && match[0].level != oldMenu[0].level && match[0].level != '1' && oldMenu[0].level != '1') {
9862 return;
9863 }
9864
9865 checkLoginPageBg();
9866 var requirePinHash = ["phonebook", "sms_list"];
9867 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
9868 if (match[0].checkSIMStatus === true || isRequirePin) {
9869 //simStatus is undefined when refreshing page
9870 if (info.simStatus == undefined) {
9871 showLoading('waiting');
9872 function checkSIM() {
9873 var data = service.getStatusInfo();
9874 if (data.simStatus == undefined || $.inArray(data.simStatus, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
9875 addTimeout(checkSIM, 500);
9876 } else {
9877 fixedLoadResources(match[0], data.simStatus, isRequirePin);
9878 hideLoading();
9879 }
9880 }
9881 checkSIM();
9882 } else {
9883 fixedLoadResources(match[0], info.simStatus, isRequirePin);
9884 }
9885 } else {
9886 loadResources(match[0]);
9887 }
9888 }
9889 }
9890 }
9891
9892 //Ĭ�����ҳ��Ϊ#main, ��ʱ���hash״̬
9893 function init() {
9894 checkSimCardStatus();
9895 window.location.hash = window.location.hash || "#main";
9896 //if support onhashchange then use. If ie8 in ie7 mode, it doesn't trigger onhashchange.
9897 if (('onhashchange' in window) && ((typeof document.documentMode === 'undefined') || document.documentMode == 8)) {
9898 window.onhashchange = hashCheck;
9899 hashCheck();
9900 } else {
9901 setInterval(hashCheck, 200);
9902 }
9903
9904 //����޸���ҳ������, �뿪ʱ������ʾ
9905 $("a[href^='#']").die('click').live('click', function () {
9906 var $this = $(this);
9907 config.CONTENT_MODIFIED.checkChangMethod();
9908 return checkFormContentModify($this.attr('href'));
9909 });
9910 }
9911
9912 return {
9913 init: init
9914 };
9915});
9916
9917// statusBar �
9918
9919define("statusBar", "knockout jquery underscore service set menu tooltip".split(" "),
9920
9921 function (ko, $, _, service, config, menu, tooltip) {
9922
9923 var sv__hasCheckedSMSCapacity = false;
9924 var sv__initSMSCompleted = false;
9925 var sv_newSMSMessageInDealing = false;
9926 var sv_fotaUpdateCancel = null;
9927 var sv_batteryCheckTimer = 0;
9928 var sv_dbMessageIds = [];
9929 var sv_fotaResultAlertPopuped = false;
9930 var sv_isFirstLoadNewMessage = true;
9931 var isLoggedIn = true;
9932 var sv_messagePopStack = {};
9933 var sv_newMessagePopTemplate = null;
9934 var sv_resetTrafficAlertPopuped = false;
9935 var sv_simMessageListTemplate = null;
9936 var sv_smsListTemplate = null;
9937 var sv_trafficAlertPopuped_100 = false;
9938 var sv_trafficAlertPopuped = false;
9939 var sv_timer = 0;
9940
9941 // ��ȡ״̬��Ϣ�������硢SIM��WIFI��
9942 var getCurrentStatusInfo = function () {
9943 return service.getStatusInfo();
9944 };
9945
9946 function statusViewModel() {
9947 var target = this;
9948 var info = getCurrentStatusInfo();
9949 var roamStatus = info.roamingStatus ? true : false;
9950 var $langLogoBar = $("#langLogoBar");
9951
9952
9953 // �����������¼�����
9954 function sf_connect() {
9955 showLoading("connecting");
9956 service.connect({}, function (data) {
9957 if (data.result) {
9958 refreshWifiConnectStatus(target, data.status);
9959 }
9960 successOverlay();
9961 }, function (data) {
9962 errorOverlay();
9963 });
9964 }
9965 // �Ͽ������¼�����
9966 function sf_disconnect() {
9967 showLoading("disconnecting");
9968 service.disconnect({}, function (data) {
9969 if (data.result) {
9970 refreshWifiConnectStatus(target, data.status);
9971 }
9972 successOverlay();
9973 }, function (data) {
9974 errorOverlay();
9975 });
9976 }
9977
9978 if(info.isLoggedIn){
9979 if(!$langLogoBar.hasClass("langborderBg")){
9980 $langLogoBar.addClass("langborderBg");
9981 }
9982 $("#statusBar:hidden").show();
9983 } else {
9984 if($langLogoBar.hasClass("langborderBg")){
9985 $langLogoBar.removeClass("langborderBg");
9986 }
9987 $("#statusBar:visible").hide();
9988 }
9989
9990
9991 //target.attachedDevices = ko.observable(info.attachedDevices);
9992 target.batteryLevel = ko.observable(info.batteryLevel + '%');
9993 target.batteryPers = ko.observable(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
9994 target.batteryStatus = ko.observable(info.batteryStatus);
9995 target.connectionCssClass = ko.observable("");
9996 target.connectStatus = ko.observable(info.connectStatus);
9997 target.connectStatusText = ko.observable();
9998 target.connectStatusTrans = ko.observable();
9999 target.hasWifi = ko.observable(config.HAS_WIFI);
10000 target.hasBattery = ko.observable(config.HAS_BATTERY);
10001 target.isLoggedIn = ko.observable(info.isLoggedIn);
10002 target.isShowConnectionIcon = ko.observable(false);
10003 target.isShowFotaNewversionIcon = ko.observable(info.new_version_state && info.fota_package_already_download != "yes" && !config.isShowFotaIcon);
10004 target.isShowRj45ConnectionIcon = ko.observable(false);
10005 target.networkOperator = ko.observable(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,roamStatus));
10006 target.networkType = ko.observable(getNetworkType(info.networkType));
10007 target.pinStatus = ko.observable(info.pinStatus);
10008 target.pinStatusText = ko.observable();
10009 target.rj45ConnectionCssClass = ko.observable("");
10010 target.roamingStatus = ko.observable(info.roamingStatus ? "R" : "");
10011 target.showAttachedDevices = ko.observable(info.wifiStatus);
10012 target.showSmsDeleteConfirm = ko.observable(false);
10013 target.smsUnreadCount = ko.observable(0);
10014 target.simStatus = ko.observable(sf_convertSimStatusToImage(info.simStatus));
10015 target.signalCssClass = ko.observable(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
10016 target.updateType = ko.observable(service.getUpdateType().update_type);
10017 target.wifiStatusCssClass = ko.observable(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
10018 target.wifiStatusImg = ko.observable(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
10019
10020 sf_getConnectionCssClass(target, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
10021
10022 target.connect = sf_connect;
10023 target.disconnect = sf_disconnect;
10024 }
10025
10026 function sf_gotoSmsList(){
10027 var s_href = '#msg_main';
10028 if(window.location.hash == '#msg_main'){
10029 s_href = '#msg_list';
10030 }
10031 config.CONTENT_MODIFIED.checkChangMethod();
10032 if(checkFormContentModify(s_href)){
10033 window.location.hash = s_href;
10034 }
10035 }
10036
10037 gotoSmsList = sf_gotoSmsList;
10038
10039 function sf_getNetWorkProvider(i_spnB1Flag, i_spnNameData, i_spnB2Flag, i_networkProvider, i_roamStatus) {
10040 if (i_spnNameData == "") {
10041 return i_networkProvider;
10042 } else {
10043 i_spnNameData = decodeMessage(i_spnNameData);
10044 if (i_spnB1Flag == "0" && i_spnB2Flag == "0") {
10045 if (i_roamStatus) {//����
10046 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
10047 } else {//������
10048 return i_spnNameData;
10049 }
10050 }else if (i_spnB1Flag == "1" && i_spnB2Flag == "1") {
10051 if (i_roamStatus) {//����
10052 return i_networkProvider;
10053 } else {//������
10054 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
10055 }
10056 } else if (i_spnB1Flag == "1") {
10057 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
10058 } else if (i_spnB2Flag == "1") {
10059 if (i_roamStatus) {//����
10060 return i_networkProvider;
10061 } else {//������
10062 return i_spnNameData;
10063 }
10064 }
10065 return "";
10066 }
10067 }
10068
10069 // �����¶���Ϣ��ʾ���������������
10070 function sf_addNewMessage(i_message, i_isUpdate, i_type){
10071 config.smsMaxId = i_message.id;
10072 var now = $.now();
10073 sv_messagePopStack["m" + now] = now;
10074 var name = i_message.number;
10075 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
10076 sv_isFirstLoadNewMessage = false;
10077 if(config.HAS_PHONEBOOK){
10078 sf_getPhoneBooks();
10079 }else{
10080 config.phonebook = [];
10081 }
10082 }
10083 for(i in config.phonebook){
10084 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
10085 name = config.phonebook[i].pbm_name;
10086 break;
10087 }
10088 }
10089 var s_newMsg = {
10090 mark : "m" + now,
10091 name: name,
10092 title: $.i18n.prop("sms"),
10093 titleTrans: "sms",
10094 tag: i_message.tag,
10095 content : i_message.content,
10096 datetime : i_message.time
10097 };
10098 if(sv_newMessagePopTemplate == null){
10099 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
10100 }
10101 $(".bubbleItem:not(.report)", "#buttom-bubble").remove();
10102 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
10103 if((window.location.hash == "#msg_main" || window.location.hash == "#msg_list") && i_type == "1"){
10104 //sf_dealChosenNumber(s_newMsg.name, i_message.number);
10105 var s_inChating = config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
10106 var s_itemId = getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
10107 var item = $("#smslist-item-" + s_itemId);
10108 if(item && item.length > 0){
10109 // �Ѵ������ݣ��������ݵ���˳��
10110 for(var i = 0; config.listMsgs && i < config.listMsgs.length; i++){
10111 if(getLastNumber(config.listMsgs[i].number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
10112 config.listMsgs[i].id = i_message.id;
10113 config.listMsgs[i].latestId = i_message.id;
10114 config.listMsgs[i].latestSms = i_message.content;
10115 config.listMsgs[i].latestTime = i_message.time;
10116 if(!i_isUpdate){
10117 config.listMsgs[i].newCount++;
10118 config.listMsgs[i].totalCount++;
10119 }
10120 break;
10121 }
10122 }
10123 item.find(".smslist-item-checkbox p.checkbox").attr("id", i_message.id);
10124 item.find(".smslist-item-checkbox input:checkbox").val(i_message.id).attr("id", "checkbox" + i_message.id);
10125 if(!i_isUpdate){
10126 var s_itemCount = item.find(".smslist-item-total-count").text();
10127 s_itemCount = Number(s_itemCount.substring(1, s_itemCount.length - 1));
10128 item.find(".smslist-item-total-count").text("(" + (s_itemCount + 1) + ")");
10129 if(!config.currentChatObject || config.currentChatObject != getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
10130 var s_newNum = item.find(".smslist-item-new-count").removeClass("hide");
10131 if(s_newNum && s_newNum.text().length > 0){
10132 s_newNum.text(Number(s_newNum.text()) + 1);
10133 }else{
10134 s_newNum.text(1);
10135 }
10136 }
10137 }
10138 if(item.find(".smslist-item-draft-flag").length > 0){
10139 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
10140 item.find(" td:nth-child(2)").removeClass("font-weight-bold");
10141 } else {
10142 item.find(" td:nth-child(2)").addClass("font-weight-bold");
10143 }
10144 }else{
10145 var msgContent = item.find(".smslist-item-msg").text(i_message.content);
10146 msgContent.closest('td').prop('title', i_message.content);
10147 item.find("span.clock-time").text(i_message.time);
10148 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
10149 msgContent.closest('tr').removeClass("font-weight-bold");
10150 } else {
10151 msgContent.closest('tr').addClass("font-weight-bold");
10152 }
10153 }
10154 item.find(".smslist-item-repeat span").die().click(function() {
10155 forwardClickHandler(i_message.id);
10156 });
10157
10158 var s_tmpItem = item;
10159 item.hide().remove();
10160 $("#smslist-table").prepend(s_tmpItem.show());
10161 } else {
10162 // ��������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
10163 var s_theName = "";
10164 if(config.phonebook && config.phonebook.length > 0) {
10165 for(i in config.phonebook){
10166 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
10167 s_theName = config.phonebook[i].pbm_name;
10168 break;
10169 }
10170 }
10171 }
10172 var s_theNewMessage = {
10173 id : i_message.id,
10174 name : s_theName,
10175 number : i_message.number,
10176 latestId :i_message.id,
10177 totalCount : 1,
10178 newCount : s_inChating ? 0 : 1,
10179 latestSms : i_message.content,
10180 latestTime : i_message.time,
10181 checked : false,
10182 hasDraft : false,
10183 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
10184 };
10185 if(sv_smsListTemplate == null){
10186 sv_smsListTemplate = $.template("smsTableTmpl", $("#smsTableTmpl"));
10187 }
10188 $.tmpl("smsTableTmpl", {data: [s_theNewMessage]}).prependTo("#smslist-table");
10189 }
10190 if(config.HAS_PHONEBOOK){
10191 $(".sms-add-contact-icon").removeClass("hide");
10192 }else{
10193 $(".sms-add-contact-icon").addClass("hide");
10194 }
10195 if(s_inChating){
10196 var talkItem = $("#talk-item-" + i_message.id, "#chatlist");
10197 if (talkItem && talkItem.length > 0) {// ���¼�����������
10198 $(".J_content pre", talkItem).html(dealContent(i_message.content));
10199 $(".time .smslist-item-time", talkItem).text(i_message.time);
10200 $(".smslist-item-repeat", talkItem).die().click(
10201 function() {
10202 forwardClickHandler(i_message.id);
10203 });
10204 $(".smslist-item-delete", talkItem).die().click(
10205 function() {
10206 deleteSingleItemClickHandler(i_message.id);
10207 });
10208 } else {// �����µĻظ�����
10209 $("#smsOtherTmpl").tmpl(i_message).appendTo("#chatlist");
10210 $(".clear-container", "#chatpanel").animate({
10211 scrollTop : $("#chatlist").height()
10212 });
10213 }
10214 if (!config.SMS_SET_READ_WHEN_COMPLETE) {
10215 service.setSmsRead({ids: [i_message.id]}, $.noop);
10216 } else if (config.SMS_SET_READ_WHEN_COMPLETE && i_message.receivedAll) {
10217 service.setSmsRead({ids: [i_message.id]}, $.noop);
10218 }
10219 }
10220 enableCheckbox($("#smslist-checkAll"));
10221 }
10222 if(window.location.hash == "#msg_sim" && i_type == "0"){
10223 // ��������б��в�������Ӧ����ϵ�˶�Ϣ��Ӧ�ڶ����б�����������
10224 var s_theName = "";
10225 if(config.phonebook && config.phonebook.length > 0) {
10226 for(i in config.phonebook){
10227 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
10228 s_theName = config.phonebook[i].pbm_name;
10229 break;
10230 }
10231 }
10232 }
10233 var s_theNewMessage = {
10234 id : i_message.id,
10235 name : s_theName,
10236 number : i_message.number,
10237 content : i_message.content,
10238 time : i_message.time,
10239 tag: i_message.tag,
10240 checked : false,
10241 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
10242 };
10243 if(i_isUpdate){
10244 var s_item = $(".simMsgList-item-class-" + s_theNewMessage.id);
10245 s_item.hide().remove();
10246 }
10247 if(sv_simMessageListTemplate == null){
10248 sv_simMessageListTemplate = $.template("ssimMessageListTemplate", $("#simMessageListTemplate"));
10249 }
10250 $.tmpl("simMessageListTemplate", {data: [s_theNewMessage]}).prependTo("#simMsgList_container");
10251 }
10252 }
10253
10254 function sf_checkBatteryStatusForFota(){
10255 var s_state = service.getCurrentUpgradeState();
10256 if(s_state.current_upgrade_state == 'low_battery'){
10257 showInfo('ota_low_battery');
10258 clearInterval(sv_batteryCheckTimer);
10259 }
10260 }
10261
10262 // ��SIM��״̬ת��Ϊ��Ӧ����������
10263 function sf_convertSimStatusToImage(i_status) {
10264 var s_image;
10265 switch (i_status) {
10266 case "modem_destroy":
10267 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
10268 break;
10269 case "modem_imsi_waitnck":
10270 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitnck");
10271 break;
10272 case "modem_init_complete":
10273 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
10274 break;
10275 case "modem_sim_destroy":
10276 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
10277 break;
10278 case "modem_sim_undetected":
10279 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_undetected");
10280 break;
10281 case "modem_undetected":
10282 s_image = "./pic/simcard_undetected.png";
10283 break;
10284 case "modem_waitpin":
10285 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpin");
10286 break;
10287 case "modem_waitpuk":
10288 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpuk");
10289 break;
10290
10291 default:
10292 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
10293 break;
10294 }
10295 return s_image;
10296 }
10297
10298 function sf_dealChosenNumber(i_choosenName, i_choosenNum) {
10299 setTimeout(function () {
10300 var s_choosen = $("#chosenUserSelect");
10301 var s_options = $("option", s_choosen);
10302 for (var index = 0; index < s_options.length; index++) {
10303 if (getLastNumber(i_choosenNum, config.SMS_MATCH_LENGTH) == s_options[index].value) {
10304
10305 s_options[index].text = i_choosenName + '/' + i_choosenNum;
10306 s_options[index].value = i_choosenNum;
10307
10308 break;
10309 }
10310 }
10311 s_choosen.trigger("liszt:updated");
10312 }, 0);
10313 }
10314
10315 // ˫�첽��ȡ�豸���sim����ö���Ϣ��������ϲ�
10316 function sf_dealPhoneBooksResult(i_books){
10317 if($.isArray(i_books.pbm_data) && i_books.pbm_data.length > 0){
10318 config.phonebook = i_books.pbm_data;
10319 }
10320 }
10321
10322 // �������µ�5������Ϣ����δ���ӵ������б��еĵ�����ʾ
10323 function sf_filterNewMessage(i_messages, i_type){
10324 if(!config.dbMsgs){
10325 config.dbMsgs = [];
10326 }
10327 if(sv_dbMessageIds.length == 0){
10328 $.each(config.dbMsgs, function(index_1, i_element){
10329 sv_dbMessageIds.push(i_element.id);
10330 });
10331 }
10332 $.each(i_messages, function(index_2, i_element){
10333 if($.inArray(i_element.id, sv_dbMessageIds) == -1){//�����¶���
10334 sv_dbMessageIds.push(i_element.id);
10335 config.dbMsgs.push(i_element);
10336 if(i_element.tag == '1'){
10337 sf_addNewMessage(i_element, false, i_type);
10338 }
10339 }else{
10340 for(var index = 0; index < config.dbMsgs.length; index++){//���¼�������
10341 if(config.dbMsgs[index].id == i_element.id && config.dbMsgs[index].content != i_element.content && i_element.tag == '1'){
10342 config.dbMsgs[index].content = i_element.content;
10343 sf_addNewMessage(i_element, true, i_type);
10344 break;
10345 }
10346 }
10347 }
10348 });
10349 }
10350
10351 // ������ת��Ϊ��ӦͼƬ
10352 function sf_getBatteryLevelImage(pers, i_status) {
10353 var s_Image = null;
10354 if ("0" == i_status) {
10355 if ("-1" == pers) {
10356 s_Image = null;
10357 } else if ("1" == pers) {
10358 s_Image = "pic/power_one.png";
10359 } else if ("2" == pers) {
10360 s_Image = "pic/power_two.png";
10361 } else if ("3" == pers) {
10362 s_Image = "pic/power_three.png";
10363 } else if ("4" == pers) {
10364 s_Image = "pic/power_full.png";
10365 } else { //"5" == pers || "0" == pers
10366 s_Image = "pic/power_out.png";
10367 }
10368 } else {
10369 s_Image = "pic/power_charging.gif";
10370 }
10371 return s_Image;
10372 }
10373
10374 // ��ȡ����״̬��CSS��ʽ
10375 function sf_getConnectionCssClass(i_fwVm, i_status, i_data_counter, i_wifiSSID, i_wifiStatus, i_rj45Status) {
10376
10377 var s_rj45ConnectionStatus = "icon_connection ";
10378 var s_connectionStatus = "icon_connection ";
10379
10380 if(i_rj45Status == "connect"){
10381 s_rj45ConnectionStatus += "connecting";
10382 }else if(i_rj45Status == "working"){
10383 s_rj45ConnectionStatus += "rj45_connected";
10384 }else{
10385 s_rj45ConnectionStatus += "disconnect";
10386 }
10387
10388 if (i_status == "ppp_connecting" || i_status == "wifi_connecting") {
10389 s_connectionStatus += "connecting";
10390 } else if(i_status == "ppp_connected") {//CPE ppp_statusΪnone ready��ֵ
10391 if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate != '0') {
10392 s_connectionStatus += "connectionBoth";
10393 } else if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate == '0') {
10394 s_connectionStatus += "connectionUp";
10395 } else if (i_data_counter.uploadRate == '0' && i_data_counter.downloadRate != '0') {
10396 s_connectionStatus += "connectionDown";
10397 } else {
10398 s_connectionStatus += "connectionNone";
10399 }
10400 } else if (i_status == "ppp_disconnected") {
10401 if (i_wifiSSID && i_wifiStatus == "connect") {
10402 service.getHotspotList({}, function (data) {
10403 var s_cssName = "icon_connection ";
10404 var s_css = "connecting ";
10405 for (var i = 0, len = data.hotspotList.length; i < len; i++) {
10406 if (data.hotspotList[i].connectStatus == "1") {
10407 s_css = "wifi_connected";
10408 break;
10409 }
10410 }
10411 s_cssName += s_css;
10412 i_fwVm.connectionCssClass(s_cssName);
10413 });
10414 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
10415 return;
10416 } else if (i_wifiSSID && (i_wifiStatus == "connecting" || i_wifiStatus =="dhcping")) {
10417 s_connectionStatus += "connecting";
10418 } else {
10419 s_connectionStatus += "disconnect";
10420 }
10421 } else {
10422 s_connectionStatus += "disconnect";
10423 }
10424
10425 i_fwVm.connectionCssClass(s_connectionStatus);
10426 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
10427 }
10428
10429 // ��ȡ�绰����Ϣ
10430 function sf_getPhoneBooks() {
10431 var s_books = service.getPhoneBooks({
10432 page : 0,
10433 data_per_page : 2000,
10434 orderBy : "id",
10435 isAsc : false
10436 });
10437 sf_dealPhoneBooksResult(s_books);
10438 }
10439
10440 // ��ȡ�ź�����CSS��ʽ
10441 function sf_getSignalCssClass(siganl, networkType, simStatus) {
10442 networkType = networkType.toLowerCase();
10443 simStatus = simStatus ? simStatus.toLowerCase() : '';
10444 if(networkType == '' || networkType == 'limited_service' || networkType == 'no_service' || networkType == 'limited service' || networkType == 'no service'
10445 || simStatus != 'modem_init_complete'){
10446 siganl = '_none';
10447 }
10448 return "signal signal" + siganl;
10449 }
10450
10451 function sf_getWifiStatusCssClass(i_status, i_deviceSize) {
10452 if (i_status) {
10453 if (i_deviceSize == 0) {
10454 return "wifi_status0";
10455 } else {
10456 return "wifi_status" + i_deviceSize;
10457 }
10458 } else {
10459 return "wifi_status_off";
10460 }
10461 }
10462
10463 // ����wifi״̬��ȡwifi��ͼƬ��Դ
10464 function sf_getWifiStatusImage(i_status, i_deviceSize) {
10465 if (i_status) {
10466 if (i_deviceSize == 0) {
10467 return "./pic/wlan0.png";
10468 } else {
10469 return "./pic/wlan" + i_deviceSize + ".png";
10470 }
10471 } else {
10472 return "./pic/wlan_off.png";
10473 }
10474 }
10475
10476 // ��ȡ��������������С���������ؽ���
10477 function sf_refreshFotaDownloadProgress(){
10478 service.getPackSizeInfo({}, function (data) {
10479 var percents;
10480 if (parseInt(data.fota_pkg_total_size) == 0) {
10481 percents = 0;
10482 } else {
10483 percents = parseInt(parseInt(data.fota_dl_pkg_size) * 100 / parseInt(data.fota_pkg_total_size));
10484 }
10485 if (percents > 100) {
10486 percents = 100;
10487 }
10488 if (percents >= 0) {
10489 if (percents > 95) {
10490 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
10491 }
10492 setProgressBar(percents);
10493 }
10494 });
10495 }
10496
10497 // �������ŷ��ͱ���
10498 function sf_responseSmsReport(){
10499 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
10500
10501 sv_isFirstLoadNewMessage = false;
10502
10503 if(config.HAS_PHONEBOOK){
10504 sf_getPhoneBooks();
10505 }else{
10506 config.phonebook = [];
10507 }
10508 }
10509 service.getSMSDeliveryReport({
10510 page: 0,
10511 smsCount: 10
10512 }, function(data){
10513 var s_messages = data.messages;
10514 var s_nums = [];
10515 $.each(s_messages, function(i, i_message){
10516 if($.inArray(i_message.number, s_nums) == -1){
10517 s_nums.push(i_message.number);
10518 window.setTimeout(function(){
10519 var s_now = $.now();
10520 sv_messagePopStack["m" + s_now] = s_now;
10521 i_message.name = i_message.number;
10522 for(i in config.phonebook){
10523 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
10524 i_message.name = config.phonebook[i].pbm_name;
10525 break;
10526 }
10527 }
10528 var s_msgContent = $.i18n.prop("sms_delivery_report_" + i_message.content);
10529
10530 var s_newMsg = {
10531 mark : "m" + s_now,
10532 name: i_message.name,
10533 title: $.i18n.prop("sms_report"),
10534 titleTrans: "sms_report",
10535 content : s_msgContent,
10536 datetime : i_message.time,
10537 report : 'report'
10538 };
10539
10540 if(sv_newMessagePopTemplate == null){
10541 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
10542 }
10543
10544 $(".report", "#buttom-bubble").remove();
10545 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
10546 }, 100);
10547 }
10548 });
10549 }, function(){
10550 //No Deal
10551 });
10552 }
10553
10554 function sf_simStatusInvalid(simStatus){
10555 return simStatus == 'modem_sim_undetected' || simStatus == 'modem_undetected' || simStatus == 'modem_sim_destroy'
10556 || simStatus == 'modem_waitpin' || simStatus == 'modem_waitpuk' || simStatus == 'modem_imsi_waitnck';
10557 }
10558
10559 // ��ʾFOTA������ǰ״̬
10560 function sf_showFotaCurrentStatus() {
10561 sv_fotaUpdateCancel = true;
10562 var r = service.getNewVersionState();
10563
10564 function showProgress() {
10565 var upgradingState = ["downloading"];
10566 var info = service.getCurrentUpgradeState();
10567 if(info.current_upgrade_state.toLowerCase() == "idle") {
10568 addTimeout(showProgress, 1000);
10569 } else if(($.inArray(info.current_upgrade_state, upgradingState) != -1)&&(r.fota_new_version_state != "already_has_pkg")) {
10570 hideLoading();
10571 sf_showFotaUpgradeStatus();
10572 }
10573 }
10574 if (!($("#progress").is(":visible"))) {
10575 showProgress();
10576 }
10577 var times = 0;
10578 var getOTAUpgradeState = function () {
10579 var data = null;
10580 if (times <= 3) {
10581 times = times + 1;
10582 data = service.getCurrentUpgradeState();
10583 } else {
10584 data = getCurrentStatusInfo();
10585 }
10586 var state = data.current_upgrade_state;
10587 if(sv_fotaUpdateCancel && isLoggedIn == true){
10588
10589 if(r.fota_new_version_state == "already_has_pkg"){
10590 if(state == 'low_battery'){
10591 hideProgressBar();
10592 sv_fotaUpdateCancel = false;
10593 service.removeTimerThings('fota_current_upgrade_state',function(){});
10594 showInfo('ota_pkg_low_battery');
10595 window.clearTimeout(sv_timer);
10596 return;
10597 }else if(state == 'prepare_install'){
10598 hideProgressBar();
10599 sv_fotaUpdateCancel = false;
10600 service.removeTimerThings('fota_current_upgrade_state',function(){});
10601 showInfo('ota_pkg_download_success');
10602 window.clearTimeout(sv_timer);
10603 sv_batteryCheckTimer = setInterval(function () {
10604 sf_checkBatteryStatusForFota();
10605 }, 1000);
10606 return;
10607 }
10608 }else if(state == 'downloading') {
10609 sf_refreshFotaDownloadProgress();
10610 }else if(state == 'download_failed') {
10611 hideProgressBar();
10612 sv_fotaUpdateCancel = false;
10613 showAlert('ota_download_failed');
10614 window.clearTimeout(sv_timer);
10615 return;
10616 }else if(state == 'low_battery'){
10617 hideProgressBar();
10618 sv_fotaUpdateCancel = false;
10619 service.removeTimerThings('fota_current_upgrade_state',function(){});
10620 showInfo('ota_low_battery');
10621 window.clearTimeout(sv_timer);
10622 return;
10623 }else if(state == 'prepare_install'){
10624 hideProgressBar();
10625 sv_fotaUpdateCancel = false;
10626 service.removeTimerThings('fota_current_upgrade_state',function(){});
10627 showInfo('ota_download_success');
10628 window.clearTimeout(sv_timer);
10629 sv_batteryCheckTimer = setInterval(function () {
10630 sf_checkBatteryStatusForFota();
10631 }, 1000);
10632 return;
10633 }else{
10634 sv_fotaUpdateCancel = false;
10635 hideProgressBar();
10636 window.clearTimeout(sv_timer);
10637 return;
10638 }
10639 sv_timer = window.setTimeout(getOTAUpgradeState , 1000);
10640 }
10641 };
10642
10643 if(sv_fotaUpdateCancel && isLoggedIn == true){
10644 sv_timer = window.setTimeout(getOTAUpgradeState , 100);
10645 }else{
10646 window.clearTimeout(sv_timer);
10647 }
10648 }
10649
10650 // ��ʾFota�������
10651 function sf_showFotaUpdateResult(i_otaResult) {
10652 if ((!($("#loading").is(":visible"))) && (!($("#confirm").is(":visible")))) {
10653 var s_message = i_otaResult ? "ota_update_success" : "ota_update_failed";
10654 sv_fotaResultAlertPopuped = true;
10655 showAlert(s_message, function () {
10656 sv_fotaResultAlertPopuped = false;
10657 if (config.UPGRADE_TYPE == "OTA") {
10658 service.clearUpdateResult({}, $.noop());
10659 }
10660 });
10661 } else {
10662 window.setTimeout(function () {
10663 sf_showFotaUpdateResult(i_otaResult)
10664 }, 1000);
10665 }
10666 }
10667
10668 // ��ʾ��ǰ����״̬
10669 function sf_showFotaUpgradeStatus() {
10670 var s_data = service.getMandatory();
10671 var s_isMandatory = s_data.is_mandatory;
10672 var s_sizeInfo =service.getPackSizeInfo();
10673 var s_percents;
10674
10675 if (parseInt(s_sizeInfo.fota_pkg_total_size) == 0) {
10676 s_percents = 0;
10677 } else {
10678 s_percents = parseInt(parseInt(s_sizeInfo.fota_dl_pkg_size) * 100 / parseInt(s_sizeInfo.fota_pkg_total_size));
10679 }
10680 if (s_percents > 100) {
10681 s_percents = 100;
10682 }
10683
10684 if (s_isMandatory) {
10685 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
10686 } else {
10687 var cancelHtml = "";
10688 if (config.UPGRADE_TYPE == "OTA") {
10689 cancelHtml = "<br/><br/><button id='btnStopUpgrade' onclick='stopOTAUpgrade();' class='btn-1 btn-primary'>" + $.i18n.prop("cancel") + "</button>";
10690 }
10691 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning") + cancelHtml);
10692 }
10693
10694 //setProgressBar(0);
10695 if (s_percents >= 0) {
10696 setProgressBar(s_percents);
10697 }
10698 }
10699
10700
10701
10702
10703
10704 function sf_startFotaUpgrade(){
10705 service.setUpgradeSelectOp({selectOp:'1'},function(result){
10706 if (result.result == "success"){
10707 sf_showFotaCurrentStatus();
10708 }});
10709 }
10710
10711 function cancelFotaUpgrade(){
10712 service.setUpgradeSelectOp({selectOp:'0'},function(result){ });
10713 }
10714
10715
10716 function refreshFotaStatusForUserSelector(choice){
10717 var info = getCurrentStatusInfo();
10718 if(choice){
10719 var modeData = service.getOpMode();
10720 if (!checkConnectedStatus(info.connectStatus, modeData.rj45_state, info.connectWifiStatus)) {
10721 showAlert("ota_network_disconnected");
10722 return;
10723 }
10724
10725 if(info.fota_user_selector == 'none'){
10726 sf_startFotaUpgrade();
10727 }else if(info.fota_user_selector == 'accept'){
10728 sf_showFotaCurrentStatus();
10729 }else if(info.fota_user_selector == 'cancel'){
10730 showAlert("ota_have_cancel");
10731 }else if(info.fota_user_selector == 'downloading_cancel'){
10732 showAlert("ota_have_cancel");
10733 }
10734 }else{
10735 if(info.fota_user_selector == 'none'){
10736 cancelFotaUpgrade();
10737 }else if(info.fota_user_selector == 'accept'){
10738 sf_showFotaCurrentStatus();
10739 }else if(info.fota_user_selector == 'cancel'){
10740 // todo:
10741 }else if(info.fota_user_selector == 'downloading_cancel'){
10742 // todo:
10743 }
10744 }
10745 }
10746
10747
10748 // ��ʾ���°汾�������ж��Ƿ������ʾ
10749 function showFotaStatusForUserToConfirm(upgradeState) {
10750 var upgState = upgradeState.current_upgrade_state;
10751 if (upgState == 'upgrade_pack_redownload') {
10752 showConfirm("ota_interrupted", {ok: function () {
10753 refreshFotaStatusForUserSelector(1);
10754 }, no: function () {
10755 refreshFotaStatusForUserSelector(0);
10756 }});
10757 } else {
10758 var upgradingState = ["prepare_install", "low_battery",
10759 "connecting_server", "connect_server_success", "downloading", "accept"];
10760 if ($.inArray(upgState, upgradingState) != -1) {
10761 sf_showFotaCurrentStatus();
10762 } else {
10763
10764 showConfirm($.i18n.prop('ota_new_version'), {ok: function () {
10765 refreshFotaStatusForUserSelector(1);
10766 config.ISNOW_NOTICE = false;
10767 }, no: function () {
10768 refreshFotaStatusForUserSelector(0);
10769 config.ISNOW_NOTICE = false;
10770 }});
10771 }
10772 }
10773 }
10774
10775 showOTAAlert = function () {
10776 config.ISNOW_NOTICE = true;
10777 var is_mandatory = service.getMandatory().is_mandatory;
10778 if (is_mandatory) {
10779 sf_showFotaCurrentStatus();
10780 } else {
10781 var upgradeState = {};
10782 upgradeState = service.getCurrentUpgradeState();
10783 showFotaStatusForUserToConfirm(upgradeState);
10784 }
10785 };
10786
10787 // ��ֹFota����
10788 stopOTAUpgrade = function () {
10789 service.setUpgradeSelectOp({selectOp:'2'},function(result){ });
10790 sv_fotaUpdateCancel = false;
10791 window.clearTimeout(sv_timer);
10792 hideLoading();
10793 showAlert('ota_cancel');
10794 };
10795
10796 // �������������Ƿ����ѹ�
10797 function setTrafficAlertPopuped(val){
10798 sv_trafficAlertPopuped = !!val;
10799 sv_trafficAlertPopuped_100 = !!val;
10800 if(!val){
10801 sv_resetTrafficAlertPopuped = true;
10802 }
10803 }
10804
10805 function setTrafficAlert100Popuped(val){
10806 sv_trafficAlertPopuped_100 = !!val;
10807 if(!val){
10808 sv_resetTrafficAlertPopuped = true;
10809 }
10810 }
10811
10812 // ���������ṹ
10813 function getTrafficResult(info){
10814 var s_trafficResult = {
10815 showConfirm : false,
10816 limitPercent : info.limitVolumePercent
10817 };
10818 if(info.limitVolumeType == '1'){
10819 var monthlyTraffic = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
10820 s_trafficResult.usedPercent = monthlyTraffic / info.limitVolumeSize * 100;
10821 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
10822 s_trafficResult.showConfirm = true;
10823 s_trafficResult.type = 'data';
10824 }
10825 }else{
10826 s_trafficResult.usedPercent = info.data_counter.monthlyConnectedTime / info.limitVolumeSize * 100;
10827 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
10828 s_trafficResult.showConfirm = true;
10829 s_trafficResult.type = 'time';
10830 }
10831 }
10832 return s_trafficResult;
10833 }
10834
10835 // ��ʼ�� ViewModel����������ͼ��
10836 function init() {
10837 if(config.PRODUCT_TYPE == 'DATACARD') {
10838 $('#statusBar').addClass('padding-right-90');
10839 $('#language').addClass('data-card-language');
10840 }
10841 //preload img
10842 var imgAlert = $('<img />').attr('src', 'pic/res_alert.png');
10843 var imgConfirm = $('<img />').attr('src', 'pic/res_confirm.png');
10844 var imgInfo = $('<img />').attr('src', 'pic/res_info.png');
10845
10846 window.setTimeout(function () {
10847
10848 var fwVm = new statusViewModel();
10849
10850 ko.applyBindings(fwVm, $('#statusBar')[0]);
10851
10852 window.setInterval(function () {
10853 var info = getCurrentStatusInfo();
10854 var s_roamStatus = info.roamingStatus ? true : false;
10855 var $langLogoBar = $("#langLogoBar");
10856 isLoggedIn = info.isLoggedIn;
10857
10858
10859 //fwVm.attachedDevices(info.attachedDevices);
10860 fwVm.batteryLevel(info.batteryLevel + '%');
10861 fwVm.batteryPers(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
10862 fwVm.batteryStatus(info.batteryStatus);
10863 fwVm.isShowFotaNewversionIcon(info.new_version_state && info.fota_user_selector && info.fota_package_already_download != "yes" && config.ISNOW_NOTICE && fwVm.updateType() == 'mifi_fota');
10864 fwVm.isShowRj45ConnectionIcon(config.RJ45_SUPPORT);
10865 fwVm.networkOperator(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,s_roamStatus));
10866 fwVm.networkType(getNetworkType(info.networkType));
10867 fwVm.pinStatus(info.pinStatus);
10868 fwVm.roamingStatus(info.roamingStatus ? "R" : "");
10869 fwVm.showAttachedDevices(info.wifiStatus);
10870 fwVm.simStatus(sf_convertSimStatusToImage(info.simStatus));
10871 fwVm.signalCssClass(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
10872 fwVm.isLoggedIn(info.isLoggedIn);
10873 fwVm.wifiStatusCssClass(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
10874 fwVm.wifiStatusImg(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
10875
10876 if(config.HAS_SMS ){
10877 if(!sv__hasCheckedSMSCapacity && info.isLoggedIn){
10878 checkSMSCapacity(info.smsUnreadCount);
10879 } else {
10880 fwVm.smsUnreadCount(info.smsUnreadCount);
10881 }
10882 }
10883
10884 sf_getConnectionCssClass(fwVm, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
10885 refreshWifiConnectStatus(fwVm, info.connectStatus,info.connectWifiSSID,info.connectWifiStatus);
10886 checkTrafficLimitAlert(fwVm, info);
10887 updateStatusBarTrans({simStatus: info.simStatus, wifiStatus: info.wifiStatus, deviceSize: info.wirelessDeviceNum, networkType: info.networkType});
10888
10889 if(info.isLoggedIn){
10890 $("#statusBar:hidden").show();
10891 } else {
10892 $("#statusBar:visible").hide();
10893 }
10894 }, 500);
10895
10896 if(config.HAS_SMS){
10897 window.setInterval(function(){
10898 if(fwVm.isLoggedIn()){
10899 checkSMSCapacity();
10900 }
10901 }, 10000);
10902 checkSmsModelReady();
10903 }
10904
10905 window.setInterval(function() {
10906 var data = getCurrentStatusInfo();
10907 var upgradingState = ["prepare_install", "low_battery", "download_success","downloading"];
10908
10909 if (fwVm.isLoggedIn() == true && !($("#progress").is(":visible")) && data.defaultWanName != ""){
10910 if ($.inArray(data.current_upgrade_state, upgradingState) != -1){
10911 if(null == sv_fotaUpdateCancel){
10912 if(!data.is_mandatory){
10913 $.modal.close();
10914 }
10915 sf_showFotaCurrentStatus();
10916 }else if(false == sv_fotaUpdateCancel){
10917 sv_fotaUpdateCancel = null;
10918 }
10919 }
10920 }
10921 }, 1000);
10922
10923 var checkFotaUpgradeResult = function () {
10924 var info = service.getStatusInfo();
10925 if (info.isLoggedIn) {
10926 service.getUpgradeResult({}, function (data) {
10927 if (data.upgrade_result == "success") {
10928 sf_showFotaUpdateResult(true);
10929 } else if (data.upgrade_result == "fail") {
10930 sf_showFotaUpdateResult(false);
10931 } else {
10932 window.setTimeout(checkFotaUpgradeResult, 1000);
10933 }
10934 }, function () {
10935 window.setTimeout(checkFotaUpgradeResult, 1000);
10936 });
10937 } else {
10938 window.setTimeout(checkFotaUpgradeResult, 1000);
10939 }
10940 };
10941 if(fwVm.updateType() == "mifi_fota"){
10942 checkFotaUpgradeResult();
10943 window.setInterval(function () {
10944 var info = getCurrentStatusInfo();
10945 if (info.isLoggedIn && info.defaultWanName != "") {
10946 if(info.new_version_state && info.fota_package_already_download != "yes" && !config.ALREADY_NOTICE){
10947 service.getUpgradeResult({}, function (data) {
10948 if (data.upgrade_result == "success") {
10949 sf_showFotaUpdateResult(true);
10950 } else if (data.upgrade_result == "fail") {
10951 sf_showFotaUpdateResult(false);
10952 } else {
10953 if(sv_fotaResultAlertPopuped == false){
10954 config.ALREADY_NOTICE = true;
10955 showOTAAlert();
10956 }
10957 }
10958 });
10959 }
10960 }
10961 }, 1000);
10962 }
10963 function checkSMSCapacity(unreadCount){
10964 service.getSmsCapability({}, function(info){
10965 var showSmsConfirm = false;
10966 if(info.nvTotal != 0 && info.nvUsed >= info.nvTotal){
10967 $("#sms_unread_count").attr("tipTitle", "sms_capacity_is_full");
10968 showSmsConfirm = true;
10969 } else if(info.nvTotal != 0 && info.nvUsed + 5 >= info.nvTotal) {
10970 $("#sms_unread_count").attr("tipTitle", "sms_capacity_will_full");
10971 showSmsConfirm = true;
10972 } else {
10973 $("#sms_unread_count").attr("tipTitle", "sms_unread_count");
10974 }
10975 fwVm.showSmsDeleteConfirm(showSmsConfirm);
10976 if(typeof unreadCount != "undefined"){
10977 fwVm.smsUnreadCount(unreadCount);
10978 }
10979 sv__hasCheckedSMSCapacity = true;
10980 });
10981 }
10982 }, 1200);
10983
10984 tooltip.init();
10985
10986 // ����Ϣģ���ʼ��״̬
10987 function checkSmsModelReady(){
10988 var info = getCurrentStatusInfo();
10989 if(info.isLoggedIn){
10990 service.getSMSReady({}, function (data) {
10991 if (data.sms_cmd_status_result == "1") {
10992 window.setTimeout(function(){checkSmsModelReady();}, 1000);
10993 } else {
10994 sv__initSMSCompleted = true;
10995 }
10996 });
10997 } else {
10998 window.setTimeout(function(){checkSmsModelReady();}, 1000);
10999 }
11000 }
11001
11002 // ����������״̬
11003 checkTrafficLimitAlert = function(fwVm, info){
11004 if(window.location.hash == '#entry'){
11005 return false;
11006 }
11007 var APStationEnabled = config.AP_STATION_SUPPORT ? service.getStatusInfo().ap_station_enable : 'undefined';
11008 var trafficResult = getTrafficResult(info);
11009 var inShow = $("#confirm-container:visible").length > 0;
11010 // var notPPP = (config.PRODUCT_TYPE == 'CPE' && checkCableMode(info.blc_wan_mode)) ? true : false;
11011 var notPPP = false;
11012
11013 // ��ȡAp Stationʹ��״̬���������ѷ�ʽ
11014 if (config.AP_STATION_SUPPORT && (typeof APStationEnabled == "undefined" || APStationEnabled === '')) {
11015 service.refreshAPStationStatus({}, $.noop());
11016 return false;
11017 }
11018 APStationEnabled = APStationEnabled == 1;
11019
11020 if (!info.isLoggedIn || inShow || (sv_trafficAlertPopuped && sv_trafficAlertPopuped_100) || !info.limitVolumeEnable || (!APStationEnabled && !(info.connectStatus == "ppp_connected")) || notPPP) {
11021 return false;
11022 }
11023
11024 if(sv_resetTrafficAlertPopuped){
11025 window.setTimeout(function () {
11026 sv_resetTrafficAlertPopuped = false;
11027 }, 2000);
11028 return false;
11029 }
11030
11031 if(trafficResult.showConfirm){
11032
11033 var confirmMessage = null;
11034
11035 if(trafficResult.usedPercent > 100 && !sv_trafficAlertPopuped_100){
11036
11037 sv_trafficAlertPopuped = true;
11038 sv_trafficAlertPopuped_100 = true;
11039
11040 confirmMessage = {msg: APStationEnabled ? 'traffic_beyond_msg' : 'traffic_beyond_disconnect_msg'};
11041
11042 } else if (!sv_trafficAlertPopuped) {
11043
11044 sv_trafficAlertPopuped = true;
11045 sv_trafficAlertPopuped_100 = false;
11046 confirmMessage = {msg: APStationEnabled ? 'traffic_limit_msg' : 'traffic_limit_disconnect_msg',
11047 params: [trafficResult.limitPercent]};
11048 }
11049
11050 if (confirmMessage != null) {
11051 if (APStationEnabled) {
11052 showAlert(confirmMessage);
11053 } else {
11054 showConfirm(confirmMessage, function () {
11055 showLoading("disconnecting");
11056 service.disconnect({}, function (data) {
11057 if (data.result) {
11058 successOverlay();
11059 } else {
11060 errorOverlay();
11061 }
11062 });
11063 });
11064 }
11065 }
11066 }
11067 return true;
11068 };
11069
11070 // ����״̬�е�tooltip
11071 function updateStatusBarTrans(status){
11072 $("#statusItemSimStatus").attr("tipTitle", "sim_status_" + status.simStatus);
11073 if (status.wifiStatus) {
11074 if (status.deviceSize == 0) {
11075 $("#wifi_status").attr("tipTitle","wifi_status_on");
11076 } else {
11077 $("#wifi_status").attr("tipTitle","wifi_status" + status.deviceSize);
11078 }
11079 } else {
11080 $("#wifi_status").attr("tipTitle","wifi_status_off");
11081 }
11082 }
11083
11084
11085 // ˢ��wifi��������״̬
11086 function refreshWifiConnectStatus(fwVm, status, wifiSSID, wifiStatus) {
11087 fwVm.connectStatus(status);
11088 if (status == "ppp_disconnecting") {
11089 fwVm.connectStatusTrans("disconnecting");
11090 fwVm.connectStatusText($.i18n.prop("disconnecting"));
11091 } else if (status == "ppp_connecting") {
11092 fwVm.connectStatusTrans("connecting");
11093 fwVm.connectStatusText($.i18n.prop("connecting"));
11094 } else if (status == "ppp_connected") {
11095 fwVm.connectStatusTrans("connected");
11096 fwVm.connectStatusText($.i18n.prop("connected"));
11097 } else if(wifiSSID){
11098 if(wifiStatus =="dhcping" || wifiStatus =="connecting"){
11099 fwVm.connectStatus("wifi_connecting");
11100 fwVm.connectStatusTrans("connecting");
11101 fwVm.connectStatusText($.i18n.prop("connecting"));
11102 }else if(wifiStatus =="connect"){
11103 fwVm.connectStatus("wifi_connect");
11104 fwVm.connectStatusTrans("connected");
11105 fwVm.connectStatusText($.i18n.prop("connected"));
11106 }else{
11107 fwVm.connectStatus("ppp_disconnected");
11108 fwVm.connectStatusTrans("disconnected");
11109 fwVm.connectStatusText($.i18n.prop("disconnected"));
11110 }
11111 }else{
11112 fwVm.connectStatusTrans("disconnected");
11113 fwVm.connectStatusText($.i18n.prop("disconnected"));
11114 }
11115 }
11116
11117 // ��ȡ��ǰ����״̬
11118 getNetworkType = function(networkType) {
11119 var networkTypeTmp = networkType.toLowerCase();
11120 if (networkTypeTmp == '' || networkTypeTmp == 'limited service') {
11121 networkTypeTmp = 'limited_service';
11122 }
11123 if(networkTypeTmp == 'no service') {
11124 networkTypeTmp = 'no_service';
11125 }
11126 if (networkTypeTmp == 'limited_service' || networkTypeTmp == 'no_service') {
11127 $("#networkType", "#statusBar").attr("data-trans", "network_type_" + networkTypeTmp);
11128 return $.i18n.prop("network_type_" + networkTypeTmp);
11129 } else {
11130 $("#networkType", "#statusBar").removeAttr("data-trans");
11131 return networkType;
11132 }
11133 };
11134
11135 if(config.HAS_SMS && menu.checkIsMenuExist("sms_list")){
11136 window.setInterval(function () {
11137 var info = getCurrentStatusInfo();
11138 if(window.location.hash == "#entry" || sf_simStatusInvalid(info.simStatus)){
11139 return;
11140 }
11141 for(key in sv_messagePopStack){
11142 var val = sv_messagePopStack[key];
11143 if($.now() - val > 5000){
11144 delete(sv_messagePopStack["m" + val]);
11145 var node = $(".bubbleItem#m" + val, "#buttom-bubble");
11146 node.fadeOut(1000, function(){
11147 $(this).remove();
11148 });
11149 }
11150 }
11151 if(info.isLoggedIn){
11152 if(info.newSmsReceived && !sv_newSMSMessageInDealing){
11153 sv_newSMSMessageInDealing = true;
11154 service.resetNewSmsReceivedVar();
11155 sf_checkNewMessages();
11156 }
11157 if(info.smsReportReceived){
11158 service.resetSmsReportReceivedVar();
11159 sf_responseSmsReport();
11160 }
11161 }
11162 }, 1000);
11163
11164 if(config.SMS_DATABASE_SORT_SUPPORT){
11165 window.setInterval(function(){
11166 if(menu.checkIsMenuExist("sms_list")){
11167 var info = getCurrentStatusInfo();
11168 if(info.isLoggedIn && sv__initSMSCompleted && !sv_newSMSMessageInDealing && !sf_simStatusInvalid(info.simStatus)){
11169 sv_newSMSMessageInDealing = true;
11170 sf_checkNewMessages();
11171 }
11172 }
11173 }, 20001);
11174 }
11175 }
11176
11177 function sf_checkNewMessages(){
11178
11179 var s_tags = 1;
11180 var s_smsCount = 5;
11181
11182 if(!config.dbMsgs || config.dbMsgs.length == 0){
11183 s_smsCount = 500;
11184 s_tags = 10;
11185 }
11186 service.getSMSMessages({
11187 page : 0,
11188 smsCount : s_smsCount,
11189 nMessageStoreType : 0,
11190 tags : s_tags,
11191 orderBy : "order by id desc"
11192 }, function(data){
11193 if(data && data.messages){
11194 sf_filterNewMessage(data.messages, 0);
11195 }
11196 sv_newSMSMessageInDealing = false;
11197 });
11198 service.getSMSMessages({
11199 page : 0,
11200 smsCount : s_smsCount,
11201 nMessageStoreType : 1,
11202 tags : s_tags,
11203 orderBy : "order by id desc"
11204 }, function(data){
11205 if(data && data.messages){
11206 sf_filterNewMessage(data.messages, 1);
11207 }
11208 sv_newSMSMessageInDealing = false;
11209 });
11210 }
11211
11212 if(config.HAS_SMS){
11213 $(".bubbleItem", "#buttom-bubble").live("mouseover", function(){
11214 var $this = $(this);
11215 delete(sv_messagePopStack[$this.attr("id")]);
11216 }).live("mouseout", function(){
11217 var $this = $(this);
11218 var now = $.now();
11219 sv_messagePopStack["m" + now] = now;
11220 $this.attr("id", "m" + now);
11221 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").data("targetid", "m" + now);
11222 });
11223
11224 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").die().live("click", function(){
11225 var id = $(this).data("targetid");
11226 delete(sv_messagePopStack[id]);
11227 var node = $(".bubbleItem#" + id, "#buttom-bubble");
11228 node.fadeOut(1000, function(){
11229 $(this).remove();
11230 });
11231 });
11232 }
11233 }
11234
11235
11236 return {
11237 init:init,
11238 setTrafficAlertPopuped: setTrafficAlertPopuped,
11239 setTrafficAlert100Popuped: setTrafficAlert100Popuped,
11240 getTrafficResult: getTrafficResult,
11241 showOTAAlert:showOTAAlert
11242 };
11243});
11244
11245// ����ͳ������ģ��
11246define("status_traffic_alert","jquery knockout service statusBar echarts".split(" "),
11247
11248 function ($, ko, service, status, echarts) {
11249
11250 var sv_trafficGraph = null;
11251 var sv_sourceData = null;
11252 var sv_usedDataModified = false;
11253 var sv_usedTimeModified = false;
11254
11255 var sv_trafficStaticalInfo = {
11256 // ����ͼ��ʼֵ
11257 data: {
11258 alarm: {
11259
11260 itemStyle: {
11261 normal: {
11262 color: '#8CC916'
11263 }
11264 },
11265 name: '������',
11266 value: 19.7
11267 },
11268 alert: {
11269
11270 itemStyle: {
11271 normal: {
11272 color: '#FF5500'
11273 }
11274 },
11275 name: '����ֵ',
11276 value: 1
11277 },
11278 free: {
11279
11280 itemStyle: {
11281 normal: {
11282 color: '#D8D8D8'
11283 }
11284 },
11285 name: 'δʹ��',
11286 value: 50
11287 },
11288 full: {
11289
11290
11291 itemStyle: {
11292 normal: {
11293 color: '#DF4313'
11294 }
11295 },
11296 name: '��������',
11297 value: 30
11298 },
11299 left1: {
11300
11301 itemStyle: {
11302 normal: {
11303 color: '#D8D8D8'
11304 }
11305 },
11306 name: '����ֵ��δʹ��',
11307 value: 50,
11308 },
11309 start: {
11310
11311 itemStyle: {
11312 normal: {
11313 color: '#D8D8D8'
11314 }
11315 },
11316 name: '����ֵ��δʹ��',
11317 value: 50
11318 },
11319 used: {
11320
11321 itemStyle: {
11322 normal: {
11323 color: '#8CC916'
11324 }
11325 },
11326 name: '��ʹ��',
11327 value: 30
11328 }
11329 },
11330 cacheEle: {},
11331 // Ԫ�ػ�ȡ
11332 getEle: function (i_elementId) {
11333 if (this.cacheEle.hasOwnProperty('id')) {
11334 return this.cacheEle[i_elementId];
11335 } else {
11336 this.cacheEle[i_elementId] = $("#" + i_elementId);
11337 return this.cacheEle[i_elementId];
11338 }
11339 },
11340 // ��ȡ�����澯״ֵ̬
11341 fetchTrafficAlertInfo: function(){
11342 sv_sourceData = getTrafficAlertInfo();
11343 return sv_sourceData;
11344 },
11345 // ��ȡ����ֵ�Ͷ�Ӧ��λֵ
11346 getTrafficStatisticalDatalnfo: function (i_valueInfo) {
11347 return {
11348 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
11349 unit: /[A-Z]{1,2}/.exec(i_valueInfo)[0]
11350 }
11351 },
11352
11353 // ��ȡʱ��ʱ���֡���
11354 getTrafficTimeHours: function (i_time) {
11355 var s_timeArray = i_time.split(':');
11356 return {
11357 h: parseInt(s_timeArray[0], 10),
11358 m: parseInt(s_timeArray[1], 10),
11359 s: parseInt(s_timeArray[2], 10)
11360 }
11361 },
11362 // ��ȡͳ��ʱ��Ͷ�Ӧ��λֵ
11363 getTrafficTimeInfo: function (i_valueInfo) {
11364 return {
11365 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
11366 unit: /[a-z]{4,6}/.exec(i_valueInfo)[0]
11367 }
11368 },
11369 // ʱ�任���S
11370 getTrafficTimeToSeconds: function (i_time) {
11371 var s_FormattedTime = this.getTrafficTimeHours(i_time);
11372 return s_FormattedTime.h * 3600 + s_FormattedTime.m * 60 + s_FormattedTime.s;
11373 },
11374 // ͨ�����ƻ�ȡ������λ
11375 getTrafficUnitByScale: function (i_scale) {
11376 if (i_scale == '1024') {
11377 return 'GB';
11378 } else if (i_scale == '1048576') {
11379 return 'TB';
11380 } else {
11381 return 'MB';
11382 }
11383 },
11384 // ��λ��Ӧֵ��ȡ
11385 getTrafficValueByStatisticalUnit: function (i_unit) {
11386 i_unit = i_unit.toLowerCase();
11387 if(i_unit == 'minute'){
11388 return '60';
11389 } else if (i_unit == 'gb') {
11390 return '1024';
11391 } else if(i_unit == 'hour'){
11392 return '3600';
11393 } else if (i_unit == 'tb') {
11394 return '1048576';
11395 } else {
11396 return '1';
11397 }
11398 },
11399
11400 // �������Ƿ�ɱ༭
11401 isFormEditable: function (fwVm) {
11402 var s_dataPageEditState = fwVm.dataLimitTypeChecked() == '1' && (fwVm.viewEditUsedData() || fwVm.viewEditAlertData() || fwVm.viewEditTotalData());
11403 var s_timePageEditState = fwVm.dataLimitTypeChecked() == '0' && (fwVm.viewEditUsedTime() || fwVm.viewEditAlertTime() || fwVm.viewEditTotalTime());
11404 if (s_dataPageEditState || s_timePageEditState) {
11405 $('.border-color-transition:visible').addClass('attention-focus');
11406 addTimeout(function () {
11407 $('.border-color-transition:visible').removeClass('attention-focus');
11408 }, 1500);
11409 return true;
11410 } else {
11411 var s_result = false;
11412 if (fwVm.dataLimitTypeChecked() == 1) {
11413 if (fwVm.alertDataReach() == '0') {
11414 fwVm.editAlertDataHandler();
11415 s_result = true;
11416 }
11417 if (fwVm.limitDataMonth() == '0') {
11418 fwVm.editTotalDataHandler();
11419 s_result = true;
11420 }
11421 } else {
11422 if (fwVm.alertTimeReach() == '0') {
11423 fwVm.editAlertTimeHandler();
11424 s_result = true;
11425 }
11426 if (fwVm.limitTimeMonth() == '0') {
11427 fwVm.editTotalTimeHandler();
11428 s_result = true;
11429 }
11430 }
11431
11432 if (s_result) {
11433 $('.border-color-transition:visible').addClass('attention-focus');
11434 addTimeout(function () {
11435 $('.border-color-transition:visible').removeClass('attention-focus');
11436 }, 1500);
11437 }
11438 return s_result;
11439 }
11440 },
11441
11442 // ˢ������ͼ��Ϣ�����������ֵ����ʾ���
11443
11444 refreshFlowDiagramInfo: function (fwVm) {
11445 var s_alarm = 0;
11446 var s_left = 0;
11447 var s_left1 = 0;
11448 var s_reach = 0;
11449 var s_total = 0;
11450 var s_used = 0;
11451
11452
11453 var s_startName = $.i18n.prop("echarts_no");
11454
11455 if (sv_sourceData.dataLimitChecked == '1') { //if (fwVm.dataLimitChecked() == '1') { //����
11456 s_startName = $.i18n.prop("echarts_used");
11457 sv_trafficGraphOptions.series[0].data = [];
11458
11459 if (fwVm.dataLimitTypeChecked() == '1') { // ����
11460 sv_trafficGraphOptions.title.text = "";
11461 sv_trafficGraphOptions.series[0].data = [];
11462
11463 if (fwVm.limitDataMonth() == 0) {
11464 var s_usedData = sv_trafficStaticalInfo.data.used;
11465 s_usedData.value = 1;
11466 s_usedData.name = $.i18n.prop("echarts_used");
11467 s_usedData.selected = false;
11468 sv_trafficGraphOptions.series[0].data.push(s_usedData);
11469 } else {
11470 s_total = fwVm.limitDataMonth() * fwVm.selectedDataUnit() * 1048576;
11471 s_used = parseInt(sv_sourceData.monthlySent, 10) + parseInt(sv_sourceData.monthlyReceived, 10);
11472 s_reach = s_total * fwVm.alertDataReach() / 100;
11473
11474 if (s_used >= s_total) {
11475 var s_fullData = sv_trafficStaticalInfo.data.full;
11476 s_fullData.value = 100;
11477 s_fullData.name = $.i18n.prop("echarts_full");
11478 sv_trafficGraphOptions.series[0].data.push(s_fullData);
11479 s_startName = $.i18n.prop("echarts_full");
11480 } else {
11481 if (s_reach > s_used) {
11482 s_left1 = s_reach - s_used;
11483 s_left = s_total - s_reach;
11484 } else {
11485 s_alarm = s_used - s_reach;
11486 s_left = s_total - s_used;
11487 }
11488
11489 var s_usedData = sv_trafficStaticalInfo.data.used;
11490 if (s_reach - s_used > 0) {
11491 s_usedData.value = s_used;
11492 } else {
11493 s_usedData.value = s_reach;
11494 }
11495 s_usedData.name = $.i18n.prop("echarts_used");
11496 sv_trafficGraphOptions.series[0].data.push(s_usedData);
11497
11498 if (s_left1 > 0) {
11499 var s_left1Data = sv_trafficStaticalInfo.data.left1;
11500 s_left1Data.value = s_left1;
11501 s_left1Data.name = $.i18n.prop("echarts_left1");
11502 sv_trafficGraphOptions.series[0].data.push(s_left1Data);
11503 }
11504
11505 var s_alertData = sv_trafficStaticalInfo.data.alert;
11506 s_alertData.value = s_total / 200;
11507 s_alertData.name = $.i18n.prop("echarts_alert");
11508 sv_trafficGraphOptions.series[0].data.push(s_alertData);
11509
11510 if (s_alarm > 0) {
11511 var s_alarmData = sv_trafficStaticalInfo.data.alarm;
11512 s_alarmData.value = s_alarm;
11513 s_alarmData.name = $.i18n.prop("echarts_alarm");
11514 sv_trafficGraphOptions.series[0].data.push(s_alarmData);
11515 }
11516
11517 var s_freeData = sv_trafficStaticalInfo.data.free;
11518 s_freeData.value = s_left;
11519 s_freeData.name = $.i18n.prop("echarts_free");
11520 sv_trafficGraphOptions.series[0].data.push(s_freeData);
11521 }
11522 }
11523
11524 }else{// ʱ��
11525
11526 sv_trafficGraphOptions.series[0].data = [];
11527
11528 if (fwVm.limitTimeMonth() == 0) {
11529 var s_usedData = sv_trafficStaticalInfo.data.used;
11530 s_usedData.value = 1;
11531 s_usedData.selected = false;
11532 s_usedData.name = $.i18n.prop("echarts_used");
11533 sv_trafficGraphOptions.series[0].data.push(s_usedData);
11534 } else {
11535 s_total = fwVm.limitTimeMonth() * fwVm.selectedTimeUnit();
11536 s_used = sv_sourceData.monthlyConnectedTime;
11537 s_reach = s_total * fwVm.alertTimeReach() / 100;
11538
11539 if (s_used >= s_total) {
11540 var fullTime = sv_trafficStaticalInfo.data.full;
11541 fullTime.value = 100;
11542 fullTime.name = $.i18n.prop("echarts_full");
11543 sv_trafficGraphOptions.series[0].data.push(fullTime);
11544 s_startName = $.i18n.prop("echarts_full");
11545 } else {
11546 if (s_reach - s_used > 0) {
11547 s_left1 = s_reach - s_used;
11548 s_left = s_total - s_reach;
11549 } else {
11550 s_alarm = s_used - s_reach;
11551 s_left = s_total - s_used;
11552 }
11553
11554 var s_usedTime = sv_trafficStaticalInfo.data.used;
11555 if (s_reach - s_used > 0) {
11556 s_usedTime.value = s_used;
11557 } else {
11558 s_usedTime.value = s_reach;
11559 }
11560 s_usedTime.name = $.i18n.prop("echarts_used");
11561 sv_trafficGraphOptions.series[0].data.push(s_usedTime);
11562
11563 if (s_left1 > 0) {
11564 var s_left1Time = sv_trafficStaticalInfo.data.left1;
11565 s_left1Time.value = s_left1;
11566 s_left1Time.name = $.i18n.prop("echarts_left1");
11567 sv_trafficGraphOptions.series[0].data.push(s_left1Time);
11568 }
11569
11570 var s_alertTime = sv_trafficStaticalInfo.data.alert;
11571 s_alertTime.value = s_total / 200;
11572 s_alertTime.name = $.i18n.prop("echarts_alert");
11573 sv_trafficGraphOptions.series[0].data.push(s_alertTime);
11574
11575 if (s_alarm > 0) {
11576 var s_alarmTime = sv_trafficStaticalInfo.data.alarm;
11577 s_alarmTime.value = s_alarm;
11578 s_alarmTime.name = $.i18n.prop("echarts_alarm");
11579 sv_trafficGraphOptions.series[0].data.push(s_alarmTime);
11580 }
11581
11582 var s_freeTime = sv_trafficStaticalInfo.data.free;
11583 s_freeTime.value = s_left;
11584 s_freeTime.name = $.i18n.prop("echarts_free");
11585 sv_trafficGraphOptions.series[0].data.push(s_freeTime);
11586 }
11587 }
11588 }
11589 } else {
11590 var s_usedData = sv_trafficStaticalInfo.data.used;
11591 s_usedData.value = 1;
11592 s_usedData.selected = false;
11593 s_usedData.name = $.i18n.prop("echarts_no");
11594
11595 sv_trafficGraphOptions.series[0].data = [s_usedData];
11596 sv_trafficGraphOptions.title.text = '';
11597 }
11598 sv_trafficStaticalInfo.setFlowDiagramInfo(sv_trafficGraphOptions, s_startName);
11599 },
11600
11601
11602 // �ػ�����ͼ
11603 setFlowDiagramInfo: function (i_options, i_startName) {
11604 var s_startPart = sv_trafficStaticalInfo.data.start;
11605
11606 s_startPart.name = i_startName;
11607 s_startPart.selected = false;
11608 s_startPart.value = 0;
11609
11610 var s_arr = [s_startPart].concat(i_options.series[0].data);
11611 i_options.series[0].data = s_arr;
11612 sv_trafficGraph.setOption(i_options, true);
11613
11614 addTimeout(function () {
11615 sv_trafficGraph.resize();
11616 }, 1000);
11617 }
11618 };
11619
11620
11621 // ����ͼ��������
11622 var sv_trafficGraphOptions = {
11623 animation: false,
11624 color: ['red', 'red', 'red', 'red', 'red'],
11625 series: [
11626 {
11627 name: '��������',
11628 radius: ['0', '75'],
11629 selectedOffset: 3,
11630 type: 'pie',
11631 data: [
11632
11633 ],
11634 itemStyle: {
11635 normal: {
11636 labelLine: {
11637 show: false
11638 },
11639 label: {
11640 show: false
11641 }
11642 }
11643 }
11644 }
11645 ],
11646 title: {
11647 itemGap: 0,
11648 text: '',
11649 subtextStyle: {
11650 color: '#FFF',
11651 fontFamily: '΢���ź�',
11652 fontSize: 16,
11653 fontWeight: 'bolder'
11654 },
11655 textStyle: {
11656 color: '#FFF',
11657 fontFamily: '΢���ź�',
11658 fontSize: 20,
11659 fontWeight: 'bolder'
11660 },
11661 x: 'center',
11662 y: 'center'
11663 },
11664 tooltip: {
11665 formatter: "{b}"
11666 }
11667 };
11668
11669
11670 // ��ȡ������������
11671 function getTrafficAlertInfo() {
11672 return service.getTrafficAlertInfo();
11673 }
11674
11675
11676
11677 // ��������ViewModel
11678
11679 function trafficViewModel() {
11680
11681 var target = this;
11682
11683 var info = sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11684 var dataMonth = info.limitDataMonth.split("_");
11685
11686 sv_usedDataModified = false;
11687 sv_usedTimeModified = false;
11688
11689 target.alertDataReach = ko.observable(info.alertDataReach || 0);
11690 target.alertTimeReach = ko.observable(info.alertTimeReach || 0);
11691 target.dataLimitChecked = ko.observable(info.dataLimitChecked == '0' ? '0' : '1');
11692 target.dataLimitTypeChecked = ko.observable(info.dataLimitTypeChecked == '0' ? '0' : '1');
11693 target.limitTimeMonth = ko.observable(info.limitTimeMonth || 0);
11694
11695
11696 // ע��˳��
11697 target.usedDataText = ko.observable(transUnit(parseInt(info.monthlySent, 10) + parseInt(info.monthlyReceived, 10), false));
11698 var sv_staticalDataInfo = sv_trafficStaticalInfo.getTrafficStatisticalDatalnfo(target.usedDataText());
11699 var sv_staticalInfoData = sv_staticalDataInfo.data;
11700 target.dataUsed = ko.observable(sv_staticalInfoData);
11701 var sv_staticalInfoUnit = sv_staticalDataInfo.unit;
11702 target.selectedDataUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_staticalInfoUnit));
11703 target.usedDataTextDescData = ko.observable("");
11704
11705 target.limitDataMonth = ko.observable(dataMonth[0] || 0);
11706 target.selectedDataUnit = ko.observable(dataMonth[1] || 1);
11707
11708 var limitDataMonthTmp = transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1024 * 1024, false);
11709 var limitDataMonthUnitTmp = limitDataMonthTmp.substring(limitDataMonthTmp.length-2);
11710 target.limitDataMonth(limitDataMonthTmp.substring(0, limitDataMonthTmp.length-2));
11711 target.selectedDataUnit(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(limitDataMonthUnitTmp));
11712
11713 target.usedDataTextDesc = ko.computed(sf_usedDataTextDesc);
11714 target.limitDataMonthDescData = ko.observable("");
11715 target.limitDataMonthDesc = ko.computed(sf_limitDataMonthDesc);
11716 target.alertDataReachDescData = ko.observable("");
11717 target.alertDataReachDesc = ko.computed(sf_alertDataReachDesc);
11718 target.leftDataDescData = ko.observable("");
11719 target.leftDataDesc = ko.computed(sf_leftDataDesc);
11720 target.monthlyConnectedTime = ko.observable(transSecond2Time(info.monthlyConnectedTime));
11721
11722 var sv_timeInfo1 = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(info.monthlyConnectedTime));
11723 target.usedTime = ko.observable(sv_timeInfo1.data);
11724 target.selectedTimeUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfo1.unit));
11725
11726 target.usedTimeTextDescData = ko.observable("");
11727 target.usedTimeTextDesc = ko.computed(sf_usedTimeTextDesc);
11728
11729 var sv_timeInfoNew = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(parseFloat(target.limitTimeMonth()) * 3600));
11730 target.selectedTimeUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfoNew.unit));
11731 target.limitTimeMonth(sv_timeInfoNew.data);
11732
11733
11734 target.limitTimeMonthDescData = ko.observable("");
11735 target.limitTimeMonthDescText = ko.observable("traffic_limit_time_h");
11736 target.limitTimeMonthDesc = ko.computed(sf_limitTimeMonthDesc);
11737 target.alertTimeReachDescData = ko.observable("");
11738 target.alertTimeReachDesc = ko.computed(sf_alertTimeReachDesc);
11739 target.leftTimeDescData = ko.observable("");
11740 target.leftTimeDesc = ko.computed(sf_leftTimeDesc);
11741 target.save = sf_save;
11742 target.viewEditUsedData = ko.observable(false);
11743 target.editUsedDataHandler = sf_editUsedDataHandler;
11744 target.editUsedDataSaveHandler = sf_editUsedDataSaveHandler;
11745 target.saveUsedData = sf_saveUsedData;
11746 target.editUsedDataCancelHandler = sf_editUsedDataCancelHandler;
11747 target.viewEditTotalData = ko.observable(false);
11748 target.editTotalDataHandler = sf_editTotalDataHandler;
11749 target.editTotalDataSaveHandler = sf_editTotalDataSaveHandler;
11750 target.editTotalDataCancelHandler = sf_editTotalDataCancelHandler;
11751 target.viewEditAlertData = ko.observable(false);
11752 target.editAlertDataHandler = sf_editAlertDataHandler;
11753 target.editAlertDataSaveHandler = sf_editAlertDataSaveHandler;
11754 target.editAlertDataCancelHandler = sf_editAlertDataCancelHandler;
11755 target.viewEditUsedTime = ko.observable(false);
11756 target.editUsedTimeHandler = sf_editUsedTimeHandler;
11757 target.saveUsedTime = sf_saveUsedTime;
11758 target.editUsedTimeSaveHandler = sf_editUsedTimeSaveHandler;
11759 target.editUsedTimeCancelHandler = sf_editUsedTimeCancelHandler;
11760 target.viewEditTotalTime = ko.observable(false);
11761 target.editTotalTimeHandler = sf_editTotalTimeHandler ;
11762 target.editTotalTimeSaveHandler = sf_editTotalTimeSaveHandler;
11763 target.editTotalTimeCancelHandler = sf_editTotalTimeCancelHandler;
11764 target.viewEditAlertTime = ko.observable(false);
11765 target.editAlertTimeHandler = sf_editAlertTimeHandler;
11766 target.editAlertTimeSaveHandler = sf_editAlertTimeSaveHandler;
11767 target.editAlertTimeCancelHandler = sf_editAlertTimeCancelHandler;
11768 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11769
11770
11771 // ��������������
11772 function sf_alertDataReachDesc() {
11773 if(isNaN(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach())) {
11774 target.alertDataReachDescData(target.alertDataReach() + ', ');
11775 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), ' ');
11776 }
11777
11778 var s_value = transUnit(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach() * 1048576 / 100, false);
11779 target.alertDataReachDescData(target.alertDataReach() + ',' + s_value);
11780 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), s_value);
11781 }
11782 // ʱ������������
11783 function sf_alertTimeReachDesc() {
11784 if(isNaN(target.limitTimeMonth() * target.alertTimeReach())) {
11785 target.alertTimeReachDescData(target.alertTimeReach() + ', ');
11786 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), ' ');
11787 }
11788 var s_value = transSecond2Time(target.limitTimeMonth() * target.selectedTimeUnit() * target.alertTimeReach() / 100);
11789 target.alertTimeReachDescData(target.alertTimeReach() + ',' + s_value);
11790 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), s_value);
11791 }
11792
11793
11794 // ��������ֵȡ���༭��ť�¼�
11795 function sf_editAlertDataCancelHandler() {
11796 target.alertDataReach(sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue'));
11797 target.viewEditAlertData(false);
11798 }
11799
11800 // ��������ֵ�༭��ť�¼�
11801 function sf_editAlertDataHandler() {
11802 sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue', target.alertDataReach());
11803 target.viewEditAlertData(true);
11804 }
11805
11806 // ��������ֵ����༭��ť�¼�
11807 function sf_editAlertDataSaveHandler() {
11808 if (sv_trafficStaticalInfo.getEle('alertDataReach').valid()) {
11809 target.viewEditAlertData(false);
11810 }
11811 }
11812
11813 // ʱ������ֵȡ���༭��ť�¼�
11814 function sf_editAlertTimeCancelHandler() {
11815 target.alertTimeReach(sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue'));
11816 target.viewEditAlertTime(false);
11817 }
11818 // ʱ������ֵ�༭��ť�¼�
11819 function sf_editAlertTimeHandler() {
11820 sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue', target.alertTimeReach());
11821 target.viewEditAlertTime(true);
11822 }
11823 // ʱ������ֵ����༭��ť�¼�
11824 function sf_editAlertTimeSaveHandler() {
11825 if (sv_trafficStaticalInfo.getEle('alertTimeReach').valid()) {
11826 target.viewEditAlertTime(false);
11827 }
11828 }
11829
11830 // �ײ������༭��ť�¼�
11831 function sf_editTotalDataHandler() {
11832 sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue', target.limitDataMonth());
11833 sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue', target.selectedDataUnit());
11834 target.viewEditTotalData(true);
11835 }
11836
11837 // �ײ���������༭��ť�¼�
11838 function sf_editTotalDataSaveHandler() {
11839 if (sv_trafficStaticalInfo.getEle('limitDataMonth').valid()) {
11840 target.usedDataText(transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1048576, false));
11841 target.viewEditTotalData(false);
11842 }
11843 }
11844
11845 // �ײ�����ȡ���༭��ť�¼�
11846 function sf_editTotalDataCancelHandler() {
11847 target.limitDataMonth(sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue'));
11848 target.selectedDataUnit(sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue'));
11849 target.viewEditTotalData(false);
11850 }
11851 // �ײ�ʱ��ȡ���༭��ť�¼�
11852 function sf_editTotalTimeCancelHandler() {
11853 target.limitTimeMonth(sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue'));
11854 target.viewEditTotalTime(false);
11855 }
11856 // �ײ�ʱ��༭��ť�¼�
11857 function sf_editTotalTimeHandler() {
11858 sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue', target.limitTimeMonth());
11859 target.viewEditTotalTime(true);
11860 }
11861 // �ײ�ʱ�䱣��༭��ť�¼�
11862 function sf_editTotalTimeSaveHandler() {
11863 if (sv_trafficStaticalInfo.getEle('limitTimeMonth').valid()) {
11864 target.viewEditTotalTime(false);
11865 }
11866 }
11867
11868 // ��������ȡ���༭��ť�¼�
11869 function sf_editUsedDataCancelHandler() {
11870 target.dataUsed(sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue'));
11871 target.selectedDataUsedUnit(sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue'));
11872 sv_trafficStaticalInfo.getEle('editUsedDataCancel').siblings('label.error').hide();
11873 target.viewEditUsedData(false);
11874 }
11875 // ���������༭��ť�¼�
11876 function sf_editUsedDataHandler() {
11877 sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue', target.dataUsed());
11878 sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue', target.selectedDataUsedUnit());
11879 target.dataUsed(target.dataUsed());
11880 target.viewEditUsedData(true);
11881 }
11882 // �����������水ť�¼�
11883 function sf_editUsedDataSaveHandler() {
11884 if (sv_trafficStaticalInfo.getEle('dataUsed').valid()) {
11885 sv_usedDataModified = true;
11886 target.viewEditUsedData(false);
11887 }
11888 }
11889 // ����ʱ��ȡ���༭��ť�¼�
11890 function sf_editUsedTimeCancelHandler() {
11891 target.usedTime(sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue'));
11892 target.viewEditUsedTime(false);
11893 }
11894 // ����ʱ��༭��ť�¼�
11895 function sf_editUsedTimeHandler() {
11896 sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue', target.usedTime());
11897 target.viewEditUsedTime(true);
11898 }
11899
11900 // ����ʱ�䱣��༭��ť�¼�
11901 function sf_editUsedTimeSaveHandler() {
11902 if (sv_trafficStaticalInfo.getEle('usedTime').valid()) {
11903 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
11904 target.viewEditUsedTime(false);
11905 sv_usedTimeModified = true;
11906 }
11907 }
11908
11909 // ʣ������������
11910 function sf_leftDataDesc() {
11911 var s_left = (target.limitDataMonth() * target.selectedDataUnit() - target.dataUsed() * target.selectedDataUsedUnit()) * 1048576;
11912 if(s_left < 0) {
11913 s_left = 0;
11914 }
11915
11916 if(isNaN(s_left)) {
11917 target.leftDataDescData('');
11918 return $.i18n.prop('traffic_data_left_text', ' ');
11919 }
11920
11921 target.leftDataDescData(transUnit(s_left, false));
11922 return $.i18n.prop('traffic_data_left_text', transUnit(s_left, false));
11923 }
11924 //ʣ��ʱ��������
11925 function sf_leftTimeDesc() {
11926 var s_surplus = target.limitTimeMonth() * target.selectedTimeUnit() - sv_trafficStaticalInfo.getTrafficTimeToSeconds(target.monthlyConnectedTime());
11927 if(s_surplus < 0) {
11928 s_surplus = 0;
11929 }
11930
11931 if(isNaN(s_surplus)) {
11932 target.leftTimeDescData(' ');
11933 return $.i18n.prop('traffic_data_left_text', ' ');
11934 }
11935 target.leftTimeDescData(transSecond2Time(s_surplus));
11936 return $.i18n.prop('traffic_data_left_text', transSecond2Time(s_surplus));
11937 }
11938 // �ײ�����������
11939 function sf_limitDataMonthDesc() {
11940 if(isNaN(target.limitDataMonth())) {
11941 target.limitDataMonthDescData("");
11942 return $.i18n.prop('traffic_limit_data_text', ' ');
11943 }else{
11944 // todo
11945 }
11946
11947 target.limitDataMonthDescData(target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
11948 return $.i18n.prop('traffic_limit_data_text', target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
11949 }
11950 // �ײ�ʱ��������
11951 function sf_limitTimeMonthDesc() {
11952 if(isNaN(target.limitTimeMonth())) {
11953 target.limitTimeMonthDescData(' ');
11954 target.limitTimeMonthDescText('traffic_limit_time_h');
11955 return $.i18n.prop('traffic_limit_time_h', ' ');
11956 }else{
11957 // todo:
11958 }
11959
11960 target.limitTimeMonthDescData(target.limitTimeMonth());
11961
11962 if(target.selectedTimeUnit() == "60"){
11963 target.limitTimeMonthDescText('traffic_limit_time_m');
11964 return $.i18n.prop('traffic_limit_time_m', target.limitTimeMonth());
11965 }else{
11966 target.limitTimeMonthDescText('traffic_limit_time_h');
11967 return $.i18n.prop('traffic_limit_time_h', target.limitTimeMonth());
11968 }
11969 }
11970
11971 // Ӧ�ð�ť�¼�
11972 function sf_save() {
11973 if (sv_trafficStaticalInfo.isFormEditable(target) && target.dataLimitChecked() == '1') {
11974 return false;
11975 }
11976
11977 if (target.selectedDataUnit() == '1' && target.selectedDataUsedUnit() == '1048576' && target.dataLimitTypeChecked() == "1" && target.dataLimitChecked() == '1' && !(parseInt(target.dataUsed(), 10) < parseInt('4096', 10)) ) {
11978 showAlert('traffic_over_note');
11979 return false;
11980 }
11981
11982 showLoading();
11983 service.setTrafficAlertInfo({
11984 alertDataReach: parseInt(target.alertDataReach(), 10),
11985 alertTimeReach: parseInt(target.alertTimeReach(), 10),
11986 dataLimitChecked: target.dataLimitChecked(),
11987 dataLimitTypeChecked: target.dataLimitTypeChecked(),
11988 limitDataMonth: target.limitDataMonth() + "_" + target.selectedDataUnit(),
11989 limitTimeMonth: target.selectedTimeUnit() == "60" ? target.limitTimeMonth()/60 : target.limitTimeMonth()//save by hours
11990 }, function (data) {
11991 if (data.result == 'success') {
11992 if(target.dataLimitTypeChecked() == "1" && sv_usedDataModified) {
11993 target.saveUsedData();
11994 } else if(target.dataLimitTypeChecked() == "0" && sv_usedTimeModified) {
11995 target.saveUsedTime();
11996 } else {
11997 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
11998 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
11999 status.setTrafficAlertPopuped(false);
12000 successOverlay();
12001 }
12002 } else {
12003 errorOverlay();
12004 }
12005 }, function () {
12006 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
12007 errorOverlay();
12008 });
12009 }
12010
12011 // ����������������
12012 function sf_saveUsedData() {
12013 var val = target.dataUsed() * target.selectedDataUsedUnit();
12014 service.trafficCalibration({
12015 way: 'data',
12016 value: val
12017 }, function(){
12018 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
12019 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
12020 successOverlay();
12021 target.viewEditUsedData(false);
12022 status.setTrafficAlertPopuped(false);
12023 sv_usedDataModified = false;
12024 }, function(){
12025 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
12026 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
12027 errorOverlay();
12028 });
12029 }
12030
12031
12032
12033 function sf_saveUsedTime() {
12034 service.trafficCalibration({
12035 way: 'time',
12036 value: target.selectedTimeUsedUnit() == "60" ? parseFloat(target.usedTime())/60 : target.usedTime()
12037 }, function(){
12038 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
12039 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
12040 successOverlay();
12041 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
12042 target.viewEditUsedTime(false);
12043 status.setTrafficAlertPopuped(false);
12044 sv_usedTimeModified = false;
12045 }, function(){
12046 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
12047 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
12048 errorOverlay();
12049 });
12050 }
12051
12052
12053 // ��������������
12054 function sf_usedDataTextDesc() {
12055 if(isNaN(target.dataUsed())) {
12056 target.usedDataTextDescData("");
12057 return $.i18n.prop('traffic_used_text', ' ');
12058 }
12059 target.usedDataTextDescData(target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
12060 return $.i18n.prop('traffic_used_text', target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
12061 }
12062 // ����ʱ��������
12063 function sf_usedTimeTextDesc() {
12064 target.usedTimeTextDescData(target.monthlyConnectedTime());
12065 return $.i18n.prop('traffic_used_text', target.monthlyConnectedTime());
12066 }
12067
12068
12069 }
12070
12071 function init() {
12072 sv_trafficGraph = echarts.init($("#traffic_graphic")[0]);
12073 window.onresize = sv_trafficGraph.resize;
12074 var s_container = $('#container');
12075 ko.cleanNode(s_container[0]);
12076 var fwVm = new trafficViewModel();
12077 ko.applyBindings(fwVm, s_container[0]);
12078 $('#trafficAlertForm').validate({
12079 submitHandler: function () {
12080 fwVm.save();
12081 },
12082
12083
12084 errorPlacement: function (error, para) {
12085 if (para.attr("name") == "alertDataReach") {
12086 error.insertAfter("#editAlertDataDiv");
12087 } else if (para.attr("name") == "alertTimeReach") {
12088 error.insertAfter("#editAlertTimeDiv");
12089 } else if (para.attr("name") == "dataUsed") {
12090 error.insertAfter("#editUsedDataDiv");
12091 } else if (para.attr("name") == "limitDataMonth") {
12092 error.insertAfter("#editTotalDataDiv");
12093 } else if (para.attr("name") == "limitTimeMonth") {
12094 error.insertAfter("#editTotalTimeDiv");
12095 } else if (para.attr("name") == "usedTime") {
12096 error.insertAfter("#editUsedTimeDiv");
12097 } else {
12098 error.insertAfter(para);
12099 }
12100 },
12101
12102 rules: {
12103 alertDataReach: {
12104 range: [ 1, 100 ],
12105 digits: true
12106 },
12107 alertTimeReach: {
12108 range: [ 1, 100 ],
12109 digits: true
12110 },
12111 dataUsed: {
12112 range : [ 0, 9999 ],
12113 decimalRange : true
12114 },
12115 limitDataMonth: {
12116 range : [ 1, 9999 ],
12117 decimalRange : true
12118 },
12119 limitTimeMonth: {
12120 range : [ 1, 9999 ],
12121 decimalRange : true
12122 },
12123 usedTime: {
12124 range : [ 0, 9999 ],
12125 decimalRange : true
12126 }
12127 }
12128
12129 });
12130
12131 var sv_originalLan = window.language;
12132 window.setInterval(function(){
12133 if(sv_originalLan != window.language){
12134 sv_originalLan = window.language;
12135 sv_trafficStaticalInfo.refreshFlowDiagramInfo(fwVm);
12136 }
12137 }, 1000);
12138
12139 }
12140
12141 return {
12142 init: init
12143 };
12144});
12145
12146// ״̬����ʾ��ʵ��
12147define("tooltip",[ "jquery" ],
12148
12149 function($) {
12150
12151
12152 // ����Ԫ��λ����Ϣ
12153 // @method calculatePositionInfo
12154 // @param trigger Ԫ��
12155 // @param tooltip ״̬��
12156 // @param {JSON} config �����
12157
12158 function calculatePositionInfo(trigger, tooltip, config) {
12159 var top = trigger.offset().top;
12160 var left = trigger.offset().left;
12161 var position = config.position[0];
12162 var height = tooltip.outerHeight() + trigger.outerHeight();
12163 var width = tooltip.outerWidth() + trigger.outerWidth();
12164
12165 top -= tooltip.outerHeight() - config.offset[0];
12166 left += trigger.outerWidth() + config.offset[1];
12167
12168 if (/iPad/i.test(navigator.userAgent)) {
12169 top -= $(window).scrollTop();
12170 }
12171
12172 if (position == 'center') {
12173 top += height / 2;
12174 }
12175 if (position == 'bottom') {
12176 top += height;
12177 }
12178 position = config.position[1];
12179 if (position == 'center') {
12180 left -= width / 2;
12181 }else if (position == 'left') {
12182 left -= width;
12183 }
12184
12185 return {
12186 top : top,
12187 left : left
12188 };
12189 }
12190
12191 // ״̬����ʼ��
12192 function init() {
12193
12194 $(".statusItem", "#statusBar").each(function(i, n){
12195 var $this = $(this);
12196 $this.attr("tipTitle", $this.attr("title")).removeAttr("title");
12197 }).hover(
12198 function() {
12199 var $this = $(this);
12200 var title = $this.attr("tipTitle");
12201 var tooltip = $("<div>").addClass("tooltip in").appendTo(document.body).hide()
12202 .append($this.attr("i18n") ? $.i18n.prop(title) : title);
12203 if ($this.attr("i18n")) {
12204 tooltip.attr("data-trans", title).attr("id", "tooltip_" + $this.attr("id"));
12205 }
12206 var pos = calculatePositionInfo($this, tooltip, {
12207 position : [ 'bottom', 'center' ],
12208 offset : [ 0, 0 ]
12209 });
12210 tooltip.css({
12211 position : 'absolute',
12212 top : pos.top,
12213 left : pos.left
12214 }).show();
12215 }, function() {
12216 $(".tooltip").hide().remove();
12217 });
12218 }
12219
12220 return {
12221 init : init
12222 };
12223 });
12224
12225define("menu","set service knockout underscore jquery".split(" "),
12226 function (set, fnc, libko, libus, libjq) {
12227 var displayMenuWhenLogout = false;
12228 var vmMenu;
12229 var menu = [];
12230 var menuResource = "";
12231
12232 function menuExistCheck(path) {
12233 for (var i = 0; i < menu.length; i++) {
12234 if (menu[i].path == path) {
12235 return true;
12236 }
12237 }
12238 return false;
12239 }
12240
12241 function getIsLoggedin() {
12242 var loginStatus = fnc.getLoginStatus();
12243 return (loginStatus.status == "loggedIn");
12244 }
12245
12246 function buildNew() {
12247 var loggedIn = getIsLoggedin();
12248 var menuMain = libus.filter(menu, function (param) {
12249 return (param.level == '1' && ((param.requireLogin && loggedIn) || !param.requireLogin) && param.hash != "#entry");
12250 });
12251 vmMenu.menuMain(menuMain);
12252 vmMenu.loggedIn(loggedIn);
12253
12254 getMainWth(vmMenu.menuMain().length);
12255 vmMenu.showMenu(loggedIn || displayMenuWhenLogout);
12256 libjq("#nav").translate();
12257 }
12258
12259 function getMainWth(len) {
12260 var width = 100 / len;
12261 libjq('ul#list-nav li').each(function () {
12262 libjq(this).css('width', width + '%');
12263 });
12264 }
12265
12266 function menuRefresh() {
12267 var currentHash = window.location.hash;
12268 var itmRoot = libus.find(menu, function (param) {
12269 return param.hash == currentHash;
12270 });
12271 while (itmRoot.parent) {
12272 itmRoot = libus.find(menu, function (param) {
12273 return param.hash == itmRoot.parent;
12274 });
12275 }
12276 if (!itmRoot.parent) {
12277 libjq("#list-nav li").removeClass("active");
12278 var mid = itmRoot.hash.substring(1, itmRoot.hash.length);
12279 libjq("#list-nav li[mid=" + mid + "]").addClass("active");
12280 }
12281 vmMenu.changeMenu(itmRoot);
12282 }
12283
12284 function menuSearch(hashVal) {
12285 hashVal = hashVal || window.location.hash;
12286 var loggedIn = getIsLoggedin();
12287 return libus.filter(menu, function (param) {
12288 return (hashVal == param.hash && ((param.requireLogin && loggedIn) || !param.requireLogin));
12289 });
12290 }
12291
12292 function menuRenderSub(level, baseItem) {
12293 var levelItem = libus.find(menu, function (param) {
12294 return param.parent == baseItem.hash && param.path == baseItem.path;
12295 });
12296 libjq(".menu-" + level + "-level").removeClass("active");
12297 if (levelItem) {
12298 if (level == "two") {
12299 menuRenderSub("three", levelItem);
12300 //forward/backward support
12301 clickMenuTrig(levelItem.hash, level);
12302 }
12303 libjq(".menu-" + level + "-level." + levelItem.hash.substring(1)).addClass("active");
12304 }
12305 }
12306
12307 function menuActSub() {
12308 var currentHash = window.location.hash;
12309 var itmRoot = libus.find(menu, function (param) {
12310 return param.hash == currentHash;
12311 });
12312 if (itmRoot.level == 1) {
12313 menuRenderSub("two", itmRoot);
12314 }
12315 if (itmRoot.level == 2) {
12316 menuRenderSub("three", itmRoot);
12317 //forward/backward support
12318 clickMenuTrig(itmRoot.hash, itmRoot.level);
12319 }
12320 if (itmRoot.level == 3) {
12321 //forward/backward support
12322 clickMenuTrig(itmRoot.parent, itmRoot.level);
12323 libjq(".menu-three-level").removeClass("active");
12324 libjq(".menu-three-level." + itmRoot.hash.substring(1)).addClass("active");
12325 }
12326 }
12327
12328 function clickMenuTrig(hash, level) {
12329 libjqobj = libjq(".menu-two-level." + hash.substring(1));
12330 var levelArr = ['3', 'three', '2', 'two'];
12331 if (libus.indexOf(levelArr, level) != -1 && libjqobj.hasClass('active')) {
12332 return;
12333 }
12334
12335 libjqobj.siblings().removeClass('active');
12336 libjqobj.addClass('active');
12337
12338 libjqobj.siblings().not('.menu-two-level').slideUp();
12339 libjqobj.next().has('ul li').slideDown();
12340 }
12341
12342 set.blc_wan_mode = fnc.getOpMode().blc_wan_mode;
12343 if (!set.RJ45_SUPPORT) {
12344 menuResource = "menu";
12345 } else {
12346 switch (set.blc_wan_mode) {
12347 case "PPPOE":
12348 case "AUTO_PPPOE":
12349 menuResource = "menu_pppoe";
12350 break;
12351 default:
12352 menuResource = "menu";
12353 break;
12354 }
12355 }
12356
12357 require([set.DEVICE + '/' + menuResource], function (otherMenu) {
12358 menu = otherMenu;
12359 if (set.SD_CARD_SUPPORT) {
12360 menu = menu.concat([{ hash: '#httpshare_guest', path: 'sd_httpshare', level: '', requireLogin: false, checkSIMStatus: false},
12361 { hash: '#sdcard', path: 'sd', level: '', requireLogin: true, checkSIMStatus: false},
12362 { hash: '#httpshare', path: 'sd_httpshare', level: '', requireLogin: true, checkSIMStatus: false}]);
12363 }
12364 });
12365
12366 function initialize() {
12367 vmMenu = new Menu_vm();
12368 }
12369
12370 function Menu_vm() {
12371 var loginState = getIsLoggedin();
12372 var target = this;
12373 target.loggedIn = libko.observable(loginState);
12374
12375 target.showMenu = libko.observable(loginState || displayMenuWhenLogout);
12376
12377 var menuMain = libus.filter(menu, function (param) {
12378 return (param.level == '1' && ((param.requireLogin && target.loggedIn()) || !param.requireLogin) && param.hash != "#entry");
12379 });
12380
12381 target.menuMain = libko.observableArray(menuMain);
12382 target.secondMenu = libko.observableArray([]);
12383 //target.curThirdMenu; cov_2
12384 target.changeMenu = function (data) {
12385 var secondMenu = getSubMenu(data);
12386 if (secondMenu.length == 0) {
12387 libjq("#container").addClass("fixContainerWidth");
12388 } else {
12389 libjq("#container").removeClass("fixContainerWidth");
12390 }
12391
12392 target.secondMenu(secondMenu);
12393 return true;
12394 };
12395 target.thirdMenu = function () {
12396 return target.curThirdMenu;
12397 };
12398 target.getThirdMenu = function (data) {
12399 target.curThirdMenu = getSubMenu(data);
12400 };
12401 function getSubMenu(data) {
12402 return libus.filter(menu, function (param) {
12403 return ((param.parent && param.parent == data.hash) && ((param.requireLogin && target.loggedIn()) || !param.requireLogin));
12404 });
12405 }
12406 }
12407
12408 return {
12409 activeSubMenu: menuActSub,
12410 checkIsMenuExist: menuExistCheck,
12411 findMenu: menuSearch,
12412 rebuild: buildNew,
12413 refreshMenu: menuRefresh,
12414 init: initialize
12415 };
12416});