b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | |
| 2 | /* |
| 3 | Post |
| 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 | |
| 9 | Get |
| 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 | |