jQuery(document).ready(function($) { // Modal functionality var modal = $('#cups-modal'); var modalContainer = $('.cups-modal-container'); var modalOverlay = $('.cups-modal-overlay'); var openBtn = $('.cups-open-modal'); var closeBtn = $('.cups-close'); var formScroll = $('.cups-form-scroll'); var modalFooter = $('.cups-modal-footer'); // Store form values to prevent loss var formValues = { post_title: '', post_content: '', email: '', mobile_number: '', captcha_answer: '' }; // Save form values function saveFormValues() { formValues = { post_title: $('#cups-post-title').val(), post_content: $('#cups-post-content').val(), email: $('#cups-email').val(), mobile_number: $('#cups-mobile').val(), captcha_answer: $('#cups-captcha-answer').val() }; } // Restore form values function restoreFormValues() { $('#cups-post-title').val(formValues.post_title); $('#cups-post-content').val(formValues.post_content); $('#cups-email').val(formValues.email); $('#cups-mobile').val(formValues.mobile_number); $('#cups-captcha-answer').val(formValues.captcha_answer); } // Auto-save form values on input $('#cups-submission-form input, #cups-submission-form textarea').on('input', function() { saveFormValues(); }); // Open modal openBtn.on('click', function() { modal.css('display', 'block'); modalContainer.removeClass('cups-modal-slide-left'); loadCaptcha(); $('#cups-global-message').html('').hide(); restoreFormValues(); }); // Close modal function closeModal() { modalContainer.addClass('cups-modal-slide-left'); setTimeout(function() { modal.css('display', 'none'); }, 300); } closeBtn.on('click', function() { closeModal(); }); // Close modal only when clicking on overlay (not container) modalOverlay.on('click', function(e) { // Only close if clicking directly on overlay (not bubbling from container) if (e.target === this) { closeModal(); } }); // Make footer sticky when scrolling formScroll.on('scroll', function() { var scrollTop = $(this).scrollTop(); var scrollHeight = $(this)[0].scrollHeight; var clientHeight = $(this)[0].clientHeight; // If scrolled near bottom, remove sticky class if (scrollHeight - scrollTop - clientHeight < 10) { modalFooter.removeClass('cups-sticky-footer'); } else { modalFooter.addClass('cups-sticky-footer'); } }); // Load captcha function loadCaptcha() { $.ajax({ url: cups_ajax.ajax_url, type: 'POST', data: { action: 'get_captcha', nonce: cups_ajax.nonce }, success: function(response) { if (response.success) { $('#cups-captcha-question').text(response.data.question); $('#cups-captcha-value').val(response.data.answer); } } }); } // Form submission $('#cups-submission-form').on('submit', function(e) { e.preventDefault(); var submitBtn = $('#cups-submit-btn'); var originalText = submitBtn.text(); // Show loading state submitBtn.text('Submitting...').prop('disabled', true); // Clear previous messages $('#cups-global-message').html('').hide(); var formData = $(this).serializeArray(); formData.push({ name: 'action', value: 'submit_user_post' }); formData.push({ name: 'nonce', value: cups_ajax.nonce }); $.ajax({ url: cups_ajax.ajax_url, type: 'POST', data: formData, success: function(response) { if (response.success) { // Show success message in modal $('#cups-global-message') .html('
' + response.data.message + '
') .show(); // Slide modal to left modalContainer.addClass('cups-modal-slide-left'); // Reset form values formValues = { post_title: '', post_content: '', email: '', mobile_number: '', captcha_answer: '' }; // Reset form after animation setTimeout(function() { $('#cups-submission-form')[0].reset(); modal.css('display', 'none'); modalContainer.removeClass('cups-modal-slide-left'); }, 1000); // Redirect to external URL after 3 seconds setTimeout(function() { window.location.href = response.data.redirect_url; }, 3000); } else { // Show error message $('#cups-global-message') .html('
' + response.data + '
') .show(); // Reload captcha on error loadCaptcha(); } submitBtn.text(originalText).prop('disabled', false); }, error: function(xhr, status, error) { console.error('AJAX Error:', error); $('#cups-global-message') .html('
An error occurred. Please try again.
') .show(); submitBtn.text(originalText).prop('disabled', false); loadCaptcha(); } }); }); // Initialize loadCaptcha(); });