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