(function waitForjQuery(attempts){
if (typeof window.jQuery !== "undefined") {
(function($) {
window.gspeechFront = function(options) {
var $this = this,
thisPage = this;
this.initVars = function() {
// get options
this.options = options;
this.is_touch_devise = 'ontouchstart' in window ? true : false;
this.options.lazy_load_timeout = 400;
};
this.init = function() {
this.initVars();
this.runFunctions();
};
// Start ///////////////////////////////////////////////////////////////////////
this.runFunctions = function() {
this.applyCookies();
this.applyFunctions();
};
this.applyFunctions = function() {
var $gsp_data_html = $("#gsp_data_html");
if (!$gsp_data_html.length) {
console.log("GSpeech: required html is missing.")
return;
}
var lazy_load = $gsp_data_html.data("lazy_load");
var reload_session = parseInt($gsp_data_html.data("reload_session"));
var widget_id = $gsp_data_html.data("w_id");
var v_ind = $gsp_data_html.data("vv_index");
var gt_w = $gsp_data_html.data("gt-w");
let storage;
try {
storage = window.localStorage;
storage.setItem('test', 'test');
storage.removeItem('test');
} catch (e) {
storage = window.sessionStorage;
}
let encData = storage.getItem('gsp_enc_data') ? JSON.parse(storage.getItem('gsp_enc_data')) : {};
var canAjax = (typeof window.gsp_ajax_obj === 'object') &&
window.gsp_ajax_obj &&
typeof gsp_ajax_obj.ajax_url === 'string' &&
gsp_ajax_obj.ajax_url &&
typeof gsp_ajax_obj.nonce === 'string' &&
gsp_ajax_obj.nonce;
if (reload_session == 1 || !encData.h_enc || !encData.s_enc || !encData.hh_enc) {
if (canAjax) {
jQuery.post(gsp_ajax_obj.ajax_url, {
action: 'wpgsp_validate_enc_data',
_ajax_nonce: gsp_ajax_obj.nonce
}, function(response) {
if (response && response.success && response.data) {
encData = {
s_enc: response.data.s_enc || '',
h_enc: response.data.h_enc || '',
hh_enc: response.data.hh_enc || ''
};
try { storage.setItem('gsp_enc_data', JSON.stringify(encData)); } catch(e){}
}
loadCloudWidget(encData);
}).fail(function() {
loadCloudWidget(encData);
});
} else {
console.warn('[GSpeech] gsp_ajax_obj is missing — loading widget without enc data');
loadCloudWidget(encData);
}
} else {
loadCloudWidget(encData);
}
function loadCloudWidget(encData) {
var load_timeout = lazy_load == 1 ? thisPage.options.lazy_load_timeout : 0;
if ($("#gspeech_cloud_widget").length) return; // already loaded
setTimeout(function () {
if ($("#gspeech_cloud_widget").length) return; // double-check
$("body").append(
''
);
}, load_timeout);
}
};
// Inner methods ///////////////////////////////////////////////////////////////////////
this.bytesToHex = function(bytes) {
var hexstring='', h;
for(var i=0; i