// =========[ DEFINING SCRIPT ]========= run_page(); function run_page(){ let offer_path = window.location.pathname; let url_arr = offer_path.split("/"); let last_url = url_arr[url_arr.length - 1]; switch(last_url){ case "zain" : console.log("zain Script Run"); //{run_script_zain} break; case "orange" : console.log("orange Script Run"); //{run_script_orange} break; case "umniah" : console.log("umniah Script Run"); //{run_script_umniah} break; case "tq": console.log("TQ Script Run"); //{TQ SCRIPT} break; default: console.log("LP Script Run"); view().then(function() { post_view(); }); break; } } // =========[ DEFAULT SCRIPT ]========= /* The Scripts that need to have to work*/ // ======= CODE TO STRICT NUMBER ONLY ======= $(document).ready(function(){ $('.msisdn').on('input', function() { var c = this.selectionStart, r = /[^0-9\u0660-\u0669]/g, v = $(this).val(); if(r.test(v)) { $(this).val(v.replace(r, '')); c--; } this.setSelectionRange(c, c); }); }); //DEFAULT CODE!! function check_url_telco(){ let url_string = window.location.href let url = new URL(url_string); let telco = url.searchParams.get("telco"); console.warn("Checking URL Telco : " + telco); return telco; } function get_lang() { let url_string = window.location.href let url = new URL(url_string); return url.searchParams.get("lang"); } function get_tracking_id() { var result; // IF GLOBAL TRACKING EXIST if(typeof window.tracking_id !== "undefined" || window.tracking_id != null){ console.warn("Getting Global Tracking ID : " + window.tracking_id); result = window.tracking_id; } else{ let url_string = window.location.href let url = new URL(url_string); console.warn("Getting URL Tracking ID : " + url.searchParams.get("tracking_id")); result = url.searchParams.get("tracking_id"); } return result; } function get_transaction_id() { var result; // IF GLOBAL TRANSACTION EXIST if(typeof window.transaction_id !== "undefined" || window.transaction_id != null){ console.warn("Getting Global Transaction ID : " + window.transaction_id); result = window.transaction_id; } else{ let url_string = window.location.href let url = new URL(url_string); console.warn("Getting URL Transaction ID : " + url.searchParams.get("t_id")); if(url.searchParams.get("t_id") == null || url.searchParams.get("t_id") == ""){ console.warn("t_id invalid : "+ url.searchParams.get("t_id")); } result = url.searchParams.get("t_id"); } return result; } function get_msisdn_url() { let url_string = window.location.href let url = new URL(url_string); return url.searchParams.get("msisdn"); } function create_lead() { var xhttp = new XMLHttpRequest(); var api_url = "https://prod.api.puretechglobal.net/lp/api"; var params = { //------- standardize param----------// tracking_id: get_tracking_id(), country: window.country, gateway: window.gateway, telco: window.telco, shortcode: window.sc, keyword: window.kw, msisdn: window.msisdn, //some gateway API using param name "phone" ,so "phone" is supported! create_lead_only: true, //true mean call only create_lead , wont call Gateway API flow: window.flow //pass the flow example ,ussd , pin_request to execute Gateway API Call }; console.warn("Creating Lead"); console.log(params); return new Promise((resolve, reject) => { xhttp.onreadystatechange = (e) => { if (xhttp.readyState !== 4) { return; } if (xhttp.status === 200) { console.log("SUCCESS", xhttp.responseText); resolve(JSON.parse(xhttp.responseText)); } else { console.warn("request_error"); reject(e) } }; xhttp.open("POST", api_url); xhttp.send(JSON.stringify(params)) }); } function get_msisdn() { var msisdn = $("#msisdn").val(); var check = 0; if (typeof input !== "undefined") { check = 1; } let arNumberToen = function (str) { if(typeof str === "string") { for(var i=0; i<10; i++) { str = str.replace(arabicNumbers[i], i); } } return str; }; var arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g]; msisdn = arNumberToen(msisdn); var country_code = "962"; if(msisdn == null || msisdn == ""){ return "-"; } else{ console.warn("Phone number : " + country_code + msisdn); return country_code + msisdn; } } function view() { let api_url = "https://prod.api.puretechglobal.net/lp/view/v2"; let url_string = window.location.href let url = new URL(url_string); let tracking_data = Object.fromEntries(new URLSearchParams(url.search)); tracking_data["lp_path"] = window.location.pathname; tracking_data["blocking_id"] = ("; "+document.cookie).split(`; blocking_id=`).pop().split(";")[0]; //[[ view_tracking_addon ]] let jqxhr = $.ajax({ type: "POST", url: api_url, data: tracking_data }); return new Promise((resolve, reject) => { jqxhr.done(function(result) { if(result.status == "ok") { if(result.data) { let url_string = window.location.href let url = new URL(url_string); var lang = url.searchParams.get("lang"); console.log("searchparamsresultlang: " + lang); let templang = lang; params = new URLSearchParams(result.data); window.history.replaceState(null, null, window.location.pathname + "?" + params); console.log("below is params from view js"); console.log(params); //global tracking and transaction id window.tracking_id = params.get("tracking_id"); window.transaction_id = (params.get("t_id")) ? params.get("t_id") : params.get("transaction_id"); console.warn("Global Tracking ID : " + window.tracking_id); console.warn("Global Transaction ID : " + window.transaction_id); //find if the url already have lang in url params if(templang){ console.log("got existing language from url : " + templang); let url_string = window.location.href let url = new URL(url_string); url.searchParams.set("lang", templang); window.history.replaceState(null, null, url.search); } //[[ view_add_script ]] } if(result.cookies) { for (var key in result.cookies) { if (result.cookies.hasOwnProperty(key)) { document.cookie = key +"="+ result.cookies[key] +"; expires=Sun, 1 Jan 2090 00:00:00 UTC; path=/" } } } var event = new Event("custom_event_after_view"); document.dispatchEvent(event); } else if(result.status == "redirect") { window.location.replace(result.data.url); } resolve(result); }); jqxhr.fail(function(result) { console.warn("View API Error"); reject(result); }); }); } function post_view() { // If there is MSISDN input => do not enable the button. let msisdn_input = document.getElementById('msisdn'); if(!msisdn_input) { $('.button').removeClass('disabled_btn').prop('disabled', false); } } // =========[ FUNCTIONAL SCRIPT ]========= function submit_request(){ window.country = "jordan"; window.msisdn = get_msisdn(); // ====== check hlr availability first to start event ====== get_service_details(msisdn).then(function (kw_result) { create_lead().then(function (res) { $("#button-loading").show(); // ====== FLOW ====== switch(window.telco){ case "zain" : pin_request_zain(window.msisdn, window.telco, window.sc, window.kw); break; case "orange" : pin_request_orange(window.msisdn, window.telco, window.sc, window.kw); break; case "umniah" : pin_request_umniah(window.msisdn, window.telco, window.sc, window.kw); break; } }).catch(function() { $("#button-loading").hide(); alert("Create Lead Failed! Please Check"); }); }).catch(function() { $("#button-loading").hide(); $("#txt_msisdn_error").show(); }); } function pin_request_zain(msisdn, telco, shortcode, keyword){ let url_string = window.location.href let url = new URL(url_string); var transaction_id = url.searchParams.get("t_id"); var tracking_id = url.searchParams.get("tracking_id"); var lang = url.searchParams.get("lang"); let offer_path = window.location.pathname; console.log("processing zain"); pinData = { tracking_id: tracking_id, msisdn: msisdn, telco: telco, shortcode: shortcode, keyword: keyword, language: lang, transaction_id : transaction_id }; console.log(pinData); let jqxhr = $.ajax({ type: "GET", url: "https://prod.gateway.puretechglobal.net/sms_api_hub_process_route/pin_request/beecell/jordan", data: pinData }); return new Promise((resolve, reject) => { jqxhr.done(function(result) { console.log(result); if(result.result == "SUCCESS") { resolve(result); if (result.redirect_url){ $("#button-loading").show(); $("#button").addClass("disabled_btn").prop("disabled", true); $(".button").css("background", "#858585"); location.href = result.redirect_url; }else{ window.location.replace(window.location.origin + offer_path + "/pin/" + telco + window.location.search + "&msisdn=" + msisdn ); } } else { console.warn('PIN request failed.'); reject(result); } }); jqxhr.fail(function(result) { console.warn('PIN request failed.'); reject(result); }); }); } function pin_request_orange(msisdn, telco, shortcode, keyword){ let url_string = window.location.href let url = new URL(url_string); var transaction_id = url.searchParams.get("t_id"); var tracking_id = url.searchParams.get("tracking_id"); var lang = url.searchParams.get("lang"); let offer_path = window.location.pathname; console.log("processing orange"); pinData = { tracking_id: tracking_id, msisdn: msisdn, telco: telco, shortcode: shortcode, keyword: keyword, language: lang, transaction_id : transaction_id }; console.log(pinData); let jqxhr = $.ajax({ type: "GET", url: "https://prod.gateway.puretechglobal.net/sms_api_hub_process_route/pin_request/beecell/jordan", data: pinData }); return new Promise((resolve, reject) => { jqxhr.done(function(result) { console.log(result); if(result.result == "SUCCESS") { resolve(result); if (result.redirect_url){ $("#button-loading").show(); $("#button").addClass("disabled_btn").prop("disabled", true); $(".button").css("background", "#858585"); location.href = result.redirect_url; }else{ window.location.replace(window.location.origin + offer_path + "/pin/" + telco + window.location.search + "&msisdn=" + msisdn ); } } else { console.warn('PIN request failed.'); reject(result); } }); jqxhr.fail(function(result) { console.warn('PIN request failed.'); reject(result); }); }); } function pin_request_umniah(msisdn, telco, shortcode, keyword){ let url_string = window.location.href let url = new URL(url_string); var transaction_id = url.searchParams.get("t_id"); var tracking_id = url.searchParams.get("tracking_id"); var lang = url.searchParams.get("lang"); let offer_path = window.location.pathname; pinData = { tracking_id: tracking_id, msisdn: msisdn, telco: telco, shortcode: shortcode, keyword: keyword, language: lang, transaction_id : transaction_id }; var url_parse =''; url_parse = "https://prod.gateway.puretechglobal.net/sms_api_hub_process/pin_request/dotvas/jordan"; method = "POST"; let jqxhr = $.ajax({ type: method, url: url_parse, data: pinData }); return new Promise((resolve, reject) => { jqxhr.done(function(result) { console.log(result); if(result.result == "SUCCESS") { resolve(result); if (result.redirect_url){ $("#button-loading").show(); $("#button").addClass("disabled_btn").prop("disabled", true); $(".button").css("background", "#858585"); location.href = result.redirect_url; }else{ window.location.replace(window.location.origin + offer_path + "/pin/" + telco + window.location.search + "&msisdn=" + msisdn ); } } else { console.warn('PIN request failed.'); reject(result); $("#button").removeClass("disabled_btn").prop("disabled", false); $("#button-loading").hide(); } }); jqxhr.fail(function(result) { console.warn('PIN request failed.'); reject(result); $("#button").removeClass("disabled_btn").prop("disabled", false); $("#button-loading").hide(); }); }); } function submit_verify_zain(){ let pin_code = $("#pin").val(); let url_string = window.location.href let url = new URL(url_string); var transaction_id = url.searchParams.get("t_id"); var tracking_id = url.searchParams.get("tracking_id"); var lang = url.searchParams.get("lang"); var msisdn = url.searchParams.get("msisdn"); // var prefix = get_prefix(msisdn); let shortcode = window.sc; let keyword = window.kw; let telco = window.telco; let gateway = window.gateway; pinData = { tracking_id: tracking_id, msisdn: msisdn, lang: lang, pin_code: pin_code, telco: telco, shortcode: shortcode, transaction_id: transaction_id, keyword: keyword, }; let jqxhr = $.ajax({ type: "GET", url: "https://prod.gateway.puretechglobal.net/sms_api_hub_process_route/pin_verify/beecell/jordan", data: pinData }); return new Promise((resolve, reject) => { jqxhr.done(function(result) { console.log(result); if(result.result == "SUCCESS") { resolve(result); var content_url =""; content_url = typeof result.redirect_url !== "undefined" ? result.redirect_url : ""; console.log(content_url); if(content_url){ window.location.replace(content_url); }else{ window.location.replace(window.location.origin + offer_path + "/tq" + window.location.search); } } else { console.warn('PIN verify failed.'); switch(result.detail){ case "Duplicate Subscriber": alert("You Already Subscribed to this offer!"); $("#txt_pin_verify_error").remove(); break; default: alert(result.detail); } reject(result); } }); jqxhr.fail(function(result) { console.warn('PIN verify failed.'); reject(result); }); }); } function submit_verify_orange(){ let pin_code = $("#pin").val(); let url_string = window.location.href let url = new URL(url_string); var transaction_id = url.searchParams.get("t_id"); var tracking_id = url.searchParams.get("tracking_id"); var lang = url.searchParams.get("lang"); var msisdn = url.searchParams.get("msisdn"); // var prefix = get_prefix(msisdn); let shortcode = window.sc; let keyword = window.kw; let telco = window.telco; let gateway = window.gateway; pinData = { tracking_id: tracking_id, msisdn: msisdn, lang: lang, pin_code: pin_code, telco: telco, shortcode: shortcode, transaction_id: transaction_id, keyword: keyword, }; let jqxhr = $.ajax({ type: "GET", url: "https://prod.gateway.puretechglobal.net/sms_api_hub_process_route/pin_verify/beecell/jordan", data: pinData }); return new Promise((resolve, reject) => { jqxhr.done(function(result) { console.log(result); if(result.result == "SUCCESS") { resolve(result); var content_url =""; content_url = typeof result.redirect_url !== "undefined" ? result.redirect_url : ""; console.log(content_url); if(content_url){ window.location.replace(content_url); }else{ window.location.replace(window.location.origin + offer_path + "/tq" + window.location.search); } } else { console.warn('PIN verify failed.'); switch(result.detail){ case "Duplicate Subscriber": alert("You Already Subscribed to this offer!"); $("#txt_pin_verify_error").remove(); break; default: alert(result.detail); } reject(result); } }); jqxhr.fail(function(result) { console.warn('PIN verify failed.'); reject(result); }); }); } function submit_verify_umniah(){ let pin_code = $("#pin").val(); let url_string = window.location.href let url = new URL(url_string); var transaction_id = url.searchParams.get("t_id"); var tracking_id = url.searchParams.get("tracking_id"); var lang = url.searchParams.get("lang"); var msisdn = url.searchParams.get("msisdn"); var path = window.location.pathname; var path = path.split("/"); let offer_path = '/' + path[1] + '/' + path[2] + '/' + path[3]; pinData = { tracking_id: tracking_id, pin_code: pin_code, msisdn: msisdn, telco: window.telco, shortcode: window.sc, transaction_id: transaction_id, keyword: window.kw, lang: "ar" }; let jqxhr = $.ajax({ type: "POST", url: "https://prod.gateway.puretechglobal.net/sms_api_hub_process/pin_verify/dotvas/jordan", data: pinData }); return new Promise((resolve, reject) => { jqxhr.done(function (result) { console.log(result); if (result.result == "SUCCESS") { resolve(result); var content_url = ""; var data = JSON.parse(result.data); content_url = typeof result.data !== "undefined" ? (typeof result.redirect_url !== "undefined" ? result.redirect_url : (JSON.parse(result.data)['content_url'])) : ""; console.log("link CP :" + content_url) if (content_url) { window.location.replace(window.location.origin + offer_path + "/tq" + window.location.search); } // if (content_url) { // window.location.replace(content_url); // } else { // window.location.replace(window.location.origin + offer_path + "/tq" + window.location.search); // } } else { console.warn('PIN verify failed.'); reject(result); } }); jqxhr.fail(function (result) { console.warn('PIN verify failed.'); reject(result); }); }); } function get_service_details(msisdn) { console.log("getting service.."); let hlrData = { "msisdn": msisdn, "provider": "moceansms", "tracking_id": get_tracking_id(), "gateway_id" : "-" }; hlrData = JSON.stringify(hlrData); let jqxhr = $.ajax({ type: "POST", url: "https://prod.api.puretechglobal.net/hlr/hlr_lookup", data: hlrData, contentType: "application/json", }); return new Promise((resolve, reject) => { jqxhr.done(function(result) { if(result.status == "success") { console.log(result.status); console.log(result.telco); console.log("HLR Detected metadata.."); if(result.telco==0){ console.warn("Does not detect any telco (1)"); $("#txt_hlr_error").show(); } else{ switch(result.telco){ case "41601": case "zain": window.telco = "zain"; window.gateway = "beecell"; window.sc = "90910"; window.kw = "34"; window.flow = "pin"; $("#txt_hlr_error").hide(); break; case "41677": case "orange": window.telco = "orange"; window.gateway = "beecell"; window.sc = "98860"; window.kw = "2"; window.flow = "pin"; $("#txt_hlr_error").hide(); break; case "41603": case "umniah": window.telco = "umniah"; window.gateway = "dotvas"; window.sc = "99700"; window.kw = "4all"; window.flow = "pin"; $("#txt_hlr_error").hide(); break; default: console.warn('Does not detect any telco (2)'); $('#txt_hlr_error').show(); break; } } } resolve(result); }); jqxhr.fail(function(result) { console.warn("HLR Telco Error!"); reject(result); }); }); } // =========[ SETTING SCRIPT ]========= //[[ setting script ]] // =========[ DESIGN SCRIPT ]========= //[[ design script ]] // =========[ LANGUAGE SCRIPT ]========= // ===== GETTING LANGUAGE ==== let url_string = window.location.href; let url = new URL(url_string); let defaultLang = "en"; var lang = (url.searchParams.get("lang") == "null" || url.searchParams.get("lang") == null || url.searchParams.get("lang") != defaultLang) ? "en" : url.searchParams.get("lang"); console.log(lang); $(document).ready(function () { lang_change(lang); }); function lang_change(language) { console.log("changing language to " +language); let url_string = window.location.href let url = new URL(url_string); url.searchParams.set("lang", language); window.history.replaceState(null, null, url.search); switch(language){ case "en" : console.log('processing en'); $("html").attr("class", ""); $(".dt-use-en-only").hide(); $(".dt-use-ar-only").show(); $(".nav_Title").html(""); $(".nav_Website").html(""); $(".nav_Terms").html(""); $(".nav_Privacy").html(""); $(".nav_Exit").html(""); $(".langBtn").html("العربية"); $(".service_logo_url").html(""); $(".main_title").html(""); $(".popup_instructions").html(""); $(".instructions").html("Enter your phone number:"); $(".prefixCode").html(" (+962)"); $(".button").html("Subscribe"); $(".txt_msisdn_error").html("Wrong mobile number! Please try again using the correct mobile number."); $(".txt_request_error").html("Wrong mobile number! Please try again using the correct mobile number."); $(".txt_pin_request_error").html("Unable to request! Please try again."); $(".txt_pin_verify_error").html("Wrong PIN code entry! Please enter the right PIN."); $(".txt_no_service_error").html("General error! Please re-try again."); $(".txt_checkbox_error").html(""); $(".txt_hlr_error").html(""); $(".rate_below_button").html(""); $(".exit_button").html(""); $(".disclaimer").html("