blob: e4267d4ba2db17b9d0417c705007c069fb6d3715 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001
2/*
3Post
4<ussd>
5 <action/> <!-1: start session 2: end session 3: send indication response-->
6 <ussd_param/><!-only make sense when action is 1 or 3, should be encoded by UCS2-->
7</ussd>
8
9Get
10<ussd>
11 <ussd_type/><!-0: USSD notify 1: USSD-request 2: session terminated by network 3: other local client had responded 4:operation not supported 5: network timeout-->
12 <ussd_str/><!-USSD string encoded by UCS2-->
13</ussd>
14*/
15(function ($) {
16
17 $.fn.objussd = function (InIt) {
18
19 var timeoutCount = 0;
20
21 var action = 1;//1: start session 2: end session 3: send indication response
22
23 this.onLoad = function (flag) {
24 LoadWebPage("html/stk/ussd.html");
25
26 $("#lt_ussd_btnDial").click(function() {
27 UssdDialUp();
28 });
29
30 $("#lt_ussd_btnCancel").click(function() {
31 CanCelUssdService();
32 });
33
34 $("#lt_ussd_btnSend").click(function() {
35 SendIndicationResponse();
36 });
37
38 InitUssdStatus();
39
40 }
41
42 function InitUssdStatus() {
43 var retXml = PostXml("ussd","get_ussd_ind");
44 var ussdType = $(retXml).find("ussd_type").text();
45 if("0" == ussdType || "1" == ussdType) {
46 $("#txtIndicationResponse").val("");
47 $("#lt_ussd_txtRecvContent").text(UniDecode($(retXml).find("ussd_str").text()));
48 $("#divUssdInteract").show();
49 if("1" == ussdType ) {
50 $("#divIndicationResponse").show();
51 $("#lt_ussd_btnSend").show();
52 } else {
53 $("#divIndicationResponse").hide();
54 $("#lt_ussd_btnSend").hide();
55 }
56 }
57 }
58 function validRspParam(param) {
59 var regex = /[0-9]{1}/;
60 if (!regex.test(param))
61 return false;
62 else
63 return true;
64 }
65
66 function SendIndicationResponse() {
67 action = 3;
68 var mapData = new Map();
69 var param = $("#txtIndicationResponse").val();
70 if (!validRspParam(param)) {
71 $("#dialParamError").show().text(jQuery.i18n.prop('lrspParamError'));
72 return;
73 }
74 mapData.put("RGW/ussd/action", action);
75 mapData.put("RGW/ussd/param", param);
76 PostXml("ussd","send_ussd",mapData);
77 sm("PleaseWait",150,100);
78 $("#lPleaseWait").text(jQuery.i18n.prop("h1PleaseWait"));
79 timeoutCount = 0;
80 setTimeout(QueryUssdNetworkStatus,10000);
81 }
82
83
84 function CanCelUssdService() {
85 action = 2;
86
87 var mapData = new Map();
88 mapData.put("RGW/ussd/action",action);
89 PostXml("ussd","send_ussd",mapData);
90
91
92 $("#lt_ussd_btnDial").attr("disabled",false);
93 $("#divUssdInteract").hide();
94 //setTimeout(QueryUssdNetworkStatus,1000);
95 }
96
97 function validDialParam(param) {
98 var regex = /[*]{1}[0-9]{2,10}[#]{1}/;
99 if (!regex.test(param))
100 return false;
101 else
102 return true;
103 }
104 function UssdDialUp() {
105 action = 1;
106 var mapData = new Map();
107 var param = $("#txtUssdServiceNumber").val();
108 if (!validDialParam(param)) {
109 $("#dialParamError").show().text(jQuery.i18n.prop('ldialParamError'));
110 return;
111 }
112 mapData.put("RGW/ussd/action", action);
113 mapData.put("RGW/ussd/param", param);
114 PostXml("ussd","send_ussd",mapData);
115
116 sm("PleaseWait",150,100);
117 $("#lPleaseWait").text(jQuery.i18n.prop("h1PleaseWait"));
118 $("#lt_ussd_btnDial").attr("disabled",true);
119 timeoutCount = 0;
120 setTimeout(QueryUssdNetworkStatus,10000);
121 }
122
123 function QueryUssdNetworkStatus() {
124 var retXml = PostXml("ussd","get_ussd_ind");
125 var ussdType = $(retXml).find("ussd_type").text();
126
127 if(timeoutCount > 15) {
128 hm();
129 }
130
131 if("" == ussdType) {
132 ++timeoutCount;
133 setTimeout(QueryUssdNetworkStatus,1000);
134 } else if("0" == ussdType || "1" == ussdType) {
135 hm();
136 $("#lt_ussd_txtRecvContent").text(UniDecode($(retXml).find("ussd_str").text()));
137 $("#divUssdInteract").show();
138 if("1" == ussdType ) {
139 $("#divIndicationResponse").show();
140 $("#lt_ussd_btnSend").show();
141 } else {
142 $("#divIndicationResponse").hide();
143 $("#lt_ussd_btnSend").hide();
144 }
145
146 } else {
147 $("#lt_ussd_btnDial").attr("disabled",false);
148 $("#divUssdInteract").hide();
149 if("2" == ussdType) {
150 showAlert("lsessionTerminate");
151 } else if("3" == ussdType) {
152 showAlert("lsessionResponded");
153 } else if("4" == ussdType) {
154 showAlert("lsessionOpertionNotSupport");
155 } else if("5" == ussdType) {
156 showAlert("lsessionTimeout");
157 } else {
158 showAlert("lsessioUnkown");
159 }
160 }
161 }
162
163 return this;
164 }
165})(jQuery);
166