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