/* PRE contactForm */
/* Formtools: Form Scripts */
/* Formtools JS */
// #### [formtools-obj]
if (typeof FormTools == 'undefined') {
var FormTools = {
VERSION: '19.5.8.0',
FORMTOOLS_PATH: './',
FORMTOOLS_BASE_URL: './',
FORMS_BASE_URL: '/forms/',
EMAIL_TEMPLATES_PATH: './email_templates/'
};
}
// #### [formtools-obj]
var contact_form = [];
contact_form.selector = '#contact_form';
// #### [debug]
var FORMTOOL_DEBUG_JS = false;
// #### [initial-values]
contact_form_initial_values = {"full-name":{"type":"text","value":""},"phone":{"type":"tel","value":""},"email":{"type":"email","value":""},"subject":{"type":"text","value":""},"message":{"type":"textarea","value":""}};
function contact_form_reset_field_values($) {
for (var fname in contact_form_initial_values) {
if (contact_form_initial_values.hasOwnProperty(fname)) {
var field = contact_form_initial_values[fname];
var fieldValue = decodeURIComponent(escape(window.atob(field.value)));
switch (field.type) {
case 'text':
case 'file':
case 'email':
case 'tel':
case 'number':
$("#contact_form input[name='" + fname + "']").val(fieldValue).change().blur();
break;
case 'textarea':
$("#contact_form textarea[name='" + fname + "']").val(fieldValue).change().blur();
break;
case 'select':
$select = $("#contact_form select[name='" + fname + "']");
$select.val(fieldValue).change().blur();
if (true) {
$select.selectric('refresh');
}
break;
case 'radio':
$("#contact_form input:radio[name='" + fname + "']")
.filter('[value="' + fieldValue + '"]').prop('checked', true).change().blur();
break;
case 'checkbox':
var $cbs = $("#contact_form input:checkbox[name='" + fname + "']");
$cbs.prop('checked', false);
$cbs.filter('[value="' + fieldValue + '"]').prop('checked', false).change().blur();
break;
default:
}
if (FORMTOOL_DEBUG_JS) {
console.log('Reset ' + fname + '.');
}
// Todo... reset by type. check for [] at end of name, indicates multiple values.
}
}
$('#contact_form label.infield').css('opacity', 1);
}
// #### [validation]
if (typeof formatBytes != 'function') {
window.formatBytes = function(a,b){if(0==a)return"0";var c=1024,d=b||2,e=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],f=Math.floor(Math.log(a)/Math.log(c));return parseFloat((a/Math.pow(c,f)).toFixed(d))+e[f];};
}
if (typeof sizeInBytes != 'function') {
window.sizeInBytes = function(a){var e=parseInt(a,10),t=e;switch(a.substr(a.length-2).toLowerCase()){case"kb":t=e*Math.pow(2,10);break;case"mb":t=e*Math.pow(2,20);break;case"gb":t=e*Math.pow(2,30);break;case"tb":t=e*Math.pow(2,40);}return t;};
}
var frmvalidator_contact_form = null;
var contact_form_onEditCallback = null;
var contact_form_submitting = false;
var contact_form_fields_not_required = [];
var contact_form_field_validations = [];
var contact_form_field_group_validations = [];
var contact_form_per_page_validation = false;
contact_form_field_validations.push({ field: 'full-name', page: 1, type: "req", response: "'Full Name' is required.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'full-name', page: 1, type: "maxlen=50", response: "'Full Name' can be no more than 50 characters.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'phone', page: 1, type: "req", response: "'Phone Number' is required.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'phone', page: 1, type: "maxlen=50", response: "'Phone Number' can be no more than 50 characters.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'email', page: 1, type: "req", response: "'Email' is required.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'email', page: 1, type: "maxlen=50", response: "'Email' can be no more than 50 characters.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'email', page: 1, type: "email", response: "'Email' must be a valid email address.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'subject', page: 1, type: "req", response: "'Subject' is required.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'subject', page: 1, type: "maxlen=50", response: "'Subject' can be no more than 50 characters.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'message', page: 1, type: "req", response: "'How can we help you' is required.", option: "", optional_req: false });
contact_form_field_validations.push({ field: 'message', page: 1, type: "maxlen=1000", response: "'How can we help you' can be no more than 1000 characters.", option: "", optional_req: false });
function contact_form_setActiveValidations(page) {
var activePage = (typeof page !== 'undefined') ? page : 'all';
if (FORMTOOL_DEBUG_JS) { console.log('setActiveValidations: page ' + activePage); }
for (var vname in contact_form_field_validations) {
if (contact_form_field_validations.hasOwnProperty(vname)) {
var vspec = contact_form_field_validations[vname];
if (activePage !== 'all' && vspec.page != activePage) { continue; }
var option = null;
if (vspec.optional_req) {
var label_name = vspec.field.replace('[]', '');
option = vspec.option === '' ? null : vspec.option;
if (!contact_form_is_in_list(vspec.field, contact_form_fields_not_required)) {
frmvalidator_contact_form.addValidation(vspec.field, vspec.type, vspec.response, option);
jQuery('#contact_form-field-' + label_name + '_label .required').removeClass('inactive');
} else {
jQuery('#contact_form-field-' + label_name + '_label .required').addClass('inactive');
}
} else {
frmvalidator_contact_form.addValidation(vspec.field, vspec.type, vspec.response, option);
if (FORMTOOL_DEBUG_JS) { console.log('addValidation: ' + vspec.field); }
}
}
}
for (var gvname in contact_form_field_group_validations) {
if (contact_form_field_group_validations.hasOwnProperty(gvname)) {
var gvspec = contact_form_field_group_validations[gvname];
if (activePage !== 'all' && gvspec.page != activePage) { continue; }
var glabel_name = gvspec.group.replace('[]', '');
frmvalidator_contact_form.setAddnlValidationFunction(eval(gvspec.function));
jQuery('#contact_form-field-' + glabel_name + '_label .required').removeClass('inactive');
if (FORMTOOL_DEBUG_JS) { console.log('addGroupValidation: ' + gvspec.group); }
}
}
}
function contact_form_initValidation(isNew, page) {
page = (typeof page !== 'undefined') ? page : 'all';
if (isNew) {
frmvalidator_contact_form = new Validator('contact_form');
frmvalidator_contact_form.EnableMsgsTogether();
} else {
frmvalidator_contact_form.clearAllValidations();
}
var contact_form_onErrorCallback = function(fields) {
if (FORMTOOL_DEBUG_JS) { console.log('onErrorCallback ' + fields); }
jQuery('#contact_form *').removeClass('validation_error');
var nf = fields.length;
for (var n = 0; n < nf; n++) {
var elements = document.getElementsByName(fields[n]);
var ne = elements.length;
for (var e = 0; e < ne; e++) {
var field = elements[e];
field.className += ' validation_error';
if ((' ' + field.className + ' ').indexOf(' select2 ') > -1) {
field.parentNode.className += ' validation_error';
}
if ((' ' + field.className + ' ').indexOf(' selectric ') > -1) {
field.parentNode.parentNode.parentNode.className += ' validation_error';
}
}
jQuery("#contact_form *[data-validation-field='" + fields[n] + "']").addClass('validation_error');
}
/*if (true) {
var scrollToY = jQuery("#contact_form_errorloc").position().top;
jQuery('html, body').animate({ scrollTop: scrollToY }, 'slow');
}*/
};
frmvalidator_contact_form.setPostValidationCallback(contact_form_onErrorCallback);
frmvalidator_contact_form.EnableOnPageErrorDisplaySingleBox();
contact_form_setActiveValidations(page);
}
function contact_form_reset_validations(page) {
page = (typeof page !== 'undefined') ? page : 'all';
contact_form_initValidation(false, page);
}
function contact_form_ClearErrors() {
jQuery('#contact_form_errorloc').html('');
jQuery('#contact_form_errorloc').css('visibility', 'hidden');
jQuery("#contact_form *").removeClass('validation_error');
}
function contact_form_RefreshErrors() {
jQuery('#contact_form_errorloc').html('');
jQuery('#contact_form_errorloc').css('visibility', 'hidden');
}
function contact_form_initEditHandlers() {
contact_form_onEditCallback = function(remaining) {
jQuery(this).siblings('.chars_remain')
.text(remaining);
if (remaining > 0) { jQuery(this).removeClass('limit'); }
};
jQuery('#contact_form textarea[maxlength]').limitMaxlength({
onEdit: contact_form_onEditCallback
});
}
contact_form_initValidation(true);
contact_form_initEditHandlers();
// #### [ajax]
function contact_form_reloadRecaptcha() {
var contact_form_recaptcha_id = jQuery('#contact_form .g-recaptcha').attr('id');
grecaptcha.reset(contact_form_recaptcha_widget_id);
}
function contact_form_clearForm(ele) {
jQuery(ele).find(':input').each(function() {
switch(this.type) {
case 'password':
case 'select-multiple':
case 'select-one':
case 'text':
case 'textarea':
case 'email':
case 'tel':
case 'number':
jQuery(this).val('');
break;
case 'checkbox':
case 'radio':
this.checked = false;
}
var $infieldLabels = jQuery("#contact_form label.infield");
$infieldLabels.focus();
$infieldLabels.first().focus();
});
contact_form_reloadRecaptcha();
jQuery('#contact_form_ajax_msg').stop(true).hide();
}
function contact_form_submitForm() {
if (!frmvalidator_contact_form.hasMessages()) {
if (contact_form_submitting == true) { return false; }
contact_form_submitting = true;
var contact_form_ajaxMsg = jQuery('#contact_form_ajax_msg');
var contact_form_thisForm = jQuery(this);
contact_form_ajaxMsg.html('Please wait...');
contact_form_ajaxMsg.stop(true).hide().fadeIn();
jQuery.ajax({
url: contact_form_thisForm.attr('action') + '?contact_form_ajax=true',
type: contact_form_thisForm.attr('method'),
data: contact_form_thisForm.serialize(),
success: contact_form_submitFinished,
error: function() { contact_form_submitting = false; }
});
} else {
contact_form_submitting = false;
}
return false;
}
function contact_form_submitFinished(response) {
contact_form_submitting = false;
contact_form_ClearErrors();
var contact_form_ajaxMsg = jQuery('#contact_form_ajax_msg');
contact_form_response = jQuery.trim(response);
contact_form_ajaxMsg.stop(true).hide();
if (contact_form_response == 'success') {
contact_form_clearForm(jQuery('#contact_form'));
contact_form_ajaxMsg.html('Thank you for your enquiry.');
contact_form_ajaxMsg.fadeIn().delay(10000).fadeOut();
} else {
contact_form_ajaxMsg.html('Submission failed.
' + contact_form_response + '');
contact_form_ajaxMsg.fadeIn();
}
}
function contact_form_initSubmitHandler() {
jQuery('#contact_form').submit(contact_form_submitForm);
jQuery('#contact_form_ajax_msg').stop(true).hide();
}
if (jQuery("#contact_form").length != 0) {
jQuery(function($) {
contact_form_initSubmitHandler();
});
}
// #### [infield-labels]
jQuery('#contact_form label.infield').inFieldLabels({ fadeOpacity: 0.3 });
// #### [no-pager]
jQuery('#contact_form .page_wrapper').removeClass('hidden');
// #### [selectric]
function contact_form_selectric_on_change($select) {
var $label = $select.parent().next().find('.label');
var $req = $select.parent().next().find('.required');
if ($select.val() === 'not-selected') {
$req.show();
$label.addClass('not-selected');
} else {
$req.hide();
$label.removeClass('not-selected');
}
}
jQuery(function($) {
var $select = $('#contact_form select.selectric');
$select.selectric();
if (true) {
var $select = $('#contact_form select.selectric');
$select.each(function() {
var $s = $(this);
var $label = $s.parent().next().find('.label');
if (JSON.parse($s.data('required'))) {
$label.after('*');
}
$s.on('change', function() {
contact_form_selectric_on_change($(this));
});
});
}
});
/* Formtools: Field Scripts */
/* Formtools JS After */
// #### [contact_form_recaptcha_render]
var contact_form_recaptcha_widget_id = null;
var contact_form_recaptcha_loaded = false;
var contact_form_recaptcha_completed = false;
var contact_form_recaptcha_inputSubmit = jQuery("#contact_form input[type='submit']");
function contact_form_load_recaptcha() {
if (contact_form_recaptcha_loaded) { return; }
contact_form_recaptcha_widget_id = grecaptcha.render("contact_form_recaptcha", {
'sitekey' : '6Ld9OroUAAAAAMlZRJA6Wmtf1g70_3_qn1MadYHT',
'size' : 'normal',
'theme' : 'light',
'callback': 'contact_form_recaptchaCompleteCallback',
'expired-callback': 'contact_form_recaptchaExpiredCallback'
});
contact_form_recaptcha_loaded = true;
}
var contact_form_onloadCallback = function() { contact_form_load_recaptcha(); };
var contact_form_recaptchaCompleteCallback = function() {
contact_form_recaptcha_completed = true;
};
var contact_form_recaptchaExpiredCallback = function() {
contact_form_recaptcha_completed = false;
//console.log('captcha expired.');
//grecaptcha.reset(contact_form_recaptcha_widget_id);
};
contact_form_recaptcha_inputSubmit.on('click', function(e) {
if (!contact_form_recaptcha_completed) {
e.preventDefault();
jQuery('#contact_form_ajax_msg').html('You must complete the reCAPTCHA.');
jQuery('#contact_form_ajax_msg').fadeIn();
return false;
} else {
jQuery('#contact_form_ajax_msg').html('');
}
});
/* POST contactForm */
/* Formtools: Post-Form Scripts */
/* Formtools: Post-Field Scripts */