Spaces:
Running
Running
| (function ($) { | |
| 'use strict'; | |
| $.ajaxChimp = { | |
| responses: { | |
| 'We have sent you a confirmation email' : 0, | |
| 'Please enter a valid email' : 1, | |
| 'An email address must contain a single @' : 2, | |
| 'The domain portion of the email address is invalid (the portion after the @: )' : 3, | |
| 'The username portion of the email address is invalid (the portion before the @: )' : 4, | |
| 'This email address looks fake or invalid. Please enter a real email address' : 5 | |
| }, | |
| translations: { | |
| 'en': null | |
| }, | |
| init: function (selector, options) { | |
| $(selector).ajaxChimp(options); | |
| } | |
| }; | |
| $.fn.ajaxChimp = function (options) { | |
| $(this).each(function(i, elem) { | |
| var form = $(elem); | |
| var email = form.find('input[type=email]'); | |
| var label = form.find('.info'); | |
| var settings = $.extend({ | |
| 'url': form.attr('action'), | |
| 'language': 'en' | |
| }, options); | |
| var url = settings.url.replace('/post?', '/post-json?').concat('&c=?'); | |
| form.attr('novalidate', 'true'); | |
| email.attr('name', 'EMAIL'); | |
| form.submit(function () { | |
| var msg; | |
| function successCallback(resp) { | |
| if (resp.result === 'success') { | |
| msg = 'We have sent you a confirmation email'; | |
| label.removeClass('error').addClass('valid'); | |
| email.removeClass('error').addClass('valid'); | |
| } else { | |
| email.removeClass('valid').addClass('error'); | |
| label.removeClass('valid').addClass('error'); | |
| var index = -1; | |
| try { | |
| var parts = resp.msg.split(' - ', 2); | |
| if (parts[1] === undefined) { | |
| msg = resp.msg; | |
| } else { | |
| var i = parseInt(parts[0], 10); | |
| if (i.toString() === parts[0]) { | |
| index = parts[0]; | |
| msg = parts[1]; | |
| } else { | |
| index = -1; | |
| msg = resp.msg; | |
| } | |
| } | |
| } | |
| catch (e) { | |
| index = -1; | |
| msg = resp.msg; | |
| } | |
| } | |
| // Translate and display message | |
| if ( | |
| settings.language !== 'en' | |
| && $.ajaxChimp.responses[msg] !== undefined | |
| && $.ajaxChimp.translations | |
| && $.ajaxChimp.translations[settings.language] | |
| && $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]] | |
| ) { | |
| msg = $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]; | |
| } | |
| label.html(msg); | |
| label.show(2000); | |
| if (settings.callback) { | |
| settings.callback(resp); | |
| } | |
| } | |
| var data = {}; | |
| var dataArray = form.serializeArray(); | |
| $.each(dataArray, function (index, item) { | |
| data[item.name] = item.value; | |
| }); | |
| $.ajax({ | |
| url: url, | |
| data: data, | |
| success: successCallback, | |
| dataType: 'jsonp', | |
| error: function (resp, text) { | |
| console.log('mailchimp ajax submit error: ' + text); | |
| } | |
| }); | |
| // Translate and display submit message | |
| var submitMsg = 'Submitting...'; | |
| if( | |
| settings.language !== 'en' | |
| && $.ajaxChimp.translations | |
| && $.ajaxChimp.translations[settings.language] | |
| && $.ajaxChimp.translations[settings.language]['submit'] | |
| ) { | |
| submitMsg = $.ajaxChimp.translations[settings.language]['submit']; | |
| } | |
| label.html(submitMsg).show(2000); | |
| return false; | |
| }); | |
| }); | |
| return this; | |
| }; | |
| })(jQuery); |