Team:AHUT China/jquery.ajaxchimp.min js

(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);