(function () {
var connected = false;
function q(selector) {
return document.querySelector(selector);
}
function setValue(selector, value) {
var el = q(selector);
if (!el) return false;
el.value = value || "";
el.setAttribute("value", value || "");
el.dispatchEvent(new Event("input", { bubbles: true }));
el.dispatchEvent(new Event("change", { bubbles: true }));
el.dispatchEvent(new Event("blur", { bubbles: true }));
return true;
}
function getValue(form, selector) {
var el = form.querySelector(selector);
return el ? el.value : "";
}
function getData(form) {
var fullName = getValue(form, '[name="name"]').trim();
var parts = fullName.split(/\s+/).filter(Boolean);
var rawDate = getValue(form, '[name="preferred-date"]');
var formattedDate = rawDate
? rawDate.slice(5, 7) + "/" + rawDate.slice(8, 10) + "/" + rawDate.slice(0, 4)
: "";
return {
firstName: parts[0] || "",
lastName: parts.slice(1).join(" ") || "",
email: getValue(form, '[name="email"]').trim(),
phone: getValue(form, '[name="phone"]').trim(),
serviceArea: getValue(form, '[name="area"]').trim(),
serviceInterest: getValue(form, '[name="service"]'),
detailDate: formattedDate,
vehicleCondition: getValue(form, '[name="message"]').trim(),
leadSource: "SC Mobile Detailing landing page"
};
}
function syncToHighLevel() {
var form = q(".quote-form");
if (!form) return false;
var data = getData(form);
setValue('[data-q="first_name"]', data.firstName);
setValue('[data-q="last_name"]', data.lastName);
setValue('[data-q="email"]', data.email);
setValue('[data-q="phone"]', data.phone);
setValue('[data-q="service_area"]', data.serviceArea);
setValue('[data-q="detail_you_want"]', data.serviceInterest);
setValue('[data-q="detail_date"]', data.detailDate);
setValue('[data-q="year/make_model"]', data.vehicleCondition);
setValue('[data-q="lead_source"]', data.leadSource);
return true;
}
function hideHighLevelForm() {
var firstField = q('[data-q="first_name"]');
var wrap = firstField && firstField.closest(".ghl-form-wrap");
if (!wrap) return;
wrap.style.setProperty("position", "absolute", "important");
wrap.style.setProperty("left", "-9999px", "important");
wrap.style.setProperty("top", "0", "important");
wrap.style.setProperty("width", "1px", "important");
wrap.style.setProperty("height", "1px", "important");
wrap.style.setProperty("overflow", "hidden", "important");
wrap.style.setProperty("opacity", "0", "important");
}
function connect() {
var form = q(".quote-form");
var ghlForm = q("#_builder-form");
var submitBtn = ghlForm && ghlForm.querySelector('button[type="submit"], button');
if (!form || !ghlForm || !submitBtn) return false;
hideHighLevelForm();
syncToHighLevel();
if (connected) return true;
connected = true;
form.setAttribute("data-ghl-connected", "true");
form.querySelectorAll("input, select, textarea").forEach(function (field) {
field.addEventListener("input", syncToHighLevel);
field.addEventListener("change", syncToHighLevel);
field.addEventListener("keyup", syncToHighLevel);
field.addEventListener("blur", syncToHighLevel);
});
form.addEventListener("submit", function (event) {
event.preventDefault();
});
var visibleButton = form.querySelector("button");
if (visibleButton) {
visibleButton.addEventListener("click", function () {
syncToHighLevel();
visibleButton.textContent = "Sending...";
visibleButton.disabled = true;
setTimeout(function () {
submitBtn.click();
visibleButton.textContent = "Quote Request Sent";
setTimeout(function () {
visibleButton.disabled = false;
visibleButton.textContent = "Get My Quote";
}, 2200);
}, 300);
});
}
return true;
}
var timer = setInterval(function () {
if (connect()) {
clearInterval(timer);
}
}, 300);
setTimeout(connect, 1500);
setTimeout(connect, 3000);
setTimeout(connect, 5000);
})();