var activeSignUpForm; /*Default callback function /*DO NOT DISTURB*/ function signupFormCallback(data) { activeSignUpForm.signupFormCallback(data); }( function($) { /* Mailing list plugin default configuration options*/ /* overwrite while 'init' the plugin if needed */ /* ensure the object properties are matched as below */ var defaults = { containers : { ajaxLoaderField : '#ajaxLoader', serverErrorMessageField : '#serverError', validationErrorMessageField : '#errorMsg', labelcheckbox : '.secondary-list-values .global-list-checkbox', thankYouMessageField : '#thankyouBlock', }, exactTargetSignupUrl : "http://signup.wmg.com/register?geoip=true", /*Exact target default values - All the hardcoded exact target values list here*/ newsLetterConfigValues : [{ "newsletterId" : '6398047' }], /*Validator plugin configurations*/ errorLabelContainer : "#errorMsg", /*Callback functions*/ callBacks : { onLoad : function() { // Extend if needed }, onSubmit : function() { // Extend if needed }, onSuccess : function() { // Extend if needed } } }; $.fn.wmgSignUpForm = function(options) { var settings = {}; /*omniture parameters*/ var omniConfig = {} var validator; var callbackCompleted = 0; var $currentElement; var joinbutton = false; // Current webform var $this = $(this); // current instance of plugin var self = this; var $mainListFields = $this.find(".mlist-field:not(.contest-field)"); var $contestListFields = $this.find(".mlist-field.contest-field"); var hasTwoLayers; var isInSecondLayer; var getListParameters = function(selectorClass) { var listParameters = ""; var etValues = {}; if (selectorClass == ".secondary-list-values") { $currentElement = $this.closest(".mlist-outer-wrapper").find("#thankyouBlock"); } else { $currentElement = $this; } $currentElement.find(selectorClass).each(function() { $(this).find("input").each(function() { if ($(this).attr("type") == "checkbox" && $(this).is(':checked') == false) { } else { var exactTargetKey = $(this).attr("name"); var exactTargetValue = $(this).val(); if ( exactTargetKey in etValues) { etValues[exactTargetKey] += ',' + exactTargetValue; } else { etValues[exactTargetKey] = exactTargetValue; } } }); $(this).find("select").each(function() { var exactTargetKey = $(this).attr("name"); var exactTargetValue = $(this).val(); etValues[exactTargetKey] = exactTargetValue; }); }) $.each(etValues, function(key, value) { listParameters += '&' + key + "=" + value; }); return listParameters; } var submitRequest = function() { var returnVal = onSubmit(); if (returnVal === false) { return false; } activeSignUpForm = self; sendExactTargetRequest(); }; var resetThankYouScreen = function() { $this.parents(".mlist-wrapper").fadeOut(500, function() { $this[0].reset(); $this.fadeIn(); $this.parents(".mlist-outer-wrapper").find('.mlist-join-wrap').show(); $this.parent().find("#thankyouBlock").hide(); if ($this.parent().find("#thankyouthankyouBlock .secondary-list-values").length > 0) { $this.parent().find("input.agree-checkbox").removeAttr('checked'); $this.parent().find("#thankyoublock-innerwrapper").fadeIn(); $this.parent().find(".secondarylist-thankyou").css("display", "none"); } }) }; var reloadForm = function() { var currentFocus = jQuery($currentElement[0]).attr("id"); var currentBlock = jQuery($currentElement[0]); if ($this.parent().parent().find(".mlist-join-wrap").length > 0) { joinbutton = true; } if (currentFocus == "thankyouBlock") { if (currentBlock.find(".thankyou-message").hasClass("embed")) { jQuery("#thankyoublock-innerwrapper").fadeOut(); } else { resetThankYouScreen(); } } else { $this.find(settings.containers.serverErrorMessageField).fadeOut(); $this[0].reset(); $this.parent().find(settings.containers.thankYouMessageField).fadeOut(1000, function() { if (joinbutton) { $this.parents().find(".mlist-wrapper").fadeOut(500, function() { $this.fadeIn(); $this.parents().find(".mlist-join-wrap").toggle(); }); } else { if ($this.find(".agreepopup").length > 0) { $this.find(".agreepopup").fadeOut(); } $this.fadeIn(); } }); } }; /* Getting omniture paramaters starts*/ var setOmniConfig = function() { omniConfig.artist = WMG.artistname; omniConfig.artisthost = s.pageName; } var getclosestregion = function() { var classArray = $this.closest(".region").attr('class'); if ( typeof classArray == 'undefined' || classArray == '') { return "content"; } else { return $this.closest(".region").attr('class').split(' ')[1]; } } var getLabelId = function() { var labelID = $this.parent().find(settings.containers.thankYouMessageField).find(settings.containers.labelcheckbox).val(); return labelID; } var omniVarsConfig = function(event, screenNumber) { setOmniConfig(); var mainListID = getMailingListID(); var closestreg = getclosestregion(); var artisthost = omniConfig.artisthost; var omniVars = {}; var labelid; if ($this.parent().find('#thankyouBlock .secondary-list-values').length > 0) { hasTwoLayers = true; } if (hasTwoLayers === true) { screenNumber = screenNumber + "/2" + ":"; } else { screenNumber = ""; } switch (event) { case ('signupIntent'): omniVars.pageName = artisthost + ":" + "Mailing List " + closestreg + " " + screenNumber + mainListID; break; case ('firstFormSubmit'): omniVars.pageName = artisthost + ":" + "Mailing List " + closestreg + " " + screenNumber + mainListID + ":Signup Success"; omniVars.events = "event3"; break; case ('noLabelSubscription'): omniVars.pageName = artisthost + ":" + "Mailing List " + closestreg + " " + screenNumber + mainListID + ":Save Success"; break; case ('labelSubscription'): labelid = getLabelId(); omniVars.pageName = artisthost + ":" + "Mailing List " + closestreg + " " + screenNumber + mainListID + ":Label List " + labelid + ":Save Success"; break; default: omniVars.pageName = artisthost + ":" + "Mailing List " + closestreg + " " + screenNumber + mainListID + ":Save Success"; break; } s.t(omniVars); } /* Getting omniture paramaters ends*/ var $thisOuterWrapper = jQuery(this).closest(".mlist-outer-wrapper"); var requiredFieldModifier = function() { if ($thisOuterWrapper.find("#country").val() === "" || $thisOuterWrapper.find("#country").val() === undefined) { $thisOuterWrapper.find("#errorLabelContainer2").css("display", "block"); $thisOuterWrapper.find('#country').css("border-color", "red") return false; } else { $thisOuterWrapper.find("#errorLabelContainer2").css("display", "none"); $thisOuterWrapper.find('#country').css("border-color", "black") return true; } } if ($thisOuterWrapper.hasClass("country-detect")) { $thisOuterWrapper.find("#country").blur(requiredFieldModifier); $thisOuterWrapper.find(".secondFormCloseWrap a").click(function() { $thisOuterWrapper.find("#thankyouBlock").addClass("final-screen"); $thisOuterWrapper.find("#thankyoublock-innerwrapper").css("display", "none"); $thisOuterWrapper.find(".termsWrapper a").removeClass('showing'); $thisOuterWrapper.find(".termsWrapper").css("display", "none"); }); $thisOuterWrapper.find('.termsWrapper a.terms').click(function() { jQuery(this).toggleClass('showing'); jQuery(this).parents('.termsWrapper').find('.termsContent').slideToggle(); //$thisOuterWrapper.find("#terms").slideToggle(); }); } $thisOuterWrapper.find("#thankyouBlock .mlist-submit-new").click(function() { isInSecondLayer = true; if ($thisOuterWrapper.hasClass("country-detect")) { if (requiredFieldModifier()) { var signUpRequestUrlnew = settings.exactTargetSignupUrl; var signlabelURL = signUpRequestUrlnew + getListParameters(".mlist-field") + getListParameters(".secondary-list-values"); if ($thisOuterWrapper.find(".secondary-list-values input.global-list-checkbox").is(":checked")) { omniVarsConfig('labelSubscription', 2); signlabelURL = signlabelURL + "&global_optin=TRUE"; } else { omniVarsConfig('noLabelSubscription', 2); } sendRequest(signlabelURL); } } else if ($thisOuterWrapper.find(".secondary-list-values input.agree-checkbox").is(":checked")) { omniVarsConfig('labelSubscription', 2); var signUpRequestUrlnew = settings.exactTargetSignupUrl; var signlabelURL = signUpRequestUrlnew + getListParameters(".mlist-field") + getListParameters(".secondary-list-values"); if ($thisOuterWrapper.find(".secondary-list-values input.global-list-checkbox").is(":checked")) { signlabelURL = signlabelURL + "&global_optin=TRUE"; } sendRequest(signlabelURL); } else { omniVarsConfig('noLabelSubscription', 2); } }); $thisOuterWrapper.find(".mlist-popup").click(function() { $this.validate(); if ($this.valid() == true) { $thisOuterWrapper.find(".agreepopup").show(); } }); $thisOuterWrapper.find(".mlist-disagree").click(function() { $thisOuterWrapper.find(".agreepopup").hide(); }); $thisOuterWrapper.find(".mlist-join").click(function() { $thisOuterWrapper.find('.mlist-join-wrap').hide(); $thisOuterWrapper.find('.mlist-wrapper').slideToggle(); omniVarsConfig('signupIntent', 1); }); $thisOuterWrapper.find(".mlist-close").click(function() { $thisOuterWrapper.find('.mlist-wrapper').slideToggle(); resetThankYouScreen(); }); $thisOuterWrapper.find(".mlist-checks label[for='global-list']").click(function() { var $checkbox = jQuery(this).parent().find('.global-list-checkbox'); if (!$checkbox.is(':checked')) { $checkbox.attr('checked', 'checked'); } else { $checkbox.removeAttr('checked'); } }); var signUpSuccess = function(data) { var tempElement = jQuery($currentElement[0]).attr("id"); if (tempElement == "thankyouBlock") { if ($currentElement.find(".secondary-list-values").length > 0) { $currentElement.find("#thankyoublock-innerwrapper").fadeOut(1000, function() { jQuery("#terms").fadeOut(); $currentElement.find(".secondarylist-thankyou").fadeIn(); $currentElement.addClass("final-screen"); }); setTimeout(reloadForm, 4000); } } else { $this.fadeOut(500, function() { $this.find(settings.containers.serverMessageField).fadeOut(); $this.parent().find(settings.containers.thankYouMessageField).fadeIn(500); $this.parent().find("#thankyoublock-innerwrapper").show(); $this.parent().find('.agree-checkbox').removeAttr('checked'); $this.parent().find(".secondarylist-thankyou").hide(); if ($thisOuterWrapper.hasClass("country-detect")) { $this.parent().find("#terms").css("display", "none"); } if ((data.geocountry !== undefined) && (data.geocountry !== "")) { $this.parent().find("#country").val(data.geocountry); } else { $this.parent().find("#country").val(""); } /*if ((data.geozip !== undefined) && (data.geozip !== "")) { $this.parent().find("#postalcode").val(data.geozip) } else { $this.parent().find("#postalcode").val(""); }*/ }); } }; var signUpFailure = function() { $this.find(settings.containers.serverErrorMessageField).fadeTo(1, 500); setTimeout(function() { reloadForm(); }, 5000); }; var sendRequest = function(signUpListUrl) { try { signUpListUrl += "&jsoncallback=?"; $.getJSON(signUpListUrl, { jsonp : "signupFormCallback" }); } catch (err) { signUpFailure(); } } var getMailingListID = function() { var mainListID; var _country = $this.find("#country").val(); var mailingListObj = WMG.MailingList.EmailListIds; if ( _country in mailingListObj) { mainListID = WMG.MailingList.EmailListIds[_country]; } else { mainListID = WMG.MailingList.EmailListIds["United States"]; } return mainListID; } var sendExactTargetRequest = function() { var mainlistflag = "off"; var mainListID; var signUpRequestUrl = settings.exactTargetSignupUrl; var mainlist_signupURL; var contestlist_signupURL; mainListID = getMailingListID(); $this.find(".mainlist-hidden-options #mainListId").attr("value", mainListID); if ($this.find(".agree-checkbox").is(":checked")) { mainlistflag = "on"; } primary_signupURL = signUpRequestUrl + getListParameters(".mlist-field") + getListParameters(".primary-list-values"); if ($this.find(".secondary-list-values").length > 0) { secondary_signupURL = signUpRequestUrl + getListParameters(".mlist-field:not('.contest-field')") + getListParameters(".secondary-list-values"); } if ($this.hasClass("contest-form")) { if ($this.is(".secondary-list-required")) { sendRequest(primary_signupURL); sendRequest(secondary_signupURL); } else if ($this.is(".secondary-list-optional")) { if (mainlistflag == "on") { sendRequest(secondary_signupURL); sendRequest(primary_signupURL); } else { sendRequest(primary_signupURL); } } else { sendRequest(primary_signupURL); } } else { sendRequest(primary_signupURL); } }; this.signupFormCallback = function(data) { callbackCompleted++; if (callbackCompleted == 1) { $this.parent().find(settings.containers.ajaxLoaderField).fadeOut(); if (data.status == 'success') { onSuccess(); signUpSuccess(data); } else {// status== 'error' signUpFailure(); } } if ((settings.newsLetterConfigValues.length) == callbackCompleted) { callbackCompleted = 0; } }; var init = function(options) { if (options) { settings = $.extend(defaults, options); } else { settings = defaults; } var validatorSettings = { rules : {}, messages : {} }; function getValidatorRulesandMessages($this) { var rulesKey = $this.attr("id"); var rulesClass = $this.attr('class'); if (rulesClass != undefined) { var rulesElement = rulesClass.split(/\s+/); validatorSettings.rules[rulesKey] = {}; validatorSettings.messages[rulesKey] = {}; $.each(rulesElement, function(index, item) { if (item.match('^m-')) { item = item.replace('m-', ''); validatorSettings.rules[rulesKey][item] = true; validatorSettings.messages[rulesKey][item] = ""; } }); } } $this.find(".mlist-field input").each(function() { getValidatorRulesandMessages($(this)); }); $this.find(".mlist-field select").each(function() { getValidatorRulesandMessages($(this)); }); $.validator.setDefaults({ rules : validatorSettings.rules, messages : validatorSettings.messages, errorLabelContainer : $this.find(settings.errorLabelContainer), submitHandler : function() { isInSecondLayer = false; /*On click of form1 sign up button */ omniVarsConfig('firstFormSubmit', 1); submitRequest(); return false; } }); validator = $this.validate({ onkeyup : false }); }; var onLoad = function() { settings.callBacks.onLoad(); }; var onSubmit = function() { if ( typeof settings.callBacks.onSubmit != "undefined") { return settings.callBacks.onSubmit(); } }; var onSuccess = function() { if ( typeof settings.callBacks.onSuccess != "undefined") { settings.callBacks.onSuccess(); } }; init(options); return this.each(function() { _this = this; }); }; }($jq18));