jQuery( document ).ready(function () {
jQuery(function($) {
var emailVal;
var gdprHandled = false;
// Store form that needs to be submitted after GDPR approval (use window object for cross-script access)
window.pendingFormSubmission = null;
function getLanguage(){
//GET THE PAGE LANGUAGE
//VALID RETURNS: 1, 2, 3, 4
//1 = English en
//2 = Slovenščina sl
//3 = Hrvatski hr
//4 = Deutsch de
url = window.location.href;
languages = [
"sl",
];
ids = [
2,
];
var i;
for (i = 1; i <= languages.length; i++) {
var lang = languages[i-1];
var regularexp = '(\\\/\\\?lang='+lang+'|\\\/'+lang+'\\\/|\\\/.'+lang+'\\\/|\\\/'+lang+'$)';
var patt = new RegExp(regularexp);
if(patt.test(url)) {
return ids[i - 1];
}
}
var metas = document.getElementsByTagName('meta');
var metalang = $('meta[name=lang]').attr("content");
if(metalang != undefined) {
//no language found with url parsing try session metta lang tag
for (i = 1; i <= languages.length; i++) {
var lang = languages[i-1];
if(lang == metalang) {
return ids[i - 1];
}
}
}
//no languages found
return 0;
}
if($("form").length){
console.log("form found");
$.ajax({
url: "https://gdpr-web.com/cors/params",
dataType: "json",
type: "post",
cache: false,
data: {"domain": "12", "lang_id": getLanguage()},
success: function (data, textStatus, jqXHR) {
if (data.status == "ok") {
$("form").each(function(index) {
if($(this).find("*[type='email'],*[name='Email'],*[name='email'],*[name='fields[email]'],.gdpr_email").length) {
// mark this form as GDPR-protected
$(this).addClass('gdpr-protected-form');
if(data.form_checkbox_link) {
data.form_checkbox_text = '' + data.form_checkbox_text + "";
}
gdpr_styles = "";
$("body").append(gdpr_styles);
element = $(this).find("*[type=submit]");
if($(this).find("#order_review").length) {
element = $(this).find("#order_review");
}
if(element.length) {
element.before("
");
}
}
});
}
else {
console.log(data.message);
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
$(document).on('change','.chk_agree_gdpr',function(){
// Hide error message when checkbox is checked
$(this).closest('.gdpr_check_wrap').find('.gdpr_error_message').hide();
if($(this).is(":checked")) {
handleGDPRForm($(this).closest("form"));
}
});
// Listen for email field changes - if checkbox is checked and email becomes valid, show GDPR popup
$(document).on('blur change', "*[type='email'],*[name='Email'],*[name='email'],*[name='fields[email]']", function(){
var form = $(this).closest("form");
var checkbox = form.find(".chk_agree_gdpr");
if(checkbox.length && checkbox.is(":checked") && !$("#gdpr_form").length) {
var emailVal = $(this).val();
if(gdpr_is_email(emailVal)) {
handleGDPRForm(form);
}
}
});
$("*[type=submit]").on("click", function(e) {
var form = $(this).closest("form.gdpr-protected-form");
// If this form is not GDPR-protected, do nothing special → normal submit
if (!form.length) {
return true;
}
var checkbox = form.find(".chk_agree_gdpr");
if (checkbox.length && checkbox.is(":checked") && !$("#gdpr_form").length) {
return true; // allow submit
}
e.preventDefault();
window.pendingFormSubmission = form;
handleGDPRForm(form);
});
$("form").on("submit", function (e) {
var form = $(this);
// Skip non-GDPR forms (including WooCommerce cart/add-to-cart)
if (!form.hasClass('gdpr-protected-form')) {
return true;
}
var checkbox = form.find(".chk_agree_gdpr");
if (checkbox.length && checkbox.is(":checked") && !$("#gdpr_form").length) {
return true;
}
e.preventDefault();
window.pendingFormSubmission = form;
handleGDPRForm(form);
});
function handleGDPRForm(form) {
// If GDPR form popup is already visible, don't show it again
if($("#gdpr_form").length) {
return;
}
emailEl = $(form).find("*[type='email'],*[name='Email'],*[name='email'],*[name='fields[email]']");
// Check if checkbox exists and is checked
var checkbox = $(form).find(".chk_agree_gdpr");
if (!checkbox.length || !checkbox.is(":checked")) {
// Checkbox not found or not checked - prevent form submission
if (checkbox.length) {
var errorMsg = checkbox.closest('.gdpr_check_wrap').find('.gdpr_error_message');
if (errorMsg.length) {
errorMsg.show();
}
}
return false;
} else {
// Hide error message if checkbox is checked
checkbox.closest('.gdpr_check_wrap').find('.gdpr_error_message').hide();
}
if (emailEl.length) {
emailVal = $(emailEl).val();
console.log("email found");
// Only show GDPR form if email is valid
if (gdpr_is_email(emailVal)) {
$.ajax({
url: "https://gdpr-web.com/cors/form/get",
dataType: "json",
type: "post",
cache: false,
data: {"email": emailVal, "domain": "12", "lang_id": getLanguage() },
success: function (data, textStatus, jqXHR) {
console.log("success");
if (data.status == "ok") {
if (!$("#gdpr_form").length) {
$('body').append("" + data.gdpr_form + "
");
}
}
else {
console.log(data.message);
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown + jqXHR + textStatus);
}
});
} else {
// Email is not valid yet - wait for user to fill it
console.log("Email not valid yet, waiting for user to fill email field");
}
} else {
// No email field found - this shouldn't happen but handle it gracefully
console.log("No email field found in form");
}
}
}
else{
console.log('form not found in first search');
setTimeout(function(){
if($("form").length){
console.log("form found in second search (after 3s)");
$.ajax({
url: "https://gdpr-web.com/cors/params",
dataType: "json",
type: "post",
cache: false,
data: {"domain": "12", "lang_id": getLanguage()},
success: function (data, textStatus, jqXHR) {
if (data.status == "ok") {
$("form").each(function(index) {
if($(this).find("*[type='email'],*[name='Email'],*[name='email'],*[name='fields[email]']").length) {
if(data.form_checkbox_link) {
data.form_checkbox_text = '' + data.form_checkbox_text + "";
}
gdpr_styles = "";
$("body").append(gdpr_styles);
element = $(this).find("*[type=submit]");
if($(this).find("#order_review").length) {
element = $(this).find("#order_review");
}
if(element.length) {
element.before("");
}
}
});
}
else {
console.log(data.message);
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
$(document).on('change','.chk_agree_gdpr',function(){
// Hide error message when checkbox is checked
$(this).closest('.gdpr_check_wrap').find('.gdpr_error_message').hide();
if($(this).is(":checked")) {
handleGDPRForm($(this).closest("form"));
}
});
// Listen for email field changes - if checkbox is checked and email becomes valid, show GDPR popup
$(document).on('blur change', "*[type='email'],*[name='Email'],*[name='email'],*[name='fields[email]']", function(){
var form = $(this).closest("form");
var checkbox = form.find(".chk_agree_gdpr");
if(checkbox.length && checkbox.is(":checked") && !$("#gdpr_form").length) {
var emailVal = $(this).val();
if(gdpr_is_email(emailVal)) {
handleGDPRForm(form);
}
}
});
$("*[type=submit]").on("click", function(e) {
var form = $(this).closest("form");
var checkbox = form.find(".chk_agree_gdpr");
// If checkbox is checked and GDPR form is not visible, allow normal submission
if (checkbox.length && checkbox.is(":checked") && !$("#gdpr_form").length) {
// GDPR approval already complete - allow form to submit
return true;
}
e.preventDefault();
window.pendingFormSubmission = form; // Store form for later submission
handleGDPRForm(form);
});
$("form").bind("submit", function (e) {
var form = $(this);
var checkbox = form.find(".chk_agree_gdpr");
// If checkbox is checked and GDPR form is not visible, allow normal submission
if (checkbox.length && checkbox.is(":checked") && !$("#gdpr_form").length) {
// GDPR approval already complete - allow form to submit
return true;
}
e.preventDefault();
window.pendingFormSubmission = form; // Store form for later submission
handleGDPRForm(form);
});
function handleGDPRForm(form) {
// If GDPR form popup is already visible, don't show it again
if($("#gdpr_form").length) {
return;
}
emailEl = $(form).find("*[type='email'],*[name='Email'],*[name='email'],*[name='fields[email]']");
// Check if checkbox exists and is checked
var checkbox = $(form).find(".chk_agree_gdpr");
if (!checkbox.length || !checkbox.is(":checked")) {
// Checkbox not found or not checked - prevent form submission
if (checkbox.length) {
var errorMsg = checkbox.closest('.gdpr_check_wrap').find('.gdpr_error_message');
if (errorMsg.length) {
errorMsg.show();
}
}
return false;
} else {
// Hide error message if checkbox is checked
checkbox.closest('.gdpr_check_wrap').find('.gdpr_error_message').hide();
}
if (emailEl.length) {
emailVal = $(emailEl).val();
console.log("email found");
// Only show GDPR form if email is valid
if (gdpr_is_email(emailVal)) {
$.ajax({
url: "https://gdpr-web.com/cors/form/get",
dataType: "json",
type: "post",
cache: false,
data: {"email": emailVal, "domain": "12", "lang_id": getLanguage() },
success: function (data, textStatus, jqXHR) {
console.log("success");
if (data.status == "ok") {
if (!$("#gdpr_form").length) {
$('body').append("" + data.gdpr_form + "
");
}
}
else {
console.log(data.message);
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown + jqXHR + textStatus);
}
});
} else {
// Email is not valid yet - wait for user to fill it
console.log("Email not valid yet, waiting for user to fill email field");
}
} else {
// No email field found - this shouldn't happen but handle it gracefully
console.log("No email field found in form");
}
}
} else {
console.log("form not found in second search (after 3s)");
}
}, 3000);
}
});
});
function gdpr_is_email(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}