","http:","https:","ftp:","prepare(","execute(","odbc_exec(","mssql_query(","mysqli","www","html");
for(var xy=1; xy<24; xy++){
if (xy!=14) {
var argy = "forms_field_"+xy;
if (typeof eval("document.myForm.forms_field_"+xy) !== 'undefined') {
var check_value = eval("document.myForm.forms_field_"+xy+".value");
check_value = check_value.toLowerCase();
for(var in_ar=0; in_ar < injects.length; in_ar++){
if ((check_value.indexOf(injects[in_ar]) > -1)){
//alert(check_value);
eval("document.myForm.forms_field_"+xy+'.value="";')
}
}
}
}
}
}
function stripCountrySuffix(value) {
if (!value) return '';
value = value.replace(/,\s*(USA|United States)\s*$/i, '');
value = value.replace(/\s+/g, ' ').trim();
value = value.replace(/,\s*$/, '');
return value;
}
function lookup(search,nod) {
var xmlhttp=false;
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false;
}
}
if (!xmlhttp && window.createRequest) {
try {
xmlhttp = window.createRequest();
} catch (e) {
xmlhttp=false;
}
}
var outext='';
xmlhttp.open("GET", "https://maps.googleapis.com/maps/api/geocode/xml?address="+search,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
var xmlDoc = xmlhttp.responseText;
out = xmlDoc.split("formatted_address>");
if (out[1]) {
outext = out[1].split("")[0];
outext = stripCountrySuffix(outext);
if (nod==1 && outext!="") {
document.myForm.forms_field_5.value = outext;
document.myForm.forms_field_6.value = "";
document.myForm.forms_field_4.value ="";
} else if (nod==2 && outext!=""){
document.myForm.forms_field_8.value = outext;
document.myForm.forms_field_9.value = "";
document.myForm.forms_field_7.value="";
}
}
}
}
xmlhttp.send(null);
}
function myalert(message,func){
var pleft = -6;
var ptop = 100; //desktop
var offset = jQuery('#forms_form').offset();
var DIVX=offset.left;
var DIVY=offset.top;
var divline = [];
my_alert2 = document.createElement('div');
document.body.appendChild(my_alert2);
my_alert2.id='my_alert2';
my_alert2.style.position = 'absolute';
my_alert2.style.left = parseInt(DIVX)+'px';
my_alert2.style.top = parseInt(DIVY)+'px';
my_alert2.style.background = 'transparent';
divline.push('
');
document.getElementById('my_alert2').innerHTML = divline.join('');
}
function myalert2(message,func){
var pleft = -6;
var ptop = 100; //desktop
var offset = jQuery('#forms_form').offset();
var DIVX=offset.left;
var DIVY=offset.top;
var divline = [];
my_alert2 = document.createElement('div');
document.body.appendChild(my_alert2);
my_alert2.id='my_alert2';
my_alert2.style.position = 'absolute';
my_alert2.style.left = parseInt(DIVX)+'px';
my_alert2.style.top = parseInt(DIVY)+'px';
my_alert2.style.background = 'transparent';
divline.push('');
document.getElementById('my_alert2').innerHTML = divline.join('');
}
function normalizePhoneNumber(rawValue) {
var digits = (rawValue || '').replace(/\D/g, '');
if (digits.length === 11 && digits.charAt(0) === '1') {
digits = digits.substring(1);
}
if (digits.length !== 10) {
return '';
}
return digits.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
}
function phone(){
var formatted = normalizePhoneNumber(document.myForm.forms_field_2.value);
if (formatted !== '') {
document.myForm.forms_field_2.value = formatted;
}
return formatted !== '';
}
// Inline validation helper functions
function showFieldError(errorId, inputElement) {
var errorDiv = document.getElementById(errorId);
if (errorDiv) {
errorDiv.classList.add('visible');
}
if (inputElement) {
inputElement.classList.add('field-error-input');
}
}
function hideFieldError(errorId, inputElement) {
var errorDiv = document.getElementById(errorId);
if (errorDiv) {
errorDiv.classList.remove('visible');
}
if (inputElement) {
inputElement.classList.remove('field-error-input');
}
}
function clearAllErrors() {
var errors = document.querySelectorAll('.field-error');
for (var i = 0; i < errors.length; i++) {
errors[i].classList.remove('visible');
}
var inputs = document.querySelectorAll('.field-error-input');
for (var j = 0; j < inputs.length; j++) {
inputs[j].classList.remove('field-error-input');
}
}
function scrollToError(element) {
if (element) {
element.scrollIntoView({ behavior: 'smooth', block: 'center' });
element.focus();
}
}
// Continental US states (lower 48 + DC) — excludes AK, HI, territories
var CONTINENTAL_US_STATES = [
'AL', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA',
'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD',
'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH',
'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA',
'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA',
'WV', 'WI', 'WY', 'DC'
];
function isContinentalState(stateAbbr) {
if (!stateAbbr) return false;
return CONTINENTAL_US_STATES.indexOf(stateAbbr.toUpperCase().trim()) !== -1;
}
// Parse "City, State" format — returns {city, state} or null
function parseCityState(value) {
if (!value) return null;
var match = value.match(/^([A-Za-z\s.\-']+),\s*([A-Za-z]{2,})\s*$/);
if (!match) return null;
var city = match[1].trim();
var state = match[2].trim().toUpperCase();
if (state.length > 2) return null;
if (!city || !state) return null;
return { city: city, state: state };
}
// Validate address: must be "City, State" in continental US
// Accepts either parsed from text OR from Google Places hidden fields
function isValidContinentalAddress(addressText, stateFromApi) {
if (!addressText || addressText.trim() === '') return { valid: false, reason: 'empty' };
// First check: if Google Places populated the state hidden field
if (stateFromApi && stateFromApi.trim().length > 0) {
var st = stateFromApi.trim().toUpperCase();
if (!isContinentalState(st)) {
return { valid: false, reason: 'not_continental' };
}
return { valid: true };
}
// Second check: parse the text input as "City, State"
var parsed = parseCityState(addressText);
if (!parsed) {
return { valid: false, reason: 'bad_format' };
}
if (!isContinentalState(parsed.state)) {
return { valid: false, reason: 'not_continental' };
}
return { valid: true };
}
function func2(){
document.getElementById("forms_form").style.opacity = "1";
document.getElementById("forms_field_23").disabled = false;
var waitLogo = document.getElementById("waitlogo");
if (waitLogo) {
waitLogo.style.display = "none";
}
}
function CFL(string) {
var snnn = string;
snnn = snnn.replace(/[0-9]/g, '');
snnn = snnn.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ' ');
snnn = snnn.trim();
snnn = snnn.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
return snnn;
}
function CFL1(string) {
var snnn = string;
//snnn = snnn.replace(/[0-9]/g, '');
//snnn = snnn.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ' ');
snnn = snnn.trim();
snnn = snnn.toLowerCase().replace( /\b./g, function(a){ return a.toUpperCase(); } );
return snnn;
}
function func1(){
fun47();
phone();
document.getElementById("forms_field_23").disabled = true;
document.getElementById("forms_form").style.opacity = "0.8";
// Geocode pickup: prefer forms_field_6 (from autocomplete),
// fall back to visible text for manual entry
var str_zip = document.myForm.forms_field_6.value;
if (str_zip == "" && document.myForm.pickup_address.value.trim() != "") {
str_zip = document.myForm.pickup_address.value.trim();
}
if (str_zip != "") {
lookup(str_zip, 1);
}
// Geocode dropoff: same fallback logic
var end_zip = document.myForm.forms_field_9.value;
if (end_zip == "" && document.myForm.dropoff_address.value.trim() != "") {
end_zip = document.myForm.dropoff_address.value.trim();
}
if (end_zip != "") {
setTimeout(function(){ lookup(end_zip, 2) }, 200);
}
document.getElementById("forms_form").style.opacity = "0.6";
setTimeout(function(){func11()},600);
}
function func11(){
document.getElementById("forms_form").style.opacity = "0.4";
//document.getElementById("forms_field_23").disabled = true;
document.myForm.forms_field_1.value = CFL1(document.myForm.forms_field_1.value);
var mmm = document.myForm.forms_field_3.value;
//mmm = mmm.replace(/[`~!#$%&*+\-=]/gi, '');
document.myForm.forms_field_6.value = "";
document.myForm.forms_field_9.value = "";
var str_city = CFL(document.myForm.forms_field_5.value);
var end_city = CFL(document.myForm.forms_field_8.value);
document.myForm.forms_field_5.value = str_city;
document.myForm.forms_field_8.value = end_city;
var landmarks = document.myForm.forms_field_4.value;
var landmarks2 = document.myForm.forms_field_7.value;
document.getElementById("forms_form").style.opacity = "0.6";
// Clear all previous errors and reset backgrounds
clearAllErrors();
document.myForm.forms_field_1.style.background = "#ffffff";
document.myForm.forms_field_2.style.background = "#ffffff";
document.myForm.forms_field_3.style.background = "#ffffff";
document.myForm.pickup_address.style.background = "#ffffff";
document.myForm.dropoff_address.style.background = "#ffffff";
var hasError = false;
var phoneValue = normalizePhoneNumber(document.myForm.forms_field_2.value);
if (phoneValue !== '') {
document.myForm.forms_field_2.value = phoneValue;
}
// 1. Name — required
if (document.myForm.forms_field_1.value == "") {
showFieldError('error_name', document.myForm.forms_field_1);
scrollToError(document.myForm.forms_field_1);
hasError = true;
// 2. Phone — required, valid US 10-digit number
}else if (phoneValue === "") {
showFieldError('error_phone', document.myForm.forms_field_2);
scrollToError(document.myForm.forms_field_2);
hasError = true;
// 3. Email — required, must be valid format
}else if (mmm == "" || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mmm)){
showFieldError('error_email', document.myForm.forms_field_3);
scrollToError(document.myForm.forms_field_3);
hasError = true;
// 4. Pickup Location — required, continental US City, State
}else{
var pickupResult = isValidContinentalAddress(document.myForm.pickup_address.value, document.myForm.forms_field_4.value);
if (!pickupResult.valid) {
// Show specific error message based on reason
var pickupErrEl = document.getElementById('error_pickup');
if (pickupErrEl) {
var errText = pickupErrEl.querySelector('.field-error-text');
if (errText) {
if (pickupResult.reason === 'not_continental') {
errText.textContent = 'Location must be within the continental United States (lower 48 states + DC).';
} else {
errText.textContent = 'Please enter a valid City, State (e.g. Dallas, TX).';
}
}
}
showFieldError('error_pickup', document.myForm.pickup_address);
scrollToError(document.myForm.pickup_address);
hasError = true;
// 5. Destination Location — required, continental US City, State
}else{
var dropoffResult = isValidContinentalAddress(document.myForm.dropoff_address.value, document.myForm.forms_field_7.value);
if (!dropoffResult.valid) {
var dropoffErrEl = document.getElementById('error_dropoff');
if (dropoffErrEl) {
var errText2 = dropoffErrEl.querySelector('.field-error-text');
if (errText2) {
if (dropoffResult.reason === 'not_continental') {
errText2.textContent = 'Location must be within the continental United States (lower 48 states + DC).';
} else {
errText2.textContent = 'Please enter a valid City, State (e.g. Houston, TX).';
}
}
}
showFieldError('error_dropoff', document.myForm.dropoff_address);
scrollToError(document.myForm.dropoff_address);
hasError = true;
}
}
}
if (hasError) {
func2();
return;
} else {
document.getElementById("forms_form").style.opacity = "0.3";
$.ajax({
type:"POST",
url: 'spelling.php',
data: ({dats: mmm}),
cache: false,
success: function(result){
var suggestion = (typeof result === "string") ? result.trim() : "";
var emailHint = document.getElementById("email_hint");
if (emailHint) {
emailHint.textContent = "";
emailHint.classList.remove("visible");
}
if (suggestion !== "" && suggestion !== mmm) {
document.myForm.newemail.value = suggestion;
document.myForm.forms_field_3.value = suggestion;
if (emailHint) {
emailHint.textContent = "We refreshed your email address to avoid delivery issues: " + suggestion;
emailHint.classList.add("visible");
}
}
func12();
},
error: function (request, status, error) {
alert(request.responseText);
}
});
}
}
function func12(){
document.getElementById("forms_form").style.opacity = "0.1";
var waitLogo = document.getElementById("waitlogo");
if (waitLogo) {
waitLogo.style.display = "block";
}
document.myForm.action = "calculate.php";
document.myForm.method = "POST";
setTimeout(function(){document.myForm.submit();},200);
//alert("OK Submit: "+document.myForm.forms_field_3.value);
}
// Google Places Autocomplete
var pickupAutocomplete, dropoffAutocomplete;
function initAutocomplete() {
var pickupInput = document.getElementById('pickup_address');
var dropoffInput = document.getElementById('dropoff_address');
var options = {
types: ['(cities)'],
componentRestrictions: { country: 'us' }
};
pickupAutocomplete = new google.maps.places.Autocomplete(pickupInput, options);
dropoffAutocomplete = new google.maps.places.Autocomplete(dropoffInput, options);
pickupAutocomplete.addListener('place_changed', function() {
var place = pickupAutocomplete.getPlace();
extractAddressComponents(place, 'pickup');
});
dropoffAutocomplete.addListener('place_changed', function() {
var place = dropoffAutocomplete.getPlace();
extractAddressComponents(place, 'dropoff');
});
}
function extractAddressComponents(place, type) {
if (!place.address_components) return;
var city = '';
var sublocality = '';
var county = '';
var state = '';
var fullAddress = stripCountrySuffix(place.formatted_address || '');
for (var i = 0; i < place.address_components.length; i++) {
var component = place.address_components[i];
var types = component.types;
if (types.indexOf('locality') > -1) {
city = component.long_name;
}
if (types.indexOf('sublocality') > -1 || types.indexOf('sublocality_level_1') > -1) {
sublocality = component.long_name;
}
if (types.indexOf('administrative_area_level_2') > -1) {
county = component.long_name;
}
if (types.indexOf('administrative_area_level_1') > -1) {
state = component.short_name;
}
}
// Use city, or fall back to sublocality, then county
var locationName = city || sublocality || county || '';
var cityState = stripCountrySuffix(locationName + (state ? ', ' + state : ''));
var normalizedLocation = cityState || fullAddress;
if (type === 'pickup') {
document.getElementById('pickup_address').value = normalizedLocation;
document.getElementById('forms_field_5').value = normalizedLocation;
document.getElementById('forms_field_4').value = state;
document.getElementById('forms_field_6').value = normalizedLocation;
hideFieldError('error_pickup', document.getElementById('pickup_address'));
} else {
document.getElementById('dropoff_address').value = normalizedLocation;
document.getElementById('forms_field_8').value = normalizedLocation;
document.getElementById('forms_field_7').value = state;
document.getElementById('forms_field_9').value = normalizedLocation;
hideFieldError('error_dropoff', document.getElementById('dropoff_address'));
}
}
// Add event listeners to clear errors on user input
document.addEventListener('DOMContentLoaded', function() {
var nameField = document.getElementById('forms_field_1');
var phoneField = document.getElementById('forms_field_2');
var emailField = document.getElementById('forms_field_3');
var pickupField = document.getElementById('pickup_address');
var dropoffField = document.getElementById('dropoff_address');
if (nameField) {
nameField.addEventListener('input', function() {
hideFieldError('error_name', this);
});
}
if (phoneField) {
phoneField.addEventListener('input', function() {
hideFieldError('error_phone', this);
});
phoneField.addEventListener('blur', function() {
var formattedPhone = normalizePhoneNumber(this.value);
if (formattedPhone !== '') {
this.value = formattedPhone;
}
});
}
if (emailField) {
emailField.addEventListener('input', function() {
hideFieldError('error_email', this);
});
}
if (pickupField) {
pickupField.addEventListener('input', function() {
// Clear ALL hidden fields when user types manually
document.getElementById('forms_field_5').value = '';
document.getElementById('forms_field_4').value = '';
document.getElementById('forms_field_6').value = '';
hideFieldError('error_pickup', this);
});
}
if (dropoffField) {
dropoffField.addEventListener('input', function() {
// Clear ALL hidden fields when user types manually
document.getElementById('forms_field_8').value = '';
document.getElementById('forms_field_7').value = '';
document.getElementById('forms_field_9').value = '';
hideFieldError('error_dropoff', this);
});
}
});