(function ($){
'use strict';
$.ajaxChimp={
responses: {
'You are sent to a welcome message and will be being sent our latest newsletters time to time':0,
'Please enter a value':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('label[for=' + email.attr('id') + ']');
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='You are sent to a welcome message and will be being sent our latest newsletters time to time.';
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;
}}
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);
}});
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);