var baseurl = 'https://www.vom-feldhof.ch'; var ajaxurl = 'https://www.vom-feldhof.ch/wp-admin/admin-ajax.php'; var loggedin = false; function showSuccess(msg) { showMessage('S', msg); } function showError(msg) { showMessage('E', msg); } var messageTimer; var delay = 3000; function showMessage(type, text) { var msg, position; msg = jQuery('#ss-message'); if (type == 'S') { msg.addClass('success'); msg.removeClass('error'); } else if (type == 'E') { msg.addClass('error'); msg.removeClass('success'); } msg.html(text); msg.fadeIn(); hideMessageDelayed(); } function hideMessageDelayed() { messageTimer = window.setTimeout(function() { hideMessage(); }, delay); } function hideMessage() { var msg = jQuery('#ss-message'); msg.fadeOut(); } function formHandleProgress(obj) { obj.find('input:not(input[type=submit])').attr('disabled', 'disabled'); obj.find('select').attr('disabled', 'disabled'); obj.find('input[type=submit]').addClass('submitted'); } function formHandleComplete(obj) { obj.find('input:not(input[type=submit])').removeAttr('disabled', ''); obj.find('select').removeAttr('disabled', ''); obj.find('input[type=submit]').removeClass('submitted'); } jQuery(document).ready(function() { // Create Message Area var msg = jQuery('#ss-message'); if (msg.length == 0) { var h1 = jQuery('h1'); if (h1.length == 0) { var body = jQuery('body'); body.after('

'); } h1.after('

'); } jQuery('#ss-message').mouseenter(function(e) { window.clearTimeout(messageTimer); }); jQuery('#ss-message').mouseleave(function(e) { hideMessageDelayed(); }); jQuery('#ss-profile').submit(function(e){ var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, global: false, dataType: 'json', success: function(result){ handleProfile(result); }, error: function(jqxhr, status, error) { showError("Es ist ein unbekannter Fehler aufgetreten"); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); }); jQuery('#ss-profile').find('input').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-profile').find('select').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-resetpassword').submit(function (e) { var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, dataType: 'json', success: function(ret){ handlePasswordReset(ret); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); return false; }); jQuery('#ss-setnewpassword').submit(function (e) { var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, dataType: 'json', success: function(ret){ handlePasswordNewSet(ret); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); return false; }); jQuery('#ss-login').submit(function (e) { var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, dataType: 'json', success: function(ret){ handleLogin(ret); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); return false; }); jQuery('.ss-link-logout').click(function(e){ jQuery.ajax({ url: ajaxurl, data: "action=ss_logout", global: false, dataType: 'json', success: function(result){ showSuccess(result.success); setTimeout(function() { location.reload(); }, 1500); } }); e.preventDefault(); }); jQuery('#ss-register').submit(function(e){ var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, global: false, dataType: 'json', success: function(result){ handleRegister(result); }, error: function(jqxhr, status, error) { showError("Es ist ein unbekannter Fehler aufgetreten"); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); }); jQuery('#ss-register').find('input').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-register').find('select').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('.ss-item-plus').click(function(e) { jQuery(this).parent().children('input[type=number]').each(function() { var count = parseInt(jQuery(this).val()); if (isNaN(count) || count < 1) { count = 1; } else if (count > 99 ) { count = 99; } else if (count < 99) { count++; } jQuery(this).val(count); }); }); jQuery('.ss-item-minus').click(function(e) { jQuery(this).parent().children('input[type=number]').each(function() { var count = parseInt(jQuery(this).val()); if (isNaN(count) || count < 1) { count = 1; } else if (count > 99) { count = 99; } else if (count > 1) { count--; } jQuery(this).val(count); }); }); jQuery('.ss-product-basket form').on("submit", function (e) { var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, dataType: 'json', success: function(ret){ handleAddToBasket(ret); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); return false; }); jQuery('#ss-basket').submit(function (e) { var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, dataType: 'json', success: function(ret){ handleUpdateBasket(ret); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); return false; }); jQuery('.ss-item-remove').click(function(e) { var token = jQuery(this).attr('id').split("-"); jQuery(this).attr('disabled', 'disabled'); jQuery.ajax({ type: "post", url: ajaxurl, data: "action=ss_removefrombasket&product_id="+token[3], dataType: 'json', success: function(ret){ handleRemoveFromBasket(ret); } }); }); jQuery('#ss-address').submit(function(e){ var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, global: false, dataType: 'json', success: function(result){ handleCheckoutAddress(result); }, error: function(jqxhr, status, error) { showError("Es ist ein unbekannter Fehler aufgetreten"); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); }); jQuery('#ss-address').find('input').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-address').find('select').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-delivery-method').submit(function(e){ var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, global: false, dataType: 'json', success: function(result){ handleCheckoutDelivery(result); }, error: function(jqxhr, status, error) { showError("Es ist ein unbekannter Fehler aufgetreten"); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); }); jQuery('#ss-delivery-method').find('input').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-delivery-method').find('select').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-delivery-method #ss-pickup').click(function(e) { jQuery('#ss-delivery-address').hide(); jQuery('#ss-delivery-address .required').removeAttr('required'); }); jQuery('#ss-delivery-method #ss-delivery').click(function(e) { jQuery('#ss-delivery-address').show(); jQuery('#ss-delivery-address .required').attr('required', 'required'); }); jQuery('#ss-delivery-date').submit(function(e){ var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, global: false, dataType: 'json', success: function(result){ handleCheckoutDeliveryDate(result); }, error: function(jqxhr, status, error) { showError("Es ist ein unbekannter Fehler aufgetreten"); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); }); jQuery('#ss-delivery-date').find('input').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery('#ss-delivery-date').find('select').focus(function(e) { jQuery(this).removeClass('ss-errornous'); }); jQuery( "#ss-delivery-date #deliver_date" ).datepicker({ dateFormat: "dd.mm.yy", dayNames: [ "Sonntag", "Montag", "Dienstag", "Mittwoche", "Donnerstag", "Freitag", "Samstag" ], dayNamesMin: [ "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" ], monthNames: [ "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ], monthNamesMin: [ "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" ], firstDay: 1 } ); jQuery('#ss-payment-method').submit(function(e){ var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, global: false, dataType: 'json', success: function(result){ handleCheckoutPaymentMethod(result); }, error: function(jqxhr, status, error) { showError("Es ist ein unbekannter Fehler aufgetreten"); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); }); jQuery('#ss-comment').submit(function(e){ var form = jQuery(this); var type = form.attr('method'); var data = form.serialize(); formHandleProgress(form); jQuery.ajax({ type: type, url: ajaxurl, data: data, global: false, dataType: 'json', success: function(result){ handleCheckoutPostOrder(result); }, error: function(jqxhr, status, error) { showError("Es ist ein unbekannter Fehler aufgetreten"); }, complete: function() { formHandleComplete(form); } }); e.preventDefault(); }); }); function handleProfile(result) { if (result.nonce) { jQuery('#profile_nonce').val(result.nonce); } // Remove all errors jQuery('#ss-profile').find('select').removeClass('ss-errornous'); jQuery('#ss-profile').find('input').removeClass('ss-errornous'); if (result) { if (result.error) { var html_error = ''; for (var prop in result.error) { if (prop != 'general') { jQuery('#'+prop).addClass('ss-errornous'); } if (html_error != '') { html_error += '
'; } html_error += result.error[prop]; } showError(html_error); if (result.redirect) { setTimeout(function() { location.href = baseurl+result.redirect; }, 2000); } } else if (result.success) { var html = ''; for (var prop in result.success) { if (html != '') { html += '
'; } html += result.success[prop]; } showSuccess(html); jQuery('.ss-password').val(''); } } } function handleRegister(result) { if (result.nonce) { jQuery('#register_nonce').val(result.nonce); } // Remove all errors jQuery('#ss-register').find('input').removeClass('ss-errornous'); if (result.error) { var html_error = ''; for (var prop in result.error) { if (prop != 'general') { jQuery('#'+prop).addClass('ss-errornous'); } if (html_error != '') { html_error += '
'; } html_error += result.error[prop]; } showError(html_error); } else if (result.success) { showSuccess(result.success); setTimeout(function() { if (result.redirect) location.href = baseurl+result.redirect; else location.href = baseurl; }, 2000); } } function handleCheckoutAddress(result) { handleCheckout(result, 'ss-address', 'delivery'); } function handleCheckoutDelivery(result) { handleCheckout(result, 'ss-delivery-method', 'date'); } function handleCheckoutDeliveryDate(result) { handleCheckout(result, 'ss-delivery-date', 'payment'); } function handleCheckoutPaymentMethod(result) { handleCheckout(result, 'ss-payment-method', 'check'); } function handleCheckoutPostOrder(result) { if (!result.error) { updateBasketInformation(result); } handleCheckout(result, 'ss-comment', 'finish'); } function handleCheckout(result, formId, nextStep) { // Remove all errors jQuery('#'+formId).find('input').removeClass('ss-errornous'); if (result.error) { var html_error = ''; for (var prop in result.error) { if (prop != 'general') { jQuery('#'+prop).addClass('ss-errornous'); } if (html_error != '') { html_error += '
'; } html_error += result.error[prop]; } showError(html_error); } else { location.href = baseurl+'/checkout-'+nextStep; } } function handleLogin(result) { if (result.nonce) { jQuery('#login_nonce').val(result.nonce); } if (result) { if (result.error) { showError(result.error); } else if (result.success) { showSuccess(result.success); setTimeout(function() { if (result.redirect) location.href = baseurl+result.redirect; else location.href = baseurl; }, 2000); } } } function handlePasswordReset(result) { if (result.nonce) { jQuery('#resetpassword_nonce').val(result.nonce); } if (result) { if (result.error) { showError(result.error); } else if (result.success) { showSuccess(result.success); } } } function handlePasswordNewSet(result) { if (result.nonce) { jQuery('#setnewpassword_nonce').val(result.nonce); } if (result) { if (result.error) { showError(result.error); } else if (result.success) { showSuccess(result.success); setTimeout(function() { location.href = baseurl; }, 2000); } } } function handleAddToBasket(result) { if (result) { if (result.error) { /*if (result.field) { }*/ showError(result.error); } else if (result.success) { showSuccess(result.success); updateBasketInformation(result); } } } function handleUpdateBasket(result) { var amount; var price; if (result) { showSuccess(result.success); for(var i=0; i 0) { token = items_total.text().split(" "); items_total.text(token[0]+' '+result.items_total.toFixed(2)); } jQuery('#ss-basket-total').text(result.items_total.toFixed(2)); }