jQuery(document).ready(function($){ var quoteResponse = ''; var location = {}; $.post(ajax_url, {action: 'getReference'}, function(response){ var result = JSON.parse(response); var reference = typeof(result['reference']) != 'undefined' ? result['reference'] : null; if(typeof(reference['location']) != 'undefined'){ location = reference['location']; $.each(reference['location'], function(i, v){ $('#in_origin').append($('', {value: v, text: v})); $('#in_destination').append($('', {value: v, text: v})); }); } if(typeof(reference['make']) != 'undefined'){ $.each(reference['make'], function(i, v){ $('#make').append($('', {value: v, text: v})); }); } }); $('.required').on('input change', function(){ var element = $(this); if (element.data('type') == 'email'){ if(validateEmail(element.val())){ element.removeClass('is-invalid'); element.removeClass('calc123_highlighted'); element.next('.invalid-feedback').remove(); } else { if(!element.next().hasClass('invalid-feedback')){ element.after('Invalid Email'); element.addClass('is-invalid'); } } } if (element.data('type') == 'phone'){ if($.isNumeric(element.val())){ element.removeClass('is-invalid'); element.removeClass('calc123_highlighted'); element.next('.invalid-feedback').remove(); } else { if(!element.next().hasClass('invalid-feedback')){ element.after('Invalid Phone Number'); element.addClass('is-invalid'); } } } }); var validateEmail = function(email){ var email_regex = /^\w+([\.\-\+]?\w+)*@\w+([\.\-]?\w+)*(\.\w{2,3})+$/; var valid = false; if(email.match(email_regex)){ valid = true; } return valid; } var removeSelectedLocation = function(element){ var destination = $("#in_destination"); var origin = $("#in_origin"); var list1Val, list2Val; switch(element.attr('id')){ case "in_origin": list1Val = destination.val(); list = destination; list2Val = origin.val(); break; case "in_destination": list1Val = origin.val(); list = origin list2Val = destination.val(); break; } if(!list1Val || list1Val == list2Val){ list.empty().append("Select..."); $.each(location, function(i, v){ if(list2Val.toLowerCase() == v.toLowerCase()){ }else{ list.append($('', {value: v, text: v})); } }); } } $('.location').change(function(){ removeSelectedLocation($(this)); }); $('#make').change(function(){ $('#model').attr('disabled', true); $('#model').empty().append("Select..."); $.post(ajax_url, {action: 'getModels', make: $(this).val()}, function(response){ var result = JSON.parse(response); if(result) { $.each(result, function(i, v){ $('#model').append($('', {value: v, text: v})); }); $('#model').attr('disabled', false); } }); }); $('#quoteHeader').click(function(){ $('.calc123_result').addClass('calc123_hide'); $(this).text('Get a Quote'); }); var validInput = function(){ $('.calc123_errmsg span').text(''); $('#out_destination').text(''); $('#out_make').text(''); $('#out_model').text(''); $('#out_origin').text(''); $('#out_price').text(''); $('#out_transit').text(''); $('#out_vehicleType').text(''); var error = 0; $('.calc123Form :input').not(':button, :hidden').each(function(){ $(this).removeClass('calc123_highlighted'); $('#TCText').removeClass('calc123_errmsg'); $('#TCText a').removeClass('calc123_errmsg'); if($(this).hasClass('required') && $(this).val() == ''){ $(this).addClass('calc123_highlighted'); error++; } if($(this).next().hasClass('invalid-feedback')){ error++; } }); if(!$('#termCodition').is(':checked')){ $('#TCText').addClass('calc123_errmsg'); $('#TCText a').addClass('calc123_errmsg'); error++; } if(error > 0) { $('.calc123_errmsg span').text('There was a problem with your submission'); return false; } var noServiceLocations = ['darwin', 'perth']; if($('#in_origin').val() == $('#in_destination').val()) { $('#in_origin').addClass('calc123_highlighted'); $('#in_destination').addClass('calc123_highlighted'); $('.calc123_errmsg span').text('Origin and Destination cannot be same'); return false; } if ($.inArray($('#in_origin').val().toLowerCase(), noServiceLocations) >= 0 && $.inArray($('#in_destination').val().toLowerCase(), noServiceLocations) >= 0) { $('#in_origin').addClass('calc123_highlighted'); $('#in_destination').addClass('calc123_highlighted'); $('.calc123_errmsg span').html("We're unable to provide a price for the selected locations at this time. Please call 1300 227 929 for assistance."); return false; } return true; } $('#bookBtn').click(function(){ if(quoteResponse){ var ref = {ref : quoteResponse}; window.location = "BOOKINGFORM" + '/?' + $.param(ref); } }); $('.calc123-submit button').click(function(){ event.preventDefault(); if(!validInput()) return; $('#in_makeAndModel').val($('#make').val() + "_" + $('#model').val()); var btn = $(this); $('.calc123-submit .loader').removeClass('calc123_hide'); $('.calc123_result').addClass('calc123_hide'); btn.prop('disabled', true); $('.calc123_errmsg span').text(''); var formData = $('.calc123Form').serialize(); var data = {action : 'getQuote', data : formData}; $.post(ajax_url, data, function(response){ var result = JSON.parse(response); quoteResponse = result['result']['Metadata']['Reference']; if(result['status'] && result['result'] != 'undefined'){ var responseData = result['result']['Calculations'][0]['ResponseData']; var quoteRef = result['result']['Metadata']['Reference']; var price = result['result']['Calculations'][0]['ResponseData']['out_price']; if(!$.isNumeric(price) || price <= 0){ $('.calc123_errmsg span').html("We're unable to provide a price for the selected locations at this time. Please call 1300 227 929 for assistance."); }else { $('.calc123_result').removeClass('calc123_hide'); $('.custom_message').html($('#email').val()); $('.calc123Form').trigger('reset'); $('#collapseOne').collapse('hide'); $('#quoteHeader').text('Get a New Quote'); } } else { $('.calc123_errmsg span').text(result['error']); } }).always(function(){ $('.calc123-submit .loader').addClass('calc123_hide'); btn.prop('disabled', false); }); }); });
We're unable to provide a price for the selected locations at this time. Please call 1300 227 929 for assistance.