blob: 70ea0b996378df6bac3e5863975ef670fb9b081f [file] [log] [blame]
zw.wangcfae4372024-08-12 16:41:12 +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 getNewVersionState() {
4299 return stuffMake(arguments, {}, prepare, deal, null, false);
4300 function prepare(values, isPost) {
4301 var valueReq = {};
4302 valueReq.cmd = "fota_new_version_state,fota_current_upgrade_state,fota_package_already_download";
4303 valueReq.multi_data = 1;
4304 return valueReq;
4305 }
4306 function deal(paramD) {
4307 if (paramD) {
4308 var hasNewVersion = (paramD.fota_new_version_state == 'has_critical' || paramD.fota_new_version_state == 'has_optional' || paramD.fota_new_version_state == 'already_has_pkg');
4309 paramD.hasNewVersion = hasNewVersion;
4310 return paramD;
4311 } else {
4312 return errUnknownObj;
4313 }
4314 }
4315 }
4316 function getMandatory() {
4317 return stuffMake(arguments, {}, prepare, deal, null, false);
4318 function prepare(values, isPost) {
4319 var valueReq = {};
4320 if (config.UPGRADE_TYPE == "OTA") {
4321 valueReq.cmd = "is_mandatory";
4322 } else {
4323 valueReq.cmd = "fota_new_version_state";
4324 }
4325 return valueReq;
4326 }
4327 function deal(paramD) {
4328 if (paramD) {
4329 if (config.UPGRADE_TYPE == "OTA") {
4330 return {
4331 "is_mandatory": paramD.is_mandatory == "1"
4332 };
4333 } else {
4334 return {
4335 "is_mandatory": paramD.fota_new_version_state == "has_critical"
4336 };
4337 }
4338 } else {
4339 return errUnknownObj;
4340 }
4341 }
4342 }
4343 function getUpgradeResult() {
4344 return stuffMake(arguments, {}, prepare, deal, null, false);
4345 function prepare(values, isPost) {
4346 var valueReq = {};
4347 valueReq.cmd = "upgrade_result";
4348 return valueReq;
4349 }
4350 function deal(paramD) {
4351 if (paramD) {
4352 return paramD;
4353 } else {
4354 return errUnknownObj;
4355 }
4356 }
4357 }
4358 function getCurrentUpgradeState() {
4359 return stuffMake(arguments, {}, prepare, deal, null, false);
4360 function prepare(values, isPost) {
4361 var valueReq = {};
4362 valueReq.cmd = "fota_current_upgrade_state";
4363 return valueReq;
4364 }
4365 function deal(paramD) {
4366 if (paramD) {
4367 paramD.current_upgrade_state = paramD.fota_current_upgrade_state;
4368 return paramD;
4369 } else {
4370 return errUnknownObj;
4371 }
4372 }
4373 }
4374 function getPackSizeInfo() {
4375 return stuffMake(arguments, {}, prepare, deal, null, false);
4376 function prepare(values, isPost) {
4377 var valueReq = {};
4378 valueReq.cmd = "fota_pkg_total_size,fota_dl_pkg_size";
4379 valueReq.multi_data = 1;
4380 return valueReq;
4381 }
4382 function deal(paramD) {
4383 if (paramD) {
4384 return paramD;
4385 } else {
4386 return errUnknownObj;
4387 }
4388 }
4389 }
4390 function setUpgradeSelectOp() {
4391 return stuffMake(arguments, {}, prepare, deal, null, true);
4392 function prepare(values, isPost) {
4393 var valueReq = {};
4394 valueReq.goformId = "IF_UPGRADE";
4395 valueReq.select_op = values.selectOp;
4396 if (valueReq.select_op == 'check') {
4397 valueReq.ota_manual_check_roam_state = 1;
4398 }
4399 return valueReq;
4400 }
4401 function deal(paramD) {
4402 if (paramD) {
4403 return paramD;
4404 } else {
4405 return errUnknownObj;
4406 }
4407 }
4408 }
4409 function getOTAUpdateSetting() {
4410 return stuffMake(arguments, {}, prepare, deal, null, false);
4411 function prepare(values, isPost) {
4412 var valueReq = {};
4413 valueReq.cmd = "fota_updateMode,fota_updateIntervalDay,fota_allowRoamingUpdate";
4414 valueReq.multi_data = 1;
4415 return valueReq;
4416 }
4417 function deal(paramD) {
4418 if (paramD) {
4419 return {
4420 updateMode: paramD.fota_updateMode,
4421 updateIntervalDay: paramD.fota_updateIntervalDay,
4422 allowRoamingUpdate: paramD.fota_allowRoamingUpdate
4423 };
4424 } else {
4425 return errUnknownObj;
4426 }
4427 }
4428 }
4429 function setOTAUpdateSetting() {
4430 return stuffMake(arguments, {}, prepare, deal, null, true);
4431 function prepare(values, isPost) {
4432 var valueReq = {};
4433 valueReq.goformId = "SetUpgAutoSetting";
4434 valueReq.UpgMode = values.updateMode;
4435 valueReq.UpgIntervalDay = values.updateIntervalDay;
4436 valueReq.UpgRoamPermission = values.allowRoamingUpdate;
4437 return valueReq;
4438 }
4439 function deal(paramD) {
4440 if (paramD && paramD.result == "success") {
4441 return paramD;
4442 } else {
4443 return errUnknownObj;
4444 }
4445 }
4446 }
4447 function getOTAlastCheckTime() {
4448 return getParams({
4449 nv: ['dm_last_check_time']
4450 }, arguments[1], arguments[2]);
4451 }
4452 function getSignalStrength() {
4453 return getParams({
4454 nv: ['network_type', 'sub_network_type', 'rssi', 'rscp', 'lte_rsrp']
4455 }, arguments[1], arguments[2]);
4456 }
4457 function clearUpdateResult() {
4458 return stuffMake(arguments, {}, prepare, deal, null, true);
4459 function prepare(values, isPost) {
4460 var valueReq = {};
4461 valueReq.goformId = "RESULT_RESTORE";
4462 return valueReq;
4463 }
4464 function deal(paramD) {
4465 if (paramD && paramD.result == "success") {
4466 return paramD;
4467 } else {
4468 return errUnknownObj;
4469 }
4470 }
4471 }
4472 function childGroupList() {
4473 return stuffMake(arguments, {}, prepare, deal, null, false);
4474 function prepare(values, isPost) {
4475 var valueReq = {
4476 cmd: "childGroupList"
4477 };
4478 return valueReq;
4479 }
4480 function deal(paramD) {
4481 if (paramD && (paramD.childGroupList || paramD.devices)) {
4482 return paramD;
4483 } else {
4484 return {
4485 devices: []
4486 };
4487 }
4488 }
4489 }
4490 function addChildGroup() {
4491 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4492 : {
4493 errorType: 'no_auth'
4494 }, prepare, deal, null, true);
4495 function prepare(values, isPost) {
4496 var valueReq = {
4497 goformId: "ADD_DEVICE",
4498 mac: values.macAddress
4499 };
4500 return valueReq;
4501 }
4502 function deal(paramD) {
4503 if (paramD && paramD.result == 'success') {
4504 return paramD;
4505 } else {
4506 return errUnknownObj;
4507 }
4508 }
4509 }
4510 function removeChildGroup() {
4511 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4512 : {
4513 errorType: 'no_auth'
4514 }, prepare, deal, null, true);
4515 function prepare(values, isPost) {
4516 var valueReq = {
4517 goformId: "DEL_DEVICE",
4518 mac: values.mac
4519 };
4520 return valueReq;
4521 }
4522 function deal(paramD) {
4523 if (paramD && paramD.result == 'success') {
4524 return paramD;
4525 } else {
4526 return errUnknownObj;
4527 }
4528 }
4529 }
4530 function checkCurrentUserInChildGroup(devices) {
4531 if (typeof config.currentUserInChildGroup == "undefined") {
4532 var childGroupDevice = [];
4533 if (typeof devices != "undefined") {
4534 childGroupDevice = devices;
4535 } else {
4536 childGroupDevice = childGroupList({}).devices;
4537 }
4538 var userMacAddr = getUserMacAddr({}).get_user_mac_addr;
4539 var found = _.find(childGroupDevice, function (item) {
4540 return item.mac == userMacAddr;
4541 });
4542 config.currentUserInChildGroup = typeof found != 'undefined';
4543 return {
4544 result: typeof found != 'undefined'
4545 };
4546 }
4547 return {
4548 result: config.currentUserInChildGroup
4549 };
4550 }
4551 function getUserMacAddr() {
4552 return getParams({
4553 nv: 'get_user_mac_addr'
4554 }, arguments[1], arguments[2]);
4555 }
4556 function getHostNameList() {
4557 return stuffMake(arguments, {}, prepare, deal, null, false);
4558 function prepare(values, isPost) {
4559 var valueReq = {
4560 cmd: "hostNameList"
4561 };
4562 return valueReq;
4563 }
4564 function deal(paramD) {
4565 if (paramD && (paramD.hostNameList || paramD.devices)) {
4566 return paramD;
4567 } else {
4568 return {
4569 devices: []
4570 };
4571 }
4572 }
4573 }
4574 function editHostName() {
4575 return stuffMake(arguments, {}, prepare, deal, null, true);
4576 function prepare(values, isPost) {
4577 var valueReq = {
4578 goformId: "EDIT_HOSTNAME",
4579 mac: values.mac,
4580 hostname: values.hostname
4581 };
4582 return valueReq;
4583 }
4584 function deal(paramD) {
4585 if (paramD && paramD.result == 'success') {
4586 return paramD;
4587 } else {
4588 return errUnknownObj;
4589 }
4590 }
4591 }
4592 function getSiteWhiteList() {
4593 return stuffMake(arguments, {}, prepare, deal, null, false);
4594 function prepare(values, isPost) {
4595 var valueReq = {
4596 cmd: "site_white_list"
4597 };
4598 return valueReq;
4599 }
4600 function deal(paramD) {
4601 if (paramD && (paramD.site_white_list || paramD.siteList)) {
4602 return paramD;
4603 } else {
4604 return {
4605 siteList: []
4606 };
4607 }
4608 }
4609 }
4610 function removeSiteWhite() {
4611 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4612 : {
4613 errorType: 'no_auth'
4614 }, prepare, deal, null, true);
4615 function prepare(values, isPost) {
4616 var valueReq = {
4617 goformId: "REMOVE_WHITE_SITE",
4618 ids: values.ids.join(',')
4619 };
4620 return valueReq;
4621 }
4622 function deal(paramD) {
4623 if (paramD && paramD.result == 'success') {
4624 return paramD;
4625 } else {
4626 return errUnknownObj;
4627 }
4628 }
4629 }
4630 function saveSiteWhite() {
4631 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4632 : {
4633 errorType: 'no_auth'
4634 }, prepare, deal, null, true);
4635 function prepare(values, isPost) {
4636 var valueReq = {
4637 goformId: "ADD_WHITE_SITE",
4638 name: values.name,
4639 site: values.site
4640 };
4641 return valueReq;
4642 }
4643 function deal(paramD) {
4644 if (paramD && paramD.result == 'success') {
4645 return paramD;
4646 } else {
4647 return errUnknownObj;
4648 }
4649 }
4650 }
4651 function getTimeLimited() {
4652 var defaultResult = {
4653 '0': [],
4654 '1': [],
4655 '2': [],
4656 '3': [],
4657 '4': [],
4658 '5': [],
4659 '6': []
4660 };
4661 return stuffMake(arguments, {}, prepare, deal, null, false);
4662 function prepare(values, isPost) {
4663 var valueReq = {
4664 cmd: "time_limited"
4665 };
4666 return valueReq;
4667 }
4668 function deal(paramD) {
4669 if (paramD) {
4670 return parseTimeLimited(paramD);
4671 } else {
4672 return defaultResult;
4673 }
4674 }
4675 function parseTimeLimited(paramD) {
4676 if (paramD.time_limited == '') {
4677 return {
4678 time_limited: []
4679 };
4680 }
4681 var weeks = paramD.time_limited.split(';');
4682 _.each(weeks, function (week) {
4683 var weekTime = week.split('+');
4684 if (weekTime.length == 2) {
4685 defaultResult[weekTime[0]] = weekTime[1].split(',');
4686 }
4687 });
4688 return defaultResult;
4689 }
4690 }
4691 function saveTimeLimited() {
4692 return stuffMake(arguments, config.currentUserInChildGroup == false ? {}
4693 : {
4694 errorType: 'no_auth'
4695 }, prepare, deal, null, true);
4696 function prepare(values, isPost) {
4697 var valueReq = {
4698 goformId: "SAVE_TIME_LIMITED",
4699 time_limited: values.time
4700 };
4701 return valueReq;
4702 }
4703 function deal(paramD) {
4704 if (paramD && paramD.result == 'success') {
4705 return paramD;
4706 } else {
4707 return errUnknownObj;
4708 }
4709 }
4710 }
4711 function getTsw() {
4712 return stuffMake(arguments, {}, prepare, deal, null, false);
4713 function prepare(values, isPost) {
4714 var valueReq = {
4715 cmd: "openEnable,closeEnable,openTime,closeTime",
4716 multi_data: '1'
4717 };
4718 return valueReq;
4719 }
4720 function deal(paramD) {
4721 if (paramD) {
4722 if (paramD.openTime.indexOf(':') != -1) {
4723 var open = paramD.openTime.split(':');
4724 paramD.openH = leftInsert(open[0], 2, '0');
4725 paramD.openM = leftInsert(open[1], 2, '0');
4726 } else {
4727 paramD.openH = '06';
4728 paramD.openM = '00';
4729 }
4730 if (paramD.closeTime.indexOf(':') != -1) {
4731 var close = paramD.closeTime.split(':');
4732 paramD.closeH = leftInsert(close[0], 2, '0');
4733 paramD.closeM = leftInsert(close[1], 2, '0');
4734 } else {
4735 paramD.closeH = '22';
4736 paramD.closeM = '00';
4737 }
4738 return paramD;
4739 } else {
4740 return errUnknownObj;
4741 }
4742 }
4743 }
4744 function saveTsw() {
4745 return stuffMake(arguments, {}, prepare, deal, null, true);
4746 function prepare(values, isPost) {
4747 var valueReq = {
4748 goformId: "SAVE_TSW",
4749 openEnable: values.openEnable,
4750 closeEnable: values.closeEnable
4751 };
4752 if (values.openEnable == '1') {
4753 valueReq.openTime = values.openTime;
4754 valueReq.closeTime = values.closeTime;
4755 }
4756 return valueReq;
4757 }
4758 function deal(paramD) {
4759 if (paramD && paramD.result == 'success') {
4760 return paramD;
4761 } else if (paramD && paramD.result == 'failure') {
4762 return paramD;
4763 } else {
4764 return errUnknownObj;
4765 }
4766 }
4767 }
4768 function trafficCalibration() {
4769 return stuffMake(arguments, {}, prepare, deal, null, true);
4770 function prepare(values, isPost) {
4771 var valueReq = {
4772 goformId: "FLOW_CALIBRATION_MANUAL",
4773 calibration_way: values.way,
4774 time: values.way == 'time' ? values.value : 0,
4775 data: values.way == 'data' ? values.value : 0
4776 };
4777 return valueReq;
4778 }
4779 function deal(paramD) {
4780 if (paramD && paramD.result == 'success') {
4781 return paramD;
4782 } else {
4783 return errUnknownObj;
4784 }
4785 }
4786 }
4787 function getParams() {
4788 return stuffMake(arguments, {}, prepare, deal, null, false);
4789 function prepare(values, isPost) {
4790 var valueReq = {};
4791 if (_.isArray(values.nv)) {
4792 valueReq.cmd = values.nv.join(',');
4793 valueReq.multi_data = 1;
4794 } else {
4795 valueReq.cmd = values.nv;
4796 }
4797 return valueReq;
4798 }
4799 function deal(paramD) {
4800 if (paramD) {
4801 return paramD;
4802 } else {
4803 return errUnknownObj;
4804 }
4805 }
4806 }
4807 function getRedirectData() {
4808 return stuffMake(arguments, {}, prepare, deal, null, false);
4809 function prepare(values, isPost) {
4810 var valueReq = {};
4811 valueReq.cmd = "vwim_mc_state,traffic_overrun,detect_new_version";
4812 valueReq.multi_data = 1;
4813 return valueReq;
4814 }
4815 function deal(paramD) {
4816 if (paramD) {
4817 var result = {};
4818 result.vwim_mc_state = paramD.vwim_mc_state;
4819 result.traffic_overrun = paramD.traffic_overrun;
4820 result.detect_new_version = paramD.detect_new_version;
4821 result.blc_wan_mode = informationAll.blc_wan_mode;
4822 return result;
4823 } else {
4824 return errUnknownObj;
4825 }
4826 }
4827 }
4828 function clearRedirectFlag() {
4829 return stuffMake(arguments, {}, prepare, deal, null, true);
4830 function prepare(values, isPost) {
4831 var valueReq = {};
4832 valueReq.goformId = "CLEAR_REDIRECT_FLAG";
4833 valueReq.flag_id = values.redirectFlags;
4834 return valueReq;
4835 }
4836 function deal(paramD) {
4837 if (paramD) {
4838 return paramD;
4839 } else {
4840 return errUnknownObj;
4841 }
4842 }
4843 }
4844 function getV4Switch() {
4845 return stuffMake(arguments, {}, prepare, deal, null, false);
4846 function prepare(values, isPost) {
4847 var valueReq = {};
4848 valueReq.cmd = "lock_zone_enable,pin_interlock_and_V4_lock";
4849 valueReq.multi_data = 1;
4850 return valueReq;
4851 }
4852 function deal(paramD) {
4853 if (paramD) {
4854 return paramD;
4855 } else {
4856 return errUnknownObj;
4857 }
4858 }
4859 }
4860 function setV4Switch() {
4861 return stuffMake(arguments, {}, prepare, deal, null, true);
4862 function prepare(values, isPost) {
4863 var valueReq = {};
4864 valueReq.goformId = "PIN_LOCK_V4_ENCODE";
4865 valueReq.pin_interlock_and_V4_lock = values.pin_interlock_and_V4_lock;
4866 valueReq.TspLock_key_data = values.TspLock_key_data;
4867 return valueReq;
4868 }
4869 function deal(paramD) {
4870 if (paramD && paramD.result == "success") {
4871 return paramD;
4872 } else {
4873 return errUnknownObj;
4874 }
4875 }
4876 }
4877 function getCellId() {
4878 return stuffMake(arguments, {}, prepare, deal, null, false);
4879 function prepare(values, isPost) {
4880 var valueReq = {};
4881 valueReq.cmd = "cell_id_list,global_cell_id,network_type,sub_network_type,cell_not_correct";
4882 valueReq.multi_data = 1;
4883 return valueReq;
4884 }
4885 function deal(paramD) {
4886 if (paramD) {
4887 return paramD;
4888 } else {
4889 return errUnknownObj;
4890 }
4891 }
4892 }
4893 function setCellIdSwitch() {
4894 return stuffMake(arguments, {}, prepare, deal, null, true);
4895 function prepare(values, isPost) {
4896 var valueReq = {};
4897 valueReq.goformId = "LOCK_ZONE";
4898 valueReq.lock_zone_enable = values.lock_zone_enable;
4899 return valueReq;
4900 }
4901 function deal(paramD) {
4902 if (paramD && paramD.result == "success") {
4903 return paramD;
4904 } else {
4905 return errUnknownObj;
4906 }
4907 }
4908 }
4909 function getUpdateType() {
4910 return stuffMake(arguments, {}, prepare, deal, null, false);
4911 function prepare(values, isPost) {
4912 var valueReq = {
4913 cmd: "update_type"
4914 };
4915 return valueReq;
4916 }
4917 function deal(paramD) {
4918 return {
4919 update_type: paramD.update_type ? paramD.update_type : "mifi_fota"
4920 }
4921 }
4922 }
4923 function getSecurityInfo() {
4924 return stuffMake(arguments, {}, prepare, deal, null, false);
4925 function prepare(values, isPost) {
4926 var valueReq = {};
4927 valueReq.cmd = "AuthMode,passPhrase";
4928 valueReq.multi_data = 1;
4929 return valueReq;
4930 }
4931 function deal(paramD) {
4932 if (paramD) {
4933 var result = {};
4934 result.AuthMode = paramD.AuthMode;
4935 result.passPhrase = config.PASSWORD_ENCODE ? Base64.decode(paramD.passPhrase) : paramD.passPhrase;
4936 return result;
4937 } else {
4938 return errUnknownObj;
4939 }
4940 }
4941 }
4942 //can delete
4943 function setSecurityInfo() {
4944 return stuffMake(arguments, {}, prepare, deal, null, true);
4945 function prepare(values, isPost) {
4946 var valueReq = {};
4947 valueReq.goformId = "SET_WIFI_SECURITY_INFO";
4948 valueReq.AuthMode = values.AuthMode;
4949 if (valueReq.AuthMode == "WPAPSKWPA2PSK") {
4950 valueReq.passPhrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
4951 }
4952 return valueReq;
4953 }
4954 function deal(paramD) {
4955 if (paramD) {
4956 return paramD;
4957 } else {
4958 return errUnknownObj;
4959 }
4960 }
4961 }
4962 function setWifiBasic() {
4963 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
4964 function prepare(values) {
4965 var valueReq = {
4966 goformId: "SET_WIFI_SSID1_SETTINGS",
4967 ssid: values.SSID,
4968 broadcastSsidEnabled: values.broadcast,
4969 MAX_Access_num: values.station,
4970 security_mode: values.AuthMode,
4971 cipher: values.cipher,
4972 NoForwarding: values.NoForwarding,
4973 show_qrcode_flag: values.show_qrcode_flag
4974 };
4975 if (config.WIFI_WEP_SUPPORT) {
4976 valueReq.wep_default_key = values.wep_default_key;
4977 valueReq.wep_key_1 = values.wep_key_1;
4978 valueReq.wep_key_2 = values.wep_key_2;
4979 valueReq.wep_key_3 = values.wep_key_3;
4980 valueReq.wep_key_4 = values.wep_key_4;
4981 if (values.wep_default_key == '1') {
4982 valueReq.WEP2Select = values.WEP2Select;
4983 } else if (values.wep_default_key == '2') {
4984 valueReq.WEP3Select = values.WEP3Select;
4985 } else if (values.wep_default_key == '3') {
4986 valueReq.WEP4Select = values.WEP4Select;
4987 } else {
4988 valueReq.WEP1Select = values.WEP1Select;
4989 }
4990 }
4991 if (values.AuthMode == "WPAPSK" || values.AuthMode == "WPA2PSK" || values.AuthMode == "WPAPSKWPA2PSK" || values.AuthMode == "WPA3Personal" || values.AuthMode == "WPA2WPA3") {
4992 valueReq.security_shared_mode = values.cipher;
4993 valueReq.passphrase = config.PASSWORD_ENCODE ? Base64.encode(values.passPhrase) : values.passPhrase;
4994 } else if (values.AuthMode == "SHARED") {
4995 valueReq.security_shared_mode = "WEP";
4996 valueReq.security_mode = "SHARED";
4997 } else {
4998 if (values.encryptType == "WEP") {
4999 valueReq.security_shared_mode = "WEP";
5000 valueReq.security_mode = "OPEN";
5001 } else {
5002 valueReq.security_shared_mode = "NONE";
5003 }
5004 }
5005 return valueReq;
5006 }
5007 function deal(paramD) {
5008 if (paramD) {
5009 return paramD;
5010 } else {
5011 return errUnknownObj;
5012 }
5013 }
5014 }
5015 function setWifiBasic4SSID2() {
5016 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5017 function prepare(values) {
5018 var valueReq = {
5019 goformId: "SET_WIFI_SSID2_SETTINGS",
5020 m_SSID: values.m_SSID,
5021 m_HideSSID: values.m_broadcast,
5022 m_MAX_Access_num: values.m_station,
5023 m_AuthMode: values.m_AuthMode,
5024 cipher: values.m_cipher,
5025 m_NoForwarding: values.m_NoForwarding,
5026 m_show_qrcode_flag: values.m_show_qrcode_flag
5027 };
5028 if (config.WIFI_WEP_SUPPORT) {
5029 valueReq.m_DefaultKeyID = values.m_wep_default_key;
5030 valueReq.m_Key1Str1 = values.m_wep_key_1;
5031 valueReq.m_Key2Str1 = values.m_wep_key_2;
5032 valueReq.m_Key3Str1 = values.m_wep_key_3;
5033 valueReq.m_Key4Str1 = values.m_wep_key_4;
5034 if (values.m_wep_default_key == '1') {
5035 valueReq.m_Key2Type = values.m_WEP2Select;
5036 } else if (values.m_wep_default_key == '2') {
5037 valueReq.m_Key3Type = values.m_WEP3Select;
5038 } else if (values.m_wep_default_key == '3') {
5039 valueReq.m_Key4Type = values.m_WEP4Select;
5040 } else {
5041 valueReq.m_Key1Type = values.m_WEP1Select;
5042 }
5043 }
5044 if (values.m_AuthMode == "WPAPSK" || values.m_AuthMode == "WPA2PSK" || values.m_AuthMode == "WPAPSKWPA2PSK" || values.m_AuthMode == "WPA3Personal" || values.m_AuthMode == "WPA2WPA3") {
5045 valueReq.m_EncrypType = values.m_cipher;
5046 valueReq.m_WPAPSK1 = config.PASSWORD_ENCODE ? Base64.encode(values.m_passPhrase) : values.m_passPhrase;
5047 } else if (values.m_AuthMode == "SHARED") {
5048 valueReq.m_EncrypType = "WEP";
5049 valueReq.m_security_mode = "SHARED";
5050 } else {
5051 if (values.m_encryptType == "WEP") {
5052 valueReq.m_EncrypType = "WEP";
5053 valueReq.m_security_mode = "OPEN";
5054 } else {
5055 valueReq.m_EncrypType = "NONE";
5056 }
5057 }
5058 return valueReq;
5059 }
5060 function deal(paramD) {
5061 if (paramD) {
5062 return paramD;
5063 } else {
5064 return errUnknownObj;
5065 }
5066 }
5067 }
5068 function getWifiBasic() {
5069 return stuffMake(arguments, {}, prepare, deal, null, false);
5070 function prepare(values, isPost) {
5071 var valueReq = {};
5072 var wpapsk = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "imei,rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
5073 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";
5074 valueReq.multi_data = 1;
5075 return valueReq;
5076 }
5077 function deal(paramD) {
5078 if (paramD) {
5079 var result = {
5080 wifi_enable: paramD.wifi_cur_state == "1" ? "1" : "0",
5081 multi_ssid_enable: paramD.m_ssid_enable,
5082 MAX_Station_num: $.isNumeric(paramD.MAX_Station_num) ? paramD.MAX_Station_num : config.MAX_STATION_NUMBER,
5083 AuthMode: paramD.AuthMode,
5084 SSID: paramD.SSID1,
5085 broadcast: paramD.HideSSID,
5086 apIsolation: paramD.NoForwarding,
5087 passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.WPAPSK1_enaes),
5088 MAX_Access_num: paramD.MAX_Access_num,
5089 cipher: paramD.EncrypType == "TKIP" ? "0" : paramD.EncrypType == "AES" ? 1 : 2,
5090 encryptType: paramD.EncrypType,
5091 show_qrcode_flag: paramD.show_qrcode_flag == "1" ? true : false,
5092 keyID: paramD.DefaultKeyID,
5093 Key1Str1: paramD.Key1Str1,
5094 Key2Str1: paramD.Key2Str1,
5095 Key3Str1: paramD.Key3Str1,
5096 Key4Str1: paramD.Key4Str1,
5097 m_SSID: paramD.m_SSID,
5098 m_broadcast: paramD.m_HideSSID,
5099 m_apIsolation: paramD.m_NoForwarding,
5100 m_MAX_Access_num: paramD.m_MAX_Access_num,
5101 m_AuthMode: paramD.m_AuthMode,
5102 m_passPhrase: config.PASSWORD_ENCODE ? Base64.decode(paramD.m_WPAPSK1_encode) : wifiDecode(paramD.rnum_js,paramD.imei,paramD.m_WPAPSK1_enaes),
5103 m_cipher: paramD.m_EncrypType == "TKIP" ? "0" : paramD.m_EncrypType == "AES" ? 1 : 2,
5104 m_show_qrcode_flag: paramD.m_show_qrcode_flag == "1" ? true : false,
5105 m_encryptType: paramD.m_EncrypType,
5106 m_keyID: paramD.m_DefaultKeyID,
5107 m_Key1Str1: paramD.m_Key1Str1,
5108 m_Key2Str1: paramD.m_Key2Str1,
5109 m_Key3Str1: paramD.m_Key3Str1,
5110 m_Key4Str1: paramD.m_Key4Str1,
5111 rotationFlag: paramD.rotationFlag,
5112 ap_station_enable: paramD.wifi_sta_connection
5113 };
5114 return result;
5115 } else {
5116 return errUnknownObj;
5117 }
5118 }
5119 }
5120 function setWifiBasicMultiSSIDSwitch() {
5121 stuffMakeAndCheckServerIsOnline(arguments, prepare, deal);
5122 function prepare(values) {
5123 var paraTemp = values;
5124 if (values.wifiEnabled == '0') {
5125 paraTemp = {
5126 wifiEnabled: values.wifiEnabled
5127 }
5128 }
5129 var valueReq = $.extend({
5130 goformId: "SET_WIFI_INFO",
5131 }, paraTemp);
5132 return valueReq;
5133 }
5134 function deal(paramD) {
5135 if (paramD) {
5136 return paramD;
5137 } else {
5138 return errUnknownObj;
5139 }
5140 }
5141 }
5142 function stuffMake(array, result, prepare, dealMethod, errorObject, isPost) {
5143 var values = array[0],
5144 callback = array[1],
5145 errorCallback = array[2];
5146 var objectToReturn;
5147 if (result && typeof result.errorType === 'string') {
5148 objectToReturn = $.extend(errUnknownObj, result);
5149 if (!callback) {
5150 return objectToReturn;
5151 }
5152 doCallback(objectToReturn, callback, errorCallback);
5153 } else {
5154 objectToReturn = $.extend({}, result);
5155 var valueReq;
5156 if (prepare) {
5157 valueReq = prepare(values, isPost);
5158 } else {
5159 valueReq = values;
5160 }
5161 if (!callback) {
5162 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5163 var r = reqSync(valueReq, isPost);
5164 if (dealMethod) {
5165 objectToReturn = $.extend({}, dealMethod(r));
5166 } else {
5167 objectToReturn = r;
5168 }
5169 }
5170 return objectToReturn;
5171 } else {
5172 if (valueReq && (valueReq.cmd || valueReq.goformId)) {
5173 reqAsync(valueReq, function (paramD) {
5174 if (dealMethod) {
5175 objectToReturn = $.extend({}, dealMethod(paramD));
5176 } else {
5177 objectToReturn = $.extend({}, paramD);
5178 }
5179 if (!valueReq.notCallback) {
5180 doCallback(objectToReturn, callback, errorCallback);
5181 }
5182 }, function () {
5183 if (errorObject) {
5184 objectToReturn = $.extend(errUnknownObj, errorObject);
5185 } else {
5186 objectToReturn = $.extend(errUnknownObj, {
5187 errorType: 'Unknown'
5188 });
5189 }
5190 doCallback(objectToReturn, callback, errorCallback);
5191 }, isPost);
5192 } else {
5193 doCallback(objectToReturn, callback, errorCallback);
5194 }
5195 }
5196 }
5197 function doCallback(resultToReturn, callback, errorCallback) {
5198 errorCallback = errorCallback ? errorCallback : callback;
5199 if (isErrorObject(resultToReturn)) {
5200 switch (resultToReturn.errorType) {
5201 case 'cellularNetworkError':
5202 case 'deviceError':
5203 case 'wifiConnectionError':
5204 window.receivedNonSpecificError(resultToReturn);
5205 break;
5206 default:
5207 errorCallback(resultToReturn);
5208 }
5209 } else {
5210 callback(resultToReturn);
5211 }
5212 }
5213 }
5214 function reqSync(values, isPost) {
5215 return reqAJAX(values, null, null, false, isPost);
5216 }
5217 function reqAsync(values, successCallback, errorCallback, isPost) {
5218 reqAJAX(values, successCallback, errorCallback, true, isPost);
5219 }
5220 function getString(values){
5221 var regexp = /^[A-z0-9]+$/;
5222 var matches = values.match(regexp);
5223 if (matches == null){
5224 return "error";
5225 } else {
5226 return values;
5227 }
5228 }
5229 function reqAJAX(values, successCallback, errorCallback, async, isPost) {
5230 var result = null;
5231 $.ajax({
5232 type: !!isPost ? "POST" : "GET",
5233 url: isPost ? "/reqproc/proc_post" : values.cmd ? "/reqproc/proc_get" : "/reqproc/proc_post",
5234 data: values,
5235 dataType: "json",
5236 async: !!async,
5237 cache: false,
5238 error: function (paramD) {
5239 if (async) {
5240 errorCallback(paramD);
5241 } else if (paramD.status == 200) {
5242 result = jQuery.parseJSON('(' + getString(paramD.responseText) + ')');
5243 }
5244 },
5245 success: function (paramD) {
5246 if (async) {
5247 successCallback(paramD);
5248 } else {
5249 result = paramD;
5250 }
5251 }
5252 });
5253 if (!async) {
5254 return result;
5255 }
5256 }
5257 var informationAll = {
5258 networkType: "",
5259 signalImg: "0",
5260 spn_b1_flag: "1",
5261 spn_name_data: "",
5262 spn_b2_flag: "1",
5263 networkOperator: "China Mobile",
5264 connectStatus: "ppp_disconnected",
5265 rj45ConnectStatus: "rj45_dead",
5266 attachedDevices: [],
5267 ssid1AttachedNum: 0,
5268 ssid2AttachedNum: 0,
5269 data_counter: {
5270 uploadRate: 0,
5271 downloadRate: 0,
5272 totalSent: 0,
5273 totalReceived: 0,
5274 totalConnectedTime: 0,
5275 currentSent: 0,
5276 currentReceived: 0,
5277 currentConnectedTime: 0,
5278 monthlySent: 0,
5279 monthlyReceived: 0,
5280 monthlyConnectedTime: 0,
5281 month: ''
5282 },
5283 newSmsReceived: false,
5284 smsReportReceived: false,
5285 smsUnreadCount: "0",
5286 isLoggedIn: undefined,
5287 limitVolumeEnable: false,
5288 limitVolumeType: '1',
5289 limitVolumePercent: "100",
5290 limitVolumeSize: "0",
5291 allowRoamingUpdate: "0",
5292 blc_wan_mode: "",
5293 ap_station_enable: undefined,
5294 ap_station_mode: undefined,
5295 dialMode: '',
5296 ethWanMode: 'AUTO',
5297 fota_user_selector: '',
5298 defaultWanName: ""
5299 };
5300 var errUnknownObj = {
5301 errorType: 'UnknownError',
5302 errorId: '123',
5303 errorText: 'UnknownError'
5304 };
5305 var updateTimerFlag = true;
5306 return {
5307 clearRedirectFlag: clearRedirectFlag,
5308 connect: connect,
5309 disconnect: disconnect,
5310 getSIMPhoneBookCapacity: getSIMPhoneBookCapacity,
5311 getDevicePhoneBookCapacity: getDevicePhoneBookCapacity,
5312 getDevicePhoneBooks: getDevicePhoneBooks,
5313 getSIMPhoneBooks: getSIMPhoneBooks,
5314 getPhoneBooks: getPhoneBooks,
5315 getPhoneBookReady: getPhoneBookReady,
5316 getPhoneBooksByGroup: getPhoneBooksByGroup,
5317 deletePhoneBooks: deletePhoneBooks,
5318 deleteAllPhoneBooks: deleteAllPhoneBooks,
5319 deleteAllPhoneBooksByGroup: deleteAllPhoneBooksByGroup,
5320 savePhoneBook: savePhoneBook,
5321 deleteAllMessages: deleteAllMessages,
5322 deleteMessage: deleteMessage,
5323 setSmsRead: setSmsRead,
5324 sendSMS: sendSMS,
5325 saveSMS: saveSMS,
5326 getSMSReady: getSMSReady,
5327 getSMSMessages: getSMSMessages,
5328 getSMSDeliveryReport: getSMSDeliveryReport,
5329 getSmsCapability: getSmsCapability,
5330 resetNewSmsReceivedVar: resetNewSmsReceivedVar,
5331 resetSmsReportReceivedVar: resetSmsReportReceivedVar,
5332 getSmsSetting: getSmsSetting,
5333 setSmsSetting: setSmsSetting,
5334 getAttachedCableDevices: getAttachedCableDevices,
5335 getCurrentlyAttachedDevicesInfo: getCurrentlyAttachedDevicesInfo,
5336 getConnectionInfo: getConnectionInfo,
5337 getRedirectData: getRedirectData,
5338 getLanguage: getLanguage,
5339 setLanguage: setLanguage,
5340 getNetSelectInfo: getNetSelectInfo,
5341 getSecurityInfo: getSecurityInfo,
5342 setSecurityInfo: setSecurityInfo,
5343 getStatusInfo: getStatusInfo,
5344 getConnectionMode: getConnectionMode,
5345 setConnectionMode: setConnectionMode,
5346 getWifiBasic: getWifiBasic,
5347 setWifiBasic: setWifiBasic,
5348 setWifiBasic4SSID2: setWifiBasic4SSID2,
5349 setWifiBasicMultiSSIDSwitch: setWifiBasicMultiSSIDSwitch,
5350 getWpsInfo: getWpsInfo,
5351 openWps: openWps,
5352 getSleepMode: getSleepMode,
5353 setSleepMode: setSleepMode,
5354 getWifiAdvance: getWifiAdvance,
5355 setWifiAdvance: setWifiAdvance,
5356 getWifiRange: getWifiRange,
5357 setWifiRange: setWifiRange,
5358
5359 getLoginStatus: getLoginStatus,
5360 getLoginData: getLoginData,
5361 login: login,
5362 logout: logout,
5363 changeManageInfo: changeManageInfo,
5364 getPinData: getPinData,
5365 enablePin: enablePin,
5366 disablePin: disablePin,
5367 changePin: changePin,
5368 enterPIN: enterPIN,
5369 enterPUK: enterPUK,
5370 getLanInfo: getLanInfo,
5371 setLanInfo: setLanInfo,
5372 getApnSettings: getApnSettings,
5373 deleteApn: deleteApn,
5374 setDefaultApn: setDefaultApn,
5375 addOrEditApn: addOrEditApn,
5376 getQuickSettingInfo: getQuickSettingInfo,
5377 setQuickSetting4IPv6: setQuickSetting4IPv6,
5378 scanForNetwork: scanForNetwork,
5379 setBearerPreference: setBearerPreference,
5380 editHostName: editHostName,
5381 getSiteWhiteList: getSiteWhiteList,
5382 removeSiteWhite: removeSiteWhite,
5383 saveSiteWhite: saveSiteWhite,
5384 setNetwork: setNetwork,
5385 getUpnpSetting: getUpnpSetting,
5386 setUpnpSetting: setUpnpSetting,
5387 getDmzSetting: getDmzSetting,
5388 setDmzSetting: setDmzSetting,
5389 getDeviceInfo: getDeviceInfo,
5390 getDeviceInfoLow: getDeviceInfoLow,
5391 getPortForward: getPortForward,
5392 setPortForward: setPortForward,
5393 getPortFilter: getPortFilter,
5394 setPortFilterBasic: setPortFilterBasic,
5395 setPortFilter: setPortFilter,
5396 deleteFilterRules: deleteFilterRules,
5397 getPortMap: getPortMap,
5398 setPortMap: setPortMap,
5399 enablePortMap: enablePortMap,
5400 deleteMapRules: deleteMapRules,
5401 getTrafficAlertInfo: getTrafficAlertInfo,
5402 setTrafficAlertInfo: setTrafficAlertInfo,
5403 getCurrentUpgradeState: getCurrentUpgradeState,
5404 setUpgradeSelectOp: setUpgradeSelectOp,
5405 addTimerThings: addTimerSomething,
5406 removeTimerThings: removeTimerSomething,
5407 getPackSizeInfo: getPackSizeInfo,
5408 getMandatory: getMandatory,
5409 getOTAUpdateSetting: getOTAUpdateSetting,
5410 setOTAUpdateSetting: setOTAUpdateSetting,
5411 getSignalStrength: getSignalStrength,
5412 getOTAlastCheckTime: getOTAlastCheckTime,
5413 clearUpdateResult: clearUpdateResult,
5414 refreshAPStationStatus: refreshAPStationStatus,
5415 getSntpParams: getSntpParams,
5416 setSntpSetting: setSntpSetting,
5417 setSNTPDate: setSNTPDate,
5418 restoreFactorySettings: restoreFactorySettings,
5419 checkRestoreStatus: checkRestoreStatus,
5420 getSysSecurity: getSysSecurity,
5421 setSysSecurity: setSysSecurity,
5422 deleteForwardRules: deleteForwardRules,
5423 enableVirtualServer: enableVirtualServer,
5424 getSDConfiguration: getSDConfiguration,
5425 setSdCardMode: setSdCardMode,
5426 checkFileExists: checkFileExists,
5427 getFileList: getFileList,
5428 fileRename: fileRename,
5429 getSdMemorySizes: getSdMemorySizes,
5430 deleteFilesAndFolders: deleteFilesAndFolders,
5431 createFolder: createFolder,
5432 setSdCardSharing: setSdCardSharing,
5433 setUpdateInfoWarning: setUpdateInfoWarning,
5434 getUpdateInfoWarning: getUpdateInfoWarning,
5435 getAPStationBasic: getAPStationBasic,
5436 setAPStationBasic: setAPStationBasic,
5437 getWdsInfo: getWdsInfo,
5438 setWDS: setWDS,
5439 addUrlFilterRule: addUrlFilterRule,
5440 getUrlFilterList: getUrlFilterList,
5441 deleteSelectedRules: deleteSelectedRules,
5442 getMacFilterInfo: getMacFilterInfo,
5443 setMacFilter: setMacFilter,
5444 getFastbootSetting: getFastbootSetting,
5445 setFastbootSetting: setFastbootSetting,
5446 turnOffDevice: turnOffDevice,
5447 restart: restart,
5448 getScheduleSetting: getScheduleSetting,
5449 setScheduleSetting: setScheduleSetting,
5450 updateTimerFlag: updateTimerFlag,
5451 childGroupList: childGroupList,
5452 addChildGroup: addChildGroup,
5453 removeChildGroup: removeChildGroup,
5454 checkCurrentUserInChildGroup: checkCurrentUserInChildGroup,
5455 getTimeLimited: getTimeLimited,
5456 saveTimeLimited: saveTimeLimited,
5457 getHostNameList: getHostNameList,
5458 getHotspotList: getHotspotList,
5459 searchHotspot: searchHotspot,
5460 getSearchHotspotList: getSearchHotspotList,
5461 saveHotspot: saveHotspot,
5462 deleteHotspot: deleteHotspot,
5463 connectHotspot: connectHotspot,
5464 disconnectHotspot: disconnectHotspot,
5465 getOpMode: getOpMode,
5466 getRj45PlugState: getRj45PlugState,
5467 SetOperationMode: SetOperationMode,
5468 getPppoeParams: getPppoeParams,
5469 setPppoeDialMode: setPppoeDialMode,
5470 getTsw: getTsw,
5471 saveTsw: saveTsw,
5472 trafficCalibration: trafficCalibration,
5473 getParams: getParams,
5474 getNewVersionState: getNewVersionState,
5475 getUpgradeResult: getUpgradeResult,
5476 getV4Switch: getV4Switch,
5477 setV4Switch: setV4Switch,
5478 getCellId: getCellId,
5479 setCellIdSwitch: setCellIdSwitch,
5480 getDdnsParams: getDdnsParams,
5481 setDDNSForward: setDDNSForward,
5482 getUpdateType: getUpdateType,
5483 getCurretnMAC: getCurretnMAC,
5484 getUSSDResponse: getUSSDResponse,
5485 USSDReplyCancel: USSDReplyCancel,
5486 getNetworkUnlockTimes: getNetworkUnlockTimes,
5487 unlockNetwork: unlockNetwork,
5488 getSyslogInfo: getSyslogInfo,
5489 setSysLog: setSysLog,
5490 };
5491});
5492
5493 // RouterÉèÖÃ
5494
5495define("adm_lan","jquery knockout set service".split(" "),
5496
5497 function ($, ko, config, service) {
5498
5499 var originfrmLan = "";
5500
5501 // »ñȡ·ÓÉÉèÖÃÏà¹ØÐÅÏ¢
5502 function getLanInfo() {
5503 return service.getLanInfo();
5504 }
5505
5506 function hex(val) {
5507 var h = (val - 0).toString(16);
5508 if (h.length == 1)
5509 h = '0' + h;
5510 return h.toUpperCase();
5511 }
5512
5513 function LanViewModel() {
5514 var target = this;
5515
5516 var info = getLanInfo();
5517
5518 target.dhcpStart = ko.observable(info.dhcpStart);
5519 target.dhcpEnd = ko.observable(info.dhcpEnd);
5520 target.dhcpLease = ko.observable(info.dhcpLease);
5521
5522 target.ipAddress = ko.observable(info.ipAddress);
5523 target.subnetMask = ko.observable(info.subnetMask);
5524 target.dhcpServer = ko.observable(info.dhcpServer);
5525
5526 target.macAddress = ko.observable(info.macAddress);
5527 target.showMacAddress = ko.observable(config.SHOW_MAC_ADDRESS);
5528
5529 target.hasWifi = ko.observable(config.HAS_WIFI);
5530 target.hasUssd = config.HAS_USSD;
5531 target.hasDdns = config.DDNS_SUPPORT;
5532
5533 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
5534
5535 target.clear = function () {
5536 clearTimer();
5537 init();
5538 clearValidateMsg();
5539 };
5540
5541 target.refreshStatus = function () {
5542 var connInfo = service.getConnectionInfo();
5543 if (connInfo.connectStatus == 'ppp_disconnected') {
5544 $('input', '#frmLan').each(function () {
5545 $(this).attr("disabled", false);
5546 });
5547 } else {
5548 $('input', '#frmLan').each(function () {
5549 $(this).attr("disabled", true);
5550 });
5551
5552 clearValidateMsg();
5553 }
5554 };
5555
5556 // ÉèÖÃÏìÓ¦º¯Êý£¬½øÐÐÉèÖñ£´æ
5557 target.saveAct = function () {
5558 showLoading();
5559 var params = {
5560 ipAddress: target.ipAddress(),
5561 subnetMask: target.subnetMask(),
5562 dhcpServer: target.dhcpServer(),
5563 dhcpStart: target.dhcpStart(),
5564 dhcpEnd: target.dhcpEnd(),
5565 dhcpLease: target.dhcpLease()
5566 };
5567
5568 service.setLanInfo(params, function (result) {
5569 if (result.result == "success") {
5570 successOverlay();
5571 target.clear();
5572 } else {
5573 errorOverlay();
5574 }
5575 });
5576 };
5577
5578 // ÉèÖÃÏìÓ¦º¯Êý£¬½øÐÐÉèÖñ£´æ
5579 target.save = function () {
5580 var frmLanObj = $('#frmLan').serialize();
5581 if (frmLanObj == originfrmLan) {
5582 showAlert("setting_no_change");
5583 return false;
5584 }
5585 if (config.RJ45_SUPPORT) {
5586 var pppObj = service.getPppoeParams();
5587 if (sf_isValidate_StaticIP(pppObj.static_wan_ipaddr, target.ipAddress(), target.subnetMask())) {
5588 showAlert("lan_tip_staticip_notsame");
5589 return false;
5590 }
5591 }
5592 showConfirm("lan_confirm_reopen", function () {
5593 target.saveAct();
5594 });
5595 };
5596
5597 target.refreshStatus();
5598 // dhcpServerÇл»ÏìÓ¦º¯Êý
5599 target.dhcpServerHandler = function () {
5600 $("#txtIpAddress").parent().find(".error").hide();
5601 $("#txtIpAddress").show();
5602 return true;
5603 };
5604 addTimeout(function () {
5605 originfrmLan = $('#frmLan').serialize();
5606 }, 500);
5607 }
5608
5609
5610 function sf_opAnd4Byte(i_v1, i_v2) {
5611 var index;
5612 var var1 = [];
5613 var var2 = [];
5614 var result='0x';
5615
5616 for (index=2,index_tmp=0; index<10; index+=2,index_tmp++) {
5617 var1[index_tmp]='0x'+i_v1.substring(index,index+2);
5618 var2[index_tmp]='0x'+i_v2.substring(index,index+2);
5619 }
5620
5621 for (index=0; index<4; index++) {
5622 result = result + hex(var1[index]&var2[index]);
5623 }
5624
5625 return result - 0;
5626 }
5627
5628 // ½çÃæÏà¹Ø±íµ¥Ð£Ñ鹿Ôò
5629 $.validator.addMethod("dhcp_check", function (i_value, i_element, i_parameter) {
5630 var dhcpIp = i_parameter == "start" ? $('#txtDhcpIpPoolStart').val() : $('#txtDhcpIpPoolEnd').val();
5631 var result = sf_isValidate_Gateway($('#txtIpAddress').val(), $('#txtSubnetMask').val(), dhcpIp);
5632 return this.optional(i_element) || result;
5633 });
5634
5635 $.validator.addMethod("dhcpCompare", function (i_value, i_element, i_parameter) {
5636 var result;
5637 if(i_parameter == "#txtDhcpIpPoolStart") {
5638 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), $(i_parameter).val(), i_value);
5639 }
5640 else {
5641 result = sf_isValidate_StartEndIp($('#txtIpAddress').val(), $('#txtSubnetMask').val(), i_value, $(i_parameter).val());
5642 }
5643 return result != 1;
5644 });
5645
5646 $.validator.addMethod("ipRange", function (i_value, i_element, i_parameter) {
5647 var DHCP_flag = false;
5648 if($('#dhcpEnable').is(':checked')){
5649 DHCP_flag = true;
5650 }
5651 var result = sf_isValidate_StartEndIp(i_value, $('#txtSubnetMask').val(), $('#txtDhcpIpPoolStart').val(), $('#txtDhcpIpPoolEnd').val(), DHCP_flag);
5652 return result != 2;
5653 });
5654
5655 $.validator.addMethod("subnetmask_check", function (i_value, i_element, i_parameter) {
5656 var result = sf_isValidate_Netmask(i_value);
5657 return this.optional(i_element) || result;
5658 });
5659
5660
5661 // ¾²Ì¬ÓÐЧIPУÑ麯Êý
5662 function sf_isValidate_StaticIP(i_ip, i_lanIp, i_lanMask){
5663 if(!i_ip || !i_lanIp || !i_lanMask){//¸÷²ÎÊý²»ÄÜΪ¿Õ
5664 return false;
5665 }
5666
5667 //ÓëÄÚÍøIPÏàµÈ
5668 if (i_ip == i_lanIp) {
5669 return true;
5670 }
5671
5672 var res1 = [];
5673 var res2 = [];
5674
5675 var mask_array = [];
5676
5677 ip_array = i_ip.split(".");
5678 lanIp_array = i_lanIp.split(".");
5679 mask_array = i_lanMask.split(".");
5680 for(var index = 0; index < ip_array.length; index += 1){
5681 res1.push(parseInt(mask_array[index]) & parseInt(ip_array[index]));
5682 res2.push(parseInt(mask_array[index]) & parseInt(lanIp_array[index]));
5683 }
5684 if(res2.join(".") != res1.join(".")){//ÔÚ²»Í¬Íø¶Î
5685 return false;
5686 }else{//ÔÚÍ¬Ò»Íø¶Î
5687 return true;
5688 }
5689 }
5690
5691
5692 function sf_isValidate_NetmaskIP(i_ip) {
5693 return (i_ip == 255
5694 || i_ip == 254
5695 || i_ip == 252
5696 || i_ip == 248
5697 || i_ip == 240
5698 || i_ip == 224
5699 || i_ip == 192
5700 || i_ip == 128
5701 || i_ip == 0);
5702 }
5703
5704 function sf_convertIpToString(i_ip)
5705 {
5706 var s_i1 = i_ip.indexOf('.');
5707 var s_i2 = i_ip.indexOf('.', (s_i1 + 1));
5708 var s_i3 = i_ip.indexOf('.', (s_i2 + 1));
5709 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));
5710 o_ip = '0x' + o_ip;
5711
5712 return o_ip;
5713 }
5714
5715 function sf_getIpString_3(i_ip)
5716 {
5717 var i1 = i_ip.indexOf('.');
5718 var i2 = i_ip.indexOf('.', (i1 + 1));
5719 var i3 = i_ip.indexOf('.', (i2 + 1));
5720 var i4 = i_ip.substring((i3+1),i_ip.length)-0;
5721
5722 return i4;
5723 }
5724
5725
5726 // Íø¹ØÐ£Ñ麯Êý
5727 function sf_isValidate_Gateway(i_wanIp, i_netmaskIp, i_gatewayIp) {
5728 var s_wanIp = sf_convertIpToString(i_wanIp);
5729 var lan4 = sf_getIpString_3(i_wanIp);
5730
5731 var s_netmaskIp = sf_convertIpToString(i_netmaskIp);
5732 var mask4 = sf_getIpString_3(i_netmaskIp);
5733
5734 var s_gatewayIp = sf_convertIpToString(i_gatewayIp);
5735 var pool4 = sf_getIpString_3(i_gatewayIp);
5736
5737 var net_no;
5738 var lo_broadcast;
5739
5740 if (sf_opAnd4Byte(s_wanIp, s_netmaskIp) != sf_opAnd4Byte(s_gatewayIp, s_netmaskIp)) {
5741 return false;
5742 }
5743
5744 net_no = (lan4 & mask4);
5745 lo_broadcast = (lan4 & mask4) + (255-mask4);
5746
5747 return !(pool4==net_no || pool4==lo_broadcast);
5748
5749 }
5750
5751 // ×ÓÍøÑÚÂëУÑ麯Êý
5752 function sf_isValidate_Netmask(i_netmask) {
5753 var addr = i_netmask.split(".");
5754
5755 if ("0.0.0.0" == i_netmask || "255.255.255.255" == i_netmask) {
5756 return false;
5757 }
5758
5759 if (addr.length != 4) {
5760 return false;
5761 }
5762
5763 addr[0] = parseInt(addr[0]);
5764 addr[1] = parseInt(addr[1]);
5765 addr[2] = parseInt(addr[2]);
5766 addr[3] = parseInt(addr[3]);
5767
5768 if (addr[3] != 0) {
5769 if (addr[0] != 255 || addr[1] != 255 || addr[2] != 255) {
5770 return false;
5771 } else {
5772 if (!sf_isValidate_NetmaskIP(addr[3])) {
5773 return false;
5774 }
5775 }
5776 }
5777
5778 if (addr[2] != 0) {
5779 if (addr[0] != 255 || addr[1] != 255) {
5780 return false;
5781 } else {
5782 if (!sf_isValidate_NetmaskIP(addr[2])) {
5783 return false;
5784 }
5785 }
5786 }
5787
5788 if (addr[1] != 0) {
5789 if (addr[0] != 255) {
5790 return false;
5791 } else {
5792 if (!sf_isValidate_NetmaskIP(addr[1])) {
5793 return false;
5794 }
5795 }
5796 }
5797
5798 if (addr[0] != 255) {
5799 return false;
5800 }
5801
5802 return true;
5803 }
5804
5805 // DHCP IP³ØÐ£Ñ麯Êý
5806 function sf_isValidate_StartEndIp(i_lanIpaddr, i_netIp, i_startIp, i_endIp, i_DHCPFlag) {
5807 s_startIp = sf_convertIpToString(i_startIp);
5808 s_endIp = sf_convertIpToString(i_endIp);
5809 s_lanIp = sf_convertIpToString(i_lanIpaddr);
5810
5811 if(s_startIp>s_endIp) {
5812 return 1;
5813 }
5814
5815 if(s_lanIp >= s_startIp && s_lanIp <= s_endIp) {
5816 return 2;
5817 }
5818
5819 return 0;
5820 }
5821
5822
5823 function init() {
5824 var container = $('#container');
5825 ko.cleanNode(container[0]);
5826 var fwVm = new LanViewModel();
5827 ko.applyBindings(fwVm, container[0]);
5828
5829 addInterval(fwVm.refreshStatus, 1000);
5830
5831 $('#frmLan').validate({
5832 submitHandler:function () {
5833 fwVm.save();
5834 },
5835
5836 rules:{
5837 txtIpAddress: {
5838 lanip_check: true,
5839 ipRange: true
5840 },
5841 txtSubnetMask: {
5842 ipv4: true,
5843 subnetmask_check: true
5844 },
5845 txtDhcpIpPoolStart: {
5846 lanip_check: true,
5847 dhcp_check: "start",
5848 dhcpCompare: "#txtDhcpIpPoolEnd"
5849 },
5850 txtDhcpIpPoolEnd: {
5851 lanip_check: true,
5852 dhcp_check: "end",
5853 dhcpCompare: "#txtDhcpIpPoolStart"
5854 },
5855 txtDhcpLease: {
5856 range: [1, 65535],
5857 digits: true
5858 }
5859 },
5860
5861 groups: {
5862 lanip_check: "txtDhcpIpPoolStart txtDhcpIpPoolEnd"
5863 },
5864
5865 errorPlacement: function (error, element) {
5866 if (element.attr("name") == "txtDhcpLease") {
5867 error.insertAfter("#errorHolder");
5868 } else if (element.attr("name") == "txtDhcpIpPoolStart") {
5869 error.insertAfter("#txtDhcpIpPoolEnd");
5870 } else {
5871 error.insertAfter(element);
5872 }
5873 }
5874 });
5875
5876 }
5877
5878
5879 return {
5880 init:init
5881 }
5882});
5883
5884// others Ä£¿é°üº¬:Fast Boot Settings¡¢Restart and Reset¡¢SNTP¡¢Turn Off Device¡¢PIN Management
5885define("adm_others","jquery knockout set service underscore".split(" "),
5886
5887 function ($, ko, config, service, _) {
5888
5889 var timeSetModes = _.map(config.sntpTimeSetMode, function(item) {
5890 return new Option(item.name, item.value);
5891 });
5892
5893 var timeZones = _.map(config.timeZone, function(item){
5894 return new Option(item.name, item.value);
5895 });
5896
5897 var daylightSave = _.map(config.daylightSave, function(item){
5898 return new Option(item.name, item.value);
5899 });
5900
5901 var sv_sntpYears = [];
5902 var sv_sntpMonths = [];
5903 var sv_sntpDates = []; //¸ù¾Ý´óСÔÂÉú³ÉÊý×é
5904 var sv_sntpHours = [];
5905 var sv_sntpMinutes = [];
5906 var sc_startpHours = [];
5907 var sc_startMinutes = [];
5908
5909 var sf_bigMonth = [1, 3, 5, 7, 8, 10, 12];
5910 var sf_smallMonth = [4, 6, 9, 11];
5911
5912 function sf_produceArray(start, end, arryName) {
5913 var item = {};
5914 for(var i = start; i <= end; i++) {
5915 item.name = i;
5916 item.value = i;
5917 arryName.push(new Option(item.name, item.value));
5918 }
5919 }
5920
5921 //Éú³ÉÄê¡¢Ô¡¢Ê±¡¢·ÖµÄÊý×é
5922 sf_produceArray(2000, 2030, sv_sntpYears);
5923 sf_produceArray(1, 12, sv_sntpMonths);
5924 sf_produceArray(0, 23, sv_sntpHours);
5925 sf_produceArray(0, 59, sv_sntpMinutes);
5926 sf_produceArray(0, 23, sc_startpHours);
5927 sf_produceArray(0, 59, sc_startMinutes);
5928
5929 function othersViewModel() {
5930 var target = this;
5931
5932 var inChildGroup = false;
5933 var scheduleInfo = service.getScheduleSetting();
5934
5935 target.fastbootSupport = config.FAST_BOOT_SUPPORT;
5936 target.turnOffSupport = config.TURN_OFF_SUPPORT;
5937 target.SNTPSupport = config.HAS_SNTP;
5938 target.hasUssd = config.HAS_USSD;
5939 target.hasDdns = config.DDNS_SUPPORT;
5940 target.hasUpdateCheck = config.HAS_UPDATE_CHECK;
5941 target.scheduleSetting = ko.observable(scheduleInfo.scheduleSetting);
5942 target.scheduleHour = ko.observable(parseInt(scheduleInfo.scheduleHour));
5943 target.scheduleMinute = ko.observable(parseInt(scheduleInfo.scheduleMinute));
5944 target.scr_hours = ko.observableArray(sc_startpHours);
5945 target.scr_minutes = ko.observableArray(sc_startMinutes);
5946
5947
5948 if (config.HAS_PARENTAL_CONTROL) {
5949 inChildGroup = service.checkCurrentUserInChildGroup().result;
5950 }
5951 target.currentUserInChildGroup = ko.observable(inChildGroup);
5952
5953 var sv_fastbootInfo = service.getFastbootSetting();
5954 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");
5955 target.fastbootSetting = ko.observable(sv_fastbootInfo.fastbootEnabled);
5956
5957
5958 // @method addInterval
5959 addInterval(function(){
5960 target.fastbootEnableFlag(config.RJ45_SUPPORT ? (sv_fastbootInfo.need_sim_pin != "yes" && service.getRj45PlugState().rj45_plug == "wan_lan_off") : sv_fastbootInfo.need_sim_pin != "yes");
5961 }, 1000);
5962
5963 // »Ö¸´³ö³§ÉèÖÃ
5964 // @event restore
5965 target.restore = function () {
5966 showConfirm("restore_confirm", function () {
5967 showLoading("restoring");
5968 service.restoreFactorySettings({}, function (info) {
5969 if (info && info.result == "success") {
5970 successOverlay();
5971 } else {
5972 errorOverlay();
5973 }
5974 }, function (result) {
5975 if (isErrorObject(result) && result.errorType == 'no_auth') {
5976 errorOverlay();
5977 }
5978 });
5979 });
5980 };
5981
5982 target.restart = function () {
5983 showConfirm("restart_confirm", function () {
5984 restartDevice(service);
5985 });
5986 };
5987
5988 target.scheduleRestart = function () {
5989 showLoading();
5990 var params = {};
5991 params.scheduleSetting = target.scheduleSetting();
5992 params.scheduleHour = target.scheduleHour();
5993 params.scheduleMinute = target.scheduleMinute();
5994 service.setScheduleSetting(params, function (result) {
5995 if (result.result != "success") {
5996 errorOverlay();
5997 } else {
5998 successOverlay();
5999 }
6000 });
6001 };
6002
6003 // ¿ìËÙ¿ª¹Ø»úÉèÖÃ
6004 target.saveFastBoot = function() {
6005 showLoading();
6006 var params = {
6007 fastbootEnabled: target.fastbootSetting(),
6008 need_hard_reboot: sv_fastbootInfo.need_hard_reboot
6009 };
6010 service.setFastbootSetting(params, function(result) {
6011 if (result.result == "success") {
6012 successOverlay();
6013 } else {
6014 errorOverlay();
6015 }
6016 });
6017 };
6018
6019 // ¹Ø»ú
6020 target.turnoff = function () {
6021 showConfirm("turnoff_confirm", function () {
6022 showLoading("turnoff");
6023 service.turnOffDevice({}, function (info) {
6024 if (info && info.result == "success") {
6025 successOverlay();
6026 } else {
6027 errorOverlay();
6028 }
6029 }, $.noop);
6030 });
6031 };
6032
6033 //SNTP´¥·¢serverУ׼ʱ¼ä
6034 service.setSNTPDate({
6035 goformId: "SNTP_Getdatastatic"
6036 });
6037
6038 var target = this;
6039 var sntpInfo = service.getSntpParams();
6040
6041 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));
6042
6043 target.day = ko.observable();
6044 target.localTime = ko.observable();
6045
6046 //³õʼ»¯µ±Ç°±¾µØÊ±¼ä
6047 //target.updateCurrentTime; cov_2
6048 target.timeSetModes = ko.observableArray(timeSetModes);
6049 target.isManualSetTime = ko.observable(false);
6050 target.isAutoSntpTime = ko.observable(false);
6051
6052 target.currentMode = ko.observable(sntpInfo.sntp_time_set_mode);
6053
6054 changeSetTimeMode();
6055 target.changeSetTimeMode = function(){
6056 changeSetTimeMode();
6057 };
6058
6059 target.currentYear = ko.observable(parseInt(sntpInfo.sntp_year, 10));
6060 target.currentMonth = ko.observable(parseInt(sntpInfo.sntp_month, 10));
6061 target.currentDate = ko.observable(parseInt(sntpInfo.sntp_day, 10));
6062 target.currentHour = ko.observable(parseInt(sntpInfo.sntp_hour, 10));
6063 target.currentMinute = ko.observable(parseInt(sntpInfo.sntp_minute, 10));
6064
6065
6066 // ÐèÒª¸ù¾ÝÄêÔÂË¢ÐÂÈÕÆÚÁбíÊý¾Ý£¬×¢Òâ˳Ðò
6067
6068 target.years = ko.observableArray(sv_sntpYears);
6069 target.months = ko.observableArray(sv_sntpMonths);
6070 //µ±Óû§Ñ¡ÔñÔ·ݵÄʱºò¸Ä±äÈÕÆÚÑ¡Ôñ¿òµÄÑ¡Ïî
6071 target.initDateList = function(){
6072 initDateList();
6073 target.dates(sv_sntpDates);
6074 }
6075
6076 //³õʼ»¯ÈÕÆÚÁбí
6077 initDateList();
6078 target.dates = ko.observableArray(sv_sntpDates);
6079 target.hours = ko.observableArray(sv_sntpHours);
6080 target.minutes = ko.observableArray(sv_sntpMinutes);
6081
6082 //×Ô¶¯SNTP»ñȡʱ¼äÊý¾Ý°ó¶¨´¦Àí
6083 var serverArray = _.map(sntpInfo.sntp_servers, function(item) {
6084 return new Option(item.name, item.value)
6085 });
6086
6087 target.serverList = ko.observableArray(serverArray);
6088
6089 // ÒÔÏÂÃû×Ö²»ÄÜÐ޸ģ¬ÐÞ¸ÄÎÞ·¨Ë¢ÐÂÍøÒ³
6090
6091 target.currentServer0 = ko.observable(sntpInfo.sntp_server0);
6092 target.currentServer1 = ko.observable(sntpInfo.sntp_server1);
6093 target.currentServer2 = ko.observable(sntpInfo.sntp_server2);
6094 target.customServer0 = ko.observable(sntpInfo.sntp_other_server0);
6095 target.customServer1 = ko.observable(sntpInfo.sntp_other_server1);
6096 target.customServer2 = ko.observable(sntpInfo.sntp_other_server2);
6097 target.isOther0 = ko.observable(false);
6098 target.isOther1 = ko.observable(false);
6099 target.isOther2 = ko.observable(false);
6100
6101 initOtherServer();
6102
6103 target.changeServerSelect = function(){
6104 initOtherServer();
6105 }
6106
6107 target.timeZones = ko.observableArray(timeZones);
6108 target.currentTimeZone = ko.observable(sntpInfo.sntp_timezone + "_" + sntpInfo.sntp_timezone_index);
6109 target.daylightSaves = ko.observableArray(daylightSave);
6110 target.currentDaylightSave = ko.observable(sntpInfo.sntp_dst_enable);
6111
6112 //¸üе±Ç°ÏÔʾʱ¼ä
6113 target.updateCurrentTime = function() {
6114 var globalDay = globalTime.getDay();
6115
6116 switch(globalDay){
6117 case 6:
6118 target.day($.i18n.prop("saturday"));
6119 break;
6120 case 5:
6121 target.day($.i18n.prop("friday"));
6122 break;
6123 case 4:
6124 target.day($.i18n.prop("thursday"));
6125 break;
6126 case 3:
6127 target.day($.i18n.prop("wednesday"));
6128 break;
6129 case 2:
6130 target.day($.i18n.prop("tuesday"));
6131 break;
6132 case 1:
6133 target.day($.i18n.prop("monday"));
6134 break;
6135 case 0:
6136 target.day($.i18n.prop("sunday"));
6137 break;
6138 default:
6139 break;
6140 }
6141
6142 var localCurrentTime = globalTime.getFullYear() + "-" + getTwoDigit(globalTime.getMonth()+1) + "-" + getTwoDigit(globalTime.getDate()) + " " + getTwoDigit(globalTime.getHours()) + ":" + getTwoDigit(globalTime.getMinutes()) + ":" + getTwoDigit(globalTime.getSeconds());
6143 target.localTime(localCurrentTime);
6144 globalTime.setTime(globalTime.getTime()+1000);
6145 };
6146
6147 // SNTPÉèÖÃ
6148 target.apply = function(){
6149 var tmpArray = [];
6150 for(var i=0; i< sntpInfo.sntp_servers.length; i++){
6151 tmpArray.push(sntpInfo.sntp_servers[i].value);
6152 }
6153 var staInfo = service.getStatusInfo();
6154 if(!checkConnectedStatus(staInfo.connectStatus, staInfo.rj45ConnectStatus, staInfo.connectWifiStatus) && target.currentMode() == "auto"){
6155 showAlert("sntp_syn_time_wan_connected");
6156 return;
6157 }
6158
6159 showLoading("");
6160 var requestParams = {
6161 goformId: "SNTP",
6162 manualsettime : target.currentMode(),
6163 sntp_server1_ip : target.currentServer0(),
6164 sntp_server2_ip : target.currentServer1(),
6165 sntp_server3_ip : target.currentServer2(),
6166 sntp_other_server0 : target.customServer0(),
6167 sntp_other_server1 : target.customServer1(),
6168 sntp_other_server2 : target.customServer2(),
6169 timezone : target.currentTimeZone().split("_")[0],
6170 sntp_timezone_index : target.currentTimeZone().split("_")[1],
6171 DaylightEnabled : target.currentDaylightSave(),
6172 time_year : target.currentYear(),
6173 time_month : target.currentMonth(),
6174 time_day : target.currentDate(),
6175 time_hour : target.currentHour(),
6176 time_minute : target.currentMinute()
6177 };
6178
6179 service.setSntpSetting(requestParams, function(data2){
6180 if(data2) {
6181 if(data2.result == "success" && target.currentMode() == "auto"){
6182 successOverlay("sntp_req_success");
6183 //hideLoading();
6184 }else if(data2.result == "processing" && target.currentMode() == "auto"){
6185 successOverlay("sntp_processing");
6186 }else{
6187 //´¥·¢serverУ׼ʱ¼ä
6188 service.setSNTPDate({
6189 goformId: "SNTP_Getdatastatic"
6190 }, function(result){
6191 var sntpInfo = service.getSntpParams();
6192 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));
6193 successOverlay();
6194 });
6195 }
6196 } else {
6197 errorOverlay();
6198 }
6199 });
6200 }
6201
6202 // ÊÖ¶¯/×Ô¶¯Çл»ÏìÓ¦º¯Êý
6203 function changeSetTimeMode() {
6204 if(target.currentMode() == "manual") {
6205 target.isManualSetTime(true);
6206 target.isAutoSntpTime(false);
6207 } else {
6208 target.isManualSetTime(false);
6209 target.isAutoSntpTime(true);
6210 }
6211 return true;
6212 }
6213
6214 // ³õʼ»¯Ê±¼ä
6215 function initDateList(){
6216 sv_sntpDates = [];
6217 if($.inArray(parseInt(target.currentMonth(), 10), sf_smallMonth) != -1) {
6218 sf_produceArray(1, 30, sv_sntpDates);
6219 } else if($.inArray(parseInt(target.currentMonth(), 10), sf_bigMonth) != -1) {
6220 sf_produceArray(1, 31, sv_sntpDates);
6221 } else if(parseInt(target.currentYear(), 10)%4 == 0) {
6222 sf_produceArray(1, 29, sv_sntpDates);
6223 } else {
6224 sf_produceArray(1, 28, sv_sntpDates);
6225 }
6226 }
6227
6228 // ³õʼ»¯ÆäËû·þÎñÆ÷
6229 function initOtherServer(){
6230 target.isOther0(target.currentServer0() == "Other");
6231 target.isOther1(target.currentServer1() == "Other");
6232 target.isOther2(target.currentServer2() == "Other");
6233 !target.isOther0() && $("#sntp_server0").find(".error").hide();
6234 !target.isOther1() && $("#sntp_server1").find(".error").hide();
6235 !target.isOther2() && $("#sntp_server2").find(".error").hide();
6236 }
6237
6238
6239 }
6240
6241 // ³õʼ»¯ ViewModel£¬²¢½øÐÐÊÓͼ°ó¶¨
6242 function init() {
6243 var fwVm = new othersViewModel();
6244 var container = $('#container')[0];
6245 ko.cleanNode(container);
6246 ko.applyBindings(fwVm, container);
6247 fwVm.updateCurrentTime();
6248
6249 addInterval(function(){
6250 fwVm.updateCurrentTime();
6251 }, 1000);
6252
6253 $("#sntpForm").validate({
6254 submitHandler: function(){
6255 fwVm.apply();
6256 },
6257 rules: {
6258 sntp_other_server0 : "sntp_invalid_server_name",
6259 sntp_other_server1 : "sntp_invalid_server_name",
6260 sntp_other_server2 : "sntp_invalid_server_name"
6261 }
6262 });
6263 }
6264
6265 return {
6266 init:init
6267 }
6268 });
6269// ÃÜÂë¹ÜÀí Ä£¿é
6270
6271define("adm_management","jquery knockout set service underscore CryptoJS".split(" "),
6272
6273 function ($, ko, config, service, _, CryptoJS) {
6274
6275 function manageViewModel() {
6276 var target = this;
6277
6278 target.currentValue = ko.observable();
6279 target.newValue = ko.observable();
6280 target.confirmValue = ko.observable();
6281
6282 function sf_changeValue() {
6283 var sv_manageInfo = {};
6284 if (config.PASSWORD_ENCODE) {
6285 sv_manageInfo.oldValue = target.currentValue();
6286 sv_manageInfo.newValue = target.newValue();
6287 } else {
6288 var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,32}');
6289
6290 if (!pwdRegex.test(target.newValue())) {
6291 showConfirm("password_note_too_low", function () {
6292
6293 var kparam = service.getDeviceInfoLow();
6294 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6295 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6296 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6297 iv: tiv,
6298 mode: CryptoJS.mode.CBC,
6299 padding: CryptoJS.pad.ZeroPadding
6300 }).toString();
6301 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6302 iv: tiv,
6303 mode: CryptoJS.mode.CBC,
6304 padding: CryptoJS.pad.ZeroPadding
6305 }).toString();
6306
6307 sv_manageInfo.oldValue = cipherold;
6308 sv_manageInfo.newValue = ciphernew;
6309
6310 showLoading();
6311
6312 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6313 target.cancel();
6314 if (resultInfo && resultInfo.result == true) {
6315 successOverlay();
6316 } else {
6317 if (resultInfo && resultInfo.errorType == "badPassword") {
6318 hideLoading();
6319 showAlert("current_password_error",function(){
6320 $("#txtCurrent").focus();
6321 });
6322 } else {
6323 errorOverlay();
6324 }
6325 }
6326 });
6327 });
6328 return;
6329 }
6330 var kparam = service.getDeviceInfoLow();
6331 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6332 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6333 var cipherold = CryptoJS.AES.encrypt(target.currentValue(), tkey, {
6334 iv: tiv,
6335 mode: CryptoJS.mode.CBC,
6336 padding: CryptoJS.pad.ZeroPadding
6337 }).toString();
6338 var ciphernew = CryptoJS.AES.encrypt(target.newValue(), tkey, {
6339 iv: tiv,
6340 mode: CryptoJS.mode.CBC,
6341 padding: CryptoJS.pad.ZeroPadding
6342 }).toString();
6343
6344 sv_manageInfo.oldValue = cipherold;
6345 sv_manageInfo.newValue = ciphernew;
6346 }
6347
6348 showLoading();
6349
6350 service.changeManageInfo(sv_manageInfo, function (resultInfo) {
6351 target.cancel();
6352 if (resultInfo && resultInfo.result == true) {
6353 successOverlay();
6354 } else {
6355 if (resultInfo && resultInfo.errorType == "badPassword") {
6356 hideLoading();
6357 showAlert("current_password_error",function(){
6358 $("#txtCurrent").focus();
6359 });
6360 } else {
6361 errorOverlay();
6362 }
6363 }
6364 });
6365 }
6366
6367 // Çå³ýÊäÈëµÄÃÜÂë
6368 function sf_cancel() {
6369 target.currentValue("");
6370 target.newValue("");
6371 target.confirmValue("");
6372 }
6373
6374 target.cancel = sf_cancel;
6375
6376 // ÐÞ¸ÄÃÜÂë
6377 target.changeValue = sf_changeValue;
6378 }
6379
6380 function init() {
6381 var container = $('#container');
6382 ko.cleanNode(container[0]);
6383 var fwVm = new manageViewModel();
6384 ko.applyBindings(fwVm, container[0]);
6385
6386 $('#frmPassword').validate({
6387 submitHandler:function () {
6388 fwVm.changeValue();
6389 },
6390 rules:{
6391 txtCurrent:"manage_info_check",
6392 txtNew:"manage_info_check",
6393 txtConfirm:{ equalTo:"#txtNew"}
6394 }
6395 });
6396 }
6397
6398 return {
6399 init:init
6400 }
6401 }
6402);
6403// PIN¹ÜÀíÄ£¿é
6404
6405define("adm_pin","jquery knockout set service".split(" "),
6406
6407 function ($, ko, config, service) {
6408 var pageState = {common:0, requirePin:1, modifyPin:2, requirePuk:3, destroyed:4};
6409 var pinStatus = {enable:"1", disable:"0"};
6410
6411
6412 function pinViewModel() {
6413 var target = this;
6414 var sv_currentPinData = service.getPinData();
6415
6416 target.isDataCard = config.PRODUCT_TYPE == 'DATACARD';
6417 target.originPinStatus = ko.observable(sv_currentPinData.pin_status);
6418
6419 target.pinStatus = ko.observable(sv_currentPinData.pin_status);
6420 target.pinNumber = ko.observable(sv_currentPinData.pinnumber);
6421 target.pukNumber = ko.observable(sv_currentPinData.puknumber);
6422
6423 target.currentPin = ko.observable();
6424 target.newPin = ko.observable();
6425 target.confirmPin = ko.observable();
6426
6427 target.puk = ko.observable();
6428
6429 target.pageState = ko.observable();
6430 // ÇëÇó²Ù×÷ºó³É¹¦±ê־λ
6431 target.operateSuccessFlag = true;
6432
6433 target.callback = sf_callback;
6434
6435 function sf_callback(info) {
6436 if (info && info.result == true) {
6437 target.operateSuccessFlag = true;
6438 successOverlay();
6439 } else {
6440 target.operateSuccessFlag = false;
6441
6442 // ×îºóÒ»´ÎǰҪµ¯¿òÌáʾ
6443 if(target.pinNumber() == 2){
6444 showAlert("last_enter_pin");
6445 } else if(target.pukNumber() == 2){
6446 showAlert("last_enter_puk");
6447 }
6448 else{
6449 errorOverlay();
6450 }
6451 }
6452 init(target);
6453 }
6454
6455
6456 // È·¶¨°´Å¥Ê¼þ´¦Àí£¬°üÀ¨ÐÞ¸ÄPIN£¬¸ù¾ÝPUKÉèÖÃPIN£¬ÉèÖÃPINµÄʹÄÜ״̬
6457
6458 function sf_changePin() {
6459 if (target.isConnectedNetWork()) {
6460 showAlert("cannot_operate_when_connected");
6461 return;
6462 }
6463
6464 if (target.pageState() == pageState.common) {
6465 return;
6466 }
6467
6468 var sv_pinPara = {
6469 oldPin:target.currentPin(),
6470 newPin:target.newPin()
6471 };
6472 showLoading();
6473
6474 if (target.pageState() == pageState.modifyPin) {
6475 service.changePin(sv_pinPara, target.callback);
6476 } else if (target.pageState() == pageState.requirePuk) {
6477 sv_pinPara = {
6478 PinNumber:target.newPin(),
6479 PUKNumber:target.puk()
6480 };
6481 service.enterPUK(sv_pinPara, target.callback);
6482 } else {
6483 if (target.pinStatus() == pinStatus.enable) {
6484 service.enablePin(sv_pinPara, target.callback);
6485 } else {
6486 service.disablePin(sv_pinPara, target.callback);
6487 }
6488 }
6489 }
6490
6491
6492 // È¡Ïûʼþ´¦Àí
6493 function sf_cancel() {
6494 target.pageState(pageState.common);
6495 target.pinStatus(target.originPinStatus());
6496 target.clear();
6497 }
6498
6499 // Çå³ýÒ³ÃæÊäÈëºÍ¼ì²âÏûÏ¢
6500 function sf_clear() {
6501 target.confirmPin("");
6502 target.currentPin("");
6503 target.newPin("");
6504 target.puk("");
6505 clearValidateMsg();
6506 }
6507
6508 // ¸ù¾ÝÊý¾Ý£¬ÉèÖõ±Ç°µÄÒ³Ãæ×´Ì¬
6509 function sf_computePageState(i_pinData) {
6510 if (i_pinData.pinnumber > 0) {
6511 //²Ù×÷³É¹¦Ò³Ãæ»Øµ½³õʼ״̬£¬²Ù×÷ʧ°Ü²¢ÇÒpinnumber>0,Ò³Ãæ²»Ìø×ª
6512 if (target.operateSuccessFlag) {
6513 target.cancel();
6514 } else {
6515 target.clear();
6516 }
6517 } else {
6518 target.clear();
6519 if (i_pinData.puknumber > 0) {
6520 target.pageState(pageState.requirePuk);
6521 } else {
6522 target.pageState(pageState.destroyed);
6523 }
6524 }
6525 }
6526
6527 // ½øÈëPINÐÞ¸Ä״̬ʼþ´¦Àí
6528 function sf_displayModifyPinPage() {
6529 if (target.isConnectedNetWork()) {
6530 showAlert("cannot_operate_when_connected");
6531 return;
6532 }
6533 target.pinStatus(target.originPinStatus());
6534 target.pageState(pageState.modifyPin);
6535 target.clear();
6536 }
6537
6538 // ´¦ÀíÒ³ÃæÔªËØµÄʹÄÜ״̬
6539 function sf_fixPageEnable() {
6540 if (target.isConnectedNetWork()) {
6541 $('#frmPin :input').each(function () {
6542 disableBtn($(this));
6543 });
6544 clearValidateMsg();
6545 } else {
6546 $('#frmPin :input').each(function () {
6547 if (this.id == "txtPin" || this.id == "btnPinApply") {
6548 if (target.pageState() == pageState.common) {
6549 disableBtn($(this));
6550 return;
6551 }
6552 }
6553 if (this.id == "btnModifyPin") {
6554 if (target.originPinStatus() != pinStatus.enable) {
6555 disableBtn($(this));
6556 return;
6557 }
6558 }
6559 if (this.id == "pinEnable" || this.id == "pinDisable") {
6560 if (target.pageState() == pageState.modifyPin) {
6561 disableBtn($(this));
6562 return;
6563 }
6564 }
6565 enableBtn($(this));
6566 });
6567
6568 }
6569 }
6570
6571 // ÊÇ·ñÒÑÁªÍø
6572 function sf_isConnectedNetWork() {
6573 var info = service.getConnectionInfo();
6574 return info.connectStatus == "ppp_connected";
6575 }
6576
6577 // PINʹÄܸıäʱʼþ´¦Àí
6578 function sf_pinStatusChangeEvent() {
6579 if (target.pinStatus() == target.originPinStatus()) {
6580 target.pageState(pageState.common);
6581 } else {
6582 target.pageState(pageState.requirePin);
6583 }
6584 target.clear();
6585 }
6586
6587 target.changePin = sf_changePin;
6588 target.cancel = sf_cancel;
6589 target.clear = sf_clear;
6590 target.computePageState = sf_computePageState;
6591
6592 target.computePageState(sv_currentPinData);
6593
6594 target.displayModifyPinPage = sf_displayModifyPinPage;
6595 target.fixPageEnable = sf_fixPageEnable;
6596 target.isConnectedNetWork = sf_isConnectedNetWork;
6597
6598 target.pinStatusChangeEvent = ko.dependentObservable(sf_pinStatusChangeEvent, this);
6599 }
6600
6601 function init(oldViewModel) {
6602
6603 var fwVm = oldViewModel;
6604
6605 if (fwVm) {
6606 var sv_currentPinData = service.getPinData();
6607 fwVm.originPinStatus(sv_currentPinData.pin_status);
6608 fwVm.pinNumber(sv_currentPinData.pinnumber);
6609 fwVm.pukNumber(sv_currentPinData.puknumber);
6610 fwVm.computePageState(sv_currentPinData);
6611 } else {
6612 fwVm = new pinViewModel();
6613 addInterval(function () {
6614 fwVm.fixPageEnable();
6615 }, 1000);
6616 }
6617
6618 var container = $('#container')[0];
6619 ko.cleanNode(container);
6620 ko.applyBindings(fwVm, container);
6621 fwVm.fixPageEnable();
6622
6623 $('#frmPin').validate({
6624 submitHandler:function () {
6625 fwVm.changePin();
6626 },
6627 rules:{
6628 txtPuk:"puk_check",
6629 txtPin:"pin_check",
6630 txtNewPin:"pin_check",
6631 txtConfirmPin:{equalToPin:"#txtNewPin"}
6632 }
6633 });
6634 }
6635
6636 return {
6637 init:init
6638 }
6639 }
6640);
6641
6642// ¿ìËÙÉèÖÃ
6643define("adm_quick_set","jquery knockout set service underscore CryptoJS".split(" "),
6644
6645 function ($, ko, config, service, _, CryptoJS) {
6646
6647 var sv_wifiState = {ok:0, wps_on:1, wifi_off:2};
6648 var sv_apnMode = {auto:"auto", manual:"manual"};
6649 var sv_minStep = 1;
6650 var sv_maxStep = 5;
6651
6652 // »ñÈ¡¼øÈ¨·½Ê½
6653 function sf_fetchAuthenticationModes() {
6654 return _.map(config.APN_AUTH_MODES, function (item) {
6655 return new Option(item.name, item.value);
6656 });
6657 }
6658
6659 // WIFI°²È«Ä£Ê½Ñ¡Ïî
6660 var sv_securityModes = _.map(config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES, function (item) {
6661 return new Option(item.name, item.value);
6662 });
6663
6664
6665 function quickSettingViewModel() {
6666 var target = this;
6667
6668 var sv_quickSettingInfo = service.getQuickSettingInfo();
6669
6670 target.currentStep = ko.observable(sv_minStep);
6671 target.ipType = ko.observable(sv_quickSettingInfo.pdp_type == "IP" ? "IP" : sv_quickSettingInfo.ipv6_pdp_type);
6672 target.supportIPv6 = config.IPV6_SUPPORT;
6673 target.supportIpv4AndIpv6 = config.IPV4_AND_V6_SUPPORT;
6674
6675 target.wpsFlag = ko.observable(sv_quickSettingInfo.WscModeOption);
6676
6677 function sf_apnDisabled() {
6678 return (sv_quickSettingInfo.apn_index < config.defaultApnSize || sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting");
6679 }
6680
6681 function sf_apnModeDisabled() {
6682 return (sv_quickSettingInfo.ppp_status == "ppp_connected" || sv_quickSettingInfo.ppp_status == "ppp_connecting" || (!target.profileName() && target.apnMode() == sv_apnMode.auto));//Ñ¡ÏîΪ¿Õ»òÕýÔÚÁ¬½Ó»òÒÑÁ¬½Ó
6683 }
6684
6685 function sf_currAPN() {
6686 var sv_APNText = sv_quickSettingInfo["APN_configtmp" + sv_quickSettingInfo.apn_index];
6687 var strIPv6APN = sv_quickSettingInfo["ipv6_APN_configtmp" + sv_quickSettingInfo.apn_index];
6688
6689 var sv_apn = [];
6690 var sv_ipv6APNItems = [];
6691
6692 if (sv_APNText) {
6693 sv_apn = sv_APNText.split("($)");
6694 }
6695
6696 if (strIPv6APN) {
6697 sv_ipv6APNItems = strIPv6APN.split("($)");
6698 }
6699
6700 return {
6701 m_profile_name:sv_apn[0],
6702 wan_apn:sv_apn[1],
6703 ppp_auth_mode: sv_apn[4] == "" || typeof(sv_apn[4]) == "undefined" ? "" : sv_apn[4].toLowerCase(),
6704 ppp_username:sv_apn[5],
6705 ppp_passtmp:sv_apn[6],
6706 pdp_type: sv_apn[7],
6707 ipv6_wan_apn:sv_ipv6APNItems[1],
6708 ipv6_ppp_auth_mode:typeof(sv_ipv6APNItems[4]) == "undefined" || sv_ipv6APNItems[4] == ""? "" : sv_ipv6APNItems[4].toLowerCase(),
6709 ipv6_ppp_username:sv_ipv6APNItems[5],
6710 ipv6_ppp_passtmp:sv_ipv6APNItems[6],
6711 ipv6_pdp_type:sv_ipv6APNItems[7]
6712 }
6713 }
6714
6715 // µ±Ç°APNÅäÖÃ
6716 target.currAPN = ko.computed(sf_currAPN);
6717
6718 target.apn = ko.observable(target.currAPN().wan_apn);
6719 target.ipv6_apn = ko.observable(target.currAPN().ipv6_wan_apn);
6720 target.ipv6_selectedAuthMode = ko.observable(target.currAPN().ipv6_ppp_auth_mode);
6721 target.ipv6_username = ko.observable(target.currAPN().ipv6_ppp_username);
6722 target.ipv6_password = ko.observable(target.currAPN().ipv6_ppp_passtmp);
6723 target.profileName = ko.observable(target.currAPN().m_profile_name);
6724 target.selectedAuthMode = ko.observable(target.currAPN().ppp_auth_mode);
6725 target.username = ko.observable(target.currAPN().ppp_username);
6726 target.password = ko.observable(target.currAPN().ppp_passtmp);
6727
6728 target.transAPN = ko.observable("apn_ipv4_apn");
6729 target.transAPNIPv6 = ko.observable("apn_ipv6_apn");
6730 target.transAuthMode = ko.observable("apn_authentication_ipv4");
6731 target.transAuthModeIPv6 = ko.observable("apn_authentication_ipv6");
6732 target.transUserName = ko.observable("apn_user_name_ipv4");
6733 target.transPassword = ko.observable("apn_password_ipv4");
6734 target.transUserNameIPv6 = ko.observable("apn_user_name_ipv6");
6735 target.transPasswordIPv6 = ko.observable("apn_password_ipv6");
6736
6737
6738
6739 target.apnDisabled = ko.computed(sf_apnDisabled);
6740 target.apnMode = ko.observable(sv_quickSettingInfo.apn_mode);
6741 target.apnModeDisabled = ko.computed(sf_apnModeDisabled);
6742 target.authModes = ko.observableArray(sf_fetchAuthenticationModes());
6743
6744 if (target.ipType() == "IPv6") {
6745 target.showIPv4 = false;
6746 target.showIPv6 = true;
6747 target.transAPNIPv6("apn");
6748 target.transAuthModeIPv6("apn_authentication");
6749 target.transUserNameIPv6("apn_user_name");
6750 target.transPasswordIPv6("apn_password");
6751 } else if (config.IPV4_AND_V6_SUPPORT && target.ipType() == "IPv4v6") {
6752 target.showIPv4 = true;
6753 target.showIPv6 = true;
6754 //ʹÓÃĬÈÏ
6755 } else if (target.ipType() == "IP" || target.ipType() == "IPv4") {
6756 target.showIPv4 = true;
6757 target.showIPv6 = false;
6758 target.transAPN("apn");
6759 target.transAuthMode("apn_authentication");
6760 target.transUserName("apn_user_name");
6761 target.transPassword("apn_password");
6762 } else { //pdp_type == "IPv4v6" && config.IPV4V6_SUPPORT
6763 target.showIPv4 = true;
6764 target.showIPv6 = false;
6765 target.transAPN("apn");
6766 target.transAuthMode("apn_authentication");
6767 target.transUserName("apn_user_name");
6768 target.transPassword("apn_password");
6769 }
6770
6771 target.wifiDisabled = (sv_quickSettingInfo.wifi_cur_state != "1");
6772 target.ssid = ko.observable(sv_quickSettingInfo.SSID1);
6773 target.broadcast = ko.observable(sv_quickSettingInfo.HideSSID);
6774 target.hasWifiWep = config.WIFI_WEP_SUPPORT;
6775 target.hasWifiWpa3 = config.WIFI_WAP3_SUPPORT;
6776 target.hasWifiWpa23 = config.WIFI_WPA2_WAP3_SUPPORT;
6777
6778 target.securityModes = ko.observableArray(sv_securityModes);
6779 target.selectedSecurityMode = ko.observable(sv_quickSettingInfo.AuthMode);
6780 target.WPAKey = ko.observable(sv_quickSettingInfo.WPAPSK1);
6781
6782 target.apnMode_display = ko.observable("");
6783
6784 target.apnMode_trans = ko.computed(sf_apnMode_trans);
6785 target.selectedAuthMode_display = ko.computed(sf_selectedAuthMode_display);
6786 target.ipv6_selectedAuthMode_display = ko.computed(sf_ipv6_selectedAuthMode_display);
6787
6788 target.showWifiPassword = ko.observable(false);
6789 target.showWifiPasswordHandler = sf_showWifiPasswordHandler;
6790
6791 //ÅжÏÊÇ·ñÔÚ802 n onlyÏÂ
6792 var sv_adInfo = service.getWifiAdvance();
6793 target.adBand = ko.observable(sv_adInfo.wifiBand);
6794 target.adMode = ko.observable(sv_adInfo.mode);
6795
6796 target.encryptType = ko.observable(sv_quickSettingInfo.EncrypType);
6797 target.keyID = ko.observable(sv_quickSettingInfo.DefaultKeyID);
6798 target.wepPassword = ko.observable("");
6799
6800 target.getWepPassword = sf_getWepPassword;
6801 target.wepPassword(target.getWepPassword());
6802 target.profileChangeHandler = sf_profileChangeHandler;
6803
6804 target.broadcast_display = ko.observable("");
6805 target.broadcast_trans = ko.computed(sf_broadcast_trans);
6806
6807 target.selectedSecurityMode_display = ko.observable();
6808 target.selectedSecurityMode_trans = ko.computed(sf_selectedSecurityMode_trans);
6809
6810
6811 target.callback = sf_callback;
6812 target.next = sf_button_next;
6813 target.previous = sf_button_previous;
6814 target.save = sf_button_save;
6815
6816 function sf_apnMode_trans() {
6817 if (sv_apnMode.auto == target.apnMode()) {
6818 target.apnMode_display($.i18n.prop("apn_auto_apn"));
6819 return "apn_auto_apn";
6820 } else {
6821 target.apnMode_display($.i18n.prop("apn_manual_apn"));
6822 return "apn_manual_apn";
6823 }
6824 }
6825
6826 function sf_broadcast_trans() {
6827 if ("0" == target.broadcast()) {
6828 target.broadcast_display($.i18n.prop("enable"));
6829 return "enable";
6830 } else {
6831 target.broadcast_display($.i18n.prop("disable"));
6832 return "disable";
6833 }
6834 }
6835
6836 function sf_button_next() {
6837 var currentStep = target.currentStep();
6838 var toStep = target.currentStep() + 1;
6839 sf_changeStep(toStep);
6840
6841 if (currentStep == 1 && target.apnMode() == sv_apnMode.auto) {
6842 toStep = target.currentStep() + 1;
6843 sf_changeStep(toStep);
6844 }
6845 }
6846
6847 function sf_button_previous() {
6848
6849 var currentStep = target.currentStep();
6850 var toStep = target.currentStep() - 1;
6851
6852 sf_changeStep(toStep);
6853
6854 if (currentStep == 3 && target.apnMode() == sv_apnMode.auto) {
6855 toStep = target.currentStep() - 1;
6856 sf_changeStep(toStep);
6857 }
6858 }
6859 function sf_button_save() {
6860 var submit = function () {
6861 sf_quickSetting4IPv6();
6862 };
6863 var result = sf_isDisabled_Wifi();
6864 if(result == sv_wifiState.wifi_off){
6865 showConfirm("quick_setting_wifi_disable_confirm", submit);
6866 } else if (result == sv_wifiState.wps_on) {
6867 showAlert("wps_on_info");
6868 } else{
6869 showConfirm("quick_setting_param_changed_confirm", submit);//submit();
6870 }
6871 }
6872 // ¿ìËÙÉèÖÃÌá½»ºóµÄ»Øµ÷´¦Àí
6873 function sf_callback(data) {
6874 if (data.result == "success") {
6875 successOverlay();
6876 location.hash = "#network_choose";
6877 }
6878 else {
6879 errorOverlay();
6880 }
6881 }
6882
6883 // ±ä»»²½Öèʱ´¦Àí
6884 function sf_changeStep(i_step) {
6885 if (i_step > sv_maxStep) {
6886 i_step = sv_maxStep;
6887 } else if (i_step < sv_minStep) {
6888 i_step = sv_minStep;
6889 }
6890
6891 target.currentStep(i_step);
6892 return true;
6893 }
6894
6895 function sf_ipv6_selectedAuthMode_display() {
6896 var mode = target.ipv6_selectedAuthMode();
6897 return sf_getAuthModeNameByValue(mode);
6898 }
6899 // ¸ù¾Ý¼øÈ¨Ä£Ê½µÄÖµ»ñÆäÃû³Æ
6900 function sf_getAuthModeNameByValue(authMode) {
6901 for (var i = 0; i < config.APN_AUTH_MODES.length; i++) {
6902 if (authMode == config.APN_AUTH_MODES[i].value) {
6903 return config.APN_AUTH_MODES[i].name;
6904 }
6905 }
6906 }
6907
6908 function sf_getWepPassword(){
6909 return target.keyID() == '3' ? sv_quickSettingInfo.Key4Str1 : (target.keyID() == '2' ? sv_quickSettingInfo.Key3Str1 : target.keyID() == '1' ? sv_quickSettingInfo.Key2Str1 : sv_quickSettingInfo.Key1Str1);
6910 }
6911
6912 function sf_isDisabled_Wifi() {
6913 var s_wpsInfo = service.getWpsInfo();
6914 if(s_wpsInfo.radioFlag == "0"){
6915 return sv_wifiState.wifi_off;
6916 }else if (s_wpsInfo.wpsFlag == '1') {
6917 return sv_wifiState.wps_on;
6918 }
6919 return sv_wifiState.ok;
6920 }
6921 function sf_profileChangeHandler(i_data, i_event) {
6922 $("#pwdWepKey").parent().find("label[class='error']").hide();
6923 target.wepPassword(target.getWepPassword());
6924 return true;
6925 }
6926
6927 // ¿ìËÙÉèÖÃÌá½»(Ö§³ÖIPv6£©
6928 function sf_quickSetting4IPv6() {
6929 showLoading();
6930 var useIPv4ForV6 = config.IPV4V6_SUPPORT && target.currAPN().pdp_type == "IPv4v6";
6931
6932 var ciphertext = "";
6933 if (config.PASSWORD_ENCODE) {
6934 ciphertext = target.WPAKey();
6935 } else {
6936 var kparam = service.getDeviceInfoLow();
6937 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
6938 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
6939 ciphertext = CryptoJS.AES.encrypt(target.WPAKey(), tkey, {
6940 iv: tiv,
6941 mode: CryptoJS.mode.CBC,
6942 padding: CryptoJS.pad.ZeroPadding
6943 }).toString();
6944 }
6945
6946 var s_quickSettingParameters = {
6947 apn_index: sv_quickSettingInfo.apn_index,
6948 apnMode: target.apnMode(),
6949 Encryption_Mode_hid: target.selectedSecurityMode(),
6950 ipv6_ppp_auth_mode: useIPv4ForV6 ? target.selectedAuthMode() : target.ipv6_selectedAuthMode(),
6951 ipv6_ppp_username: useIPv4ForV6 ? target.username() : target.ipv6_username(),
6952 ipv6_ppp_passtmp: useIPv4ForV6 ? target.password() : target.ipv6_password(),
6953 ipv6_wan_apn: useIPv4ForV6 ? target.apn() : target.ipv6_apn(),
6954 pdp_type: target.ipType(),
6955 ppp_auth_mode: target.selectedAuthMode(),
6956 ppp_username: target.username(),
6957 ppp_passtmp: target.password(),
6958 profile_name: target.profileName(),
6959 //Ŀǰ¼ÓÃÜģʽֻÓÐ2ÖÖ£¬ÏÂÃæ3¸ö²ÎÊýΪ¹Ì¶¨Öµ
6960 //Èç¹ûÐèÒª¶¨ÖÆÎª5ÖÖ£¬²ÎÊýÖµÐèÒªÉèÖÃ
6961 security_shared_mode: "NONE",
6962 SSID_Broadcast: target.broadcast(),
6963 SSID_name: target.ssid(),
6964 wan_apn: target.apn(),
6965 wep_default_key: 0,
6966 WPA_ENCRYPTION_hid: target.selectedSecurityMode() == "OPEN" ? "NONE" : target.selectedSecurityMode() == "WPA2PSK" ? 1 : 2,
6967 WPA_PreShared_Key: ciphertext
6968 }
6969
6970 s_quickSettingParameters.wep_default_key = target.keyID();
6971
6972 if(target.encryptType() == "SHARED" || target.selectedSecurityMode() == "WEP") {
6973
6974 s_quickSettingParameters.security_shared_mode = "WEP";
6975
6976 s_quickSettingParameters.wep_key_1 = sv_quickSettingInfo.Key1Str1;
6977 s_quickSettingParameters.wep_key_2 = sv_quickSettingInfo.Key2Str1;
6978 s_quickSettingParameters.wep_key_3 = sv_quickSettingInfo.Key3Str1;
6979 s_quickSettingParameters.wep_key_4 = sv_quickSettingInfo.Key4Str1;
6980
6981 var WEPSelectTmp = '0';
6982
6983 if(target.wepPassword().length =='5' ||target.wepPassword().length =='13'){
6984 WEPSelectTmp = '1';
6985 }else{
6986 WEPSelectTmp = '0';
6987 }
6988
6989 if(target.keyID() =='3'){
6990 s_quickSettingParameters.wep_key_4 = target.wepPassword();
6991 s_quickSettingParameters.WEP4Select = WEPSelectTmp;
6992 }else if(target.keyID() =='2'){
6993 s_quickSettingParameters.wep_key_3 = target.wepPassword();
6994 s_quickSettingParameters.WEP3Select = WEPSelectTmp;
6995 }else if(target.keyID() =='1'){
6996 s_quickSettingParameters.wep_key_2 = target.wepPassword();
6997 s_quickSettingParameters.WEP2Select = WEPSelectTmp;
6998 }else{
6999 s_quickSettingParameters.wep_key_1 = target.wepPassword();
7000 s_quickSettingParameters.WEP1Select = WEPSelectTmp;
7001 }
7002 }else if(target.encryptType() == "WPAPSKWPA2PSK") {
7003 s_quickSettingParameters.security_shared_mode = "NONE";
7004 }else {
7005 s_quickSettingParameters.security_shared_mode = "NONE";
7006 }
7007
7008 service.setQuickSetting4IPv6(s_quickSettingParameters, target.callback);
7009 }
7010
7011 function sf_selectedAuthMode_display() {
7012 var mode = target.selectedAuthMode();
7013 return sf_getAuthModeNameByValue(mode);
7014 }
7015
7016 function sf_selectedSecurityMode_trans() {
7017 var mode = target.selectedSecurityMode();
7018 var modesOption = config.WIFI_WEP_SUPPORT ? config.AUTH_MODES_WEP : config.AUTH_MODES;
7019 for (var i = 0; i < modesOption.length; i++) {
7020 if (mode == modesOption[i].value) {
7021 target.selectedSecurityMode_display($.i18n.prop("security_mode_" + modesOption[i].value));
7022 return "security_mode_" + modesOption[i].value;
7023 }
7024 }
7025 }
7026
7027 function sf_showWifiPasswordHandler(){
7028 $("#pwdWepKey").parent().find(".error").hide();
7029 $("#codeWPAKey").parent().find(".error").hide();
7030 var checkbox = $("#showWifiPassword:checked");
7031 if(checkbox && checkbox.length == 0){
7032 target.showWifiPassword(true);
7033 }else{
7034 target.showWifiPassword(false);
7035 }
7036 }
7037
7038 }
7039
7040 function init() {
7041 var container = $('#container');
7042 ko.cleanNode(container[0]);
7043 var fwVm = new quickSettingViewModel();
7044 ko.applyBindings(fwVm, container[0]);
7045
7046 $('#quickSettingForm').validate({
7047 submitHandler:function () {
7048 if (fwVm.currentStep() < 5) {
7049 fwVm.next();
7050 } else {
7051 fwVm.save();
7052 }
7053 },
7054 rules:{
7055 txtAPN:"apn_check",
7056 txtIPv6APN:"apn_check",
7057 txtSSID:'ssid',
7058 pwdWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7059 txtWepKey:{wifi_wep_password_check:true,wifi_password_check: true},
7060 txtWPAKey:'wifi_password_check',
7061 codeWPAKey:'wifi_password_check',
7062 txtUserName:'ppp_username_check',
7063 txtIPv6UserName:'ppp_username_check',
7064 txtSecretCode:"ppp_secretcode_check",
7065 txtIPv6SecretCode:"ppp_secretcode_check"
7066 },
7067 errorPlacement:function (error, element) {
7068 var id = element.attr("id");
7069 if (id == "pwdWepKey" || id == "txtWepKey"){
7070 error.insertAfter("#lblShowWepPassword");
7071 } else if (id == "txtWPAKey" || id == "codeWPAKey") {
7072 error.insertAfter("#lblShowWifiPassword");
7073 } else {
7074 error.insertAfter(element);
7075 }
7076 }
7077 });
7078 }
7079
7080 return {
7081 init:init
7082 };
7083 }
7084);
7085
7086define("main","set service knockout underscore jquery statusBar echarts".split(" "), function (set, fnc, libko, libus, libjq, barStat, echarts) {
7087
7088 var chartOptions = {
7089 color: ['red', 'red', 'red', 'red', 'red'],
7090 series: [{
7091 name: 'Á÷Á¿¿ØÖÆ',
7092 type: 'pie',
7093 radius: ['0', '72'],
7094 itemStyle: {
7095 normal: {
7096 label: {
7097 show: false
7098 },
7099 labelLine: {
7100 show: false
7101 }
7102 }
7103 },
7104 data: [],
7105 selectedOffset: 3
7106 }
7107 ],
7108 animation: false,
7109 title: {
7110 text: '',
7111 x: 'center',
7112 y: 'center',
7113 itemGap: 0,
7114 textStyle: {
7115 color: '#FFF',
7116 fontFamily: '΢ÈíÑźÚ',
7117 fontSize: 20,
7118 fontWeight: 'bolder'
7119 },
7120 subtextStyle: {
7121 color: '#FFF',
7122 fontFamily: '΢ÈíÑźÚ',
7123 fontSize: 16,
7124 fontWeight: 'bolder'
7125 }
7126 },
7127 tooltip: {
7128 formatter: "{b}"
7129 },
7130 };
7131 var languageOld = window.language;
7132 var num_refresh = 0;
7133 var traffic_graphic_chart = null;
7134 var connStat = {
7135 CONNECTED: 1,
7136 DISCONNECTED: 2,
7137 CONNECTING: 3,
7138 DISCONNECTING: 4
7139 };
7140 function init() {
7141 num_refresh = 0;
7142 homeUtil.oldUsedData = null;
7143 homeUtil.oldAlarmData = null;
7144 traffic_graphic_chart = echarts.init(libjq("#traffic_graphic")[0]);
7145 var container = libjq('#container')[0];
7146 libko.cleanNode(container);
7147 var tmp = new VmHome();
7148 libko.applyBindings(tmp, container);
7149 var data = fnc.getLoginData();
7150 var psw_flg = data.psw_changed;
7151 if (psw_flg != "1") {
7152 showConfirm("password_note_first_change", function () {
7153 window.location.hash = '#pwd_mode';
7154 });
7155 return;
7156 }
7157 }
7158
7159 var homeUtil = {
7160 initStatus: null,
7161 initShownStatus: function (data) {
7162 this.initStatus = {};
7163 var ipv6Mode = data.ipv6PdpType.toLowerCase().indexOf("v6") > 0;
7164 if (set.RJ45_SUPPORT) {
7165 var mode = checkCableMode(data.blc_wan_mode);
7166 if (mode) {
7167 this.initStatus.showIpv6WanIpAddr = false;
7168 this.initStatus.showIpv4WanIpAddr = true;
7169 } else if (set.IPV6_SUPPORT) {
7170 if (data.pdpType == "IP") {
7171 this.initStatus.showIpv6WanIpAddr = false;
7172 this.initStatus.showIpv4WanIpAddr = true;
7173 } else if (ipv6Mode) {
7174 if (data.ipv6PdpType == "IPv6") {
7175 this.initStatus.showIpv6WanIpAddr = true;
7176 this.initStatus.showIpv4WanIpAddr = false;
7177 } else {
7178 this.initStatus.showIpv6WanIpAddr = true;
7179 this.initStatus.showIpv4WanIpAddr = true;
7180 }
7181 }
7182 } else {
7183 this.initStatus.showIpv6WanIpAddr = false;
7184 this.initStatus.showIpv4WanIpAddr = true;
7185 }
7186 } else {
7187 if (set.IPV6_SUPPORT) {
7188 if (data.pdpType == "IP") {
7189 this.initStatus.showIpv6WanIpAddr = false;
7190 this.initStatus.showIpv4WanIpAddr = true;
7191 } else if (ipv6Mode) {
7192 if (data.ipv6PdpType == "IPv6") {
7193 this.initStatus.showIpv6WanIpAddr = true;
7194 this.initStatus.showIpv4WanIpAddr = false;
7195 } else {
7196 this.initStatus.showIpv6WanIpAddr = true;
7197 this.initStatus.showIpv4WanIpAddr = true;
7198 }
7199 }
7200 } else {
7201 this.initStatus.showIpv6WanIpAddr = false;
7202 this.initStatus.showIpv4WanIpAddr = true;
7203 }
7204 }
7205 },
7206 wanIpGet: function (data) {
7207 var addrInfo = {
7208 wanIpAddress: '',
7209 ipv6WanIpAddress: ''
7210 };
7211 addrInfo.wanIpAddress = verifyDeviceInfo(data.wanIpAddress);
7212 addrInfo.ipv6WanIpAddress = verifyDeviceInfo(data.ipv6WanIpAddress);
7213 return addrInfo;
7214 },
7215 cachedAPStationBasic: null,
7216 cachedConnectionMode: null,
7217 getCanConnectNetWork: function (param) {
7218 var status = fnc.getStatusInfo();
7219 if (status.simStatus != "modem_init_complete") {
7220 return false;
7221 }
7222 var typeNetworkTmp = status.networkType.toLowerCase();
7223 if (typeNetworkTmp == 'searching') {
7224 return false;
7225 }
7226 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7227 typeNetworkTmp = 'limited_service';
7228 }
7229 if (typeNetworkTmp == 'no service') {
7230 typeNetworkTmp = 'no_service';
7231 }
7232 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7233 if (param.cStatus() != connStat.CONNECTED) {
7234 return false;
7235 }
7236 }
7237 if (set.AP_STATION_SUPPORT) {
7238 if (status.connectWifiStatus == "connect") {
7239 if (status.ap_station_mode == "wifi_pref") {
7240 return false;
7241 }
7242 }
7243 }
7244 return true;
7245 },
7246 doConnect: function () {
7247 showLoading('connecting');
7248 fnc.connect({}, function (data) {
7249 if (data.result) {
7250 successOverlay();
7251 } else {
7252 errorOverlay();
7253 }
7254 });
7255 },
7256 refreshHomeData: function (param) {
7257 var info = fnc.getConnectionInfo();
7258 param.connectStatus(info.connectStatus);
7259 param.canConnect(this.getCanConnectNetWork(param));
7260 param.networkType(homeUtil.getNetworkType(info.networkType));
7261 if (info.connectStatus == "ppp_connected") {
7262 param.current_Flux(transUnit(parseInt(info.data_counter.currentReceived, 10) + parseInt(info.data_counter.currentSent, 10), false));
7263 param.connected_Time(transSecond2Time(info.data_counter.currentConnectedTime));
7264 param.up_Speed(transUnit(info.data_counter.uploadRate, true));
7265 param.down_Speed(transUnit(info.data_counter.downloadRate, true));
7266 } else {
7267 param.current_Flux(transUnit(0, false));
7268 param.connected_Time(transSecond2Time(0));
7269 param.up_Speed(transUnit(0, true));
7270 param.down_Speed(transUnit(0, true));
7271 }
7272 param.trafficAlertEnable(info.limitVolumeEnable);
7273 if (info.limitVolumeEnable) {
7274 if (info.limitVolumeType == '1') {
7275 param.trafficUsed(transUnit(parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10), false));
7276 param.trafficLimited(transUnit(info.limitDataMonth, false));
7277 } else {
7278 param.trafficUsed(transSecond2Time(info.data_counter.monthlyConnectedTime));
7279 param.trafficLimited(transSecond2Time(info.limitTimeMonth));
7280 }
7281 }
7282 if (languageOld != window.language) {
7283 languageOld = window.language;
7284 num_refresh = 1;
7285 }
7286 if (param.showTraffic()) {
7287 homeUtil.updateEcharts(info);
7288 } else {
7289 homeUtil.allFreeEcharts();
7290 }
7291 homeUtil.refreshStationInfo(param);
7292 },
7293 allFreeEcharts: function () {
7294 var usedData = homeUtil.data.free;
7295 usedData.value = 1;
7296 usedData.selected = false;
7297 usedData.name = libjq.i18n.prop("echarts_no");
7298 chartOptions.series[0].data = [usedData];
7299 chartOptions.title.text = '';
7300 homeUtil.setEcharts(chartOptions, libjq.i18n.prop("echarts_no"));
7301 },
7302 getNetworkType: function (networkType) {
7303 var typeNetworkTmp = networkType.toLowerCase();
7304 if (typeNetworkTmp == '' || typeNetworkTmp == 'limited service') {
7305 typeNetworkTmp = 'limited_service';
7306 }
7307 if (typeNetworkTmp == 'no service') {
7308 typeNetworkTmp = 'no_service';
7309 }
7310 if (typeNetworkTmp == 'limited_service' || typeNetworkTmp == 'no_service') {
7311 return libjq.i18n.prop("network_type_" + typeNetworkTmp);
7312 } else {
7313 return networkType;
7314 }
7315 },
7316 data: {
7317 full: {
7318 value: 30,
7319 name: 'Á÷Á¿³¬³ö',
7320 itemStyle: {
7321 normal: {
7322 color: '#DF4313'
7323 }
7324 }
7325 },
7326 used: {
7327 value: 30,
7328 name: 'ÒÑʹÓÃ',
7329 itemStyle: {
7330 normal: {
7331 color: '#8CC916'
7332 }
7333 }
7334 },
7335 left1: {
7336 value: 50,
7337 name: 'ÌáÐÑÖµÄÚδʹÓÃ',
7338 itemStyle: {
7339 normal: {
7340 color: '#D8D8D8'
7341 }
7342 }
7343 },
7344 free: {
7345 value: 50,
7346 name: 'δʹÓÃ',
7347 itemStyle: {
7348 normal: {
7349 color: '#D8D8D8'
7350 }
7351 }
7352 },
7353 alert: {
7354 value: 1,
7355 name: 'ÌáÐÑÖµ',
7356 itemStyle: {
7357 normal: {
7358 color: '#FF5500'
7359 }
7360 }
7361 },
7362 alarm: {
7363 value: 19.7,
7364 name: '¾¯½äÇø',
7365 itemStyle: {
7366 normal: {
7367 color: '#8CC916'
7368 }
7369 }
7370 },
7371 start: {
7372 value: 50,
7373 name: 'ÌáÐÑÖµÄÚδʹÓÃ',
7374 itemStyle: {
7375 normal: {
7376 color: '#D8D8D8'
7377 }
7378 }
7379 },
7380 },
7381 getDataInfo: function (value) {
7382 return {
7383 data: /\d+(.\d+)?/.exec(value)[0],
7384 unit: /[A-Z]{1,2}/.exec(value)[0]
7385 }
7386 },
7387 oldAlarmData: null,
7388 oldUsedData: null,
7389 updateEcharts: function (info) {
7390 var startName = libjq.i18n.prop("echarts_no");
7391 num_refresh++;
7392 if (num_refresh % 10 != 2) {
7393 return false;
7394 }
7395 var total = 0,
7396 used = 0,
7397 reach = 0,
7398 left = 0,
7399 alarm = 0,
7400 left1 = 0;
7401 if (info.limitVolumeEnable) {
7402 startName = libjq.i18n.prop("echarts_used");
7403 chartOptions.series[0].data = [];
7404 if (info.limitVolumeType == '1') {
7405 var limitedDataFormatted = transUnit(info.limitDataMonth, false);
7406 chartOptions.series[0].data = [];
7407 if (info.limitDataMonth == 0) {
7408 var usedData = homeUtil.data.used;
7409 usedData.value = 1;
7410 usedData.selected = false;
7411 usedData.name = libjq.i18n.prop("echarts_used");
7412 chartOptions.series[0].data.push(usedData);
7413 } else {
7414 var dataInfo = homeUtil.getDataInfo(limitedDataFormatted);
7415 total = dataInfo.data * homeUtil.getUnitValue(dataInfo.unit) * 1048576;
7416 used = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
7417 reach = total * info.limitVolumePercent / 100;
7418 if (used >= total) {
7419 var fullData = homeUtil.data.full;
7420 fullData.value = 100;
7421 fullData.name = libjq.i18n.prop("echarts_full");
7422 chartOptions.series[0].data.push(fullData);
7423 startName = libjq.i18n.prop("echarts_full");
7424 } else {
7425 if (reach - used > 0) {
7426 left1 = reach - used;
7427 left = total - reach;
7428 } else {
7429 alarm = used - reach;
7430 left = total - used;
7431 }
7432 var usedData = homeUtil.data.used;
7433 if (reach - used > 0) {
7434 usedData.value = used;
7435 } else {
7436 usedData.value = reach;
7437 }
7438 usedData.name = libjq.i18n.prop("echarts_used");
7439 chartOptions.series[0].data.push(usedData);
7440 if (left1 > 0) {
7441 var left1Data = homeUtil.data.left1;
7442 left1Data.value = left1;
7443 left1Data.name = libjq.i18n.prop("echarts_left1");
7444 chartOptions.series[0].data.push(left1Data);
7445 }
7446 var alertData = homeUtil.data.alert;
7447 alertData.value = total / 200;
7448 alertData.name = libjq.i18n.prop("echarts_alert");
7449 chartOptions.series[0].data.push(alertData);
7450 if (alarm > 0) {
7451 var alarmData = homeUtil.data.alarm;
7452 alarmData.value = alarm;
7453 alarmData.name = libjq.i18n.prop("echarts_alarm");
7454 chartOptions.series[0].data.push(alarmData);
7455 }
7456 var freeData = homeUtil.data.free;
7457 freeData.value = left;
7458 freeData.name = libjq.i18n.prop("echarts_free");
7459 chartOptions.series[0].data.push(freeData);
7460 }
7461 }
7462 } else {
7463 chartOptions.series[0].data = [];
7464 if (info.limitTimeMonth == 0) {
7465 var usedData = homeUtil.data.used;
7466 usedData.value = 1;
7467 usedData.selected = false;
7468 usedData.name = libjq.i18n.prop("echarts_used");
7469 chartOptions.series[0].data.push(usedData);
7470 } else {
7471 total = info.limitTimeMonth;
7472 used = info.data_counter.monthlyConnectedTime;
7473 reach = total * info.limitVolumePercent / 100;
7474 if (used >= total) {
7475 var fullTime = homeUtil.data.full;
7476 fullTime.value = 100;
7477 fullTime.name = libjq.i18n.prop("echarts_full");
7478 chartOptions.series[0].data.push(fullTime);
7479 startName = libjq.i18n.prop("echarts_full");
7480 } else {
7481 if (reach - used > 0) {
7482 left1 = reach - used;
7483 left = total - reach;
7484 } else {
7485 alarm = used - reach;
7486 left = total - used;
7487 }
7488 var usedTime = homeUtil.data.used;
7489 if (reach - used > 0) {
7490 usedTime.value = used;
7491 } else {
7492 usedTime.value = reach;
7493 }
7494 usedTime.name = libjq.i18n.prop("echarts_used");
7495 chartOptions.series[0].data.push(usedTime);
7496 if (left1 > 0) {
7497 var left1Time = homeUtil.data.left1;
7498 left1Time.value = left1;
7499 left1Time.name = libjq.i18n.prop("echarts_left1");
7500 chartOptions.series[0].data.push(left1Time);
7501 }
7502 var alertTime = homeUtil.data.alert;
7503 alertTime.value = total / 200;
7504 alertTime.name = libjq.i18n.prop("echarts_alert");
7505 chartOptions.series[0].data.push(alertTime);
7506 if (alarm > 0) {
7507 var alarmTime = homeUtil.data.alarm;
7508 alarmTime.value = alarm;
7509 alarmTime.name = libjq.i18n.prop("echarts_alarm");
7510 chartOptions.series[0].data.push(alarmTime);
7511 }
7512 var freeTime = homeUtil.data.free;
7513 freeTime.value = left;
7514 freeTime.name = libjq.i18n.prop("echarts_free");
7515 chartOptions.series[0].data.push(freeTime);
7516 }
7517 }
7518 }
7519 } else {
7520 var usedData = homeUtil.data.used;
7521 usedData.value = 1;
7522 usedData.selected = false;
7523 usedData.name = libjq.i18n.prop("echarts_no");
7524 chartOptions.series[0].data = [usedData];
7525 chartOptions.title.text = '';
7526 }
7527 var firstEle = libus.find(chartOptions.series[0].data, function (n) {
7528 return n.name == libjq.i18n.prop("echarts_used");
7529 });
7530 var alarmEle = libus.find(chartOptions.series[0].data, function (n) {
7531 return n.name == libjq.i18n.prop("echarts_alarm");
7532 });
7533 if (!alarmEle) {
7534 alarmEle = {
7535 value: 0
7536 };
7537 }
7538 if (typeof firstEle == "undefined") {
7539 homeUtil.setEcharts(chartOptions, startName);
7540 } else if (homeUtil.oldUsedData != firstEle.value || homeUtil.oldAlarmData != alarmEle.value) {
7541 homeUtil.oldUsedData = firstEle.value;
7542 homeUtil.oldAlarmData = alarmEle.value;
7543 homeUtil.setEcharts(chartOptions, startName);
7544 }
7545 },
7546 getUnitValue: function (unit) {
7547 unit = unit.toUpperCase();
7548 if (unit == 'GB') {
7549 return '1024';
7550 } else if (unit == 'TB') {
7551 return '1048576';
7552 } else {
7553 return '1';
7554 }
7555 },
7556 setEcharts: function (options, startName) {
7557 var startPart = homeUtil.data.start;
7558 startPart.value = 0;
7559 startPart.name = startName;
7560 startPart.selected = false;
7561 var arr = [startPart].concat(options.series[0].data);
7562 options.series[0].data = arr;
7563 traffic_graphic_chart.setOption(options, true);
7564 addTimeout(function () {
7565 traffic_graphic_chart.resize();
7566 }, 1000);
7567 },
7568 refreshStationInfo: function (param) {
7569 param.wirelessDeviceNum(fnc.getStatusInfo().wirelessDeviceNum);
7570 if (num_refresh % 10 == 2) {
7571 fnc.getAttachedCableDevices({}, function (data) {
7572 param.wireDeviceNum(data.attachedDevices.length);
7573 });
7574 }
7575 },
7576 getUnit: function (val) {
7577 if (val == '1024') {
7578 return 'GB';
7579 } else if (val == '1048576') {
7580 return 'TB';
7581 } else {
7582 return 'MB';
7583 }
7584 },
7585 refreshOpmodeInfo: function (param) {
7586 var obj = fnc.getOpMode();
7587 param.isLoggedIn(obj.loginfo == "ok");
7588 var currentMode = checkCableMode(obj.blc_wan_mode);
7589 if (param.opCurMode() && !currentMode) {
7590 var data = fnc.getLoginData();
7591 var state = data.modem_main_state;
7592 if (state == "modem_sim_undetected" || state == "modem_undetected" || state == "modem_sim_destroy" || state == "modem_waitpin" || state == "modem_waitpuk" || state == "modem_imsi_waitnck") {
7593 window.location.reload();
7594 return;
7595 }
7596 }
7597 param.opCurMode(currentMode);
7598 if (currentMode && obj.ethwan_mode == "DHCP") {
7599 param.enableFlag(false);
7600 } else if ((!currentMode && obj.ppp_status != "ppp_disconnected") || (currentMode && obj.rj45_state != "idle" && obj.rj45_state != "dead")) {
7601 param.enableFlag(true);
7602 } else {
7603 param.enableFlag(false);
7604 }
7605 var mode = (obj.blc_wan_mode == "AUTO_PPP" || obj.blc_wan_mode == "AUTO_PPPOE") ? "AUTO" : obj.blc_wan_mode;
7606 var currentOpMode = "";
7607 switch (mode) {
7608 case "AUTO":
7609 currentOpMode = "opmode_auto";
7610 break;
7611 case "PPPOE":
7612 currentOpMode = "opmode_cable";
7613 break;
7614 case "PPP":
7615 currentOpMode = "opmode_gateway";
7616 break;
7617 default:
7618 break;
7619 }
7620 libjq("#opmode").attr("data-trans", currentOpMode).text(libjq.i18n.prop(currentOpMode));
7621 param.isShowHomeConnect(!currentMode);
7622 param.showTraffic(set.TRAFFIC_SUPPORT && !currentMode);
7623 param.isSupportQuicksetting(set.HAS_QUICK_SETTING && !currentMode);
7624 }
7625 };
7626 function VmHome() {
7627 var target = this;
7628 target.hasSms = set.HAS_SMS;
7629 target.hasPhonebook = set.HAS_PHONEBOOK;
7630 target.isSupportSD = set.SD_CARD_SUPPORT;
7631 target.isCPE = set.PRODUCT_TYPE == 'CPE';
7632 target.hasRj45 = set.RJ45_SUPPORT;
7633 target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';
7634 target.hasParentalControl = set.HAS_PARENTAL_CONTROL;
7635 var wifiInfo = fnc.getWifiBasic();
7636 if (set.WIFI_SUPPORT_QR_SWITCH) {
7637 target.showQRCode = set.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
7638 } else {
7639 target.showQRCode = set.WIFI_SUPPORT_QR_CODE;
7640 }
7641 if(set.WIFI_SUPPORT_QR_CODE){
7642 target.qrcodeSrc = './pic/qrcode_ssid_wifikey.png?_=' + libjq.now();
7643 } else {
7644 target.qrcodeSrc = './pic/res_blacktrans.png';
7645 }
7646 if (target.hasRj45) {
7647 var opModeObj = checkCableMode(fnc.getOpMode().blc_wan_mode);
7648 target.opCurMode = libko.observable(opModeObj);
7649 target.isShowHomeConnect = libko.observable(!opModeObj);
7650 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT && !opModeObj);
7651 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING && !opModeObj);
7652 } else {
7653 target.isShowHomeConnect = libko.observable(true);
7654 target.showTraffic = libko.observable(set.TRAFFIC_SUPPORT);
7655 target.isSupportQuicksetting = libko.observable(set.HAS_QUICK_SETTING);
7656 }
7657 if (set.PRODUCT_TYPE == 'DATACARD') {
7658 libjq('#home_image').addClass('data-card');
7659 }
7660 var info = fnc.getConnectionInfo();
7661 target.networkType = libko.observable(homeUtil.getNetworkType(info.networkType));
7662 target.connectStatus = libko.observable(info.connectStatus);
7663 target.canConnect = libko.observable(false);
7664 target.cStatus = libko.computed(function () {
7665 if (target.connectStatus().indexOf('_connected') != -1) {
7666 return connStat.CONNECTED;
7667 } else if (target.connectStatus().indexOf('_disconnecting') != -1) {
7668 return connStat.DISCONNECTING;
7669 } else if (target.connectStatus().indexOf('_connecting') != -1) {
7670 return connStat.CONNECTING;
7671 } else {
7672 return connStat.DISCONNECTED;
7673 }
7674 });
7675 target.current_Flux = libko.observable(transUnit(0, false));
7676 target.connected_Time = libko.observable(transSecond2Time(0));
7677 target.up_Speed = libko.observable(transUnit(0, true));
7678 target.down_Speed = libko.observable(transUnit(0, true));
7679 target.isLoggedIn = libko.observable(false);
7680 target.enableFlag = libko.observable(true);
7681 target.simSerialNumber = libko.observable('');
7682 target.imei = libko.observable('');
7683 target.imsi = libko.observable('');
7684 target.ssid = libko.observable('');
7685 target.hasWifi = set.HAS_WIFI;
7686 target.showMultiSsid = libko.observable(set.HAS_MULTI_SSID && wifiInfo.multi_ssid_enable == "1");
7687 target.trafficAlertEnable = libko.observable(false);
7688 target.trafficUsed = libko.observable('');
7689 target.trafficLimited = libko.observable('');
7690 target.wireDeviceNum = libko.observable(fnc.getAttachedCableDevices().attachedDevices.length);
7691 target.wirelessDeviceNum = libko.observable(fnc.getStatusInfo().wirelessDeviceNum);
7692 target.showOpModeWindow = function () {
7693 if (target.enableFlag()) {
7694 return;
7695 }
7696 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {});
7697 };
7698 target.currentOpMode = libko.observable("0");
7699 var popoverShown = false;
7700 libjq('#showDetailInfo').popover({
7701 html: true,
7702 placement: 'top',
7703 trigger: 'focus',
7704 title: function () {
7705 return libjq.i18n.prop('device_info')
7706 },
7707 content: function () {
7708 return getDetailInfoContent();
7709 }
7710 }).on('shown.bs.popover', function () {
7711 popoverShown = true;
7712 }).on('hidden.bs.popover', function () {
7713 popoverShown = false;
7714 });
7715 function fetchDeviceInfo() {
7716 var data = fnc.getDeviceInfo();
7717 target.simSerialNumber(verifyDeviceInfo(data.simSerialNumber));
7718 target.imei(verifyDeviceInfo(data.imei));
7719 target.imsi(verifyDeviceInfo(data.imsi));
7720 target.ssid(verifyDeviceInfo(data.ssid));
7721 target.showMultiSsid(set.HAS_MULTI_SSID && data.multi_ssid_enable == "1");
7722 return data;
7723 }
7724 fetchDeviceInfo();
7725 function getDetailInfoContent() {
7726 var data = fetchDeviceInfo();
7727 homeUtil.initShownStatus(data);
7728 var addrInfo = homeUtil.wanIpGet(data);
7729 var compiled = libus.template(libjq("#detailInfoTmpl").html());
7730 var tmpl = compiled({
7731 simSerialNumber: verifyDeviceInfo(data.simSerialNumber),
7732 imei: verifyDeviceInfo(data.imei),
7733 imsi: verifyDeviceInfo(data.imsi),
7734 signal: signalFormat(data.signal),
7735 hasWifi: set.HAS_WIFI,
7736 isCPE: set.PRODUCT_TYPE == 'CPE',
7737 hasRj45: set.RJ45_SUPPORT,
7738 showMultiSsid: set.HAS_MULTI_SSID && data.multi_ssid_enable == "1",
7739 ssid: verifyDeviceInfo(data.ssid),
7740 max_access_num: verifyDeviceInfo(data.max_access_num),
7741 m_ssid: verifyDeviceInfo(data.m_ssid),
7742 m_max_access_num: verifyDeviceInfo(data.m_max_access_num),
7743 wifi_long_mode: "wifi_des_" + data.wifiRange,
7744 lanDomain: verifyDeviceInfo(data.lanDomain),
7745 ipAddress: verifyDeviceInfo(data.ipAddress),
7746 showMacAddress: set.SHOW_MAC_ADDRESS,
7747 macAddress: verifyDeviceInfo(data.macAddress),
7748 showIpv4WanIpAddr: homeUtil.initStatus.showIpv4WanIpAddr,
7749 wanIpAddress: addrInfo.wanIpAddress,
7750 showIpv6WanIpAddr: homeUtil.initStatus.showIpv6WanIpAddr,
7751 ipv6WanIpAddress: addrInfo.ipv6WanIpAddress,
7752 sw_version: verifyDeviceInfo(data.sw_version),
7753 hw_version: verifyDeviceInfo(data.hw_version)
7754 });
7755 return libjq(tmpl).translate();
7756 }
7757 target.connectHandler = function () {
7758 if (target.connectStatus() == "ppp_connected") {
7759 showLoading('disconnecting');
7760 fnc.disconnect({}, function (data) {
7761 if (data.result) {
7762 successOverlay();
7763 } else {
7764 errorOverlay();
7765 }
7766 });
7767 } else {
7768 if (fnc.getStatusInfo().roamingStatus) {
7769 showConfirm('dial_roaming_connect', function () {
7770 target.connect();
7771 });
7772 } else {
7773 target.connect();
7774 }
7775 }
7776 };
7777 target.connect = function () {
7778 var statusInfo = fnc.getStatusInfo();
7779 var trafficResult = barStat.getTrafficResult(statusInfo);
7780 if (statusInfo.limitVolumeEnable && trafficResult.showConfirm) {
7781 var confirmMsg = null;
7782 if (trafficResult.usedPercent > 100) {
7783 confirmMsg = {
7784 msg: 'traffic_beyond_connect_msg'
7785 };
7786 barStat.setTrafficAlertPopuped(true);
7787 } else {
7788 confirmMsg = {
7789 msg: 'traffic_limit_connect_msg',
7790 params: [trafficResult.limitPercent]
7791 };
7792 barStat.setTrafficAlert100Popuped(false);
7793 }
7794 showConfirm(confirmMsg, function () {
7795 homeUtil.doConnect();
7796 });
7797 } else {
7798 homeUtil.doConnect();
7799 }
7800 };
7801 fnc.getSignalStrength({}, function (data) {
7802 var signalTxt = signalFormat(convertSignal(data));
7803 libjq("#fresh_signal_strength").text(signalTxt);
7804 if (popoverShown) {
7805 libjq("#popoverSignalTxt").text(signalTxt);
7806 }
7807 });
7808 homeUtil.refreshHomeData(target);
7809 addInterval(function () {
7810 fnc.getSignalStrength({}, function (data) {
7811 var signalTxt = signalFormat(convertSignal(data));
7812 libjq("#fresh_signal_strength").text(signalTxt);
7813 if (popoverShown) {
7814 libjq("#popoverSignalTxt").text(signalTxt);
7815 }
7816 });
7817 homeUtil.refreshHomeData(target);
7818 }, 1000);
7819 if (target.hasRj45) {
7820 homeUtil.refreshOpmodeInfo(target);
7821 addInterval(function () {
7822 homeUtil.refreshOpmodeInfo(target);
7823 }, 1000);
7824 }
7825 target.showNetworkSettingsWindow = function () {
7826 if (target.hasRj45) {
7827 fnc.getOpMode({}, function (data) {
7828 var mode = checkCableMode(data.blc_wan_mode);
7829 if (mode) {
7830 window.location.hash = '#network_set';
7831 } else {
7832 window.location.hash = '#conn_set';
7833 }
7834 });
7835 } else {
7836 window.location.hash = '#conn_set';
7837 }
7838 }
7839 };
7840 return {
7841 init: init
7842 };
7843});
7844
7845
7846define("language","knockout service jquery set underscore".split(" "),
7847 function(ko, service, $, config, _) {
7848
7849 // »ñÈ¡µ±Ç°ÓïÑÔÏî
7850 function getCurrentLanguage() {
7851 return service.getLanguage();
7852 }
7853
7854 // ¸ù¾ÝÓïÑÔÏî¼ÓÔØÓïÑÔ×ÊÔ´²¢·­ÒëÒ³ÃæÉϵÄbody²¿·Ö
7855 // @param {String} current ÓïÑÔÏî:zh-cn
7856 function loadLanguageAndRefresh(current){
7857 window.CURRENT_LANGUAGE = current;
7858 $("body").attr('lang', current);
7859 $.i18n.properties({
7860 name:'Messages',
7861 path:'i18n/',
7862 mode:'map',
7863 cache: true,
7864 language:current,
7865 callback: function() {
7866 jQuery.validator.messages = $.i18n.map;
7867 $('body').translate();
7868 }
7869 });
7870 }
7871
7872 window.language = null;
7873
7874
7875 function LanguageViewModel() {
7876 var target = this;
7877 var currentLan = getCurrentLanguage();
7878 var languages = _.map(config.LANGUAGES, function(item) {
7879 return new Option(item.name, item.value);
7880 });
7881
7882 document.title = config.WEBUI_TITLE;
7883 if($('#webui_title')[0]) {
7884 $('#webui_title').html(config.WEBUI_TITLE);
7885 }
7886
7887 target.languages = ko.observableArray(languages);
7888 target.currentLan = ko.observable(currentLan.Language);
7889 window.language = target.currentLan();
7890
7891 // Çл»ÓïÑÔʼþ´¦Àí
7892 // @event langChangeHandler
7893 target.langChangeHandler = function(info, event) {
7894 clearValidateMsg();
7895
7896 service.setLanguage({Language: target.currentLan()}, function() {
7897 loadLanguageAndRefresh(target.currentLan());
7898 window.language = target.currentLan();
7899 });
7900 };
7901
7902 // ¼ÓÔØÓïÑÔÁÐ±í²¢Ë¢Ð½çÃæ
7903 loadLanguageAndRefresh(target.currentLan());
7904 }
7905
7906 // ³õʼ»¯ÓïÑÔVM²¢°ó¶¨
7907 function init() {
7908 ko.applyBindings(new LanguageViewModel(), $('#language')[0]);
7909 }
7910
7911 return {
7912 init: init
7913 };
7914});
7915
7916
7917// µÇ½ Ä£¿é
7918define("entry","jquery knockout set service underscore menu logout CryptoJS".split(" "),
7919 function($, ko,config, service, _, menu, logout, CryptoJS) {
7920
7921
7922 var pageState = {LOGIN:0, WAIT_PIN:1, WAIT_PUK:2, PUK_LOCKED:3, LOGGEDIN:4, LOADING:5};
7923 var timer = loginStatusCheckingTimer();
7924 var loginLockTimer = 0;
7925 var lastLoginStatus = "0";
7926
7927 function loginViewModel() {
7928 var target = this;
7929 var data = service.getLoginData();
7930 var loginStatus = service.getLoginStatus();
7931
7932 target.confirmPIN = ko.observable();
7933 target.leftSeconds = ko.observable(0);
7934 target.loginCount = ko.observable(0);
7935 target.loginSecuritySupport = ko.observable(config.LOGIN_SECURITY_SUPPORT);
7936 target.newPIN = ko.observable();
7937 target.password = ko.observable();
7938 target.PIN = ko.observable();
7939 target.pinNumber = ko.observable(data.pinnumber);
7940 target.PUK = ko.observable();
7941 target.pukNumber = ko.observable(data.puknumber);
7942 target.showEntrance = ko.observable(false);
7943 target.sharePathInvalid = ko.observable(false);
7944 target.uiLoginTimer = ko.observable(300);
7945
7946 // ×¢Òâ˳Ðò£¬µ÷ÕûÇ°Ãæ»áÎÞ·¨Ë¢Ð³ö½çÃæ
7947 target.accountLocked = ko.computed(function () {
7948 return target.loginCount() == config.MAX_LOGIN_COUNT && target.leftSeconds() != '-1';
7949 });
7950
7951 target.leftUnlockTime = ko.computed(function () {
7952 target.leftSeconds();
7953 var formatted = transSecond2Time(target.uiLoginTimer());
7954 return formatted.substring(formatted.indexOf(':') + 1, formatted.length);
7955 });
7956
7957
7958 if(config.SD_CARD_SUPPORT){
7959 service.getSDConfiguration({}, function (data) {
7960 target.showEntrance(data.sd_status == "1" && data.share_status == "1" && data.sd_mode == "0");
7961 if(target.showEntrance()){
7962 service.checkFileExists({
7963 path: data.share_file
7964 }, function (data1) {
7965 if (data1.status == 'exist' || data1.status == 'processing') {
7966 target.sharePathInvalid(false);
7967 } else {
7968 target.sharePathInvalid(true);
7969 }
7970 });
7971 }
7972 });
7973 }
7974
7975 var state = computePageState(loginStatus, data);
7976 target.pageState = ko.observable(state);
7977 if (state == pageState.LOADING) {
7978 addTimeout(refreshPage, 500);
7979 }
7980 setFocus();
7981
7982
7983 // login ʼþ´¦Àí
7984
7985 target.login = function () {
7986 if(config.LOGIN_SECURITY_SUPPORT && target.accountLocked()){
7987 showAlert("password_error_account_lock_time", function () {
7988 setFocus();
7989 });
7990 return false;
7991 }
7992 target.pageState(pageState.LOADING);
7993 window.clearInterval(timer);
7994 var ciphertext = "";
7995 if (config.PASSWORD_ENCODE) {
7996 ciphertext = target.password();
7997 } else {
7998 var kparam = service.getDeviceInfoLow();
7999 var tkey = CryptoJS.enc.Latin1.parse(kparam.skey);
8000 var tiv = CryptoJS.enc.Latin1.parse(kparam.siv);
8001 ciphertext = CryptoJS.AES.encrypt(target.password(), tkey, {
8002 iv: tiv,
8003 mode: CryptoJS.mode.CBC,
8004 padding: CryptoJS.pad.ZeroPadding
8005 }).toString();
8006 }
8007 service.login({
8008 password:ciphertext
8009 }, function (info) {
8010 setTimeout(function () {
8011 timer = loginStatusCheckingTimer();
8012 }, 1300);
8013 if (info.result) {
8014 target.pageState(pageState.LOGGEDIN);
8015 if(config.LOGIN_SECURITY_SUPPORT){
8016 target.loginCount(0);
8017 target.uiLoginTimer(300);
8018 clearInterval(loginLockTimer);
8019 }
8020 $("#container").empty();
8021 window.location.hash = "#main";
8022 logout.init();
8023 } else {
8024 target.password("");
8025 if(config.LOGIN_SECURITY_SUPPORT){
8026 target.checkLoginData(function(){
8027 if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8028 showAlert("password_error_five_times", function () {
8029 setFocus();
8030 });
8031 target.startLoginLockInterval();
8032 } else {
8033 showAlert({msg: 'password_error_left', params: [config.MAX_LOGIN_COUNT - target.loginCount()]}, function () {
8034 setFocus();
8035 });
8036 }
8037 });
8038 }else {
8039 showAlert("password_error", function () {
8040 setFocus();
8041 });
8042 }
8043 target.pageState(pageState.LOGIN);
8044 }
8045 });
8046 };
8047
8048
8049
8050
8051 // »ñÈ¡µÇ¼Ïà¹ØÐÅÏ¢
8052 target.checkLoginData = function(cb){
8053 service.getLoginData({}, function(r){
8054 var failTimes = parseInt(r.psw_fail_num_str, 10);
8055 target.loginCount(config.MAX_LOGIN_COUNT - failTimes);
8056 target.leftSeconds(r.login_lock_time);
8057 target.uiLoginTimer(r.login_lock_time);
8058 if($.isFunction(cb)){
8059 cb();
8060 } else if (target.loginCount() == config.MAX_LOGIN_COUNT) {
8061 target.startLoginLockInterval();
8062 }
8063 });
8064 };
8065
8066 // Æô¶¯µ¹¼ÆÊ±¶¨Ê±Æ÷¡£
8067 target.startLoginLockInterval = function () {
8068 loginLockTimer = setInterval(function () {
8069 service.getLoginData({}, function (data) {
8070 if (data.login_lock_time <= 0 || data.psw_fail_num_str == 5) {
8071 target.loginCount(0);
8072 clearInterval(loginLockTimer);
8073 }
8074 if(target.leftSeconds() != data.login_lock_time){
8075 target.leftSeconds(data.login_lock_time);
8076 target.uiLoginTimer(data.login_lock_time);
8077 } else {
8078 target.uiLoginTimer(target.uiLoginTimer() > 0 ? target.uiLoginTimer() - 1 : 0);
8079 }
8080 });
8081 }, 1000);
8082 };
8083
8084 target.checkLoginData();
8085
8086
8087
8088 // ÑéÖ¤ÊäÈëPINʼþ´¦Àí
8089 target.enterPIN = function () {
8090 target.pageState(pageState.LOADING);
8091 var pin = target.PIN();
8092 service.enterPIN({
8093 PinNumber:pin
8094 }, function (data) {
8095 if (!data.result) {
8096 showAlert("pin_error", function () {
8097 refreshPage();
8098 });
8099 target.PIN('');
8100 } else {
8101 refreshPage();
8102 }
8103 });
8104 };
8105
8106 function setFocus(){
8107 setTimeout(function () {
8108 var txtAdmin = $('#txtAdmin:visible');
8109 var txtPIN = $('#txtPIN:visible');
8110 var txtPUK = $('#txtPUK:visible');
8111 if (txtAdmin.length > 0) {
8112 txtAdmin.focus();
8113 } else if (txtPIN.length > 0) {
8114 txtPIN.focus();
8115 } else if (txtPUK.length > 0) {
8116 txtPUK.focus();
8117 }
8118 }, 100);
8119 }
8120
8121
8122 // Ë¢ÐÂÒ³Ãæ×´Ì¬
8123 function refreshPage() {
8124 var data = service.getLoginData();
8125 var loginStatus = service.getLoginStatus();
8126 var state = computePageState(loginStatus, data);
8127 if (state == pageState.LOADING) {
8128 addTimeout(refreshPage, 500);
8129 } else {
8130 target.pageState(state);
8131 target.pinNumber(data.pinnumber);
8132 target.pukNumber(data.puknumber);
8133 }
8134 setFocus();
8135 }
8136
8137 // ÊäÈëPUKÉèÖÃÐÂPINʼþ´¦Àí
8138 target.enterPUK = function () {
8139 target.pageState(pageState.LOADING);
8140 var newPIN = target.newPIN();
8141 var confirmPIN = target.confirmPIN();
8142 var params = {};
8143 params.PinNumber = newPIN;
8144 params.PUKNumber = target.PUK();
8145 service.enterPUK(params, function (data) {
8146 if (!data.result) {
8147 showAlert("puk_error", function () {
8148 refreshPage();
8149 });
8150 target.PUK('');
8151 target.newPIN('');
8152 target.confirmPIN('');
8153 } else {
8154 refreshPage();
8155 }
8156 });
8157 };
8158
8159
8160
8161 // ¸ù¾ÝµÇ¼״̬ºÍSIM¿¨×´Ì¬·µ»ØÒ³Ãæ×´Ì¬
8162 function checkPinAfterLogin(loginStatus, data) {
8163 if (loginStatus.status == "loggedIn") {
8164 var currentState = data.modem_main_state; // cov_2
8165 if (currentState == "modem_waitpin") {
8166 return pageState.WAIT_PIN;
8167 } else if ((currentState == "modem_waitpuk" || data.pinnumber == 0) && (data.puknumber != 0)) {
8168 return pageState.WAIT_PUK;
8169 } else if ((data.puknumber == 0 || currentState == "modem_sim_destroy")
8170 && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8171 return pageState.PUK_LOCKED;
8172 } else {
8173 return pageState.LOGGEDIN;
8174 }
8175 } else {
8176 var currentState = data.modem_main_state;
8177 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8178 return pageState.LOADING;
8179 } else {
8180 return pageState.LOGIN;
8181 }
8182 }
8183 }
8184
8185 // ¸ù¾ÝµÇ¼״̬ºÍSIM¿¨×´Ì¬ÉèÖÃÒ³Ãæ×´Ì¬
8186 function computePageState(loginStatus, data) {
8187 //PX-880 ÏȵǼÔÙ½øÐÐPINÑéÖ¤£¬ÓÉÓÚrouterÉè¼ÆÔ­Òò£¬µÇ¼ºó£¬PINÑéÖ¤²»ÔÚµÇÂ¼Ò³Ãæ½øÐУ¬ºÍÊý¾Ý¿¨µÄÑéÖ¤±£³ÖÒ»Ö¡£
8188 if (config.LOGIN_THEN_CHECK_PIN) {
8189 return checkPinAfterLogin(loginStatus, data);
8190 } else {
8191 return loginAfterCheckPin(loginStatus, data);
8192 }
8193 }
8194
8195 // ¸ù¾ÝµÇ¼״̬ºÍSIM¿¨×´Ì¬·µ»ØÒ³Ãæ×´Ì¬
8196 function loginAfterCheckPin(loginStatus, data) {
8197 if (loginStatus.status == "loggedIn") {
8198 return pageState.LOGGEDIN;
8199 } else {
8200 var currentState = data.modem_main_state;
8201 if ($.inArray(currentState, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8202 return pageState.LOADING;
8203 } else if (currentState == "modem_waitpin") {
8204 return pageState.WAIT_PIN;
8205 } else if ((currentState == "modem_waitpuk" || parseInt(data.pinnumber) === 0) && (parseInt(data.puknumber) != 0)) {
8206 return pageState.WAIT_PUK;
8207 } else if ((parseInt(data.puknumber) === 0 || currentState == "modem_sim_destroy") && currentState != "modem_sim_undetected" && currentState != "modem_undetected") {
8208 return pageState.PUK_LOCKED;
8209 } else {
8210 return pageState.LOGIN;
8211 }
8212 }
8213 }
8214 }
8215
8216
8217 // ¼ì²éµ±Ç°window.location.hash£¬Òì³£ÔòÌø×ªµ½index.html
8218 function gotoLogin() {
8219 if (window.location.hash != config.defaultRoute && _.indexOf(config.GUEST_HASH, window.location.hash) == -1) {
8220 if (!manualLogout && lastLoginStatus == "1") {
8221 manualLogout = false;
8222 lastLoginStatus = 'UNREAL';
8223 showAlert('need_login_again', function () {
8224 window.location = "index.html";
8225 });
8226 } else if (lastLoginStatus == 'UNREAL') {
8227 //do nothing, only popup need_login_again alert one time
8228 return;
8229 } else {
8230 window.location = "index.html";
8231 }
8232 }
8233 }
8234
8235 // ¶¨Ê±¼ì²éµÇ¼״̬
8236 function loginStatusCheckingTimer() {
8237 return setInterval(function () {
8238 var info = service.getStatusInfo();
8239 if (!info.isLoggedIn) {
8240 gotoLogin();
8241 return;
8242 }
8243 lastLoginStatus = service.getStatusInfo().isLoggedIn ? "1" : "0";
8244 }, 1000);
8245 }
8246
8247 function init() {
8248 var info = service.getStatusInfo();
8249 if (info.isLoggedIn) {
8250 window.location.hash = '#main';
8251 return;
8252 }
8253
8254 var container = $('#container')[0];
8255 ko.cleanNode(container);
8256 var fwVm = new loginViewModel();
8257 ko.applyBindings(fwVm, container);
8258
8259 $('#frmLogin').validate({
8260 submitHandler:function () {
8261 fwVm.login();
8262 },
8263 rules: {
8264 txtAdmin: 'login_password_length_check'
8265 }
8266 });
8267 $('#frmPIN').validate({
8268 submitHandler:function () {
8269 fwVm.enterPIN();
8270 },
8271 rules:{
8272 txtPIN:"pin_check"
8273 }
8274 });
8275 $('#frmPUK').validate({
8276 submitHandler:function () {
8277 fwVm.enterPUK();
8278 },
8279 rules:{
8280 txtNewPIN:"pin_check",
8281 txtConfirmPIN:{equalToPin:"#txtNewPIN"},
8282 txtPUK:"puk_check"
8283 }
8284 });
8285 }
8286
8287
8288 return {
8289 init:init,
8290 gotoLogin:gotoLogin
8291 };
8292 });
8293
8294
8295// Logout Ä£¿é
8296define("logout","set service knockout underscore jquery".split(" "),
8297 function (config, service, ko, _, $) {
8298
8299 function logoutViewModel() {
8300 var target = this;
8301 // »ñÈ¡ÊÇ·ñµÇ¼
8302 var loginFlag = function () {
8303 var loginInfo = service.getLoginStatus();
8304 return (loginInfo.status == "loggedIn");
8305 }
8306 ();
8307 target.loggedIn = ko.observable(loginFlag);
8308
8309 // Í˳öϵͳ
8310 target.logout = function () {
8311 showConfirm("confirm_logout", function () {
8312 manualLogout = true;
8313 service.logout({}, setLocation());
8314 });
8315 };
8316
8317 // ÊÇ·ñÏÔʾÍ˳ö°´Å¥
8318 target.showLogout = function () {
8319 if (config.HAS_LOGIN) {
8320 return target.loggedIn();
8321 } else {
8322 return false;
8323 }
8324 };
8325 }
8326 function setLocation() {
8327 window.location = 'index.html';
8328 }
8329 function initialize() {
8330 var fwVm = new logoutViewModel();
8331 bindContainer(fwVm);
8332 }
8333 function bindContainer(fwVm) {
8334 var con = $('#logout')[0];
8335 ko.cleanNode(con);
8336 ko.applyBindings(fwVm, con);
8337 }
8338 return {
8339 init: initialize
8340 };
8341});
8342
8343// operation mode Ä£¿é
8344define("opmode","knockout service jquery set underscore".split(" "),
8345
8346 function (ko, service, $, config, _) {
8347
8348 function currentOperationModeViewMode(){
8349 var target = this;
8350 target.isLoggedIn = ko.observable(false);
8351 target.enableFlag = ko.observable(false);
8352
8353 target.showOpModeWindow = function () {
8354 showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {
8355 });
8356 };
8357 target.currentOpMode = ko.observable("0");
8358
8359 service.getOpMode({}, function(info){
8360 target.isLoggedIn(info.loginfo == "ok");
8361 if (info.opms_wan_mode != "PPP" && info.rj45_state != "idle" && info.rj45_state != "dead") {
8362 target.enableFlag(false);
8363 } else if (info.opms_wan_mode == "PPP" && info.ppp_status != "ppp_disconnected") {
8364 target.enableFlag(false);
8365 } else if(info.opms_wan_mode == "DHCP"){
8366 target.enableFlag(true);
8367 } else {
8368 target.enableFlag(true);
8369 }
8370
8371 var opmsWanMode = (info.opms_wan_mode == "DHCP" || info.opms_wan_mode == "STATIC") ? "PPPOE" : info.opms_wan_mode;
8372
8373 var currentOperationMode = "";
8374 switch(opmsWanMode){
8375 case "BRIDGE":
8376 currentOperationMode = "opmode_bridge";
8377 break;
8378 case "PPP":
8379 currentOperationMode = "opmode_gateway";
8380 break;
8381 case "PPPOE":
8382 currentOperationMode = "opmode_cable";
8383 break;
8384 default:
8385 break;
8386 }
8387 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8388 });
8389 // ¶¨Ê±²éѯ¹¤×÷ģʽÏà¹Ø×´Ì¬£¬ÉèÖýçÃæ×´Ì¬
8390 setInterval(function(){
8391 var object = service.getConnectionInfo();
8392 if(object.opms_wan_mode == "DHCP") {
8393 target.enableFlag(true);
8394 } 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")) {
8395 target.enableFlag(false);
8396 } else {
8397 target.enableFlag(true);
8398 }
8399 }, 1000);
8400 }
8401
8402 function init() {
8403 var container = $('#currentOpMode')[0];
8404 ko.cleanNode(container);
8405 var fwVm = new currentOperationModeViewMode();
8406 ko.applyBindings(fwVm, container);
8407 }
8408
8409 return {
8410 init:init
8411 };
8412});
8413
8414// operation mode popupÄ£¿é
8415
8416define("opmode_popup","knockout service jquery set underscore".split(" "),
8417
8418 function (ko, service, $, config, _) {
8419
8420 function operationModeViewMode() {
8421 var target = this;
8422 var currentSelectedOperationMode = "";
8423 target.selectedMode = ko.observable("0");
8424
8425 // ³õʼ»¯½çÃæÄ£Ê½ÏÔʾ
8426 service.getOpMode({}, function(info){
8427 if(info.blc_wan_mode == "AUTO_PPP"){
8428 currentSelectedOperationMode = "AUTO";
8429 }else if(info.blc_wan_mode == "AUTO_PPPOE"){
8430 currentSelectedOperationMode = "AUTO";
8431 }else if(info.blc_wan_mode == "PPPOE"){
8432 currentSelectedOperationMode = "PPPOE";
8433 }else{
8434 currentSelectedOperationMode = info.blc_wan_mode;
8435 }
8436 target.selectedMode(currentSelectedOperationMode);
8437 });
8438
8439 // ģʽÉèÖÃ/Çл»
8440 target.changeOpMode = function(){
8441 var userSelectedOperationMode = $('input:radio[name="opMode"]:checked').val();
8442 var messageText = "";
8443 if(userSelectedOperationMode == currentSelectedOperationMode) {
8444 hidePopupSettingWindow();
8445 return;
8446 }
8447 if(userSelectedOperationMode == "LTE_BRIDGE"){
8448 messageText = "opmode_msg3";
8449 }else{
8450 messageText = "opmode_msg2";
8451 }
8452 showConfirm(messageText, function(){
8453 showLoading();
8454 service.SetOperationMode({
8455 opMode: userSelectedOperationMode
8456 },function(info){
8457 if (info && info.result == "success") {
8458 var currentOperationMode = "";
8459 switch(userSelectedOperationMode){
8460 case "AUTO":
8461 currentOperationMode = "opmode_auto"
8462 break;
8463 case "PPP":
8464 currentOperationMode = "opmode_gateway";
8465 break;
8466 case "PPPOE":
8467 currentOperationMode = "opmode_cable";
8468 break;
8469 default:
8470 break;
8471 }
8472 $("#opmode").attr("data-trans", currentOperationMode).text($.i18n.prop(currentOperationMode));
8473 successOverlay();
8474 } else {
8475 errorOverlay();
8476 }
8477 });
8478 });
8479
8480 }
8481
8482 }
8483
8484 function init() {
8485 var fwVm = new operationModeViewMode();
8486 ko.applyBindings(fwVm, $('#popupSettingWindow')[0]);
8487
8488 $("#opmode_form").validate({
8489 submitHandler: function(){
8490 fwVm.changeOpMode();
8491 }
8492 });
8493 }
8494
8495 return {
8496 init:init
8497 };
8498});
8499
8500define("router","underscore jquery menu set service".split(" "),
8501 function (_, $, menu, config, service) {
8502 var currentHash = '';
8503 var container = $('#container');
8504
8505 //À뿪½çÃæÊ±¼ì²éÊÇ·ñÓÐÄÚÈÝÐ޸ģ¬Èç¹ûÓÐÔòÌáʾ
8506 checkFormContentModify = function (href) {
8507 if (config.CONTENT_MODIFIED.modified && window.location.hash != href) {
8508 if (config.CONTENT_MODIFIED.message == 'sms_to_save_draft') {
8509 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8510 config.resetContentModifyValue();
8511 window.location.hash = href;
8512 } else {
8513 showConfirm(config.CONTENT_MODIFIED.message, {
8514 ok: function () {
8515 config.CONTENT_MODIFIED.callback.ok(config.CONTENT_MODIFIED.data);
8516 config.resetContentModifyValue();
8517 window.location.hash = href;
8518 },
8519 no: function () {
8520 var result = config.CONTENT_MODIFIED.callback.no(config.CONTENT_MODIFIED.data);
8521 if (!result) {
8522 window.location.hash = href;
8523 config.resetContentModifyValue();
8524 }
8525 }
8526 });
8527 }
8528 return false;
8529 } else {
8530 return true;
8531 }
8532 };
8533
8534 //¶¨Ê±²é¿´SIM¿¨µÄ״̬£¬Èôµ±Ç°SIM¿¨×´Ì¬²»Îª¾ÍÐ÷״̬ÇÒδÏÔʾnosimcardÒ³Ãæ£¬ÔòÏÔʾnosimcardÒ³Ãæ,ÒÔ±ÜÃâ²»¹Ø±Õwebui£¬ÖØÐ²å°ÎÉ豸ºó£¬²»ÔÙÅжÏSIM¿¨×´Ì¬µÄÎÊÌâ
8535 function checkSimCardStatus() {
8536 setInterval(function () {
8537 var data = service.getStatusInfo();
8538 var match = menu.findMenu();
8539 if (match.length == 0) {
8540 return false;
8541 }
8542 var requirePinHash = ["phonebook", "sms_list"];
8543 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8544 if (match[0].checkSIMStatus === true) {
8545 var simstatus = data.simStatus == "modem_sim_undetected"
8546 || data.simStatus == "modem_sim_destroy" || data.simStatus == "modem_waitpin"
8547 || data.simStatus == "modem_waitpuk";
8548 var netlockstatus = data.simStatus == "modem_imsi_waitnck";
8549 if (data.isLoggedIn && (
8550 ($('#div-nosimcard')[0] == undefined && simstatus)
8551 || ($('#div-network-lock')[0] == undefined && netlockstatus)
8552 || (($('#div-nosimcard')[0] != undefined || $('#div-network-lock')[0] != undefined) && data.simStatus == "modem_init_complete"))) {
8553 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8554 }
8555 }
8556 }, 1000);
8557 }
8558
8559 //¼ì²éµÇÂ¼Ò³Ãæ±³¾°
8560 function checkLoginPageBg() {
8561 var h = window.location.hash;
8562 if (h == '#entry' || _.indexOf(config.GUEST_HASH, h) != -1) {
8563 $("#manageContainer").attr("style", "margin-top:-36px;");
8564 } else {
8565 $("#manageContainer").attr("style", "margin-top:0px;");
8566 }
8567
8568 if (window.location.hash == '#entry') {
8569 $("#mainContainer").addClass('loginBackgroundBlue');
8570 } else {
8571 var mainContainer = $("#mainContainer");
8572 if (mainContainer.hasClass('loginBackgroundBlue')) {
8573 $("#container").css({
8574 margin: 0
8575 });
8576 mainContainer.removeClass('loginBackgroundBlue').height('auto');
8577 }
8578 }
8579 }
8580
8581 function fixedLoadResources(menuItem, simStatus, isRequirePin) {
8582 var item = {};
8583 $.extend(item, menuItem);
8584 //ûÓÐSIM¿¨Ê±£¬Õë¶ÔhomeÒ³Ãæ²»×ö´¦Àí¡£
8585 //ÍøÂç±»ËøÊ±£¬homeÒ³ÃæÏÔʾ½âËøÒ³Ãæ
8586 if (simStatus == "modem_sim_undetected" || simStatus == "modem_sim_destroy") {
8587 if (!isRequirePin) {
8588 item.path = "sim_abnormal";
8589 }
8590 } else if (simStatus == "modem_waitpin" || simStatus == "modem_waitpuk") {
8591 item.path = "sim_abnormal";
8592 } else if (simStatus == "modem_imsi_waitnck") {
8593 item.path = "locknet";
8594 }
8595 //load tmpl and controller js
8596 loadResources(item);
8597 }
8598
8599 //¸ù¾Ý²Ëµ¥ÅäÖÃitem¼ÓÔØ¶ÔÓ¦µÄ×ÊÔ´
8600 function loadResources(item) {
8601 var pId = item.path.replace(/\//g, '_');
8602 var $body = $('body').removeClass();
8603 if (pId != 'entry' && pId != 'main') {
8604 $body.addClass('beautiful_bg page_' + pId);
8605 } else {
8606 $body.addClass('page_' + pId);
8607 }
8608 clearTimer();
8609 hideLoading();
8610 var tmplPath = 'text!tmpl/' + item.path + '.html';
8611 //TODO: prevent first menu click cover the second menu content, need test with device
8612 require([tmplPath, item.path], function (tmpl, viewModel) {
8613 container.stop(true, true);
8614 container.hide();
8615 container.html(tmpl);
8616 viewModel.init();
8617 //support backward/forward
8618 menu.refreshMenu();
8619 $('#container').translate();
8620 menu.activeSubMenu();
8621
8622 $("form").attr("autocomplete", "off");
8623 container.fadeIn();
8624 });
8625 }
8626 //±È¶Ôhash״̬, Èç¹û±ä»¯Ôò¸ù¾ÝеÄhashÆ¥Åä²Ëµ¥ÅäÖÃ,Æ¥Åä²»ÉÏÊ±Ìø×ªµ½homeÒ³Ãæ, Æ¥ÅäÉÏʱ¼Ç¼hashÖµ²¢¶¯Ì¬¼ÓÔØ¶ÔÓ¦µÄ×ÊÔ´Îļþ
8627 function hashCheck() {
8628 if (window.location.hash != currentHash) {
8629 //½â¾öµÇ½ºóºóÍËÎÊÌâ, µÇ½Óû§·ÃÎʷǵǼÓû§Ê±Ò³Ãæ²»Ìø×ª
8630 var info = service.getStatusInfo();
8631 if (window.location.hash == config.defaultRoute || _.indexOf(config.GUEST_HASH, window.location.hash) != -1) {
8632 if (info.isLoggedIn) {
8633 window.location.hash = currentHash == "" ? "#main" : currentHash;
8634 return;
8635 }
8636 }
8637
8638 var match = menu.findMenu();
8639
8640 if (match.length == 0) {
8641 window.location.hash = config.defaultRoute;
8642 } else {
8643 //µÇ¼ʱ¼ì²é¹¤×÷ģʽ£¬ÓÐÏßģʽÏÂÇÒÖ÷½çÃæÐèÒª¼ì²éSIM¿¨×´Ì¬ÔòÖØÐ¼ÓÔØ,ÎÞÏßģʽÇÒÖ÷½çÃæ²»ÐèÒª¼ì²éSIM¿¨×´Ì¬ÔòÖØÐ¼ÓÔØ
8644 if (config.RJ45_SUPPORT && window.location.hash == "#main") {
8645 if ((match[0].checkSIMStatus && checkCableMode(info.blc_wan_mode)) || (!match[0].checkSIMStatus && !checkCableMode(info.blc_wan_mode))) {
8646 window.location.reload();
8647 return;
8648 }
8649 }
8650 //TODO: ¶þ¼¶²Ëµ¥Óë¶ÔÓ¦Èý¼¶²Ëµ¥µÚÒ»ÏÏàÇл»Ê±²»ÖØÐ¼ÓÔØÊý¾Ý, ÓëTODO: click the same menu ʵÏÖ·½Ê½»¥³â
8651 var oldMenu = menu.findMenu(currentHash);
8652 currentHash = match[0].hash;
8653 if (currentHash == "#entry") {
8654 $('#indexContainer').addClass('login-page-bg');
8655 menu.rebuild();
8656 } else {
8657 $('#indexContainer').removeClass('login-page-bg');
8658 }
8659
8660 if (oldMenu.length != 0 && match[0].path == oldMenu[0].path && match[0].level != oldMenu[0].level && match[0].level != '1' && oldMenu[0].level != '1') {
8661 return;
8662 }
8663
8664 checkLoginPageBg();
8665 var requirePinHash = ["phonebook", "sms_list"];
8666 var isRequirePin = ($.inArray(match[0].path, requirePinHash) != -1);
8667 if (match[0].checkSIMStatus === true || isRequirePin) {
8668 //simStatus is undefined when refreshing page
8669 if (info.simStatus == undefined) {
8670 showLoading('waiting');
8671 function checkSIM() {
8672 var data = service.getStatusInfo();
8673 if (data.simStatus == undefined || $.inArray(data.simStatus, config.TEMPORARY_MODEM_MAIN_STATE) != -1) {
8674 addTimeout(checkSIM, 500);
8675 } else {
8676 fixedLoadResources(match[0], data.simStatus, isRequirePin);
8677 hideLoading();
8678 }
8679 }
8680 checkSIM();
8681 } else {
8682 fixedLoadResources(match[0], info.simStatus, isRequirePin);
8683 }
8684 } else {
8685 loadResources(match[0]);
8686 }
8687 }
8688 }
8689 }
8690
8691 //ĬÈÏÈë¿ÚÒ³ÃæÎª#main, ¶¨Ê±¼ì²éhash״̬
8692 function init() {
8693 checkSimCardStatus();
8694 window.location.hash = window.location.hash || "#main";
8695 //if support onhashchange then use. If ie8 in ie7 mode, it doesn't trigger onhashchange.
8696 if (('onhashchange' in window) && ((typeof document.documentMode === 'undefined') || document.documentMode == 8)) {
8697 window.onhashchange = hashCheck;
8698 hashCheck();
8699 } else {
8700 setInterval(hashCheck, 200);
8701 }
8702
8703 //Èç¹ûÐÞ¸ÄÁËÒ³ÃæÄÚÈÝ, À뿪ʱ¸ø³öÌáʾ
8704 $("a[href^='#']").die('click').live('click', function () {
8705 var $this = $(this);
8706 config.CONTENT_MODIFIED.checkChangMethod();
8707 return checkFormContentModify($this.attr('href'));
8708 });
8709 }
8710
8711 return {
8712 init: init
8713 };
8714});
8715
8716// statusBar Ä£¿é
8717
8718define("statusBar", "knockout jquery underscore service set menu tooltip".split(" "),
8719
8720 function (ko, $, _, service, config, menu, tooltip) {
8721
8722 var sv__hasCheckedSMSCapacity = false;
8723 var sv__initSMSCompleted = false;
8724 var sv_newSMSMessageInDealing = false;
8725 var sv_fotaUpdateCancel = null;
8726 var sv_batteryCheckTimer = 0;
8727 var sv_dbMessageIds = [];
8728 var sv_fotaResultAlertPopuped = false;
8729 var sv_isFirstLoadNewMessage = true;
8730 var isLoggedIn = true;
8731 var sv_messagePopStack = {};
8732 var sv_newMessagePopTemplate = null;
8733 var sv_resetTrafficAlertPopuped = false;
8734 var sv_simMessageListTemplate = null;
8735 var sv_smsListTemplate = null;
8736 var sv_trafficAlertPopuped_100 = false;
8737 var sv_trafficAlertPopuped = false;
8738 var sv_timer = 0;
8739
8740 // »ñȡ״̬ÐÅÏ¢£¬ÈçÍøÂç¡¢SIM¡¢WIFIµÈ
8741 var getCurrentStatusInfo = function () {
8742 return service.getStatusInfo();
8743 };
8744
8745 function statusViewModel() {
8746 var target = this;
8747 var info = getCurrentStatusInfo();
8748 var roamStatus = info.roamingStatus ? true : false;
8749 var $langLogoBar = $("#langLogoBar");
8750
8751
8752 // ´ò¿ªÍøÂçÁ¬½Óʼþ´¦Àí
8753 function sf_connect() {
8754 showLoading("connecting");
8755 service.connect({}, function (data) {
8756 if (data.result) {
8757 refreshWifiConnectStatus(target, data.status);
8758 }
8759 successOverlay();
8760 }, function (data) {
8761 errorOverlay();
8762 });
8763 }
8764 // ¶Ï¿ªÁ¬½Óʼþ´¦Àí
8765 function sf_disconnect() {
8766 showLoading("disconnecting");
8767 service.disconnect({}, function (data) {
8768 if (data.result) {
8769 refreshWifiConnectStatus(target, data.status);
8770 }
8771 successOverlay();
8772 }, function (data) {
8773 errorOverlay();
8774 });
8775 }
8776
8777 if(info.isLoggedIn){
8778 if(!$langLogoBar.hasClass("langborderBg")){
8779 $langLogoBar.addClass("langborderBg");
8780 }
8781 $("#statusBar:hidden").show();
8782 } else {
8783 if($langLogoBar.hasClass("langborderBg")){
8784 $langLogoBar.removeClass("langborderBg");
8785 }
8786 $("#statusBar:visible").hide();
8787 }
8788
8789
8790 //target.attachedDevices = ko.observable(info.attachedDevices);
8791 target.batteryLevel = ko.observable(info.batteryLevel + '%');
8792 target.batteryPers = ko.observable(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
8793 target.batteryStatus = ko.observable(info.batteryStatus);
8794 target.connectionCssClass = ko.observable("");
8795 target.connectStatus = ko.observable(info.connectStatus);
8796 target.connectStatusText = ko.observable();
8797 target.connectStatusTrans = ko.observable();
8798 target.hasWifi = ko.observable(config.HAS_WIFI);
8799 target.hasBattery = ko.observable(config.HAS_BATTERY);
8800 target.isLoggedIn = ko.observable(info.isLoggedIn);
8801 target.isShowConnectionIcon = ko.observable(false);
8802 target.isShowFotaNewversionIcon = ko.observable(info.new_version_state && info.fota_package_already_download != "yes" && !config.isShowFotaIcon);
8803 target.isShowRj45ConnectionIcon = ko.observable(false);
8804 target.networkOperator = ko.observable(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,roamStatus));
8805 target.networkType = ko.observable(getNetworkType(info.networkType));
8806 target.pinStatus = ko.observable(info.pinStatus);
8807 target.pinStatusText = ko.observable();
8808 target.rj45ConnectionCssClass = ko.observable("");
8809 target.roamingStatus = ko.observable(info.roamingStatus ? "R" : "");
8810 target.showAttachedDevices = ko.observable(info.wifiStatus);
8811 target.showSmsDeleteConfirm = ko.observable(false);
8812 target.smsUnreadCount = ko.observable(0);
8813 target.simStatus = ko.observable(sf_convertSimStatusToImage(info.simStatus));
8814 target.signalCssClass = ko.observable(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
8815 target.updateType = ko.observable(service.getUpdateType().update_type);
8816 target.wifiStatusCssClass = ko.observable(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
8817 target.wifiStatusImg = ko.observable(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
8818
8819 sf_getConnectionCssClass(target, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
8820
8821 target.connect = sf_connect;
8822 target.disconnect = sf_disconnect;
8823 }
8824
8825 function sf_gotoSmsList(){
8826 var s_href = '#msg_main';
8827 if(window.location.hash == '#msg_main'){
8828 s_href = '#msg_list';
8829 }
8830 config.CONTENT_MODIFIED.checkChangMethod();
8831 if(checkFormContentModify(s_href)){
8832 window.location.hash = s_href;
8833 }
8834 }
8835
8836 gotoSmsList = sf_gotoSmsList;
8837
8838 function sf_getNetWorkProvider(i_spnB1Flag, i_spnNameData, i_spnB2Flag, i_networkProvider, i_roamStatus) {
8839 if (i_spnNameData == "") {
8840 return i_networkProvider;
8841 } else {
8842 i_spnNameData = decodeMessage(i_spnNameData);
8843 if (i_spnB1Flag == "0" && i_spnB2Flag == "0") {
8844 if (i_roamStatus) {//ÂþÓÎ
8845 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
8846 } else {//²»ÂþÓÎ
8847 return i_spnNameData;
8848 }
8849 }else if (i_spnB1Flag == "1" && i_spnB2Flag == "1") {
8850 if (i_roamStatus) {//ÂþÓÎ
8851 return i_networkProvider;
8852 } else {//²»ÂþÓÎ
8853 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
8854 }
8855 } else if (i_spnB1Flag == "1") {
8856 return i_spnNameData == i_networkProvider ? i_networkProvider : (i_spnNameData + ' ' + i_networkProvider);
8857 } else if (i_spnB2Flag == "1") {
8858 if (i_roamStatus) {//ÂþÓÎ
8859 return i_networkProvider;
8860 } else {//²»ÂþÓÎ
8861 return i_spnNameData;
8862 }
8863 }
8864 return "";
8865 }
8866 }
8867
8868 // Ìí¼ÓжÌÏûÏ¢Ìáʾ£¬²¢¸üÐÂÏà¹ØÄÚÈÝ
8869 function sf_addNewMessage(i_message, i_isUpdate, i_type){
8870 config.smsMaxId = i_message.id;
8871 var now = $.now();
8872 sv_messagePopStack["m" + now] = now;
8873 var name = i_message.number;
8874 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
8875 sv_isFirstLoadNewMessage = false;
8876 if(config.HAS_PHONEBOOK){
8877 sf_getPhoneBooks();
8878 }else{
8879 config.phonebook = [];
8880 }
8881 }
8882 for(i in config.phonebook){
8883 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8884 name = config.phonebook[i].pbm_name;
8885 break;
8886 }
8887 }
8888 var s_newMsg = {
8889 mark : "m" + now,
8890 name: name,
8891 title: $.i18n.prop("sms"),
8892 titleTrans: "sms",
8893 tag: i_message.tag,
8894 content : i_message.content,
8895 datetime : i_message.time
8896 };
8897 if(sv_newMessagePopTemplate == null){
8898 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
8899 }
8900 $(".bubbleItem:not(.report)", "#buttom-bubble").remove();
8901 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
8902 if((window.location.hash == "#msg_main" || window.location.hash == "#msg_list") && i_type == "1"){
8903 //sf_dealChosenNumber(s_newMsg.name, i_message.number);
8904 var s_inChating = config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
8905 var s_itemId = getLastNumber(i_message.number, config.SMS_MATCH_LENGTH);
8906 var item = $("#smslist-item-" + s_itemId);
8907 if(item && item.length > 0){
8908 // ÒÑ´æÔÚÄÚÈÝ£¬¸üÐÂÄÚÈݵ÷Õû˳Ðò
8909 for(var i = 0; config.listMsgs && i < config.listMsgs.length; i++){
8910 if(getLastNumber(config.listMsgs[i].number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8911 config.listMsgs[i].id = i_message.id;
8912 config.listMsgs[i].latestId = i_message.id;
8913 config.listMsgs[i].latestSms = i_message.content;
8914 config.listMsgs[i].latestTime = i_message.time;
8915 if(!i_isUpdate){
8916 config.listMsgs[i].newCount++;
8917 config.listMsgs[i].totalCount++;
8918 }
8919 break;
8920 }
8921 }
8922 item.find(".smslist-item-checkbox p.checkbox").attr("id", i_message.id);
8923 item.find(".smslist-item-checkbox input:checkbox").val(i_message.id).attr("id", "checkbox" + i_message.id);
8924 if(!i_isUpdate){
8925 var s_itemCount = item.find(".smslist-item-total-count").text();
8926 s_itemCount = Number(s_itemCount.substring(1, s_itemCount.length - 1));
8927 item.find(".smslist-item-total-count").text("(" + (s_itemCount + 1) + ")");
8928 if(!config.currentChatObject || config.currentChatObject != getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8929 var s_newNum = item.find(".smslist-item-new-count").removeClass("hide");
8930 if(s_newNum && s_newNum.text().length > 0){
8931 s_newNum.text(Number(s_newNum.text()) + 1);
8932 }else{
8933 s_newNum.text(1);
8934 }
8935 }
8936 }
8937 if(item.find(".smslist-item-draft-flag").length > 0){
8938 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
8939 item.find(" td:nth-child(2)").removeClass("font-weight-bold");
8940 } else {
8941 item.find(" td:nth-child(2)").addClass("font-weight-bold");
8942 }
8943 }else{
8944 var msgContent = item.find(".smslist-item-msg").text(i_message.content);
8945 msgContent.closest('td').prop('title', i_message.content);
8946 item.find("span.clock-time").text(i_message.time);
8947 if (config.currentChatObject && config.currentChatObject == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)) {
8948 msgContent.closest('tr').removeClass("font-weight-bold");
8949 } else {
8950 msgContent.closest('tr').addClass("font-weight-bold");
8951 }
8952 }
8953 item.find(".smslist-item-repeat span").die().click(function() {
8954 forwardClickHandler(i_message.id);
8955 });
8956
8957 var s_tmpItem = item;
8958 item.hide().remove();
8959 $("#smslist-table").prepend(s_tmpItem.show());
8960 } else {
8961 // Èç¹û¶ÌÐÅÁбíÖв»´æÔÚÏàÓ¦µÄÁªÏµÈ˶ÌÏ¢£¬Ó¦ÔÚ¶ÌÐÅÁбíÖÐÐÂÔöÊý¾Ý
8962 var s_theName = "";
8963 if(config.phonebook && config.phonebook.length > 0) {
8964 for(i in config.phonebook){
8965 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
8966 s_theName = config.phonebook[i].pbm_name;
8967 break;
8968 }
8969 }
8970 }
8971 var s_theNewMessage = {
8972 id : i_message.id,
8973 name : s_theName,
8974 number : i_message.number,
8975 latestId :i_message.id,
8976 totalCount : 1,
8977 newCount : s_inChating ? 0 : 1,
8978 latestSms : i_message.content,
8979 latestTime : i_message.time,
8980 checked : false,
8981 hasDraft : false,
8982 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
8983 };
8984 if(sv_smsListTemplate == null){
8985 sv_smsListTemplate = $.template("smsTableTmpl", $("#smsTableTmpl"));
8986 }
8987 $.tmpl("smsTableTmpl", {data: [s_theNewMessage]}).prependTo("#smslist-table");
8988 }
8989 if(config.HAS_PHONEBOOK){
8990 $(".sms-add-contact-icon").removeClass("hide");
8991 }else{
8992 $(".sms-add-contact-icon").addClass("hide");
8993 }
8994 if(s_inChating){
8995 var talkItem = $("#talk-item-" + i_message.id, "#chatlist");
8996 if (talkItem && talkItem.length > 0) {// ¸üм¶Áª¶ÌÐÅÄÚÈÝ
8997 $(".J_content pre", talkItem).html(dealContent(i_message.content));
8998 $(".time .smslist-item-time", talkItem).text(i_message.time);
8999 $(".smslist-item-repeat", talkItem).die().click(
9000 function() {
9001 forwardClickHandler(i_message.id);
9002 });
9003 $(".smslist-item-delete", talkItem).die().click(
9004 function() {
9005 deleteSingleItemClickHandler(i_message.id);
9006 });
9007 } else {// Ôö¼ÓеĻظ´ÄÚÈÝ
9008 $("#smsOtherTmpl").tmpl(i_message).appendTo("#chatlist");
9009 $(".clear-container", "#chatpanel").animate({
9010 scrollTop : $("#chatlist").height()
9011 });
9012 }
9013 if (!config.SMS_SET_READ_WHEN_COMPLETE) {
9014 service.setSmsRead({ids: [i_message.id]}, $.noop);
9015 } else if (config.SMS_SET_READ_WHEN_COMPLETE && i_message.receivedAll) {
9016 service.setSmsRead({ids: [i_message.id]}, $.noop);
9017 }
9018 }
9019 enableCheckbox($("#smslist-checkAll"));
9020 }
9021 if(window.location.hash == "#msg_sim" && i_type == "0"){
9022 // Èç¹û¶ÌÐÅÁбíÖв»´æÔÚÏàÓ¦µÄÁªÏµÈ˶ÌÏ¢£¬Ó¦ÔÚ¶ÌÐÅÁбíÖÐÐÂÔöÊý¾Ý
9023 var s_theName = "";
9024 if(config.phonebook && config.phonebook.length > 0) {
9025 for(i in config.phonebook){
9026 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9027 s_theName = config.phonebook[i].pbm_name;
9028 break;
9029 }
9030 }
9031 }
9032 var s_theNewMessage = {
9033 id : i_message.id,
9034 name : s_theName,
9035 number : i_message.number,
9036 content : i_message.content,
9037 time : i_message.time,
9038 tag: i_message.tag,
9039 checked : false,
9040 itemId : getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)
9041 };
9042 if(i_isUpdate){
9043 var s_item = $(".simMsgList-item-class-" + s_theNewMessage.id);
9044 s_item.hide().remove();
9045 }
9046 if(sv_simMessageListTemplate == null){
9047 sv_simMessageListTemplate = $.template("ssimMessageListTemplate", $("#simMessageListTemplate"));
9048 }
9049 $.tmpl("simMessageListTemplate", {data: [s_theNewMessage]}).prependTo("#simMsgList_container");
9050 }
9051 }
9052
9053 function sf_checkBatteryStatusForFota(){
9054 var s_state = service.getCurrentUpgradeState();
9055 if(s_state.current_upgrade_state == 'low_battery'){
9056 showInfo('ota_low_battery');
9057 clearInterval(sv_batteryCheckTimer);
9058 }
9059 }
9060
9061 // ½«SIM¿¨×´Ì¬×ª»¯ÎªÏìÓ¦µÄÎÄ×ÖÃèÊö
9062 function sf_convertSimStatusToImage(i_status) {
9063 var s_image;
9064 switch (i_status) {
9065 case "modem_destroy":
9066 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9067 break;
9068 case "modem_imsi_waitnck":
9069 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitnck");
9070 break;
9071 case "modem_init_complete":
9072 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9073 break;
9074 case "modem_sim_destroy":
9075 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_destroy");
9076 break;
9077 case "modem_sim_undetected":
9078 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_undetected");
9079 break;
9080 case "modem_undetected":
9081 s_image = "./pic/simcard_undetected.png";
9082 break;
9083 case "modem_waitpin":
9084 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpin");
9085 break;
9086 case "modem_waitpuk":
9087 s_image = "./pic/simcard_undetected.png";//$.i18n.prop("sim_status_waitpuk");
9088 break;
9089
9090 default:
9091 s_image = "./pic/simcard_detected.png";//$.i18n.prop("sim_status_ready");
9092 break;
9093 }
9094 return s_image;
9095 }
9096
9097 function sf_dealChosenNumber(i_choosenName, i_choosenNum) {
9098 setTimeout(function () {
9099 var s_choosen = $("#chosenUserSelect");
9100 var s_options = $("option", s_choosen);
9101 for (var index = 0; index < s_options.length; index++) {
9102 if (getLastNumber(i_choosenNum, config.SMS_MATCH_LENGTH) == s_options[index].value) {
9103
9104 s_options[index].text = i_choosenName + '/' + i_choosenNum;
9105 s_options[index].value = i_choosenNum;
9106
9107 break;
9108 }
9109 }
9110 s_choosen.trigger("liszt:updated");
9111 }, 0);
9112 }
9113
9114 // Ë«Òì²½»ñÈ¡É豸²àºÍsim¿¨²âµÃ¶ÌÐÅÏ¢£¬²¢½«ÆäºÏ²¢
9115 function sf_dealPhoneBooksResult(i_books){
9116 if($.isArray(i_books.pbm_data) && i_books.pbm_data.length > 0){
9117 config.phonebook = i_books.pbm_data;
9118 }
9119 }
9120
9121 // ¹ýÂË×îеÄ5Ìõ¶ÌÏûÏ¢£¬½«Î´Ìí¼Óµ½¶ÌÐÅÁбíÖеĵ¯³öÌáʾ
9122 function sf_filterNewMessage(i_messages, i_type){
9123 if(!config.dbMsgs){
9124 config.dbMsgs = [];
9125 }
9126 if(sv_dbMessageIds.length == 0){
9127 $.each(config.dbMsgs, function(index_1, i_element){
9128 sv_dbMessageIds.push(i_element.id);
9129 });
9130 }
9131 $.each(i_messages, function(index_2, i_element){
9132 if($.inArray(i_element.id, sv_dbMessageIds) == -1){//Ôö¼ÓжÌÐÅ
9133 sv_dbMessageIds.push(i_element.id);
9134 config.dbMsgs.push(i_element);
9135 if(i_element.tag == '1'){
9136 sf_addNewMessage(i_element, false, i_type);
9137 }
9138 }else{
9139 for(var index = 0; index < config.dbMsgs.length; index++){//¸üм¶Áª¶ÌÐÅ
9140 if(config.dbMsgs[index].id == i_element.id && config.dbMsgs[index].content != i_element.content && i_element.tag == '1'){
9141 config.dbMsgs[index].content = i_element.content;
9142 sf_addNewMessage(i_element, true, i_type);
9143 break;
9144 }
9145 }
9146 }
9147 });
9148 }
9149
9150 // ½«µçÁ¿×ª»¯Îª¶ÔӦͼƬ
9151 function sf_getBatteryLevelImage(pers, i_status) {
9152 var s_Image = null;
9153 if ("0" == i_status) {
9154 if ("1" == pers) {
9155 s_Image = "pic/power_one.png";
9156 } else if ("2" == pers) {
9157 s_Image = "pic/power_two.png";
9158 } else if ("3" == pers) {
9159 s_Image = "pic/power_three.png";
9160 } else if ("4" == pers) {
9161 s_Image = "pic/power_full.png";
9162 } else { //"5" == pers || "0" == pers
9163 s_Image = "pic/power_out.png";
9164 }
9165 } else {
9166 s_Image = "pic/power_charging.gif";
9167 }
9168 return s_Image;
9169 }
9170
9171 // »ñÈ¡ÁªÍø×´Ì¬µÄCSSÑùʽ
9172 function sf_getConnectionCssClass(i_fwVm, i_status, i_data_counter, i_wifiSSID, i_wifiStatus, i_rj45Status) {
9173
9174 var s_rj45ConnectionStatus = "icon_connection ";
9175 var s_connectionStatus = "icon_connection ";
9176
9177 if(i_rj45Status == "connect"){
9178 s_rj45ConnectionStatus += "connecting";
9179 }else if(i_rj45Status == "working"){
9180 s_rj45ConnectionStatus += "rj45_connected";
9181 }else{
9182 s_rj45ConnectionStatus += "disconnect";
9183 }
9184
9185 if (i_status == "ppp_connecting" || i_status == "wifi_connecting") {
9186 s_connectionStatus += "connecting";
9187 } else if(i_status == "ppp_connected") {//CPE ppp_statusΪnone readyµÈÖµ
9188 if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate != '0') {
9189 s_connectionStatus += "connectionBoth";
9190 } else if (i_data_counter.uploadRate != '0' && i_data_counter.downloadRate == '0') {
9191 s_connectionStatus += "connectionUp";
9192 } else if (i_data_counter.uploadRate == '0' && i_data_counter.downloadRate != '0') {
9193 s_connectionStatus += "connectionDown";
9194 } else {
9195 s_connectionStatus += "connectionNone";
9196 }
9197 } else if (i_status == "ppp_disconnected") {
9198 if (i_wifiSSID && i_wifiStatus == "connect") {
9199 service.getHotspotList({}, function (data) {
9200 var s_cssName = "icon_connection ";
9201 var s_css = "connecting ";
9202 for (var i = 0, len = data.hotspotList.length; i < len; i++) {
9203 if (data.hotspotList[i].connectStatus == "1") {
9204 s_css = "wifi_connected";
9205 break;
9206 }
9207 }
9208 s_cssName += s_css;
9209 i_fwVm.connectionCssClass(s_cssName);
9210 });
9211 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9212 return;
9213 } else if (i_wifiSSID && (i_wifiStatus == "connecting" || i_wifiStatus =="dhcping")) {
9214 s_connectionStatus += "connecting";
9215 } else {
9216 s_connectionStatus += "disconnect";
9217 }
9218 } else {
9219 s_connectionStatus += "disconnect";
9220 }
9221
9222 i_fwVm.connectionCssClass(s_connectionStatus);
9223 i_fwVm.rj45ConnectionCssClass(s_rj45ConnectionStatus);
9224 }
9225
9226 // »ñÈ¡µç»°±¾ÐÅÏ¢
9227 function sf_getPhoneBooks() {
9228 var s_books = service.getPhoneBooks({
9229 page : 0,
9230 data_per_page : 2000,
9231 orderBy : "id",
9232 isAsc : false
9233 });
9234 sf_dealPhoneBooksResult(s_books);
9235 }
9236
9237 // »ñÈ¡ÐźÅÁ¿µÄCSSÑùʽ
9238 function sf_getSignalCssClass(siganl, networkType, simStatus) {
9239 networkType = networkType.toLowerCase();
9240 simStatus = simStatus ? simStatus.toLowerCase() : '';
9241 if(networkType == '' || networkType == 'limited_service' || networkType == 'no_service' || networkType == 'limited service' || networkType == 'no service'
9242 || simStatus != 'modem_init_complete'){
9243 siganl = '_none';
9244 }
9245 return "signal signal" + siganl;
9246 }
9247
9248 function sf_getWifiStatusCssClass(i_status, i_deviceSize) {
9249 if (i_status) {
9250 if (i_deviceSize == 0) {
9251 return "wifi_status0";
9252 } else {
9253 return "wifi_status" + i_deviceSize;
9254 }
9255 } else {
9256 return "wifi_status_off";
9257 }
9258 }
9259
9260 // ¸ù¾Ýwifi״̬»ñÈ¡wifiµÄͼƬ×ÊÔ´
9261 function sf_getWifiStatusImage(i_status, i_deviceSize) {
9262 if (i_status) {
9263 if (i_deviceSize == 0) {
9264 return "./pic/wlan0.png";
9265 } else {
9266 return "./pic/wlan" + i_deviceSize + ".png";
9267 }
9268 } else {
9269 return "./pic/wlan_off.png";
9270 }
9271 }
9272
9273 // »ñÈ¡ÒÑÏÂÔØÉý¼¶°ü´óС£¬¸üÐÂÏÂÔØ½ø¶È
9274 function sf_refreshFotaDownloadProgress(){
9275 service.getPackSizeInfo({}, function (data) {
9276 var percents;
9277 if (parseInt(data.fota_pkg_total_size) == 0) {
9278 percents = 0;
9279 } else {
9280 percents = parseInt(parseInt(data.fota_dl_pkg_size) * 100 / parseInt(data.fota_pkg_total_size));
9281 }
9282 if (percents > 100) {
9283 percents = 100;
9284 }
9285 if (percents >= 0) {
9286 if (percents > 95) {
9287 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9288 }
9289 setProgressBar(percents);
9290 }
9291 });
9292 }
9293
9294 // ´¦Àí¶ÌÐÅ·¢Ëͱ¨¸æ
9295 function sf_responseSmsReport(){
9296 if(sv_isFirstLoadNewMessage && config.phonebook && config.phonebook.length == 0){
9297
9298 sv_isFirstLoadNewMessage = false;
9299
9300 if(config.HAS_PHONEBOOK){
9301 sf_getPhoneBooks();
9302 }else{
9303 config.phonebook = [];
9304 }
9305 }
9306 service.getSMSDeliveryReport({
9307 page: 0,
9308 smsCount: 10
9309 }, function(data){
9310 var s_messages = data.messages;
9311 var s_nums = [];
9312 $.each(s_messages, function(i, i_message){
9313 if($.inArray(i_message.number, s_nums) == -1){
9314 s_nums.push(i_message.number);
9315 window.setTimeout(function(){
9316 var s_now = $.now();
9317 sv_messagePopStack["m" + s_now] = s_now;
9318 i_message.name = i_message.number;
9319 for(i in config.phonebook){
9320 if(getLastNumber(config.phonebook[i].pbm_number, config.SMS_MATCH_LENGTH) == getLastNumber(i_message.number, config.SMS_MATCH_LENGTH)){
9321 i_message.name = config.phonebook[i].pbm_name;
9322 break;
9323 }
9324 }
9325 var s_msgContent = $.i18n.prop("sms_delivery_report_" + i_message.content);
9326
9327 var s_newMsg = {
9328 mark : "m" + s_now,
9329 name: i_message.name,
9330 title: $.i18n.prop("sms_report"),
9331 titleTrans: "sms_report",
9332 content : s_msgContent,
9333 datetime : i_message.time,
9334 report : 'report'
9335 };
9336
9337 if(sv_newMessagePopTemplate == null){
9338 sv_newMessagePopTemplate = $.template("newMessagePopTmpl", $("#newMessagePopTmpl"));
9339 }
9340
9341 $(".report", "#buttom-bubble").remove();
9342 $.tmpl("newMessagePopTmpl", s_newMsg).appendTo("#buttom-bubble");
9343 }, 100);
9344 }
9345 });
9346 }, function(){
9347 //No Deal
9348 });
9349 }
9350
9351 function sf_simStatusInvalid(simStatus){
9352 return simStatus == 'modem_sim_undetected' || simStatus == 'modem_undetected' || simStatus == 'modem_sim_destroy'
9353 || simStatus == 'modem_waitpin' || simStatus == 'modem_waitpuk' || simStatus == 'modem_imsi_waitnck';
9354 }
9355
9356 // ÏÔʾFOTAÉý¼¶µ±Ç°×´Ì¬
9357 function sf_showFotaCurrentStatus() {
9358 sv_fotaUpdateCancel = true;
9359 var r = service.getNewVersionState();
9360
9361 function showProgress() {
9362 var upgradingState = ["downloading"];
9363 var info = service.getCurrentUpgradeState();
9364 if(info.current_upgrade_state.toLowerCase() == "idle") {
9365 addTimeout(showProgress, 1000);
9366 } else if(($.inArray(info.current_upgrade_state, upgradingState) != -1)&&(r.fota_new_version_state != "already_has_pkg")) {
9367 hideLoading();
9368 sf_showFotaUpgradeStatus();
9369 }
9370 }
9371 if (!($("#progress").is(":visible"))) {
9372 showProgress();
9373 }
9374 var times = 0;
9375 var getOTAUpgradeState = function () {
9376 var data = null;
9377 if (times <= 3) {
9378 times = times + 1;
9379 data = service.getCurrentUpgradeState();
9380 } else {
9381 data = getCurrentStatusInfo();
9382 }
9383 var state = data.current_upgrade_state;
9384 if(sv_fotaUpdateCancel && isLoggedIn == true){
9385
9386 if(r.fota_new_version_state == "already_has_pkg"){
9387 if(state == 'low_battery'){
9388 hideProgressBar();
9389 sv_fotaUpdateCancel = false;
9390 service.removeTimerThings('fota_current_upgrade_state',function(){});
9391 showInfo('ota_pkg_low_battery');
9392 window.clearTimeout(sv_timer);
9393 return;
9394 }else if(state == 'prepare_install'){
9395 hideProgressBar();
9396 sv_fotaUpdateCancel = false;
9397 service.removeTimerThings('fota_current_upgrade_state',function(){});
9398 showInfo('ota_pkg_download_success');
9399 window.clearTimeout(sv_timer);
9400 sv_batteryCheckTimer = setInterval(function () {
9401 sf_checkBatteryStatusForFota();
9402 }, 1000);
9403 return;
9404 }
9405 }else if(state == 'downloading') {
9406 sf_refreshFotaDownloadProgress();
9407 }else if(state == 'download_failed') {
9408 hideProgressBar();
9409 sv_fotaUpdateCancel = false;
9410 showAlert('ota_download_failed');
9411 window.clearTimeout(sv_timer);
9412 return;
9413 }else if(state == 'low_battery'){
9414 hideProgressBar();
9415 sv_fotaUpdateCancel = false;
9416 service.removeTimerThings('fota_current_upgrade_state',function(){});
9417 showInfo('ota_low_battery');
9418 window.clearTimeout(sv_timer);
9419 return;
9420 }else if(state == 'prepare_install'){
9421 hideProgressBar();
9422 sv_fotaUpdateCancel = false;
9423 service.removeTimerThings('fota_current_upgrade_state',function(){});
9424 showInfo('ota_download_success');
9425 window.clearTimeout(sv_timer);
9426 sv_batteryCheckTimer = setInterval(function () {
9427 sf_checkBatteryStatusForFota();
9428 }, 1000);
9429 return;
9430 }else{
9431 sv_fotaUpdateCancel = false;
9432 hideProgressBar();
9433 window.clearTimeout(sv_timer);
9434 return;
9435 }
9436 sv_timer = window.setTimeout(getOTAUpgradeState , 1000);
9437 }
9438 };
9439
9440 if(sv_fotaUpdateCancel && isLoggedIn == true){
9441 sv_timer = window.setTimeout(getOTAUpgradeState , 100);
9442 }else{
9443 window.clearTimeout(sv_timer);
9444 }
9445 }
9446
9447 // ÏÔʾFotaÉý¼¶½á¹û
9448 function sf_showFotaUpdateResult(i_otaResult) {
9449 if ((!($("#loading").is(":visible"))) && (!($("#confirm").is(":visible")))) {
9450 var s_message = i_otaResult ? "ota_update_success" : "ota_update_failed";
9451 sv_fotaResultAlertPopuped = true;
9452 showAlert(s_message, function () {
9453 sv_fotaResultAlertPopuped = false;
9454 if (config.UPGRADE_TYPE == "OTA") {
9455 service.clearUpdateResult({}, $.noop());
9456 }
9457 });
9458 } else {
9459 window.setTimeout(function () {
9460 sf_showFotaUpdateResult(i_otaResult)
9461 }, 1000);
9462 }
9463 }
9464
9465 // ÏÔʾµ±Ç°Éý¼¶×´Ì¬
9466 function sf_showFotaUpgradeStatus() {
9467 var s_data = service.getMandatory();
9468 var s_isMandatory = s_data.is_mandatory;
9469 var s_sizeInfo =service.getPackSizeInfo();
9470 var s_percents;
9471
9472 if (parseInt(s_sizeInfo.fota_pkg_total_size) == 0) {
9473 s_percents = 0;
9474 } else {
9475 s_percents = parseInt(parseInt(s_sizeInfo.fota_dl_pkg_size) * 100 / parseInt(s_sizeInfo.fota_pkg_total_size));
9476 }
9477 if (s_percents > 100) {
9478 s_percents = 100;
9479 }
9480
9481 if (s_isMandatory) {
9482 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning"));
9483 } else {
9484 var cancelHtml = "";
9485 if (config.UPGRADE_TYPE == "OTA") {
9486 cancelHtml = "<br/><br/><button id='btnStopUpgrade' onclick='stopOTAUpgrade();' class='btn-1 btn-primary'>" + $.i18n.prop("cancel") + "</button>";
9487 }
9488 showProgressBar("ota_update", "<br/>" + $.i18n.prop("ota_update_warning") + cancelHtml);
9489 }
9490
9491 //setProgressBar(0);
9492 if (s_percents >= 0) {
9493 setProgressBar(s_percents);
9494 }
9495 }
9496
9497
9498
9499
9500
9501 function sf_startFotaUpgrade(){
9502 service.setUpgradeSelectOp({selectOp:'1'},function(result){
9503 if (result.result == "success"){
9504 sf_showFotaCurrentStatus();
9505 }});
9506 }
9507
9508 function cancelFotaUpgrade(){
9509 service.setUpgradeSelectOp({selectOp:'0'},function(result){ });
9510 }
9511
9512
9513 function refreshFotaStatusForUserSelector(choice){
9514 var info = getCurrentStatusInfo();
9515 if(choice){
9516 var modeData = service.getOpMode();
9517 if (!checkConnectedStatus(info.connectStatus, modeData.rj45_state, info.connectWifiStatus)) {
9518 showAlert("ota_network_disconnected");
9519 return;
9520 }
9521
9522 if(info.fota_user_selector == 'none'){
9523 sf_startFotaUpgrade();
9524 }else if(info.fota_user_selector == 'accept'){
9525 sf_showFotaCurrentStatus();
9526 }else if(info.fota_user_selector == 'cancel'){
9527 showAlert("ota_have_cancel");
9528 }else if(info.fota_user_selector == 'downloading_cancel'){
9529 showAlert("ota_have_cancel");
9530 }
9531 }else{
9532 if(info.fota_user_selector == 'none'){
9533 cancelFotaUpgrade();
9534 }else if(info.fota_user_selector == 'accept'){
9535 sf_showFotaCurrentStatus();
9536 }else if(info.fota_user_selector == 'cancel'){
9537 // todo:
9538 }else if(info.fota_user_selector == 'downloading_cancel'){
9539 // todo:
9540 }
9541 }
9542 }
9543
9544
9545 // ÏÔʾÓÐа汾»òÏÂÔØÖжÏÊÇ·ñ¼ÌÐøÌáʾ
9546 function showFotaStatusForUserToConfirm(upgradeState) {
9547 var upgState = upgradeState.current_upgrade_state;
9548 if (upgState == 'upgrade_pack_redownload') {
9549 showConfirm("ota_interrupted", {ok: function () {
9550 refreshFotaStatusForUserSelector(1);
9551 }, no: function () {
9552 refreshFotaStatusForUserSelector(0);
9553 }});
9554 } else {
9555 var upgradingState = ["prepare_install", "low_battery",
9556 "connecting_server", "connect_server_success", "downloading", "accept"];
9557 if ($.inArray(upgState, upgradingState) != -1) {
9558 sf_showFotaCurrentStatus();
9559 } else {
9560
9561 showConfirm($.i18n.prop('ota_new_version'), {ok: function () {
9562 refreshFotaStatusForUserSelector(1);
9563 config.ISNOW_NOTICE = false;
9564 }, no: function () {
9565 refreshFotaStatusForUserSelector(0);
9566 config.ISNOW_NOTICE = false;
9567 }});
9568 }
9569 }
9570 }
9571
9572 showOTAAlert = function () {
9573 config.ISNOW_NOTICE = true;
9574 var is_mandatory = service.getMandatory().is_mandatory;
9575 if (is_mandatory) {
9576 sf_showFotaCurrentStatus();
9577 } else {
9578 var upgradeState = {};
9579 upgradeState = service.getCurrentUpgradeState();
9580 showFotaStatusForUserToConfirm(upgradeState);
9581 }
9582 };
9583
9584 // ÖÕÖ¹FotaÉý¼¶
9585 stopOTAUpgrade = function () {
9586 service.setUpgradeSelectOp({selectOp:'2'},function(result){ });
9587 sv_fotaUpdateCancel = false;
9588 window.clearTimeout(sv_timer);
9589 hideLoading();
9590 showAlert('ota_cancel');
9591 };
9592
9593 // ÉèÖÃÁ÷Á¿ÌáÐÑÊÇ·ñÌáÐѹý
9594 function setTrafficAlertPopuped(val){
9595 sv_trafficAlertPopuped = !!val;
9596 sv_trafficAlertPopuped_100 = !!val;
9597 if(!val){
9598 sv_resetTrafficAlertPopuped = true;
9599 }
9600 }
9601
9602 function setTrafficAlert100Popuped(val){
9603 sv_trafficAlertPopuped_100 = !!val;
9604 if(!val){
9605 sv_resetTrafficAlertPopuped = true;
9606 }
9607 }
9608
9609 // ¼ÆËãÁ÷Á¿½á¹¹
9610 function getTrafficResult(info){
9611 var s_trafficResult = {
9612 showConfirm : false,
9613 limitPercent : info.limitVolumePercent
9614 };
9615 if(info.limitVolumeType == '1'){
9616 var monthlyTraffic = parseInt(info.data_counter.monthlySent, 10) + parseInt(info.data_counter.monthlyReceived, 10);
9617 s_trafficResult.usedPercent = monthlyTraffic / info.limitVolumeSize * 100;
9618 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9619 s_trafficResult.showConfirm = true;
9620 s_trafficResult.type = 'data';
9621 }
9622 }else{
9623 s_trafficResult.usedPercent = info.data_counter.monthlyConnectedTime / info.limitVolumeSize * 100;
9624 if(s_trafficResult.usedPercent > s_trafficResult.limitPercent){
9625 s_trafficResult.showConfirm = true;
9626 s_trafficResult.type = 'time';
9627 }
9628 }
9629 return s_trafficResult;
9630 }
9631
9632 // ³õʼ»¯ ViewModel£¬²¢½øÐÐÊÓͼ°ó¶¨
9633 function init() {
9634 if(config.PRODUCT_TYPE == 'DATACARD') {
9635 $('#statusBar').addClass('padding-right-90');
9636 $('#language').addClass('data-card-language');
9637 }
9638 //preload img
9639 var imgAlert = $('<img />').attr('src', 'pic/res_alert.png');
9640 var imgConfirm = $('<img />').attr('src', 'pic/res_confirm.png');
9641 var imgInfo = $('<img />').attr('src', 'pic/res_info.png');
9642
9643 window.setTimeout(function () {
9644
9645 var fwVm = new statusViewModel();
9646
9647 ko.applyBindings(fwVm, $('#statusBar')[0]);
9648
9649 window.setInterval(function () {
9650 var info = getCurrentStatusInfo();
9651 var s_roamStatus = info.roamingStatus ? true : false;
9652 var $langLogoBar = $("#langLogoBar");
9653 isLoggedIn = info.isLoggedIn;
9654
9655
9656 //fwVm.attachedDevices(info.attachedDevices);
9657 fwVm.batteryLevel(info.batteryLevel + '%');
9658 fwVm.batteryPers(sf_getBatteryLevelImage(info.batteryPers, info.batteryStatus));
9659 fwVm.batteryStatus(info.batteryStatus);
9660 fwVm.isShowFotaNewversionIcon(info.new_version_state && info.fota_user_selector && info.fota_package_already_download != "yes" && config.ISNOW_NOTICE && fwVm.updateType() == 'mifi_fota');
9661 fwVm.isShowRj45ConnectionIcon(config.RJ45_SUPPORT);
9662 fwVm.networkOperator(sf_getNetWorkProvider(info.spn_b1_flag,info.spn_name_data,info.spn_b2_flag,info.networkOperator,s_roamStatus));
9663 fwVm.networkType(getNetworkType(info.networkType));
9664 fwVm.pinStatus(info.pinStatus);
9665 fwVm.roamingStatus(info.roamingStatus ? "R" : "");
9666 fwVm.showAttachedDevices(info.wifiStatus);
9667 fwVm.simStatus(sf_convertSimStatusToImage(info.simStatus));
9668 fwVm.signalCssClass(sf_getSignalCssClass(info.signalImg, info.networkType, info.simStatus));
9669 fwVm.isLoggedIn(info.isLoggedIn);
9670 fwVm.wifiStatusCssClass(sf_getWifiStatusCssClass(info.wifiStatus, info.wirelessDeviceNum));
9671 fwVm.wifiStatusImg(sf_getWifiStatusImage(info.wifiStatus, info.wirelessDeviceNum));
9672
9673 if(config.HAS_SMS ){
9674 if(!sv__hasCheckedSMSCapacity && info.isLoggedIn){
9675 checkSMSCapacity(info.smsUnreadCount);
9676 } else {
9677 fwVm.smsUnreadCount(info.smsUnreadCount);
9678 }
9679 }
9680
9681 sf_getConnectionCssClass(fwVm, info.connectStatus, info.data_counter, info.connectWifiSSID, info.connectWifiStatus, info.rj45ConnectStatus);
9682 refreshWifiConnectStatus(fwVm, info.connectStatus,info.connectWifiSSID,info.connectWifiStatus);
9683 checkTrafficLimitAlert(fwVm, info);
9684 updateStatusBarTrans({simStatus: info.simStatus, wifiStatus: info.wifiStatus, deviceSize: info.wirelessDeviceNum, networkType: info.networkType});
9685
9686 if(info.isLoggedIn){
9687 $("#statusBar:hidden").show();
9688 } else {
9689 $("#statusBar:visible").hide();
9690 }
9691 }, 500);
9692
9693 if(config.HAS_SMS){
9694 window.setInterval(function(){
9695 if(fwVm.isLoggedIn()){
9696 checkSMSCapacity();
9697 }
9698 }, 10000);
9699 checkSmsModelReady();
9700 }
9701
9702 window.setInterval(function() {
9703 var data = getCurrentStatusInfo();
9704 var upgradingState = ["prepare_install", "low_battery", "download_success","downloading"];
9705
9706 if (fwVm.isLoggedIn() == true && !($("#progress").is(":visible")) && data.defaultWanName != ""){
9707 if ($.inArray(data.current_upgrade_state, upgradingState) != -1){
9708 if(null == sv_fotaUpdateCancel){
9709 if(!data.is_mandatory){
9710 $.modal.close();
9711 }
9712 sf_showFotaCurrentStatus();
9713 }else if(false == sv_fotaUpdateCancel){
9714 sv_fotaUpdateCancel = null;
9715 }
9716 }
9717 }
9718 }, 1000);
9719
9720 var checkFotaUpgradeResult = function () {
9721 var info = service.getStatusInfo();
9722 if (info.isLoggedIn) {
9723 service.getUpgradeResult({}, function (data) {
9724 if (data.upgrade_result == "success") {
9725 sf_showFotaUpdateResult(true);
9726 } else if (data.upgrade_result == "fail") {
9727 sf_showFotaUpdateResult(false);
9728 } else {
9729 window.setTimeout(checkFotaUpgradeResult, 1000);
9730 }
9731 }, function () {
9732 window.setTimeout(checkFotaUpgradeResult, 1000);
9733 });
9734 } else {
9735 window.setTimeout(checkFotaUpgradeResult, 1000);
9736 }
9737 };
9738 if(fwVm.updateType() == "mifi_fota"){
9739 checkFotaUpgradeResult();
9740 window.setInterval(function () {
9741 var info = getCurrentStatusInfo();
9742 if (info.isLoggedIn && info.defaultWanName != "") {
9743 if(info.new_version_state && info.fota_package_already_download != "yes" && !config.ALREADY_NOTICE){
9744 service.getUpgradeResult({}, function (data) {
9745 if (data.upgrade_result == "success") {
9746 sf_showFotaUpdateResult(true);
9747 } else if (data.upgrade_result == "fail") {
9748 sf_showFotaUpdateResult(false);
9749 } else {
9750 if(sv_fotaResultAlertPopuped == false){
9751 config.ALREADY_NOTICE = true;
9752 showOTAAlert();
9753 }
9754 }
9755 });
9756 }
9757 }
9758 }, 1000);
9759 }
9760 function checkSMSCapacity(unreadCount){
9761 service.getSmsCapability({}, function(info){
9762 var showSmsConfirm = false;
9763 if(info.nvTotal != 0 && info.nvUsed >= info.nvTotal){
9764 $("#sms_unread_count").attr("tipTitle", "sms_capacity_is_full");
9765 showSmsConfirm = true;
9766 } else if(info.nvTotal != 0 && info.nvUsed + 5 >= info.nvTotal) {
9767 $("#sms_unread_count").attr("tipTitle", "sms_capacity_will_full");
9768 showSmsConfirm = true;
9769 } else {
9770 $("#sms_unread_count").attr("tipTitle", "sms_unread_count");
9771 }
9772 fwVm.showSmsDeleteConfirm(showSmsConfirm);
9773 if(typeof unreadCount != "undefined"){
9774 fwVm.smsUnreadCount(unreadCount);
9775 }
9776 sv__hasCheckedSMSCapacity = true;
9777 });
9778 }
9779 }, 1200);
9780
9781 tooltip.init();
9782
9783 // ¼ì²é¶ÌϢģ¿é³õʼ»¯×´Ì¬
9784 function checkSmsModelReady(){
9785 var info = getCurrentStatusInfo();
9786 if(info.isLoggedIn){
9787 service.getSMSReady({}, function (data) {
9788 if (data.sms_cmd_status_result == "1") {
9789 window.setTimeout(function(){checkSmsModelReady();}, 1000);
9790 } else {
9791 sv__initSMSCompleted = true;
9792 }
9793 });
9794 } else {
9795 window.setTimeout(function(){checkSmsModelReady();}, 1000);
9796 }
9797 }
9798
9799 // ¼ì²éä¯ÀÀÌáÐÑ״̬
9800 checkTrafficLimitAlert = function(fwVm, info){
9801 if(window.location.hash == '#entry'){
9802 return false;
9803 }
9804 var APStationEnabled = config.AP_STATION_SUPPORT ? service.getStatusInfo().ap_station_enable : 'undefined';
9805 var trafficResult = getTrafficResult(info);
9806 var inShow = $("#confirm-container:visible").length > 0;
9807 var notPPP = (config.PRODUCT_TYPE == 'CPE' && checkCableMode(info.blc_wan_mode)) ? true : false;
9808
9809 // »ñÈ¡Ap StationʹÄÜ״̬£¬ÉèÖÃÌáÐÑ·½Ê½
9810 if (config.AP_STATION_SUPPORT && (typeof APStationEnabled == "undefined" || APStationEnabled === '')) {
9811 service.refreshAPStationStatus({}, $.noop());
9812 return false;
9813 }
9814 APStationEnabled = APStationEnabled == 1;
9815
9816 if (!info.isLoggedIn || inShow || (sv_trafficAlertPopuped && sv_trafficAlertPopuped_100) || !info.limitVolumeEnable || (!APStationEnabled && !(info.connectStatus == "ppp_connected")) || notPPP) {
9817 return false;
9818 }
9819
9820 if(sv_resetTrafficAlertPopuped){
9821 window.setTimeout(function () {
9822 sv_resetTrafficAlertPopuped = false;
9823 }, 2000);
9824 return false;
9825 }
9826
9827 if(trafficResult.showConfirm){
9828
9829 var confirmMessage = null;
9830
9831 if(trafficResult.usedPercent > 100 && !sv_trafficAlertPopuped_100){
9832
9833 sv_trafficAlertPopuped = true;
9834 sv_trafficAlertPopuped_100 = true;
9835
9836 confirmMessage = {msg: APStationEnabled ? 'traffic_beyond_msg' : 'traffic_beyond_disconnect_msg'};
9837
9838 } else if (!sv_trafficAlertPopuped) {
9839
9840 sv_trafficAlertPopuped = true;
9841 sv_trafficAlertPopuped_100 = false;
9842 confirmMessage = {msg: APStationEnabled ? 'traffic_limit_msg' : 'traffic_limit_disconnect_msg',
9843 params: [trafficResult.limitPercent]};
9844 }
9845
9846 if (confirmMessage != null) {
9847 if (APStationEnabled) {
9848 showAlert(confirmMessage);
9849 } else {
9850 showConfirm(confirmMessage, function () {
9851 showLoading("disconnecting");
9852 service.disconnect({}, function (data) {
9853 if (data.result) {
9854 successOverlay();
9855 } else {
9856 errorOverlay();
9857 }
9858 });
9859 });
9860 }
9861 }
9862 }
9863 return true;
9864 };
9865
9866 // ¸üÐÂ״̬ÖеÄtooltip
9867 function updateStatusBarTrans(status){
9868 $("#statusItemSimStatus").attr("tipTitle", "sim_status_" + status.simStatus);
9869 if (status.wifiStatus) {
9870 if (status.deviceSize == 0) {
9871 $("#wifi_status").attr("tipTitle","wifi_status_on");
9872 } else {
9873 $("#wifi_status").attr("tipTitle","wifi_status" + status.deviceSize);
9874 }
9875 } else {
9876 $("#wifi_status").attr("tipTitle","wifi_status_off");
9877 }
9878 }
9879
9880
9881 // Ë¢ÐÂwifiÍøÂçÁ¬½Ó״̬
9882 function refreshWifiConnectStatus(fwVm, status, wifiSSID, wifiStatus) {
9883 fwVm.connectStatus(status);
9884 if (status == "ppp_disconnecting") {
9885 fwVm.connectStatusTrans("disconnecting");
9886 fwVm.connectStatusText($.i18n.prop("disconnecting"));
9887 } else if (status == "ppp_connecting") {
9888 fwVm.connectStatusTrans("connecting");
9889 fwVm.connectStatusText($.i18n.prop("connecting"));
9890 } else if (status == "ppp_connected") {
9891 fwVm.connectStatusTrans("connected");
9892 fwVm.connectStatusText($.i18n.prop("connected"));
9893 } else if(wifiSSID){
9894 if(wifiStatus =="dhcping" || wifiStatus =="connecting"){
9895 fwVm.connectStatus("wifi_connecting");
9896 fwVm.connectStatusTrans("connecting");
9897 fwVm.connectStatusText($.i18n.prop("connecting"));
9898 }else if(wifiStatus =="connect"){
9899 fwVm.connectStatus("wifi_connect");
9900 fwVm.connectStatusTrans("connected");
9901 fwVm.connectStatusText($.i18n.prop("connected"));
9902 }else{
9903 fwVm.connectStatus("ppp_disconnected");
9904 fwVm.connectStatusTrans("disconnected");
9905 fwVm.connectStatusText($.i18n.prop("disconnected"));
9906 }
9907 }else{
9908 fwVm.connectStatusTrans("disconnected");
9909 fwVm.connectStatusText($.i18n.prop("disconnected"));
9910 }
9911 }
9912
9913 // »ñÈ¡µ±Ç°ÍøÂç״̬
9914 getNetworkType = function(networkType) {
9915 var networkTypeTmp = networkType.toLowerCase();
9916 if (networkTypeTmp == '' || networkTypeTmp == 'limited service') {
9917 networkTypeTmp = 'limited_service';
9918 }
9919 if(networkTypeTmp == 'no service') {
9920 networkTypeTmp = 'no_service';
9921 }
9922 if (networkTypeTmp == 'limited_service' || networkTypeTmp == 'no_service') {
9923 $("#networkType", "#statusBar").attr("data-trans", "network_type_" + networkTypeTmp);
9924 return $.i18n.prop("network_type_" + networkTypeTmp);
9925 } else {
9926 $("#networkType", "#statusBar").removeAttr("data-trans");
9927 return networkType;
9928 }
9929 };
9930
9931 if(config.HAS_SMS && menu.checkIsMenuExist("sms_list")){
9932 window.setInterval(function () {
9933 var info = getCurrentStatusInfo();
9934 if(window.location.hash == "#entry" || sf_simStatusInvalid(info.simStatus)){
9935 return;
9936 }
9937 for(key in sv_messagePopStack){
9938 var val = sv_messagePopStack[key];
9939 if($.now() - val > 5000){
9940 delete(sv_messagePopStack["m" + val]);
9941 var node = $(".bubbleItem#m" + val, "#buttom-bubble");
9942 node.fadeOut(1000, function(){
9943 $(this).remove();
9944 });
9945 }
9946 }
9947 if(info.isLoggedIn){
9948 if(info.newSmsReceived && !sv_newSMSMessageInDealing){
9949 sv_newSMSMessageInDealing = true;
9950 service.resetNewSmsReceivedVar();
9951 sf_checkNewMessages();
9952 }
9953 if(info.smsReportReceived){
9954 service.resetSmsReportReceivedVar();
9955 sf_responseSmsReport();
9956 }
9957 }
9958 }, 1000);
9959
9960 if(config.SMS_DATABASE_SORT_SUPPORT){
9961 window.setInterval(function(){
9962 if(menu.checkIsMenuExist("sms_list")){
9963 var info = getCurrentStatusInfo();
9964 if(info.isLoggedIn && sv__initSMSCompleted && !sv_newSMSMessageInDealing && !sf_simStatusInvalid(info.simStatus)){
9965 sv_newSMSMessageInDealing = true;
9966 sf_checkNewMessages();
9967 }
9968 }
9969 }, 20001);
9970 }
9971 }
9972
9973 function sf_checkNewMessages(){
9974
9975 var s_tags = 1;
9976 var s_smsCount = 5;
9977
9978 if(!config.dbMsgs || config.dbMsgs.length == 0){
9979 s_smsCount = 500;
9980 s_tags = 10;
9981 }
9982 service.getSMSMessages({
9983 page : 0,
9984 smsCount : s_smsCount,
9985 nMessageStoreType : 0,
9986 tags : s_tags,
9987 orderBy : "order by id desc"
9988 }, function(data){
9989 if(data && data.messages){
9990 sf_filterNewMessage(data.messages, 0);
9991 }
9992 sv_newSMSMessageInDealing = false;
9993 });
9994 service.getSMSMessages({
9995 page : 0,
9996 smsCount : s_smsCount,
9997 nMessageStoreType : 1,
9998 tags : s_tags,
9999 orderBy : "order by id desc"
10000 }, function(data){
10001 if(data && data.messages){
10002 sf_filterNewMessage(data.messages, 1);
10003 }
10004 sv_newSMSMessageInDealing = false;
10005 });
10006 }
10007
10008 if(config.HAS_SMS){
10009 $(".bubbleItem", "#buttom-bubble").live("mouseover", function(){
10010 var $this = $(this);
10011 delete(sv_messagePopStack[$this.attr("id")]);
10012 }).live("mouseout", function(){
10013 var $this = $(this);
10014 var now = $.now();
10015 sv_messagePopStack["m" + now] = now;
10016 $this.attr("id", "m" + now);
10017 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").data("targetid", "m" + now);
10018 });
10019
10020 $(".bubbleItem h3 a.bubbleCloseBtn", "#buttom-bubble").die().live("click", function(){
10021 var id = $(this).data("targetid");
10022 delete(sv_messagePopStack[id]);
10023 var node = $(".bubbleItem#" + id, "#buttom-bubble");
10024 node.fadeOut(1000, function(){
10025 $(this).remove();
10026 });
10027 });
10028 }
10029 }
10030
10031
10032 return {
10033 init:init,
10034 setTrafficAlertPopuped: setTrafficAlertPopuped,
10035 setTrafficAlert100Popuped: setTrafficAlert100Popuped,
10036 getTrafficResult: getTrafficResult,
10037 showOTAAlert:showOTAAlert
10038 };
10039});
10040
10041// Á÷Á¿Í³¼ÆÌáÐÑÄ£¿é
10042define("status_traffic_alert","jquery knockout service statusBar echarts".split(" "),
10043
10044 function ($, ko, service, status, echarts) {
10045
10046 var sv_trafficGraph = null;
10047 var sv_sourceData = null;
10048 var sv_usedDataModified = false;
10049 var sv_usedTimeModified = false;
10050
10051 var sv_trafficStaticalInfo = {
10052 // Á÷Á¿Í¼³õʼֵ
10053 data: {
10054 alarm: {
10055
10056 itemStyle: {
10057 normal: {
10058 color: '#8CC916'
10059 }
10060 },
10061 name: '¾¯½äÇø',
10062 value: 19.7
10063 },
10064 alert: {
10065
10066 itemStyle: {
10067 normal: {
10068 color: '#FF5500'
10069 }
10070 },
10071 name: 'ÌáÐÑÖµ',
10072 value: 1
10073 },
10074 free: {
10075
10076 itemStyle: {
10077 normal: {
10078 color: '#D8D8D8'
10079 }
10080 },
10081 name: 'δʹÓÃ',
10082 value: 50
10083 },
10084 full: {
10085
10086
10087 itemStyle: {
10088 normal: {
10089 color: '#DF4313'
10090 }
10091 },
10092 name: 'Á÷Á¿³¬³ö',
10093 value: 30
10094 },
10095 left1: {
10096
10097 itemStyle: {
10098 normal: {
10099 color: '#D8D8D8'
10100 }
10101 },
10102 name: 'ÌáÐÑÖµÄÚδʹÓÃ',
10103 value: 50,
10104 },
10105 start: {
10106
10107 itemStyle: {
10108 normal: {
10109 color: '#D8D8D8'
10110 }
10111 },
10112 name: 'ÌáÐÑÖµÄÚδʹÓÃ',
10113 value: 50
10114 },
10115 used: {
10116
10117 itemStyle: {
10118 normal: {
10119 color: '#8CC916'
10120 }
10121 },
10122 name: 'ÒÑʹÓÃ',
10123 value: 30
10124 }
10125 },
10126 cacheEle: {},
10127 // ÔªËØ»ñÈ¡
10128 getEle: function (i_elementId) {
10129 if (this.cacheEle.hasOwnProperty('id')) {
10130 return this.cacheEle[i_elementId];
10131 } else {
10132 this.cacheEle[i_elementId] = $("#" + i_elementId);
10133 return this.cacheEle[i_elementId];
10134 }
10135 },
10136 // »ñÈ¡Á÷Á¿¸æ¾¯×´Ì¬Öµ
10137 fetchTrafficAlertInfo: function(){
10138 sv_sourceData = getTrafficAlertInfo();
10139 return sv_sourceData;
10140 },
10141 // »ñÈ¡Á÷Á¿ÖµºÍ¶ÔÓ¦µ¥Î»Öµ
10142 getTrafficStatisticalDatalnfo: function (i_valueInfo) {
10143 return {
10144 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10145 unit: /[A-Z]{1,2}/.exec(i_valueInfo)[0]
10146 }
10147 },
10148
10149 // »ñȡʱ¼äʱ¡¢·Ö¡¢Ãë
10150 getTrafficTimeHours: function (i_time) {
10151 var s_timeArray = i_time.split(':');
10152 return {
10153 h: parseInt(s_timeArray[0], 10),
10154 m: parseInt(s_timeArray[1], 10),
10155 s: parseInt(s_timeArray[2], 10)
10156 }
10157 },
10158 // »ñȡͳ¼ÆÊ±¼äºÍ¶ÔÓ¦µ¥Î»Öµ
10159 getTrafficTimeInfo: function (i_valueInfo) {
10160 return {
10161 data: /\d+(.\d+)?/.exec(i_valueInfo)[0],
10162 unit: /[a-z]{4,6}/.exec(i_valueInfo)[0]
10163 }
10164 },
10165 // ʱ¼ä»»Ëã³ÉS
10166 getTrafficTimeToSeconds: function (i_time) {
10167 var s_FormattedTime = this.getTrafficTimeHours(i_time);
10168 return s_FormattedTime.h * 3600 + s_FormattedTime.m * 60 + s_FormattedTime.s;
10169 },
10170 // ͨ¹ý½øÖÆ»ñÈ¡Á÷Á¿µ¥Î»
10171 getTrafficUnitByScale: function (i_scale) {
10172 if (i_scale == '1024') {
10173 return 'GB';
10174 } else if (i_scale == '1048576') {
10175 return 'TB';
10176 } else {
10177 return 'MB';
10178 }
10179 },
10180 // µ¥Î»¶ÔÓ¦Öµ»ñÈ¡
10181 getTrafficValueByStatisticalUnit: function (i_unit) {
10182 i_unit = i_unit.toLowerCase();
10183 if(i_unit == 'minute'){
10184 return '60';
10185 } else if (i_unit == 'gb') {
10186 return '1024';
10187 } else if(i_unit == 'hour'){
10188 return '3600';
10189 } else if (i_unit == 'tb') {
10190 return '1048576';
10191 } else {
10192 return '1';
10193 }
10194 },
10195
10196 // ¼ì²é±íµ¥ÊÇ·ñ¿É±à¼­
10197 isFormEditable: function (fwVm) {
10198 var s_dataPageEditState = fwVm.dataLimitTypeChecked() == '1' && (fwVm.viewEditUsedData() || fwVm.viewEditAlertData() || fwVm.viewEditTotalData());
10199 var s_timePageEditState = fwVm.dataLimitTypeChecked() == '0' && (fwVm.viewEditUsedTime() || fwVm.viewEditAlertTime() || fwVm.viewEditTotalTime());
10200 if (s_dataPageEditState || s_timePageEditState) {
10201 $('.border-color-transition:visible').addClass('attention-focus');
10202 addTimeout(function () {
10203 $('.border-color-transition:visible').removeClass('attention-focus');
10204 }, 1500);
10205 return true;
10206 } else {
10207 var s_result = false;
10208 if (fwVm.dataLimitTypeChecked() == 1) {
10209 if (fwVm.alertDataReach() == '0') {
10210 fwVm.editAlertDataHandler();
10211 s_result = true;
10212 }
10213 if (fwVm.limitDataMonth() == '0') {
10214 fwVm.editTotalDataHandler();
10215 s_result = true;
10216 }
10217 } else {
10218 if (fwVm.alertTimeReach() == '0') {
10219 fwVm.editAlertTimeHandler();
10220 s_result = true;
10221 }
10222 if (fwVm.limitTimeMonth() == '0') {
10223 fwVm.editTotalTimeHandler();
10224 s_result = true;
10225 }
10226 }
10227
10228 if (s_result) {
10229 $('.border-color-transition:visible').addClass('attention-focus');
10230 addTimeout(function () {
10231 $('.border-color-transition:visible').removeClass('attention-focus');
10232 }, 1500);
10233 }
10234 return s_result;
10235 }
10236 },
10237
10238 // Ë¢ÐÂÁ÷Á¿Í¼ÐÅÏ¢£¬Èç¸÷ÇøÓòÊýÖµ¡¢ÌáʾÓïµÈ
10239
10240 refreshFlowDiagramInfo: function (fwVm) {
10241 var s_alarm = 0;
10242 var s_left = 0;
10243 var s_left1 = 0;
10244 var s_reach = 0;
10245 var s_total = 0;
10246 var s_used = 0;
10247
10248
10249 var s_startName = $.i18n.prop("echarts_no");
10250
10251 if (sv_sourceData.dataLimitChecked == '1') { //if (fwVm.dataLimitChecked() == '1') { //¿ªÆô
10252 s_startName = $.i18n.prop("echarts_used");
10253 sv_trafficGraphOptions.series[0].data = [];
10254
10255 if (fwVm.dataLimitTypeChecked() == '1') { // Êý¾Ý
10256 sv_trafficGraphOptions.title.text = "";
10257 sv_trafficGraphOptions.series[0].data = [];
10258
10259 if (fwVm.limitDataMonth() == 0) {
10260 var s_usedData = sv_trafficStaticalInfo.data.used;
10261 s_usedData.value = 1;
10262 s_usedData.name = $.i18n.prop("echarts_used");
10263 s_usedData.selected = false;
10264 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10265 } else {
10266 s_total = fwVm.limitDataMonth() * fwVm.selectedDataUnit() * 1048576;
10267 s_used = parseInt(sv_sourceData.monthlySent, 10) + parseInt(sv_sourceData.monthlyReceived, 10);
10268 s_reach = s_total * fwVm.alertDataReach() / 100;
10269
10270 if (s_used >= s_total) {
10271 var s_fullData = sv_trafficStaticalInfo.data.full;
10272 s_fullData.value = 100;
10273 s_fullData.name = $.i18n.prop("echarts_full");
10274 sv_trafficGraphOptions.series[0].data.push(s_fullData);
10275 s_startName = $.i18n.prop("echarts_full");
10276 } else {
10277 if (s_reach > s_used) {
10278 s_left1 = s_reach - s_used;
10279 s_left = s_total - s_reach;
10280 } else {
10281 s_alarm = s_used - s_reach;
10282 s_left = s_total - s_used;
10283 }
10284
10285 var s_usedData = sv_trafficStaticalInfo.data.used;
10286 if (s_reach - s_used > 0) {
10287 s_usedData.value = s_used;
10288 } else {
10289 s_usedData.value = s_reach;
10290 }
10291 s_usedData.name = $.i18n.prop("echarts_used");
10292 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10293
10294 if (s_left1 > 0) {
10295 var s_left1Data = sv_trafficStaticalInfo.data.left1;
10296 s_left1Data.value = s_left1;
10297 s_left1Data.name = $.i18n.prop("echarts_left1");
10298 sv_trafficGraphOptions.series[0].data.push(s_left1Data);
10299 }
10300
10301 var s_alertData = sv_trafficStaticalInfo.data.alert;
10302 s_alertData.value = s_total / 200;
10303 s_alertData.name = $.i18n.prop("echarts_alert");
10304 sv_trafficGraphOptions.series[0].data.push(s_alertData);
10305
10306 if (s_alarm > 0) {
10307 var s_alarmData = sv_trafficStaticalInfo.data.alarm;
10308 s_alarmData.value = s_alarm;
10309 s_alarmData.name = $.i18n.prop("echarts_alarm");
10310 sv_trafficGraphOptions.series[0].data.push(s_alarmData);
10311 }
10312
10313 var s_freeData = sv_trafficStaticalInfo.data.free;
10314 s_freeData.value = s_left;
10315 s_freeData.name = $.i18n.prop("echarts_free");
10316 sv_trafficGraphOptions.series[0].data.push(s_freeData);
10317 }
10318 }
10319
10320 }else{// ʱ¼ä
10321
10322 sv_trafficGraphOptions.series[0].data = [];
10323
10324 if (fwVm.limitTimeMonth() == 0) {
10325 var s_usedData = sv_trafficStaticalInfo.data.used;
10326 s_usedData.value = 1;
10327 s_usedData.selected = false;
10328 s_usedData.name = $.i18n.prop("echarts_used");
10329 sv_trafficGraphOptions.series[0].data.push(s_usedData);
10330 } else {
10331 s_total = fwVm.limitTimeMonth() * fwVm.selectedTimeUnit();
10332 s_used = sv_sourceData.monthlyConnectedTime;
10333 s_reach = s_total * fwVm.alertTimeReach() / 100;
10334
10335 if (s_used >= s_total) {
10336 var fullTime = sv_trafficStaticalInfo.data.full;
10337 fullTime.value = 100;
10338 fullTime.name = $.i18n.prop("echarts_full");
10339 sv_trafficGraphOptions.series[0].data.push(fullTime);
10340 s_startName = $.i18n.prop("echarts_full");
10341 } else {
10342 if (s_reach - s_used > 0) {
10343 s_left1 = s_reach - s_used;
10344 s_left = s_total - s_reach;
10345 } else {
10346 s_alarm = s_used - s_reach;
10347 s_left = s_total - s_used;
10348 }
10349
10350 var s_usedTime = sv_trafficStaticalInfo.data.used;
10351 if (s_reach - s_used > 0) {
10352 s_usedTime.value = s_used;
10353 } else {
10354 s_usedTime.value = s_reach;
10355 }
10356 s_usedTime.name = $.i18n.prop("echarts_used");
10357 sv_trafficGraphOptions.series[0].data.push(s_usedTime);
10358
10359 if (s_left1 > 0) {
10360 var s_left1Time = sv_trafficStaticalInfo.data.left1;
10361 s_left1Time.value = s_left1;
10362 s_left1Time.name = $.i18n.prop("echarts_left1");
10363 sv_trafficGraphOptions.series[0].data.push(s_left1Time);
10364 }
10365
10366 var s_alertTime = sv_trafficStaticalInfo.data.alert;
10367 s_alertTime.value = s_total / 200;
10368 s_alertTime.name = $.i18n.prop("echarts_alert");
10369 sv_trafficGraphOptions.series[0].data.push(s_alertTime);
10370
10371 if (s_alarm > 0) {
10372 var s_alarmTime = sv_trafficStaticalInfo.data.alarm;
10373 s_alarmTime.value = s_alarm;
10374 s_alarmTime.name = $.i18n.prop("echarts_alarm");
10375 sv_trafficGraphOptions.series[0].data.push(s_alarmTime);
10376 }
10377
10378 var s_freeTime = sv_trafficStaticalInfo.data.free;
10379 s_freeTime.value = s_left;
10380 s_freeTime.name = $.i18n.prop("echarts_free");
10381 sv_trafficGraphOptions.series[0].data.push(s_freeTime);
10382 }
10383 }
10384 }
10385 } else {
10386 var s_usedData = sv_trafficStaticalInfo.data.used;
10387 s_usedData.value = 1;
10388 s_usedData.selected = false;
10389 s_usedData.name = $.i18n.prop("echarts_no");
10390
10391 sv_trafficGraphOptions.series[0].data = [s_usedData];
10392 sv_trafficGraphOptions.title.text = '';
10393 }
10394 sv_trafficStaticalInfo.setFlowDiagramInfo(sv_trafficGraphOptions, s_startName);
10395 },
10396
10397
10398 // ÖØ»æÁ÷Á¿Í¼
10399 setFlowDiagramInfo: function (i_options, i_startName) {
10400 var s_startPart = sv_trafficStaticalInfo.data.start;
10401
10402 s_startPart.name = i_startName;
10403 s_startPart.selected = false;
10404 s_startPart.value = 0;
10405
10406 var s_arr = [s_startPart].concat(i_options.series[0].data);
10407 i_options.series[0].data = s_arr;
10408 sv_trafficGraph.setOption(i_options, true);
10409
10410 addTimeout(function () {
10411 sv_trafficGraph.resize();
10412 }, 1000);
10413 }
10414 };
10415
10416
10417 // Á÷Á¿Í¼»ù±¾ÅäÖÃ
10418 var sv_trafficGraphOptions = {
10419 animation: false,
10420 color: ['red', 'red', 'red', 'red', 'red'],
10421 series: [
10422 {
10423 name: 'Á÷Á¿¿ØÖÆ',
10424 radius: ['0', '75'],
10425 selectedOffset: 3,
10426 type: 'pie',
10427 data: [
10428
10429 ],
10430 itemStyle: {
10431 normal: {
10432 labelLine: {
10433 show: false
10434 },
10435 label: {
10436 show: false
10437 }
10438 }
10439 }
10440 }
10441 ],
10442 title: {
10443 itemGap: 0,
10444 text: '',
10445 subtextStyle: {
10446 color: '#FFF',
10447 fontFamily: '΢ÈíÑźÚ',
10448 fontSize: 16,
10449 fontWeight: 'bolder'
10450 },
10451 textStyle: {
10452 color: '#FFF',
10453 fontFamily: '΢ÈíÑźÚ',
10454 fontSize: 20,
10455 fontWeight: 'bolder'
10456 },
10457 x: 'center',
10458 y: 'center'
10459 },
10460 tooltip: {
10461 formatter: "{b}"
10462 }
10463 };
10464
10465
10466 // »ñÈ¡Á÷Á¿ÌáÐÑÊý¾Ý
10467 function getTrafficAlertInfo() {
10468 return service.getTrafficAlertInfo();
10469 }
10470
10471
10472
10473 // Á÷Á¿ÌáÐÑViewModel
10474
10475 function trafficViewModel() {
10476
10477 var target = this;
10478
10479 var info = sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10480 var dataMonth = info.limitDataMonth.split("_");
10481
10482 sv_usedDataModified = false;
10483 sv_usedTimeModified = false;
10484
10485 target.alertDataReach = ko.observable(info.alertDataReach || 0);
10486 target.alertTimeReach = ko.observable(info.alertTimeReach || 0);
10487 target.dataLimitChecked = ko.observable(info.dataLimitChecked == '0' ? '0' : '1');
10488 target.dataLimitTypeChecked = ko.observable(info.dataLimitTypeChecked == '0' ? '0' : '1');
10489 target.limitTimeMonth = ko.observable(info.limitTimeMonth || 0);
10490
10491
10492 // ×¢Òâ˳Ðò
10493 target.usedDataText = ko.observable(transUnit(parseInt(info.monthlySent, 10) + parseInt(info.monthlyReceived, 10), false));
10494 var sv_staticalDataInfo = sv_trafficStaticalInfo.getTrafficStatisticalDatalnfo(target.usedDataText());
10495 var sv_staticalInfoData = sv_staticalDataInfo.data;
10496 target.dataUsed = ko.observable(sv_staticalInfoData);
10497 var sv_staticalInfoUnit = sv_staticalDataInfo.unit;
10498 target.selectedDataUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_staticalInfoUnit));
10499 target.usedDataTextDescData = ko.observable("");
10500
10501 target.limitDataMonth = ko.observable(dataMonth[0] || 0);
10502 target.selectedDataUnit = ko.observable(dataMonth[1] || 1);
10503
10504 var limitDataMonthTmp = transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1024 * 1024, false);
10505 var limitDataMonthUnitTmp = limitDataMonthTmp.substring(limitDataMonthTmp.length-2);
10506 target.limitDataMonth(limitDataMonthTmp.substring(0, limitDataMonthTmp.length-2));
10507 target.selectedDataUnit(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(limitDataMonthUnitTmp));
10508
10509 target.usedDataTextDesc = ko.computed(sf_usedDataTextDesc);
10510 target.limitDataMonthDescData = ko.observable("");
10511 target.limitDataMonthDesc = ko.computed(sf_limitDataMonthDesc);
10512 target.alertDataReachDescData = ko.observable("");
10513 target.alertDataReachDesc = ko.computed(sf_alertDataReachDesc);
10514 target.leftDataDescData = ko.observable("");
10515 target.leftDataDesc = ko.computed(sf_leftDataDesc);
10516 target.monthlyConnectedTime = ko.observable(transSecond2Time(info.monthlyConnectedTime));
10517
10518 var sv_timeInfo1 = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(info.monthlyConnectedTime));
10519 target.usedTime = ko.observable(sv_timeInfo1.data);
10520 target.selectedTimeUsedUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfo1.unit));
10521
10522 target.usedTimeTextDescData = ko.observable("");
10523 target.usedTimeTextDesc = ko.computed(sf_usedTimeTextDesc);
10524
10525 var sv_timeInfoNew = sv_trafficStaticalInfo.getTrafficTimeInfo(transTimeUnit(parseFloat(target.limitTimeMonth()) * 3600));
10526 target.selectedTimeUnit = ko.observable(sv_trafficStaticalInfo.getTrafficValueByStatisticalUnit(sv_timeInfoNew.unit));
10527 target.limitTimeMonth(sv_timeInfoNew.data);
10528
10529
10530 target.limitTimeMonthDescData = ko.observable("");
10531 target.limitTimeMonthDescText = ko.observable("traffic_limit_time_h");
10532 target.limitTimeMonthDesc = ko.computed(sf_limitTimeMonthDesc);
10533 target.alertTimeReachDescData = ko.observable("");
10534 target.alertTimeReachDesc = ko.computed(sf_alertTimeReachDesc);
10535 target.leftTimeDescData = ko.observable("");
10536 target.leftTimeDesc = ko.computed(sf_leftTimeDesc);
10537 target.save = sf_save;
10538 target.viewEditUsedData = ko.observable(false);
10539 target.editUsedDataHandler = sf_editUsedDataHandler;
10540 target.editUsedDataSaveHandler = sf_editUsedDataSaveHandler;
10541 target.saveUsedData = sf_saveUsedData;
10542 target.editUsedDataCancelHandler = sf_editUsedDataCancelHandler;
10543 target.viewEditTotalData = ko.observable(false);
10544 target.editTotalDataHandler = sf_editTotalDataHandler;
10545 target.editTotalDataSaveHandler = sf_editTotalDataSaveHandler;
10546 target.editTotalDataCancelHandler = sf_editTotalDataCancelHandler;
10547 target.viewEditAlertData = ko.observable(false);
10548 target.editAlertDataHandler = sf_editAlertDataHandler;
10549 target.editAlertDataSaveHandler = sf_editAlertDataSaveHandler;
10550 target.editAlertDataCancelHandler = sf_editAlertDataCancelHandler;
10551 target.viewEditUsedTime = ko.observable(false);
10552 target.editUsedTimeHandler = sf_editUsedTimeHandler;
10553 target.saveUsedTime = sf_saveUsedTime;
10554 target.editUsedTimeSaveHandler = sf_editUsedTimeSaveHandler;
10555 target.editUsedTimeCancelHandler = sf_editUsedTimeCancelHandler;
10556 target.viewEditTotalTime = ko.observable(false);
10557 target.editTotalTimeHandler = sf_editTotalTimeHandler ;
10558 target.editTotalTimeSaveHandler = sf_editTotalTimeSaveHandler;
10559 target.editTotalTimeCancelHandler = sf_editTotalTimeCancelHandler;
10560 target.viewEditAlertTime = ko.observable(false);
10561 target.editAlertTimeHandler = sf_editAlertTimeHandler;
10562 target.editAlertTimeSaveHandler = sf_editAlertTimeSaveHandler;
10563 target.editAlertTimeCancelHandler = sf_editAlertTimeCancelHandler;
10564 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10565
10566
10567 // Á÷Á¿ÌáÐÑÃèÊöÓï
10568 function sf_alertDataReachDesc() {
10569 if(isNaN(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach())) {
10570 target.alertDataReachDescData(target.alertDataReach() + ', ');
10571 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), ' ');
10572 }
10573
10574 var s_value = transUnit(target.limitDataMonth() * target.selectedDataUnit() * target.alertDataReach() * 1048576 / 100, false);
10575 target.alertDataReachDescData(target.alertDataReach() + ',' + s_value);
10576 return $.i18n.prop('traffic_alert_reach_text', target.alertDataReach(), s_value);
10577 }
10578 // ʱ¼äÌáÐÑÃèÊöÓï
10579 function sf_alertTimeReachDesc() {
10580 if(isNaN(target.limitTimeMonth() * target.alertTimeReach())) {
10581 target.alertTimeReachDescData(target.alertTimeReach() + ', ');
10582 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), ' ');
10583 }
10584 var s_value = transSecond2Time(target.limitTimeMonth() * target.selectedTimeUnit() * target.alertTimeReach() / 100);
10585 target.alertTimeReachDescData(target.alertTimeReach() + ',' + s_value);
10586 return $.i18n.prop('traffic_alert_reach_text', target.alertTimeReach(), s_value);
10587 }
10588
10589
10590 // Á÷Á¿ÌáÐÑֵȡÏû±à¼­°´Å¥Ê¼þ
10591 function sf_editAlertDataCancelHandler() {
10592 target.alertDataReach(sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue'));
10593 target.viewEditAlertData(false);
10594 }
10595
10596 // Á÷Á¿ÌáÐÑÖµ±à¼­°´Å¥Ê¼þ
10597 function sf_editAlertDataHandler() {
10598 sv_trafficStaticalInfo.getEle('editAlertData').data('oldValue', target.alertDataReach());
10599 target.viewEditAlertData(true);
10600 }
10601
10602 // Á÷Á¿ÌáÐÑÖµ±£´æ±à¼­°´Å¥Ê¼þ
10603 function sf_editAlertDataSaveHandler() {
10604 if (sv_trafficStaticalInfo.getEle('alertDataReach').valid()) {
10605 target.viewEditAlertData(false);
10606 }
10607 }
10608
10609 // ʱ¼äÌáÐÑֵȡÏû±à¼­°´Å¥Ê¼þ
10610 function sf_editAlertTimeCancelHandler() {
10611 target.alertTimeReach(sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue'));
10612 target.viewEditAlertTime(false);
10613 }
10614 // ʱ¼äÌáÐÑÖµ±à¼­°´Å¥Ê¼þ
10615 function sf_editAlertTimeHandler() {
10616 sv_trafficStaticalInfo.getEle('editAlertTime').data('oldValue', target.alertTimeReach());
10617 target.viewEditAlertTime(true);
10618 }
10619 // ʱ¼äÌáÐÑÖµ±£´æ±à¼­°´Å¥Ê¼þ
10620 function sf_editAlertTimeSaveHandler() {
10621 if (sv_trafficStaticalInfo.getEle('alertTimeReach').valid()) {
10622 target.viewEditAlertTime(false);
10623 }
10624 }
10625
10626 // ÌײÍÁ÷Á¿±à¼­°´Å¥Ê¼þ
10627 function sf_editTotalDataHandler() {
10628 sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue', target.limitDataMonth());
10629 sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue', target.selectedDataUnit());
10630 target.viewEditTotalData(true);
10631 }
10632
10633 // ÌײÍÁ÷Á¿±£´æ±à¼­°´Å¥Ê¼þ
10634 function sf_editTotalDataSaveHandler() {
10635 if (sv_trafficStaticalInfo.getEle('limitDataMonth').valid()) {
10636 target.usedDataText(transUnit(target.limitDataMonth() * target.selectedDataUnit() * 1048576, false));
10637 target.viewEditTotalData(false);
10638 }
10639 }
10640
10641 // ÌײÍÁ÷Á¿È¡Ïû±à¼­°´Å¥Ê¼þ
10642 function sf_editTotalDataCancelHandler() {
10643 target.limitDataMonth(sv_trafficStaticalInfo.getEle('editTotalData').data('oldValue'));
10644 target.selectedDataUnit(sv_trafficStaticalInfo.getEle('selectedDataUnit').data('oldValue'));
10645 target.viewEditTotalData(false);
10646 }
10647 // ÌײÍʱ¼äÈ¡Ïû±à¼­°´Å¥Ê¼þ
10648 function sf_editTotalTimeCancelHandler() {
10649 target.limitTimeMonth(sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue'));
10650 target.viewEditTotalTime(false);
10651 }
10652 // ÌײÍʱ¼ä±à¼­°´Å¥Ê¼þ
10653 function sf_editTotalTimeHandler() {
10654 sv_trafficStaticalInfo.getEle('editTotalTime').data('oldValue', target.limitTimeMonth());
10655 target.viewEditTotalTime(true);
10656 }
10657 // ÌײÍʱ¼ä±£´æ±à¼­°´Å¥Ê¼þ
10658 function sf_editTotalTimeSaveHandler() {
10659 if (sv_trafficStaticalInfo.getEle('limitTimeMonth').valid()) {
10660 target.viewEditTotalTime(false);
10661 }
10662 }
10663
10664 // ÒÑÓÃÁ÷Á¿È¡Ïû±à¼­°´Å¥Ê¼þ
10665 function sf_editUsedDataCancelHandler() {
10666 target.dataUsed(sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue'));
10667 target.selectedDataUsedUnit(sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue'));
10668 sv_trafficStaticalInfo.getEle('editUsedDataCancel').siblings('label.error').hide();
10669 target.viewEditUsedData(false);
10670 }
10671 // ÒÑÓÃÁ÷Á¿±à¼­°´Å¥Ê¼þ
10672 function sf_editUsedDataHandler() {
10673 sv_trafficStaticalInfo.getEle('editUsedData').data('oldValue', target.dataUsed());
10674 sv_trafficStaticalInfo.getEle('selectedDataUsedUnit').data('oldValue', target.selectedDataUsedUnit());
10675 target.dataUsed(target.dataUsed());
10676 target.viewEditUsedData(true);
10677 }
10678 // ÒÑÓÃÁ÷Á¿±£´æ°´Å¥Ê¼þ
10679 function sf_editUsedDataSaveHandler() {
10680 if (sv_trafficStaticalInfo.getEle('dataUsed').valid()) {
10681 sv_usedDataModified = true;
10682 target.viewEditUsedData(false);
10683 }
10684 }
10685 // ÒÑÓÃʱ¼äÈ¡Ïû±à¼­°´Å¥Ê¼þ
10686 function sf_editUsedTimeCancelHandler() {
10687 target.usedTime(sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue'));
10688 target.viewEditUsedTime(false);
10689 }
10690 // ÒÑÓÃʱ¼ä±à¼­°´Å¥Ê¼þ
10691 function sf_editUsedTimeHandler() {
10692 sv_trafficStaticalInfo.getEle('editUsedTime').data('oldValue', target.usedTime());
10693 target.viewEditUsedTime(true);
10694 }
10695
10696 // ÒÑÓÃʱ¼ä±£´æ±à¼­°´Å¥Ê¼þ
10697 function sf_editUsedTimeSaveHandler() {
10698 if (sv_trafficStaticalInfo.getEle('usedTime').valid()) {
10699 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
10700 target.viewEditUsedTime(false);
10701 sv_usedTimeModified = true;
10702 }
10703 }
10704
10705 // Ê£ÓàÁ÷Á¿ÃèÊöÓï
10706 function sf_leftDataDesc() {
10707 var s_left = (target.limitDataMonth() * target.selectedDataUnit() - target.dataUsed() * target.selectedDataUsedUnit()) * 1048576;
10708 if(s_left < 0) {
10709 s_left = 0;
10710 }
10711
10712 if(isNaN(s_left)) {
10713 target.leftDataDescData('');
10714 return $.i18n.prop('traffic_data_left_text', ' ');
10715 }
10716
10717 target.leftDataDescData(transUnit(s_left, false));
10718 return $.i18n.prop('traffic_data_left_text', transUnit(s_left, false));
10719 }
10720 //Ê£Óàʱ¼äÃèÊöÓï
10721 function sf_leftTimeDesc() {
10722 var s_surplus = target.limitTimeMonth() * target.selectedTimeUnit() - sv_trafficStaticalInfo.getTrafficTimeToSeconds(target.monthlyConnectedTime());
10723 if(s_surplus < 0) {
10724 s_surplus = 0;
10725 }
10726
10727 if(isNaN(s_surplus)) {
10728 target.leftTimeDescData(' ');
10729 return $.i18n.prop('traffic_data_left_text', ' ');
10730 }
10731 target.leftTimeDescData(transSecond2Time(s_surplus));
10732 return $.i18n.prop('traffic_data_left_text', transSecond2Time(s_surplus));
10733 }
10734 // ÌײÍÁ÷Á¿ÃèÊöÓï
10735 function sf_limitDataMonthDesc() {
10736 if(isNaN(target.limitDataMonth())) {
10737 target.limitDataMonthDescData("");
10738 return $.i18n.prop('traffic_limit_data_text', ' ');
10739 }else{
10740 // todo
10741 }
10742
10743 target.limitDataMonthDescData(target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
10744 return $.i18n.prop('traffic_limit_data_text', target.limitDataMonth() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUnit()));
10745 }
10746 // ÌײÍʱ¼äÃèÊöÓï
10747 function sf_limitTimeMonthDesc() {
10748 if(isNaN(target.limitTimeMonth())) {
10749 target.limitTimeMonthDescData(' ');
10750 target.limitTimeMonthDescText('traffic_limit_time_h');
10751 return $.i18n.prop('traffic_limit_time_h', ' ');
10752 }else{
10753 // todo:
10754 }
10755
10756 target.limitTimeMonthDescData(target.limitTimeMonth());
10757
10758 if(target.selectedTimeUnit() == "60"){
10759 target.limitTimeMonthDescText('traffic_limit_time_m');
10760 return $.i18n.prop('traffic_limit_time_m', target.limitTimeMonth());
10761 }else{
10762 target.limitTimeMonthDescText('traffic_limit_time_h');
10763 return $.i18n.prop('traffic_limit_time_h', target.limitTimeMonth());
10764 }
10765 }
10766
10767 // Ó¦Óð´Å¥Ê¼þ
10768 function sf_save() {
10769 if (sv_trafficStaticalInfo.isFormEditable(target) && target.dataLimitChecked() == '1') {
10770 return false;
10771 }
10772
10773 if (target.selectedDataUnit() == '1' && target.selectedDataUsedUnit() == '1048576' && target.dataLimitTypeChecked() == "1" && target.dataLimitChecked() == '1' && !(parseInt(target.dataUsed(), 10) < parseInt('4096', 10)) ) {
10774 showAlert('traffic_over_note');
10775 return false;
10776 }
10777
10778 showLoading();
10779 service.setTrafficAlertInfo({
10780 alertDataReach: parseInt(target.alertDataReach(), 10),
10781 alertTimeReach: parseInt(target.alertTimeReach(), 10),
10782 dataLimitChecked: target.dataLimitChecked(),
10783 dataLimitTypeChecked: target.dataLimitTypeChecked(),
10784 limitDataMonth: target.limitDataMonth() + "_" + target.selectedDataUnit(),
10785 limitTimeMonth: target.selectedTimeUnit() == "60" ? target.limitTimeMonth()/60 : target.limitTimeMonth()//save by hours
10786 }, function (data) {
10787 if (data.result == 'success') {
10788 if(target.dataLimitTypeChecked() == "1" && sv_usedDataModified) {
10789 target.saveUsedData();
10790 } else if(target.dataLimitTypeChecked() == "0" && sv_usedTimeModified) {
10791 target.saveUsedTime();
10792 } else {
10793 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10794 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10795 status.setTrafficAlertPopuped(false);
10796 successOverlay();
10797 }
10798 } else {
10799 errorOverlay();
10800 }
10801 }, function () {
10802 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10803 errorOverlay();
10804 });
10805 }
10806
10807 // ±£´æÒÑÓÃÊý¾ÝÁ÷Á¿
10808 function sf_saveUsedData() {
10809 var val = target.dataUsed() * target.selectedDataUsedUnit();
10810 service.trafficCalibration({
10811 way: 'data',
10812 value: val
10813 }, function(){
10814 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10815 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10816 successOverlay();
10817 target.viewEditUsedData(false);
10818 status.setTrafficAlertPopuped(false);
10819 sv_usedDataModified = false;
10820 }, function(){
10821 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10822 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10823 errorOverlay();
10824 });
10825 }
10826
10827
10828
10829 function sf_saveUsedTime() {
10830 service.trafficCalibration({
10831 way: 'time',
10832 value: target.selectedTimeUsedUnit() == "60" ? parseFloat(target.usedTime())/60 : target.usedTime()
10833 }, function(){
10834 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10835 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10836 successOverlay();
10837 target.monthlyConnectedTime(transSecond2Time(parseFloat(target.usedTime()) * target.selectedTimeUsedUnit()));
10838 target.viewEditUsedTime(false);
10839 status.setTrafficAlertPopuped(false);
10840 sv_usedTimeModified = false;
10841 }, function(){
10842 sv_trafficStaticalInfo.fetchTrafficAlertInfo();
10843 sv_trafficStaticalInfo.refreshFlowDiagramInfo(target);
10844 errorOverlay();
10845 });
10846 }
10847
10848
10849 // ÒÑÓÃÁ÷Á¿ÃèÊöÓï
10850 function sf_usedDataTextDesc() {
10851 if(isNaN(target.dataUsed())) {
10852 target.usedDataTextDescData("");
10853 return $.i18n.prop('traffic_used_text', ' ');
10854 }
10855 target.usedDataTextDescData(target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
10856 return $.i18n.prop('traffic_used_text', target.dataUsed() + sv_trafficStaticalInfo.getTrafficUnitByScale(target.selectedDataUsedUnit()));
10857 }
10858 // ÒÑÓÃʱ¼äÃèÊöÓï
10859 function sf_usedTimeTextDesc() {
10860 target.usedTimeTextDescData(target.monthlyConnectedTime());
10861 return $.i18n.prop('traffic_used_text', target.monthlyConnectedTime());
10862 }
10863
10864
10865 }
10866
10867 function init() {
10868 sv_trafficGraph = echarts.init($("#traffic_graphic")[0]);
10869 window.onresize = sv_trafficGraph.resize;
10870 var s_container = $('#container');
10871 ko.cleanNode(s_container[0]);
10872 var fwVm = new trafficViewModel();
10873 ko.applyBindings(fwVm, s_container[0]);
10874 $('#trafficAlertForm').validate({
10875 submitHandler: function () {
10876 fwVm.save();
10877 },
10878
10879
10880 errorPlacement: function (error, para) {
10881 if (para.attr("name") == "alertDataReach") {
10882 error.insertAfter("#editAlertDataDiv");
10883 } else if (para.attr("name") == "alertTimeReach") {
10884 error.insertAfter("#editAlertTimeDiv");
10885 } else if (para.attr("name") == "dataUsed") {
10886 error.insertAfter("#editUsedDataDiv");
10887 } else if (para.attr("name") == "limitDataMonth") {
10888 error.insertAfter("#editTotalDataDiv");
10889 } else if (para.attr("name") == "limitTimeMonth") {
10890 error.insertAfter("#editTotalTimeDiv");
10891 } else if (para.attr("name") == "usedTime") {
10892 error.insertAfter("#editUsedTimeDiv");
10893 } else {
10894 error.insertAfter(para);
10895 }
10896 },
10897
10898 rules: {
10899 alertDataReach: {
10900 range: [ 1, 100 ],
10901 digits: true
10902 },
10903 alertTimeReach: {
10904 range: [ 1, 100 ],
10905 digits: true
10906 },
10907 dataUsed: {
10908 range : [ 0, 9999 ],
10909 decimalRange : true
10910 },
10911 limitDataMonth: {
10912 range : [ 1, 9999 ],
10913 decimalRange : true
10914 },
10915 limitTimeMonth: {
10916 range : [ 1, 9999 ],
10917 decimalRange : true
10918 },
10919 usedTime: {
10920 range : [ 0, 9999 ],
10921 decimalRange : true
10922 }
10923 }
10924
10925 });
10926
10927 var sv_originalLan = window.language;
10928 window.setInterval(function(){
10929 if(sv_originalLan != window.language){
10930 sv_originalLan = window.language;
10931 sv_trafficStaticalInfo.refreshFlowDiagramInfo(fwVm);
10932 }
10933 }, 1000);
10934
10935 }
10936
10937 return {
10938 init: init
10939 };
10940});
10941
10942// ״̬À¸ÌáʾÓïʵÏÖ
10943define("tooltip",[ "jquery" ],
10944
10945 function($) {
10946
10947
10948 // ¼ÆËãÔªËØÎ»ÖÃÐÅÏ¢
10949 // @method calculatePositionInfo
10950 // @param trigger ÔªËØ
10951 // @param tooltip ״̬À¸
10952 // @param {JSON} config λÖÃÅäÖÃ
10953
10954 function calculatePositionInfo(trigger, tooltip, config) {
10955 var top = trigger.offset().top;
10956 var left = trigger.offset().left;
10957 var position = config.position[0];
10958 var height = tooltip.outerHeight() + trigger.outerHeight();
10959 var width = tooltip.outerWidth() + trigger.outerWidth();
10960
10961 top -= tooltip.outerHeight() - config.offset[0];
10962 left += trigger.outerWidth() + config.offset[1];
10963
10964 if (/iPad/i.test(navigator.userAgent)) {
10965 top -= $(window).scrollTop();
10966 }
10967
10968 if (position == 'center') {
10969 top += height / 2;
10970 }
10971 if (position == 'bottom') {
10972 top += height;
10973 }
10974 position = config.position[1];
10975 if (position == 'center') {
10976 left -= width / 2;
10977 }else if (position == 'left') {
10978 left -= width;
10979 }
10980
10981 return {
10982 top : top,
10983 left : left
10984 };
10985 }
10986
10987 // ״̬À¸³õʼ»¯
10988 function init() {
10989
10990 $(".statusItem", "#statusBar").each(function(i, n){
10991 var $this = $(this);
10992 $this.attr("tipTitle", $this.attr("title")).removeAttr("title");
10993 }).hover(
10994 function() {
10995 var $this = $(this);
10996 var title = $this.attr("tipTitle");
10997 var tooltip = $("<div>").addClass("tooltip in").appendTo(document.body).hide()
10998 .append($this.attr("i18n") ? $.i18n.prop(title) : title);
10999 if ($this.attr("i18n")) {
11000 tooltip.attr("data-trans", title).attr("id", "tooltip_" + $this.attr("id"));
11001 }
11002 var pos = calculatePositionInfo($this, tooltip, {
11003 position : [ 'bottom', 'center' ],
11004 offset : [ 0, 0 ]
11005 });
11006 tooltip.css({
11007 position : 'absolute',
11008 top : pos.top,
11009 left : pos.left
11010 }).show();
11011 }, function() {
11012 $(".tooltip").hide().remove();
11013 });
11014 }
11015
11016 return {
11017 init : init
11018 };
11019 });
11020
11021define("menu","set service knockout underscore jquery".split(" "),
11022 function (set, fnc, libko, libus, libjq) {
11023 var displayMenuWhenLogout = false;
11024 var vmMenu;
11025 var menu = [];
11026 var menuResource = "";
11027
11028 function menuExistCheck(path) {
11029 for (var i = 0; i < menu.length; i++) {
11030 if (menu[i].path == path) {
11031 return true;
11032 }
11033 }
11034 return false;
11035 }
11036
11037 function getIsLoggedin() {
11038 var loginStatus = fnc.getLoginStatus();
11039 return (loginStatus.status == "loggedIn");
11040 }
11041
11042 function buildNew() {
11043 var loggedIn = getIsLoggedin();
11044 var menuMain = libus.filter(menu, function (param) {
11045 return (param.level == '1' && ((param.requireLogin && loggedIn) || !param.requireLogin) && param.hash != "#entry");
11046 });
11047 vmMenu.menuMain(menuMain);
11048 vmMenu.loggedIn(loggedIn);
11049
11050 getMainWth(vmMenu.menuMain().length);
11051 vmMenu.showMenu(loggedIn || displayMenuWhenLogout);
11052 libjq("#nav").translate();
11053 }
11054
11055 function getMainWth(len) {
11056 var width = 100 / len;
11057 libjq('ul#list-nav li').each(function () {
11058 libjq(this).css('width', width + '%');
11059 });
11060 }
11061
11062 function menuRefresh() {
11063 var currentHash = window.location.hash;
11064 var itmRoot = libus.find(menu, function (param) {
11065 return param.hash == currentHash;
11066 });
11067 while (itmRoot.parent) {
11068 itmRoot = libus.find(menu, function (param) {
11069 return param.hash == itmRoot.parent;
11070 });
11071 }
11072 if (!itmRoot.parent) {
11073 libjq("#list-nav li").removeClass("active");
11074 var mid = itmRoot.hash.substring(1, itmRoot.hash.length);
11075 libjq("#list-nav li[mid=" + mid + "]").addClass("active");
11076 }
11077 vmMenu.changeMenu(itmRoot);
11078 }
11079
11080 function menuSearch(hashVal) {
11081 hashVal = hashVal || window.location.hash;
11082 var loggedIn = getIsLoggedin();
11083 return libus.filter(menu, function (param) {
11084 return (hashVal == param.hash && ((param.requireLogin && loggedIn) || !param.requireLogin));
11085 });
11086 }
11087
11088 function menuRenderSub(level, baseItem) {
11089 var levelItem = libus.find(menu, function (param) {
11090 return param.parent == baseItem.hash && param.path == baseItem.path;
11091 });
11092 libjq(".menu-" + level + "-level").removeClass("active");
11093 if (levelItem) {
11094 if (level == "two") {
11095 menuRenderSub("three", levelItem);
11096 //forward/backward support
11097 clickMenuTrig(levelItem.hash, level);
11098 }
11099 libjq(".menu-" + level + "-level." + levelItem.hash.substring(1)).addClass("active");
11100 }
11101 }
11102
11103 function menuActSub() {
11104 var currentHash = window.location.hash;
11105 var itmRoot = libus.find(menu, function (param) {
11106 return param.hash == currentHash;
11107 });
11108 if (itmRoot.level == 1) {
11109 menuRenderSub("two", itmRoot);
11110 }
11111 if (itmRoot.level == 2) {
11112 menuRenderSub("three", itmRoot);
11113 //forward/backward support
11114 clickMenuTrig(itmRoot.hash, itmRoot.level);
11115 }
11116 if (itmRoot.level == 3) {
11117 //forward/backward support
11118 clickMenuTrig(itmRoot.parent, itmRoot.level);
11119 libjq(".menu-three-level").removeClass("active");
11120 libjq(".menu-three-level." + itmRoot.hash.substring(1)).addClass("active");
11121 }
11122 }
11123
11124 function clickMenuTrig(hash, level) {
11125 libjqobj = libjq(".menu-two-level." + hash.substring(1));
11126 var levelArr = ['3', 'three', '2', 'two'];
11127 if (libus.indexOf(levelArr, level) != -1 && libjqobj.hasClass('active')) {
11128 return;
11129 }
11130
11131 libjqobj.siblings().removeClass('active');
11132 libjqobj.addClass('active');
11133
11134 libjqobj.siblings().not('.menu-two-level').slideUp();
11135 libjqobj.next().has('ul li').slideDown();
11136 }
11137
11138 set.blc_wan_mode = fnc.getOpMode().blc_wan_mode;
11139 if (!set.RJ45_SUPPORT) {
11140 menuResource = "menu";
11141 } else {
11142 switch (set.blc_wan_mode) {
11143 case "PPPOE":
11144 case "AUTO_PPPOE":
11145 menuResource = "menu_pppoe";
11146 break;
11147 default:
11148 menuResource = "menu";
11149 break;
11150 }
11151 }
11152
11153 require([set.DEVICE + '/' + menuResource], function (otherMenu) {
11154 menu = otherMenu;
11155 if (set.SD_CARD_SUPPORT) {
11156 menu = menu.concat([{ hash: '#httpshare_guest', path: 'sd_httpshare', level: '', requireLogin: false, checkSIMStatus: false},
11157 { hash: '#sdcard', path: 'sd', level: '', requireLogin: true, checkSIMStatus: false},
11158 { hash: '#httpshare', path: 'sd_httpshare', level: '', requireLogin: true, checkSIMStatus: false}]);
11159 }
11160 });
11161
11162 function initialize() {
11163 vmMenu = new Menu_vm();
11164 }
11165
11166 function Menu_vm() {
11167 var loginState = getIsLoggedin();
11168 var target = this;
11169 target.loggedIn = libko.observable(loginState);
11170
11171 target.showMenu = libko.observable(loginState || displayMenuWhenLogout);
11172
11173 var menuMain = libus.filter(menu, function (param) {
11174 return (param.level == '1' && ((param.requireLogin && target.loggedIn()) || !param.requireLogin) && param.hash != "#entry");
11175 });
11176
11177 target.menuMain = libko.observableArray(menuMain);
11178 target.secondMenu = libko.observableArray([]);
11179 //target.curThirdMenu; cov_2
11180 target.changeMenu = function (data) {
11181 var secondMenu = getSubMenu(data);
11182 if (secondMenu.length == 0) {
11183 libjq("#container").addClass("fixContainerWidth");
11184 } else {
11185 libjq("#container").removeClass("fixContainerWidth");
11186 }
11187
11188 target.secondMenu(secondMenu);
11189 return true;
11190 };
11191 target.thirdMenu = function () {
11192 return target.curThirdMenu;
11193 };
11194 target.getThirdMenu = function (data) {
11195 target.curThirdMenu = getSubMenu(data);
11196 };
11197 function getSubMenu(data) {
11198 return libus.filter(menu, function (param) {
11199 return ((param.parent && param.parent == data.hash) && ((param.requireLogin && target.loggedIn()) || !param.requireLogin));
11200 });
11201 }
11202 }
11203
11204 return {
11205 activeSubMenu: menuActSub,
11206 checkIsMenuExist: menuExistCheck,
11207 findMenu: menuSearch,
11208 rebuild: buildNew,
11209 refreshMenu: menuRefresh,
11210 init: initialize
11211 };
11212});
11213