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