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); }