/** * Baseurl * * @type {string} */ var baseurl; /** * Powermail main JavaScript for form validation */ jQuery(document).ready(function($) { // Read baseURL baseurl = getBaseUrl(); // Tabs if ($.fn.powermailTabs) { $('.powermail_morestep').powermailTabs(); } // Location field if ($('.powermail_fieldwrap_location input').length) { getLocationAndWrite(); } // AJAX Form submit if ($('form[data-powermail-ajax]').length) { ajaxFormSubmit(); } // Datepicker field if ($.fn.datetimepicker) { $('.powermail_date').each(function() { var $this = $(this); // stop javascript datepicker, if browser supports type="date" or "datetime-local" or "time" if ($this.prop('type') === 'date' || $this.prop('type') === 'datetime-local' || $this.prop('type') === 'time') { if ($this.data('datepicker-force')) { // rewrite input type $this.prop('type', 'text'); } else { // get date in format Y-m-d H:i for html5 date fields if ($(this).data('date-value')) { $(this).val( getDatetimeForDateFields($(this).data('date-value'), $(this).data('datepicker-format'), $this.prop('type')) ); } // stop js datepicker return; } } var datepickerStatus = true; var timepickerStatus = true; if ($this.data('datepicker-settings') === 'date') { timepickerStatus = false; } else if ($this.data('datepicker-settings') === 'time') { datepickerStatus = false; } // create datepicker $this.datetimepicker({ format: $this.data('datepicker-format'), timepicker: timepickerStatus, datepicker: datepickerStatus, lang: 'en', i18n:{ en:{ months: $this.data('datepicker-months').split(','), dayOfWeek: $this.data('datepicker-days').split(',') } } }); }); } // File Upload Delete $('.powermail_fieldwrap_file_inner').find('.deleteAllFiles').each(function() { // initially hide upload fields disableUploadField($(this).closest('.powermail_fieldwrap_file_inner').find('input[type="file"]')); }); $('.deleteAllFiles').click(function() { enableUploadField($(this).closest('.powermail_fieldwrap_file_inner').children('input[type="hidden"]')); $(this).closest('ul').fadeOut(function() { $(this).remove(); }); }); function disableUploadField(element) { element.prop('disabled', 'disabled').addClass('hide').prop('type', 'hidden'); } function enableUploadField(element) { element.removeProp('disabled').removeClass('hide').prop('type', 'file'); } // Password Field Output $('.powermail_all_type_password.powermail_all_value').html('********'); }); /** * Allow AJAX Submit for powermail * * @return void */ function ajaxFormSubmit() { // submit is called after parsley and html5 validation - so we don't have to check for errors $(document).on('submit', 'form[data-powermail-ajax]', function (e) { var $this = $(this); var formUid = $this.data('powermail-form'); $.ajax({ type: 'POST', url: $this.prop('action'), data: $this.serialize(), beforeSend: function() { // add progressbar div.powermail_progressbar>div.powermail_progress>div.powermail_progess_inner var progressBar = $('
').addClass('powermail_progressbar').html( $('
').addClass('powermail_progress').html( $('
').addClass('powermail_progess_inner') ) ); $('.powermail_submit', $this).parent().append(progressBar); $('.powermail_confirmation_submit, .powermail_confirmation_form', $this).closest('.powermail_confirmation').append(progressBar); }, complete: function() { // remove progressbar $('.powermail_fieldwrap_submit', $this).find('.powermail_progressbar').remove(); }, success: function(data) { var html = $('*[data-powermail-form="' + formUid + '"]:first', data); $('*[data-powermail-form="' + formUid + '"]:first').closest('.tx-powermail').html(html); // fire tabs and parsley again if ($.fn.powermailTabs) { $('.powermail_morestep').powermailTabs(); } if ($.fn.parsley) { $('form[data-parsley-validate="data-parsley-validate"]').parsley(); } } }); e.preventDefault(); }); } /** * Convert date format for html5 date fields * 31.08.2014 => 2014-08-31 * * @param value * @param format * @param type * @returns {string} */ function getDatetimeForDateFields(value, format, type) { var date = new Date(Date.parseDate(value, format)); var valueDate = date.getFullYear() + '-'; valueDate += ('0' + (date.getMonth() + 1)).slice(-2) + '-'; valueDate += ('0' + date.getDate()).slice(-2); var valueTime = ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2); var valueDateTime = valueDate + 'T' + valueTime; if (type === 'date') { return valueDate; } if (type === 'datetime-local') { return valueDateTime; } if (type === 'time') { return valueTime; } return 'error'; } /** * Getting the Location by the browser and write to inputform as address * * @return void */ function getLocationAndWrite() { if (navigator.geolocation) { // Read location from Browser navigator.geolocation.getCurrentPosition(function(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; var url = baseurl + '/index.php' + '?eID=' + 'powermailEidGetLocation'; jQuery.ajax({ url: url, data: 'lat=' + lat + '&lng=' + lng, cache: false, beforeSend: function(jqXHR, settings) { jQuery('body').css('cursor', 'wait'); }, complete: function(jqXHR, textStatus) { jQuery('body').css('cursor', 'default'); }, success: function(data) { // return values if (data) { jQuery('.powermail_fieldwrap_location input').val(data); } } }); }); } } /** * Return BaseUrl as prefix * * @return string Base Url */ function getBaseUrl() { var baseurl; if (jQuery('base').length > 0) { baseurl = jQuery('base').prop('href'); } else { if (window.location.protocol != "https:") { baseurl = 'http://' + window.location.hostname; } else { baseurl = 'https://' + window.location.hostname; } } return baseurl; }