1(function ($) { 2 'use strict'; 3 4 $.ajaxChimp = { 5 responses: { 6 'We have sent you a confirmation email' : 0, 7 'Please enter a valid email' : 1, 8 'An email address must contain a single @' : 2, 9 'The domain portion of the email address is invalid (the portion after the @: )' : 3, 10 'The username portion of the email address is invalid (the portion before the @: )' : 4, 11 'This email address looks fake or invalid. Please enter a real email address' : 5 12 }, 13 translations: { 14 'en': null 15 }, 16 init: function (selector, options) { 17 $(selector).ajaxChimp(options); 18 } 19 }; 20 21 $.fn.ajaxChimp = function (options) { 22 $(this).each(function(i, elem) { 23 var form = $(elem); 24 var email = form.find('input[type=email]'); 25 var label = form.find('.info'); 26 27 var settings = $.extend({ 28 'url': form.attr('action'), 29 'language': 'en' 30 }, options); 31 32 var url = settings.url.replace('/post?', '/post-json?').concat('&c=?'); 33 34 form.attr('novalidate', 'true'); 35 email.attr('name', 'EMAIL'); 36 37 form.submit(function () { 38 var msg; 39 function successCallback(resp) { 40 if (resp.result === 'success') { 41 msg = 'We have sent you a confirmation email'; 42 label.removeClass('error').addClass('valid'); 43 email.removeClass('error').addClass('valid'); 44 } else { 45 email.removeClass('valid').addClass('error'); 46 label.removeClass('valid').addClass('error'); 47 var index = -1; 48 try { 49 var parts = resp.msg.split(' - ', 2); 50 if (parts[1] === undefined) { 51 msg = resp.msg; 52 } else { 53 var i = parseInt(parts[0], 10); 54 if (i.toString() === parts[0]) { 55 index = parts[0]; 56 msg = parts[1]; 57 } else { 58 index = -1; 59 msg = resp.msg; 60 } 61 } 62 } 63 catch (e) { 64 index = -1; 65 msg = resp.msg; 66 } 67 } 68 69 // Translate and display message 70 if ( 71 settings.language !== 'en' 72 && $.ajaxChimp.responses[msg] !== undefined 73 && $.ajaxChimp.translations 74 && $.ajaxChimp.translations[settings.language] 75 && $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]] 76 ) { 77 msg = $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]; 78 } 79 label.html(msg); 80 81 label.show(2000); 82 if (settings.callback) { 83 settings.callback(resp); 84 } 85 } 86 87 var data = {}; 88 var dataArray = form.serializeArray(); 89 $.each(dataArray, function (index, item) { 90 data[item.name] = item.value; 91 }); 92 93 $.ajax({ 94 url: url, 95 data: data, 96 success: successCallback, 97 dataType: 'jsonp', 98 error: function (resp, text) { 99 console.log('mailchimp ajax submit error: ' + text); 100 } 101 }); 102 103 // Translate and display submit message 104 var submitMsg = 'Submitting...'; 105 if( 106 settings.language !== 'en' 107 && $.ajaxChimp.translations 108 && $.ajaxChimp.translations[settings.language] 109 && $.ajaxChimp.translations[settings.language]['submit'] 110 ) { 111 submitMsg = $.ajaxChimp.translations[settings.language]['submit']; 112 } 113 label.html(submitMsg).show(2000); 114 115 return false;
116 }); 117 }); 118 return this; 119 }; 120})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.