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