{"id":9,"date":"2025-12-02T20:52:02","date_gmt":"2025-12-02T20:52:02","guid":{"rendered":"https:\/\/pctest.silverbackthemes.com\/?page_id=9"},"modified":"2025-12-02T20:52:02","modified_gmt":"2025-12-02T20:52:02","slug":"test","status":"publish","type":"page","link":"https:\/\/pctest.silverbackthemes.com\/index.php\/test\/","title":{"rendered":"Test"},"content":{"rendered":"\n\n<div class=\"leadgen-form-container\" data-form-id=\"1\">\n\t<div class=\"leadgen-progress-bar\">\n\t\t<div class=\"leadgen-progress-step active\" data-step=\"1\" style=\"background: #0073aa;\">1<\/div>\n\t\t<div class=\"leadgen-progress-step\" data-step=\"2\" style=\"background: #0073aa;\">2<\/div>\n\t\t<div class=\"leadgen-progress-step\" data-step=\"3\" style=\"background: #0073aa;\">3<\/div>\n\t<\/div>\n\n\t<div class=\"leadgen-form-step\" data-step=\"1\">\n\t\t<h2>Select a Category<\/h2>\n\t\t<div class=\"leadgen-categories-list\" id=\"leadgen-categories\"><\/div>\n\t<\/div>\n\n\t<div class=\"leadgen-form-step\" data-step=\"2\" style=\"display:none;\">\n\t\t<h2>Select a Service<\/h2>\n\t\t<div class=\"leadgen-services-list\" id=\"leadgen-services\"><\/div>\n\t\t<button type=\"button\" class=\"leadgen-btn leadgen-btn-secondary leadgen-back-btn\">Back<\/button>\n\t<\/div>\n\n\t<div class=\"leadgen-form-step\" data-step=\"3\" style=\"display:none;\">\n\t\t<h2>Select a Parameter<\/h2>\n\t\t<div class=\"leadgen-parameters-list\" id=\"leadgen-parameters\"><\/div>\n\t\t<button type=\"button\" class=\"leadgen-btn leadgen-btn-secondary leadgen-back-btn\">Back<\/button>\n\t<\/div>\n\n\t<div class=\"leadgen-form-step\" data-step=\"4\" style=\"display:none;\">\n\t\t<h2>Your Information<\/h2>\n\t\t<div class=\"leadgen-selected-summary\" id=\"leadgen-summary\" style=\"background: #f9f9f9; padding: 15px; border-radius: 5px; margin-bottom: 20px; display: none;\">\n\t\t\t<h3>Selected Service<\/h3>\n\t\t\t<p id=\"summary-category\"><\/p>\n\t\t\t<p id=\"summary-service\"><\/p>\n\t\t\t<p id=\"summary-parameter\"><\/p>\n\t\t\t<p id=\"summary-price\" style=\"font-size: 18px; font-weight: bold; color: #0073aa; margin-top: 10px;\"><\/p>\n\t\t<\/div>\n\t\t<form id=\"leadgen-final-form\">\n\t\t\t<input type=\"hidden\" id=\"leadgen-category-id\" name=\"category_id\" \/>\n\t\t\t<input type=\"hidden\" id=\"leadgen-service-id\" name=\"service_id\" \/>\n\t\t\t<input type=\"hidden\" id=\"leadgen-parameter-id\" name=\"parameter_id\" \/>\n\t\t\t<input type=\"hidden\" id=\"leadgen-parameter-price\" name=\"parameter_price\" \/>\n\n\t\t\t<div class=\"leadgen-form-field\">\n\t\t\t\t<label for=\"leadgen-full-name\">Full Name *<\/label>\n\t\t\t\t<input type=\"text\" id=\"leadgen-full-name\" name=\"full_name\" required \/>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"leadgen-form-field\">\n\t\t\t\t<label for=\"leadgen-phone\">Phone *<\/label>\n\t\t\t\t<input type=\"tel\" id=\"leadgen-phone\" name=\"phone\" required \/>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"leadgen-form-field\">\n\t\t\t\t<label for=\"leadgen-email\">Email *<\/label>\n\t\t\t\t<input type=\"email\" id=\"leadgen-email\" name=\"email\" required \/>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"leadgen-form-field\" style=\"position: relative;\">\n\t\t\t\t<label for=\"leadgen-zip\">ZIP Code *<\/label>\n\t\t\t\t<input type=\"text\" id=\"leadgen-zip\" name=\"zip\" autocomplete=\"off\" placeholder=\"Search or enter ZIP code\" required \/>\n\t\t\t\t<div id=\"leadgen-zip-suggestions\" style=\"position: absolute; background: white; border: 1px solid #ddd; border-top: none; max-height: 200px; overflow-y: auto; width: 100%; z-index: 1000; display: none; box-shadow: 0 2px 5px rgba(0,0,0,0.2);\"><\/div>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"leadgen-price-summary\" style=\"background: #f0f8ff; padding: 20px; border-radius: 5px; margin: 20px 0; text-align: center; border: 2px solid #0073aa;\">\n\t\t\t\t<h3 style=\"margin: 0 0 10px 0; color: #0073aa;\">Total Price<\/h3>\n\t\t\t\t<div id=\"leadgen-final-price\" style=\"font-size: 32px; font-weight: bold; color: #0073aa;\">$0.00<\/div>\n\t\t\t<\/div>\n\n\t\t\t<button type=\"submit\" class=\"leadgen-btn leadgen-btn-primary\" style=\"background: #0073aa;\">Submit<\/button>\n\t\t\t<button type=\"button\" class=\"leadgen-btn leadgen-btn-secondary leadgen-back-btn\">Back<\/button>\n\t\t<\/form>\n\t<\/div>\n<\/div>\n\n<script>\njQuery(document).ready(function($) {\n\tlet currentStep = 1;\n\tlet selectedCategory = null;\n\tlet selectedService = null;\n\tlet selectedParameter = null;\n\n\t\/\/ Load categories for this form\n\tconst formId = 1;\n\t\n\t$.ajax({\n\t\turl: leadgenPublic.apiUrl + 'categories?form_id=' + formId,\n\t\tmethod: 'GET',\n\t\tbeforeSend: function(xhr) {\n\t\t\txhr.setRequestHeader('X-WP-Nonce', leadgenPublic.nonce);\n\t\t},\n\t\tsuccess: function(categories) {\n\t\t\tconst container = $('#leadgen-categories');\n\t\t\tcategories.forEach(function(category) {\n\t\t\t\tcontainer.append(\n\t\t\t\t\t'<div class=\"leadgen-category-item\" data-id=\"' + category.id + '\">' +\n\t\t\t\t\t'<h3>' + category.name + '<\/h3>' +\n\t\t\t\t\t'<\/div>'\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t});\n\n\t\/\/ Category selection\n\t$(document).on('click', '.leadgen-category-item', function() {\n\t\tselectedCategory = $(this).data('id');\n\t\tloadServices(selectedCategory);\n\t\tcurrentStep = 2;\n\t\tshowStep(2);\n\t});\n\n\t\/\/ Service selection\n\t$(document).on('click', '.leadgen-service-item', function() {\n\t\tselectedService = $(this).data('id');\n\t\tloadParameters(selectedService);\n\t\tcurrentStep = 3;\n\t\tshowStep(3);\n\t});\n\n\t\/\/ Parameter selection\n\t$(document).on('click', '.leadgen-parameter-item', function() {\n\t\tselectedParameter = {\n\t\t\tid: $(this).data('id'),\n\t\t\tprice: $(this).data('price'),\n\t\t\tname: $(this).find('h3').text()\n\t\t};\n\t\t\n\t\t\/\/ Get category and service names\n\t\tconst categoryName = $('.leadgen-category-item[data-id=\"' + selectedCategory + '\"] h3').text();\n\t\tconst serviceName = $('.leadgen-service-item[data-id=\"' + selectedService + '\"] h3').text();\n\t\t\n\t\t$('#leadgen-category-id').val(selectedCategory);\n\t\t$('#leadgen-service-id').val(selectedService);\n\t\t$('#leadgen-parameter-id').val(selectedParameter.id);\n\t\t$('#leadgen-parameter-price').val(selectedParameter.price);\n\t\t\n\t\t\/\/ Update summary\n\t\t$('#summary-category').text('Category: ' + categoryName);\n\t\t$('#summary-service').text('Service: ' + serviceName);\n\t\t$('#summary-parameter').text('Parameter: ' + selectedParameter.name);\n\t\t$('#summary-price').text('Total Price: $' + parseFloat(selectedParameter.price).toFixed(2));\n\t\t$('#leadgen-final-price').text('$' + parseFloat(selectedParameter.price).toFixed(2));\n\t\t$('#leadgen-summary').show();\n\t\t\n\t\tcurrentStep = 4;\n\t\tshowStep(4);\n\t});\n\n\t\/\/ Back button\n\t$(document).on('click', '.leadgen-back-btn', function() {\n\t\tif (currentStep > 1) {\n\t\t\tcurrentStep--;\n\t\t\tshowStep(currentStep);\n\t\t}\n\t});\n\n\t\/\/ Form submission\n\t$('#leadgen-final-form').on('submit', function(e) {\n\t\te.preventDefault();\n\n\t\tconst formData = {\n\t\t\tfull_name: $('#leadgen-full-name').val(),\n\t\t\tphone: $('#leadgen-phone').val(),\n\t\t\temail: $('#leadgen-email').val(),\n\t\t\tzip: $('#leadgen-zip').val(),\n\t\t\tcategory_id: selectedCategory,\n\t\t\tservice_id: selectedService,\n\t\t\tparameter_id: selectedParameter.id,\n\t\t\tparameter_price: selectedParameter.price,\n\t\t\ttype: 'online_quote',\n\t\t\tchannel: getUrlParameter('utm_source') || 'direct',\n\t\t\tutm_source: getUrlParameter('utm_source') || '',\n\t\t\tutm_medium: getUrlParameter('utm_medium') || '',\n\t\t\tutm_campaign: getUrlParameter('utm_campaign') || ''\n\t\t};\n\n\t\t$.ajax({\n\t\t\turl: leadgenPublic.apiUrl + 'leads',\n\t\t\tmethod: 'POST',\n\t\t\tbeforeSend: function(xhr) {\n\t\t\t\txhr.setRequestHeader('X-WP-Nonce', leadgenPublic.nonce);\n\t\t\t\txhr.setRequestHeader('Content-Type', 'application\/json');\n\t\t\t},\n\t\t\tdata: JSON.stringify(formData),\n\t\t\tsuccess: function(response) {\n\t\t\t\tif (response.thank_you_url) {\n\t\t\t\t\twindow.location.href = response.thank_you_url;\n\t\t\t\t} else {\n\t\t\t\t\twindow.location.href = 'https:\/\/pctest.silverbackthemes.com\/thank-you\/';\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function() {\n\t\t\t\talert('There was an error submitting your form. Please try again.');\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction loadServices(categoryId) {\n\t\t$.ajax({\n\t\t\turl: leadgenPublic.apiUrl + 'services?category_id=' + categoryId,\n\t\t\tmethod: 'GET',\n\t\t\tbeforeSend: function(xhr) {\n\t\t\t\txhr.setRequestHeader('X-WP-Nonce', leadgenPublic.nonce);\n\t\t\t},\n\t\t\tsuccess: function(services) {\n\t\t\t\tconst container = $('#leadgen-services');\n\t\t\t\tcontainer.empty();\n\t\t\t\tservices.forEach(function(service) {\n\t\t\t\t\tcontainer.append(\n\t\t\t\t\t\t'<div class=\"leadgen-service-item\" data-id=\"' + service.id + '\">' +\n\t\t\t\t\t\t'<h3>' + service.name + '<\/h3>' +\n\t\t\t\t\t\t'<\/div>'\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction loadParameters(serviceId) {\n\t\t$.ajax({\n\t\t\turl: leadgenPublic.apiUrl + 'parameters?service_id=' + serviceId,\n\t\t\tmethod: 'GET',\n\t\t\tbeforeSend: function(xhr) {\n\t\t\t\txhr.setRequestHeader('X-WP-Nonce', leadgenPublic.nonce);\n\t\t\t},\n\t\t\tsuccess: function(parameters) {\n\t\t\t\tconst container = $('#leadgen-parameters');\n\t\t\t\tcontainer.empty();\n\t\t\t\tparameters.forEach(function(parameter) {\n\t\t\t\t\tcontainer.append(\n\t\t\t\t\t\t'<div class=\"leadgen-parameter-item\" data-id=\"' + parameter.id + '\" data-price=\"' + parameter.price + '\">' +\n\t\t\t\t\t\t'<h3>' + parameter.name + '<\/h3>' +\n\t\t\t\t\t\t'<p class=\"price\">$' + parseFloat(parameter.price).toFixed(2) + '<\/p>' +\n\t\t\t\t\t\t'<\/div>'\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction showStep(step) {\n\t\t$('.leadgen-form-step').hide();\n\t\t$('.leadgen-form-step[data-step=\"' + step + '\"]').show();\n\t\t$('.leadgen-progress-step').removeClass('active');\n\t\t$('.leadgen-progress-step[data-step=\"' + step + '\"]').addClass('active');\n\t}\n\n\tfunction getUrlParameter(name) {\n\t\tname = name.replace(\/[\\[]\/, '\\\\[').replace(\/[\\]]\/, '\\\\]');\n\t\tconst regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n\t\tconst results = regex.exec(location.search);\n\t\treturn results === null ? '' : decodeURIComponent(results[1].replace(\/\\+\/g, ' '));\n\t}\n\n\t\/\/ ZIP code autocomplete using USCities.json\n\tlet zipCodes = [];\n\tlet zipTimeout = null;\n\n\t\/\/ Load ZIP codes from REST API\n\t$.ajax({\n\t\turl: leadgenPublic.apiUrl + 'zip-codes',\n\t\tmethod: 'GET',\n\t\tbeforeSend: function(xhr) {\n\t\t\txhr.setRequestHeader('X-WP-Nonce', leadgenPublic.nonce);\n\t\t},\n\t\tsuccess: function(data) {\n\t\t\tzipCodes = data;\n\t\t},\n\t\terror: function() {\n\t\t\tconsole.log('Could not load ZIP codes');\n\t\t}\n\t});\n\n\t$('#leadgen-zip').on('input', function() {\n\t\tconst query = $(this).val().trim();\n\t\tconst suggestions = $('#leadgen-zip-suggestions');\n\t\t\n\t\tclearTimeout(zipTimeout);\n\t\t\n\t\tif (query.length < 2) {\n\t\t\tsuggestions.hide().empty();\n\t\t\treturn;\n\t\t}\n\n\t\tzipTimeout = setTimeout(function() {\n\t\t\tconst queryLower = query.toLowerCase();\n\t\t\tconst matches = zipCodes.filter(function(city) {\n\t\t\t\tif (!city.zip_code) return false;\n\t\t\t\tconst zipStr = city.zip_code.toString();\n\t\t\t\tconst cityName = (city.city || '').toLowerCase();\n\t\t\t\tconst stateName = (city.state || '').toLowerCase();\n\t\t\t\t\n\t\t\t\treturn zipStr.startsWith(query) || \n\t\t\t\t\t   cityName.includes(queryLower) || \n\t\t\t\t\t   stateName.includes(queryLower);\n\t\t\t}).slice(0, 10);\n\n\t\t\tif (matches.length > 0) {\n\t\t\t\tsuggestions.empty();\n\t\t\t\tmatches.forEach(function(match) {\n\t\t\t\t\tconst zipStr = match.zip_code.toString();\n\t\t\t\t\tconst item = $('<div style=\"padding: 8px; cursor: pointer; border-bottom: 1px solid #eee;\" onmouseover=\"this.style.backgroundColor=\\'#f0f0f0\\'\" onmouseout=\"this.style.backgroundColor=\\'white\\'\">')\n\t\t\t\t\t\t.html(zipStr + ' - ' + (match.city || '') + ', ' + (match.state || ''))\n\t\t\t\t\t\t.on('click', function() {\n\t\t\t\t\t\t\t$('#leadgen-zip').val(zipStr);\n\t\t\t\t\t\t\tsuggestions.hide();\n\t\t\t\t\t\t});\n\t\t\t\t\tsuggestions.append(item);\n\t\t\t\t});\n\t\t\t\tsuggestions.show();\n\t\t\t} else {\n\t\t\t\tsuggestions.hide().empty();\n\t\t\t}\n\t\t}, 300);\n\t});\n\n\t$(document).on('click', function(e) {\n\t\tif (!$(e.target).closest('#leadgen-zip, #leadgen-zip-suggestions').length) {\n\t\t\t$('#leadgen-zip-suggestions').hide();\n\t\t}\n\t});\n});\n<\/script>\n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":1,"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":10,"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/pages\/9\/revisions\/10"}],"wp:attachment":[{"href":"https:\/\/pctest.silverbackthemes.com\/index.php\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}