Launcher.js
window.launcherInit = function() { com.citi.sao.SAOConstants.BTMFunctionId = BTMFunctionId; com.citi.sao.SAOConstants.CONTEXTROOT = CIContextRoot; com.citi.sao.SAOConstants.FROM_CID = FromCID; com.citi.sao.SAOConstants.B_SEGMENT = B_SEGMENT; com.citi.sao.SAOConstants.B_USER_ID = B_USER_ID; com.citi.sao.SAOConstants.B_ROLE_NAME = B_ROLE_NAME; com.citi.sao.SAOConstants.B_ROLE_CHANNEL = B_ROLE_CHANNEL; com.citi.sao.SAOConstants.B_USER_NAME = B_USER_NAME; com.citi.sao.SAOConstants.ECLIPSE_URL = ECLIPSE_URL; com.citi.sao.SAOConstants.PROFILE_SUMMARY_SUFFIX = PROFILE_SUMMARY_SUFFIX; com.citi.sao.SAOConstants.CRM_URL_SUFFIX = CRM_URL_SUFFIX; com.citi.sao.SAOConstants.B_HOSTDATE = B_HOSTDATE; com.citi.sao.SAOConstants.B_BIZ_ID = B_BIZ_ID; com.citi.sao.SAOConstants.CURRENCY = CURRENCY; com.citi.sao.SAOConstants.CURRENCY_ALPHA = CURRENCY_ALPHA; com.citi.sao.SAOConstants.B_CTRL_1=CTRL_1; com.citi.sao.SAOConstants.B_CTRL_2=CTRL_2; com.citi.sao.SAOConstants.WORK_ITEM_TAG = WORK_ITEM_TAG; com.citi.sao.SAOConstants.ECRM_FLAG = ECRM_FLAG; com.citi.sao.SAOConstants.APP_CHANNEL = APP_CHANNEL; com.citi.sao.SAOConstants.SCREEN_KEY = SCREEN_KEY; com.citi.sao.SAOConstants.SELECTED_LANG = SELECTED_LANG; com.citi.sao.SAOConstants.supportedCountryCodes = supportedCountryCodes; com.citi.sao.SAOConstants.supportedCountryAbbrs = supportedCountryAbbrs; com.citi.sao.SAOConstants.CITIKYCURL = CITIKYCURL; com.citi.sao.SAOConstants.PERFORMANCE_LOG_ON = PERFORMANCE_LOG_ON; com.citi.sao.SAOConstants.POPUP_SCREEN_KEY = ""; com.citi.sao.SAOConstants.disableStyle = {backgroundColor:"#E0E0E0"}; com.citi.sao.SAOConstants.eCRM_URL=eCRM_URL; com.citi.sao.SAOConstants.PROCESSING_BIZ_ENTITY = PROCESSING_BIZ_ENTITY; if(CTRL_1==98){ com.citi.sao.SAOConstants.DateFORMAT = "mm/dd/yyyy"; com.citi.sao.SAOConstants.numberFormat = {"decimals":"2","symbol":"","thousandTag":",","decimalTag":".","percentTag":""}; com.citi.sao.SAOConstants.percentFormat = {"decimals":"2","symbol":"","thousandTag":",","decimalTag":".","percentTag":"%"}; com.citi.sao.SAOConstants.amountFormat = {"decimals":"2","symbol":"$","thousandTag":",","decimalTag":".","percentTag":""}; com.citi.sao.SAOConstants.rateFormat= {"decimals":"7","symbol":"","thousandTag":",","decimalTag":".","percentTag":""}; // ‘eRateFormat‘ used for populating exception rate along with four decimals-Non RPS CD product. com.citi.sao.SAOConstants.eRateFormat= {"decimals":"4","symbol":"","thousandTag":",","decimalTag":".","percentTag":""}; }else{ com.citi.sao.SAOConstants.DateFORMAT = "ddMMMyyyy"; com.citi.sao.SAOConstants.numberFormat = {"decimals":"2","symbol":"","thousandTag":",","decimalTag":".","percentTag":""}; com.citi.sao.SAOConstants.percentFormat = {"decimals":"2","symbol":"","thousandTag":",","decimalTag":".","percentTag":"%"}; com.citi.sao.SAOConstants.amountFormat = {"decimals":"2","symbol":"","thousandTag":",","decimalTag":".","percentTag":""}; com.citi.sao.SAOConstants.rateFormat= {"decimals":"7","symbol":"","thousandTag":",","decimalTag":".","percentTag":""}; } dojo.byId("initProgBarLbl").innerText = "Loading Application..."; PageConfig.init(); PageConfig.loadEntitlement();//sync SAOApplicationProxyServlet call quickJumpObj.setLabelStore(RSRS_JP_MENUSTORE, RSRS_LANGSTORE); quickJumpObj.init(); SAOMessage.loadClientMessages();//action=getI18Cache&type=Message, async call routePage(); Timer.clockEnd("Init loading"); } window.loadScreen = function (screenKey, args) { var options = args || {}, divID = args && args.divID, screenLoader; quickJumpObj.hide(); if(divID==null || divID==‘undefined‘ || divID==‘‘){ com.citi.sao.SAOConstants.CURRENT_SCREEN_SCREENKEY = screenKey; } Timer.clockStart("Screen loading (" + screenKey + ")"); options.screenKey = screenKey; options.async = ASYNC_SCREEN_LOADING; try { screenLoader = new ScreenLoader(options); screenLoader.load(); } catch (e) { if(e.message == ScreenLoader.Error.SCREEN_NOT_FOUND) alert("Screen " + screenKey + " is not found!"); else throw e; } } window.routePage = function() { Logger.log(‘routePage::g_action:‘+g_action+‘,g_appID:‘+g_appID+‘,g_appType:‘+g_appType+‘,g_custType:‘+g_custType); if (‘jfp‘ == g_action) { com.citi.sao.SAOConstants.APP_ID = g_appID; com.citi.sao.SAOConstants.APP_TYPE = g_appType Logger.log(‘ jfp com.citi.sao.SAOConstants.APP_ID:: ‘ + com.citi.sao.SAOConstants.APP_ID + ‘ com.citi.sao.SAOConstants.APP_TYPE:: ‘ + com.citi.sao.SAOConstants.APP_TYPE); loadScreen("JFPEntry"); } else if (‘step1‘ == g_action) { com.citi.sao.SAOConstants.APP_ID = g_appID; com.citi.sao.SAOConstants.APP_TYPE = g_appType; PageConfig.loadCustomerSetup(g_custType); } else if (‘step2‘ == g_action) { com.citi.sao.SAOConstants.APP_ID = g_appID; com.citi.sao.SAOConstants.APP_TYPE = g_appType; PageConfig.loadProductionSetup(); } else if (‘step3‘ == g_action) { com.citi.sao.SAOConstants.APP_ID = g_appID; com.citi.sao.SAOConstants.APP_TYPE = g_appType; if(com.citi.sao.SAOConstants.getCountryAbbr() == ‘US‘){ loadScreen("USVerifySign"); }else{ loadScreen("VerifySign"); } } else if (‘step4‘ == g_action) { com.citi.sao.SAOConstants.APP_ID = g_appID; com.citi.sao.SAOConstants.APP_TYPE = g_appType; loadScreen("Fulfillment"); } else if (‘SAOWORKQ‘ == g_action) { loadScreen("WccLogic"); } else if (‘CRM2SAO‘ == g_action) { ResourceLoader.loadJSFile(‘sao/jsp/Common/js/SAOCRMEntry.js‘); com.citi.sao.SAOConstants.APP_ID = g_appID; com.citi.sao.SAOCRMEntry.init(); } else if (‘SAO‘ == g_action) { loadScreen("SessionSetup"); } else if (‘SAODocumentumQ‘ == g_action) { loadScreen("DocumentumQ"); } else if (‘APPSEARCH‘ == g_action) { loadScreen("AppSearch"); } else if (‘Report‘ == g_action) { loadScreen("Report"); } else if (g_action != ‘‘) { loadScreen(g_action); } else { loadScreen("SessionSetup"); } } window.clearCalendarPopUp = function () { try{ clase("panelCalendar","titleBarCalendar",false); }catch(e){ Logger.log("ClearCalendar pop up error"); } } window.clearPopUp = function () { for(var i=0;i<existPopupList.length;i++){ var paneName = existPopupList[i]; var paneObj = $(paneName); if(paneObj!=null){ paneObj.parentElement.removeChild(paneObj); } } } //window.loadPopup = function (popupKey, popupTitle, width, height, left, top, closeCallBack, ctx, readOnlyMode) { window.loadPopup = function (popupKey, width, height, left, top, closeCallBack, ctx, readOnlyMode,otherTitle, ignoreScreenConfigError) { com.citi.sao.SAOConstants.POPUP_SCREEN_KEY = popupKey; var screenConfig; try { //if(null != otherTitle && typeof(otherTitle) == ‘object‘){ if(isJsonString(otherTitle)){ screenLoader = new ScreenLoader({screenKey: popupKey, async: false, popup:true, width: width, height: height, left: left, top: top, closeCallback: closeCallBack, ctx: ctx, readOnlyMode: readOnlyMode,otherTitle: otherTitle.otherTitle, ignoreScreenConfigError: ignoreScreenConfigError}); }else{ screenLoader = new ScreenLoader({screenKey: popupKey, async: false, popup:true, width: width, height: height, left: left, top: top, closeCallback: closeCallBack, ctx: ctx, readOnlyMode: readOnlyMode, ignoreScreenConfigError: ignoreScreenConfigError}); } return screenLoader.load(); } catch (e) { if(e.message == ScreenLoader.Error.SCREEN_NOT_FOUND) alert(‘Screen ‘ + popupKey + ‘ is not found!‘); else throw e; } } window.callService = function (serviceName, operationName, jsonData, onSuccessHandler, onErrorHandler, isMaskScreen, isIgnore, isPreCall) { var serviceOperation = serviceName + ‘.‘ + operationName, data = {"service": serviceName, "operation": operationName, "json": jsonData, "applicationId": com.citi.sao.SAOConstants.APP_ID, "archivalInd": com.citi.sao.SAOConstants.ARCGIVAL_IND}, logCollector = new SAOLogCollector({actionType: SAOLogCollector.ActionType.CALLSERVICE, currentScreen: com.citi.sao.SAOConstants.CURRENT_SCREEN_SCREENKEY, actionID: serviceOperation}), sendActionLog = true, xhrArgs = { url : proxyURL, content : data, load : _onload, error : _onerror }; Timer.clockStart("Service Call " + serviceOperation); Logger.log(operationName + " requestData :: "+dojo.toJson(jsonData)); if (isMaskScreen==true) {showMask();} function _onload(response, ioargs) { try{ //logCollector.token = ioargs.xhr.getResponseHeader(‘TOKEN‘); Timer.clockEnd("Service Call " + serviceName + "." + operationName); Logger.log("data:: -succ--- serviceName:: "+dojo.toJson(response)); if (isMaskScreen==true) hideMask(); if(isPreCall) {//added by Jack Yang, for preInitServiceCall in ScreenLoader logCollector.startLog(SAOLogCollector.LogType.POST_ACTION_TIME2); onSuccessHandler(response, ioargs); logCollector.endLog(SAOLogCollector.LogType.POST_ACTION_TIME2); logCollector.endTotalLog(); logCollector.send(); return; } var respData; try{ respData = dojo.fromJson(response); }catch(e){ if(dojo.isString(response) && (response.indexOf(‘HTML‘) != -1 || response.indexOf(‘html‘) != -1)){ document.body.innerHTML = response; return response; }else{ alert("APP_ID:: "+ com.citi.sao.SAOConstants.APP_ID+ " operation::" + operationName+"\n Invalid Json format:\n "+response); hideMask(); return response; } } var respContent = respData.content, respCode = respData.responseCode; logCollector.startLog(SAOLogCollector.LogType.POST_ACTION_TIME2); if( respCode != 2 ){ var responseContentCode = successProcess(respContent,isIgnore); Logger.log("responseContentCode:: " + responseContentCode); // process responseContentCode 0,4, success, 123 fault. if( responseContentCode==‘W‘ || responseContentCode==0 || responseContentCode==4 || responseContentCode==‘0‘ || responseContentCode==‘4‘ ){ if (onSuccessHandler != null) onSuccessHandler(respContent, ioargs); }else if( responseContentCode == 1 || responseContentCode == 2){ if (onErrorHandler != null) onErrorHandler(response, ioargs); }else hideMask(); }else{ if(isIgnore == true) onErrorHandler(response, ioargs); else errorProcess(respContent); } logCollector.endLog(SAOLogCollector.LogType.POST_ACTION_TIME2); logCollector.endTotalLog(); if(sendActionLog) logCollector.send(); else Logger.log(‘logCollector.send cancelled cause this callservice read from state table‘);//cause for this case, TOKEN is expired when doing the pre real call }catch(e){ Logger.log("exception :: "+e); hideMask(); throw e; } return response; }; function _onerror(response, ioargs) { Logger.log("data:: -error--- serviceName:: "+dojo.toJson(response)); Timer.clockEnd("Service Call " + serviceName + "." + operationName); if( response.description != "xhr cancelled" ){ Logger.log("isIgnore::"+isIgnore); if(isIgnore == true){ // alert("IProcess called time out !"); if(com.citi.sao.SAOConstants.B_ACTION == "APPROVE") loadScreen("Fulfillment"); else hideMask(); }else { errorProcess(response); hideMask(); if (onErrorHandler != null) onErrorHandler(response, ioargs); } }else{ hideMask(); } return response; }; var currentScreenLoadState = SCREEN_LOAD_STATE_TABLE[com.citi.sao.SAOConstants.SCREEN_KEY], deferred; Logger.log(‘currentScreenLoadState‘+currentScreenLoadState); Logger.log(‘com.citi.sao.SAOConstants.SCREEN_KEY‘+com.citi.sao.SAOConstants.SCREEN_KEY); if(currentScreenLoadState && currentScreenLoadState.initService && currentScreenLoadState.initService.service == serviceName && currentScreenLoadState.initService.operation == operationName && currentScreenLoadState.initService.response) { Logger.log(‘+++++++++++callservice::‘+serviceName+‘, operation::‘+operationName+‘, do _onload() from state table‘); Logger.log(‘state table initService.response: ‘ + SCREEN_LOAD_STATE_TABLE[com.citi.sao.SAOConstants.SCREEN_KEY].initService.response); sendActionLog = false;//read callservice response for state table doesn‘t need send action log _onload(currentScreenLoadState.initService.response, currentScreenLoadState.initService.ioargs); //clear state table SCREEN_LOAD_STATE_TABLE[com.citi.sao.SAOConstants.SCREEN_KEY] = null; } else { Logger.log(‘callservice::‘+serviceName+‘, operation::‘+operationName+‘, do dojo.xhrPost()‘); logCollector.startTotalLog(); deferred = dojo.xhrPost(xhrArgs); } } window.callEditService = function (funcId, actionId, jsonData, onSuccessHandler, onErrorHandler, isMaskScreen, isIgnore, BTMFunctionId) { Timer.clockStart("Servlet Call " + funcId + "." + actionId); if (isMaskScreen==true) {showMask();} var xhrArgs = { url : proxyEditURL, content : {FUNC_ID: funcId, ACTION_ID: actionId, BTMFunciton_ID: BTMFunctionId, json: jsonData}, load : function(reponse, ioargs) { Timer.clockEnd("Servlet Call " + funcId + "." + actionId); Logger.log("data:: -succ--- funcId:: "+dojo.toJson(reponse)); if (isMaskScreen==true) {hideMask();} var resData = dojo.fromJson(reponse); var errorData; if(resData!=null){ errorData = resData.ERROR; } if(resData==null||errorData==null||""==errorData){ if (onSuccessHandler != null) {onSuccessHandler(reponse, ioargs);} }else{ alert(errorData); } return reponse; }, error : function(reponse, ioargs) { Logger.log("data:: -error--- funcId:: "+dojo.toJson(reponse)); Timer.clockEnd("Servlet Call " + funcId + "." + actionId); if (onErrorHandler != null) {onErrorHandler(reponse, ioargs);} return reponse; } }; var deferred = dojo.xhrPost(xhrArgs); } window.getSAOFault = function (respContent) { var saofault; try{ saofault = getSubNode(respContent); Logger.log("getSAOFault:: " + saofault); // saofault = respContent.Fault.detail.SAOFault; }catch(e){ // try{ saofault = respContent.ExecuteStatementRs.SAOFault;}catch(e){}; } return saofault; } window.getPromptHeader = function (saofault) { var promptMsg = "Service Call Failed, Please Contact Application Support Team.\n-------------------------------\n"; var respCode; if( saofault && saofault.ResponseCode ){ respCode = saofault.ResponseCode; if (saofault.ESBUUID) promptMsg += "ESBUUID: " + saofault.ESBUUID + "\n-------------------------------\n"; Logger.log("getPromptHeader::respCode:: " + respCode); if( respCode==‘W‘ || respCode==‘0‘ || respCode==‘4‘ || respCode==0 || respCode==4 ){ promptMsg = "Warning: \n-------------------------------\n"; } } return promptMsg; } window.successProcess = function (respContent,isIgnore) { Logger.log("data:: -successProcess--- serviceName:: "+dojo.toJson(respContent)); var responseContentCode = 0; try{ var saofault = getSAOFault(respContent); if( !saofault ){ return responseContentCode; } var size = saofault.Errors.length; var BWErrors; Logger.log("size:: "+size); if(size!=null) BWErrors = saofault.Errors; else BWErrors = saofault.Errors.ErrorItem; if( BWErrors ){ if(isIgnore == true){ return 1; }else{ var errorItems = BWErrors; if(errorItems){ var errorMsg = getPromptHeader(saofault); alert(getErrorMsg(errorItems,errorMsg)); responseContentCode = 1; Logger.log("SAOFault.ResponseCode:: "+saofault.ResponseCode); if( saofault.ResponseCode ){ var responseContentCode = saofault.ResponseCode; if(!responseContentCode) responseContentCode = 1; } } } } }catch(e){} return responseContentCode; } window.getErrorMsg = function (errorItems,errorMsg) { var len = errorItems.length; if(len){ for(var i = 0 ; i < len; i++){ var record = errorItems[i]; Logger.log("record:: "+dojo.toJson(record)); if(record.ErrorItem!=null) { record = record.ErrorItem; errorMsg = getErrorMsg(record,errorMsg); }else{ var code = record.code; var msg = record.msg; var stackTrace = record.stackTrace; if(code){ errorMsg = errorMsg + "Code: " + code + " -- " + "Message: " + msg + "\n"; if(len > 1 && i != len-1){ errorMsg = errorMsg + "-------------------------------"+"\n"; } } } } }else{ var record = errorItems; var code = record.code; var msg = record.msg; var stackTrace = record.stackTrace; errorMsg = errorMsg + "Code: " + code + " -- " + "Message: " + msg + "\n"; } return errorMsg; } window.errorProcess = function (response) { var myStatus = response.status, errorMsg = ‘‘, description, extraDesc; Logger.log("errorProcess:: "+dojo.toJson(response)); if(myStatus==500){ errorMsg += "Service Call Failed, Please Contact Application Support Team.\n"; description = response.responseText; extraDesc = description.substring(11); errorMsg += extraDesc; }else if(myStatus==12029){ errorMsg += "Service Call Failed, Please Contact Application Support Team.\n"; description = response.description; extraDesc = description.substring(0,description.length-13); errorMsg += extraDesc; }else if(myStatus==404){ errorMsg += "Service Call Failed, Please Contact Application Support Team.\n"; description = response.responseText; extraDesc = description.substring(11); errorMsg += extraDesc; }else{ errorMsg = "Process failed, Please Contact Application Support Team.\n"+response.message; } alert(errorMsg); } window.onerror = function(){ var date = new Date(), msg = date.getHours()+":" +date.getMinutes()+":" +((date.getSeconds()<10)?"0"+date.getSeconds():date.getSeconds())+":" +((date.getMilliseconds()<100)?date.getMilliseconds()+"0":date.getMilliseconds()) +" (ERROR) - " + arguments[0] + " (line : "+arguments[2]+", file : "+arguments[1]+") "; if(monitor) Logger.log(msg,"ERROR"); else alert(msg); } window.getDownLoadData = function (type , onSuccessHandler , sync, filter) { var data = {action : "getDataCache" , type : type}, result = ‘‘, p, xhrArgs; if(filter) for(p in filter) data[p] = filter[p]; xhrArgs = { url : proxyURL, content : data, sync: sync, load : function(reponse, ioargs) { result=reponse; onSuccessHandler(reponse,ioargs); return reponse; }, error : function(reponse, ioargs) { errorProcess(reponse); } } dojo.xhrGet(xhrArgs); return result; } window.getPinBlockFromApp = function (pinType,pinlength){ var cidInterfaceFrame = document.getElementById("iframe_cid_interface").contentWindow, extUrl; if (true)// hard code twice till now extUrl = "EXT:://<OnEvent ID = ‘SAO.CIDGetPinTwiceAndVerifyRequest‘><CIDGetPinTwiceAndVerify><Interface>DeviceInterface-CID</Interface><pintype>"+pinType+"</pintype><pinlength>"+pinlength+"</pinlength></CIDGetPinTwiceAndVerify></OnEvent>"; else extUrl = "EXT:://<OnEvent ID = ‘SAO.CIDGetPinBlockRequest‘><CIDGetPinBlock><Interface>DeviceInterface-CID</Interface><pintype>"+pinType+"</pintype><pinlength>"+pinlength+"</pinlength></CIDGetPinBlock></OnEvent>"; cidInterfaceFrame.document.getElementById("cidRequestForm").action = extUrl; cidInterfaceFrame.document.getElementById("cidRequestForm").submit(); } //MY KAD Data window.getMYKadDataFromApp = function (rowIndex, colIndex){ //Load MY KAD Util JS and call init method ResourceLoader.loadJSFile(‘sao/jsp/Common/js/SAOMYKadDataUtil.js‘); com.citi.sao.myKadUtil.init(); var cidInterfaceFrame = document.getElementById("iframe_cid_interface").contentWindow, extUrl = "EXT:://<OnEvent ID=‘SAO.ReadMyKAD‘><Interface>DeviceInterface-MyKAD.dll</Interface></OnEvent>"; //Set the Session Setup specifc data Logger.log("rowIndex="+rowIndex+" ColumnIndex="+colIndex); com.citi.sao.myKadUtil.rowIndex = rowIndex; cidInterfaceFrame.document.getElementById("cidRequestForm").action = extUrl; cidInterfaceFrame.document.getElementById("cidRequestForm").submit(); } window.forwardToCRM = function (URL){ var parent = window.opener; if(parent){ parent.top.location = URL; window.close(); }else{ var frmForward = document.frmCRM; frmForward.action = URL; frmForward.target = "eclipse_frame"; frmForward.submit(); } } window.printDocViaFireFly = function (url) { var printFrame = document.getElementById("iframe_print_interface").contentWindow; Logger.log("printFrame: \n" + printFrame.name) com.citi.sao.SAOConstants.printingURL = url; var parames = "<OnEvent ID=‘Eclipse.SAOPrintPDF‘><URL>" + url + "</URL><PrinterName>Normal</PrinterName><Preview>false</Preview><PrintToFit>true</PrintToFit></OnEvent>"; var myform = printFrame.document.getElementById("eclipseForm"); myform.action="EXT:://"+parames; Logger.log("myform.action \n" + myform.action); myform.submit(); } window.SAOPrintResponse = function (printStatus, errorCode, errorDescription) { if (errorCode==‘0‘) { alert(‘Printing Successfully.‘); } else if (errorCode==‘-3‘||errorCode==‘-5‘||errorCode==‘-6‘) { var printFrame = document.getElementById("iframe_print_interface").contentWindow; Logger.log("printFrame: \n" + printFrame.name) var parames = "<OnEvent ID = ‘Eclipse.SetupPDFPrint‘><SetupPDFPrint></SetupPDFPrint></OnEvent>"; var myform = printFrame.document.getElementById("eclipseForm"); myform.action="EXT:://"+parames; Logger.log("myform.action \n" + myform.action); myform.submit(); } else { openWindowWithIE(com.citi.sao.SAOConstants.printingURL, "CheckListDocument"); } } /* * these three methods are callback functions invoke by hardware. * although can‘t find any reference to them, they can‘t be deleted * commented by Jack Yang 20130725 */ window.callSAOCIDGetPinBlockResponse = function (result, pinblock){ com.citi.sao.Fulfillment.clearPinBlock(); if(dojo.trim(result).toLowerCase() == "success") com.citi.sao.Fulfillment.changeFlagForTask(pinblock); else alert("Get Pin Block Failed !"); } window.callSAOCIDGetPinTwiceAndVerifyResponse = function (result, pinblock){ com.citi.sao.Fulfillment.clearPinBlock(); if(dojo.trim(result).toLowerCase() == "success") com.citi.sao.Fulfillment.changeFlagForTask(pinblock); else alert("Get Pin Block Failed !"); } window.callSAOMYKadGetDataResponse = function (myKadDataXml){ alert("Data Received from MyKad"); Logger.log("myKadDataXml ::"+myKadDataXml); com.citi.sao.myKadUtil.getMYKadData(myKadDataXml); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。