1/*! 2Mailchimp Ajax Submit 3jQuery Plugin 4Author: Siddharth Doshi 5 6Use: 7=== 8$('#form_id').ajaxchimp(options); 9 10- Form should have one <input> element with attribute 'type=email' 11- Form should have one label element with attribute 'for=email_input_id' (used to display error/success message) 12- All options are optional. 13 14Options: 15======= 16options = { 17 language: 'en', 18 callback: callbackFunction, 19 url: 'http://blahblah.us1.list-manage.com/subscribe/post?u=5afsdhfuhdsiufdba6f8802&id=4djhfdsh99f' 20} 21 22Notes: 23===== 24To get the mailchimp JSONP url (undocumented), change 'post?' to 'post-json?' and add '&c=?' to the end. 25For e.g. 'http://blahblah.us1.list-manage.com/subscribe/post-json?u=5afsdhfuhdsiufdba6f8802&id=4djhfdsh99f&c=?', 26*/ 27(function($){'use strict';$.ajaxChimp={responses:{'We have sent you a confirmation email':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='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}} 28if(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]]} 29label.html(msg);label.show(2000);if(settings.callback){settings.callback(resp)}} 30var 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} 31label.html(submitMsg).show(2000);return!1})});return this}})(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.