{"version":3,"sources":["webpack://asp.net/webpack/universalModuleDefinition","webpack://asp.net/./Scripts/signup.js"],"names":["root","factory","exports","module","define","amd","a","i","self","RegistrationSteps","SendMixpanelSignupStep","step","plan","$","val","source","getQueryParameter","Segment","trackMixpanel","SignupPlan","UserSource","e","console","error","SendGaRegistrationStep","eventLabel","ga","SendGaRegistrationPageView","globalInit","init","model","abVersion","this","elementLadda01","document","getElementById","laddaSubmit01","Ladda","create","elementLadda02","laddaSubmit02","special","disableSubmit","start","enableSubmit","stop","addHiddenField","formId","name","value","form","elements","getElementsByName","addField","parent","fieldName","fieldValue","input","createElement","setAttribute","appendChild","length","remove","submitForm","jqForm","dontRedirect","url","attr","cardholder","email","password","googleUserId","phoneInput","phoneNumber","getNumber","phoneCountry","getSelectedCountryData","coupon","obj","serialize","post","done","result","window","_vis_opt_queue","push","_vis_opt_goal_conversion","userengage","user_id","log","location","RedirectTo","redirectTo","fail","data","responseJSON","ErrorMessage","njoAppNotifier","notifyError","Description","always","stripe","card","fullName","ko","observable","extend","required","overrideMessage","active","maxLength","serverCheck","paramName","agreedTermsConditions","agreedTermsConditionsError","emailHasFocus","registrationStep","submitButtonText","computed","trialDaysValue","Number","isUserInfoStepActive","isCreditCardStepActive","isDemoDetailsStepActive","submitButtonVisible","typeformDone","abVersionCssClass","subscribe","submitGoogleRegistration","loadStripe","track","category","gapi","auth2","getAuthInstance","signIn","scope","then","continueGoogleSignup","user","currentUser","get","profile","getAuthResponse","getBasicProfile","getName","getEmail","getId","submitRegistration","when","activateServerCheckValidation","hasError","deactivateServerCheckValidation","activateRequiredValidation","errorElement","textContent","createToken","message","token","id","onComplete","stripeLoaded","getScript","key","Stripe","hidePostalCode","mount","addEventListener","event","displayError","initPayPal","elementId","planPrice","planName","paypal","Buttons","createOrder","actions","order","purchase_units","amount","description","onApprove","capture","details","orderId","orderID","responseData","status","payer","payer_id","PNotify","title","animate_speed","type","render","isSpecial","paypalButtonContainer","initPhone","inputSelector","phone","querySelector","intlTelInput","utilsScript","separateDialCode","showWidgetPopup","HubSpotConversations","widget","open","ready","leadMode","removeClass","userEmailValue","on","applyBindings","mouseover","s","show","mouseleave","hide","appendTo","setupTooltip","identifier","tooltipSelector","css","_","each","tooltipedItem","tooltip","tip","addClass"],"mappings":"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","file":"signup.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","const RegistrationSteps = {\r\n // Registrations steps\r\n UserInfo: \"UserInfo\",\r\n CreditCardInfo: \"CreditCardInfo\",\r\n DemoDetails: \"DemoDetails\"\r\n};\r\n\r\nfunction SendMixpanelSignupStep(step) {\r\n try {\r\n var plan = $(\"#Plan\").val();\r\n var source = getQueryParameter(\"features_variant\");\r\n\r\n Segment.trackMixpanel(\"Signup \" + step, {\r\n SignupPlan: plan,\r\n UserSource: source\r\n });\r\n } catch (e) {\r\n console.error(\"Mixpanel: sending event failed\");\r\n }\r\n}\r\n\r\nfunction SendGaRegistrationStep(eventLabel) {\r\n try {\r\n ga(\"send\", \"event\", {\r\n 'eventCategory': \"UsageMetrics\",\r\n 'eventAction': \"Registration\",\r\n 'eventLabel': eventLabel\r\n });\r\n } catch (e) {\r\n console.error(\"ga: sending event failed\");\r\n }\r\n}\r\n\r\nfunction SendGaRegistrationPageView(step) {\r\n try {\r\n var plan = $(\"#Plan\").val();\r\n\r\n var pageFileName = \"/sv/\" + plan + \"/\" + step + \".html\";\r\n ga(\"set\", \"page\", pageFileName);\r\n //console.log(\"GA: set page\", pageFileName);\r\n ga(\"send\", \"pageview\");\r\n //console.log(\"GA: send pageview\", pageFileName);\r\n } catch (e) {\r\n console.error(\"ga: send pageview error\", e);\r\n }\r\n}\r\n\r\nfunction RegisterModel(abVersion) {\r\n var self = this;\r\n\r\n //#region init ladda buttons\r\n var elementLadda01 = document.getElementById(\"submitLadda01\");\r\n var laddaSubmit01 = null;\r\n if (elementLadda01 != null)\r\n laddaSubmit01 = Ladda.create(elementLadda01);\r\n\r\n var elementLadda02 = document.getElementById(\"submitLadda02\");\r\n var laddaSubmit02 = null;\r\n if (elementLadda02 != null)\r\n laddaSubmit02 = Ladda.create(elementLadda02);\r\n //#endregion\r\n\r\n var special = false;\r\n\r\n self.stripe = null;\r\n self.card = null;\r\n\r\n //For new Registration page, we need the same page duplicated for a C version with thefollowing:\r\n // Step 1: You remove Neil Patel and you leave the three twitts - B version\r\n // Step 2: You remove Twitts and you leave Neil Patel only - C version\r\n self.abVersion = abVersion;\r\n\r\n self.fullName = ko.observable(\"\")\r\n .extend({ required: { overrideMessage: \"\", active: false } })\r\n .extend({ maxLength: { maxLength: 100, overrideMessage: \"Full Name can not be more than 100 characters\", active: true } });\r\n self.cardholder = ko.observable()\r\n .extend({ required: { overrideMessage: \"\", active: false } });\r\n self.email = ko.observable()\r\n //.extend({ required: { overrideMessage: \"\", active: false } })\r\n .extend({ serverCheck: { overrideMessage: \"\", active: false, url: \"/Account/ValidateEmail\", paramName: \"email\" } });\r\n self.password = ko.observable()\r\n //.extend({ required: { overrideMessage: \"\", active: false } })\r\n .extend({ serverCheck: { overrideMessage: \"\", active: false, url: \"/Account/ValidatePassword\", paramName: \"password\" } });\r\n self.coupon = ko.observable();\r\n self.agreedTermsConditions = ko.observable(false);\r\n self.agreedTermsConditionsError = ko.observable(false);\r\n\r\n self.googleUserId = null;\r\n\r\n self.emailHasFocus = ko.observable();\r\n\r\n self.registrationStep = ko.observable(RegistrationSteps.UserInfo);\r\n\r\n self.submitButtonText = ko.computed(function() {\r\n if (self.registrationStep() === RegistrationSteps.UserInfo) {\r\n return \"Continue\";\r\n } if (self.registrationStep() === RegistrationSteps.CreditCardInfo) {\r\n return \"Continue\";\r\n } else if (self.registrationStep() === RegistrationSteps.DemoDetails) {\r\n\r\n var trialDaysValue = getQueryParameter(\"daysTrial\");\r\n if (trialDaysValue !== \"\" && Number(trialDaysValue) === 0)\r\n return \"Start Now\";\r\n\r\n return \"Start Free Trial\";\r\n } else {\r\n return \"Continue\";\r\n }\r\n });\r\n\r\n self.isUserInfoStepActive = ko.computed(function () {\r\n return self.registrationStep() === RegistrationSteps.UserInfo;\r\n });\r\n\r\n self.isCreditCardStepActive = ko.computed(function () {\r\n return self.registrationStep() === RegistrationSteps.CreditCardInfo;\r\n });\r\n\r\n self.isDemoDetailsStepActive = ko.computed(function () {\r\n return self.registrationStep() === RegistrationSteps.DemoDetails;\r\n });\r\n\r\n self.submitButtonVisible = ko.observable(true);\r\n self.typeformDone = ko.observable(false);\r\n self.redirectTo = ko.observable(\"/\");\r\n\r\n self.abVersionCssClass = ko.computed(function() {\r\n if (abVersion === \"B\" && self.registrationStep() === RegistrationSteps.UserInfo) {\r\n return \"version-b\";\r\n } else if (abVersion === \"B\" && self.registrationStep() === RegistrationSteps.CreditCardInfo) {\r\n return \"version-c\";\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n\r\n self.agreedTermsConditions.subscribe(function (val) {\r\n self.agreedTermsConditionsError(false);\r\n });\r\n\r\n self.submitGoogleRegistration = function() {\r\n model.loadStripe();\r\n\r\n Segment.track(\"Google Signing In\", { category: \"Registration\" });\r\n\r\n var ga = gapi.auth2.getAuthInstance();\r\n ga.signIn({\r\n scope: \"profile email\"\r\n }).then(function() {\r\n Segment.track(\"Google Signed In\", { category: \"Registration\" });\r\n self.continueGoogleSignup();\r\n }).catch(function() {\r\n Segment.track(\"Google Sign In rejected\", { category: \"Registration\" });\r\n });\r\n };\r\n\r\n self.continueGoogleSignup = function() {\r\n var ga = gapi.auth2.getAuthInstance();\r\n var user = ga.currentUser.get();\r\n var authResponse = user.getAuthResponse();\r\n var profile = user.getBasicProfile();\r\n\r\n self.fullName(profile.getName());\r\n self.email(profile.getEmail());\r\n self.cardholder(profile.getName());\r\n self.googleUserId = profile.getId();\r\n self.registrationStep(RegistrationSteps.CreditCardInfo);\r\n\r\n SendGaRegistrationStep(\"Name and Email (Google)\");\r\n SendGaRegistrationPageView(\"userinfo_done_google\");\r\n SendMixpanelSignupStep(\"UserInfo\");\r\n };\r\n\r\n self.submitRegistration = function() {\r\n if (self.registrationStep() === RegistrationSteps.UserInfo) {\r\n //self.fullName.activateRequiredValidation();\r\n\r\n disableSubmit();\r\n $.when(\r\n self.email.activateServerCheckValidation(),\r\n self.password.activateServerCheckValidation()\r\n ).done(function() {\r\n if (self.fullName.hasError() || self.email.hasError() || self.password.hasError()) {\r\n self.email.deactivateServerCheckValidation();\r\n self.password.deactivateServerCheckValidation();\r\n enableSubmit();\r\n return;\r\n }\r\n\r\n self.cardholder(self.fullName());\r\n\r\n SendGaRegistrationStep(\"Name and Email\");\r\n SendGaRegistrationPageView(\"userinfo_done\");\r\n SendMixpanelSignupStep(\"UserInfo\");\r\n\r\n if (special) {\r\n // Registration after first step\r\n var form = $(\"#payment-form\");\r\n submitForm(form);\r\n } else {\r\n // Registration with two steps\r\n self.registrationStep(RegistrationSteps.CreditCardInfo);\r\n self.loadStripe();\r\n //grecaptcha.execute();\r\n }\r\n }).always(function() {\r\n if (!special) {\r\n enableSubmit();\r\n }\r\n });\r\n\r\n } else if (self.registrationStep() === RegistrationSteps.CreditCardInfo) {\r\n\r\n self.cardholder.activateRequiredValidation();\r\n if (self.cardholder.hasError())\r\n return;\r\n\r\n if (!self.agreedTermsConditions()) {\r\n self.agreedTermsConditionsError(true);\r\n return;\r\n }\r\n\r\n disableSubmit();\r\n\r\n var errorElement = document.getElementById(\"card-errors\");\r\n\r\n if (self.stripe == null) {\r\n errorElement.textContent = \"There is error with submitting you card. Please refresh the page and try again\";\r\n enableSubmit();\r\n }\r\n\r\n self.stripe.createToken(self.card, { name: self.cardholder() }).then(function(result) {\r\n if (result.error) {\r\n // Inform the customer that there was an error.\r\n errorElement.textContent = result.error.message;\r\n\r\n enableSubmit();\r\n } else {\r\n $(\"#cardToken\").val(result.token.id);\r\n\r\n //self.submitButtonVisible(false);\r\n SendGaRegistrationStep(\"Credit Card\");\r\n SendGaRegistrationPageView(\"card_done\");\r\n SendMixpanelSignupStep(\"Credit Card\");\r\n\r\n //self.registrationStep(RegistrationSteps.DemoDetails);\r\n\r\n var form = $(\"#payment-form\");\r\n submitForm(form);\r\n }\r\n });\r\n } else if (self.registrationStep() === RegistrationSteps.DemoDetails) {\r\n disableSubmit();\r\n //var form = $(\"#payment-form\");\r\n //submitForm(form);\r\n } else {\r\n return;\r\n }\r\n };\r\n\r\n self.loadStripe = function(onComplete) {\r\n if (self.stripeLoaded) {\r\n if (onComplete != null)\r\n onComplete();\r\n return $.when();\r\n } else {\r\n return $.getScript(\"https://js.stripe.com/v3/\").done(function() {\r\n\r\n self.stripeLoaded = true;\r\n\r\n (function setStripeKey() {\r\n var key = $(\"#key\").val();\r\n\r\n self.stripe = Stripe(key);\r\n var elements = self.stripe.elements();\r\n\r\n self.card = elements.create(\"card\", { hidePostalCode: true });\r\n self.card.mount(\"#card-element\");\r\n\r\n // Handle real-time validation errors from the card Element.\r\n self.card.addEventListener(\"change\",\r\n function(event) {\r\n var displayError = document.getElementById(\"card-errors\");\r\n if (event.error) {\r\n displayError.textContent = event.error.message;\r\n } else {\r\n displayError.textContent = \"\";\r\n }\r\n });\r\n })();\r\n\r\n if (onComplete != null)\r\n onComplete();\r\n });\r\n }\r\n };\r\n\r\n //************************************************************* FUNC's ****************\r\n function disableSubmit() {\r\n if (laddaSubmit01)\r\n laddaSubmit01.start();\r\n if (laddaSubmit02)\r\n laddaSubmit02.start();\r\n }\r\n\r\n function enableSubmit() {\r\n if (laddaSubmit01)\r\n laddaSubmit01.stop();\r\n if (laddaSubmit02)\r\n laddaSubmit02.stop();\r\n }\r\n\r\n function addHiddenField(formId, name, value) {\r\n var form = document.getElementById(formId);\r\n\r\n var elements = document.getElementsByName(name);\r\n\r\n function addField(parent, fieldName, fieldValue) {\r\n var input = document.createElement(\"input\");\r\n input.setAttribute(\"type\", \"hidden\");\r\n input.setAttribute(\"name\", fieldName);\r\n input.setAttribute(\"value\", fieldValue);\r\n parent.appendChild(input);\r\n }\r\n\r\n if (elements.length === 0) {\r\n addField(form, name, value);\r\n } else if (elements.length === 1) {\r\n var foundInput = elements[0];\r\n foundInput.setAttribute(\"value\", value);\r\n } else {\r\n $(\"input[name]='\" + name + \"'\").remove();\r\n addField(form, name, value);\r\n }\r\n }\r\n\r\n function submitForm(jqForm, dontRedirect) {\r\n var url = jqForm.attr(\"action\");\r\n\r\n addHiddenField(\"payment-form\", \"UserInfo.FullName\", self.cardholder());\r\n addHiddenField(\"payment-form\", \"UserInfo.Email\", self.email());\r\n addHiddenField(\"payment-form\", \"UserInfo.Password\", self.password());\r\n addHiddenField(\"payment-form\", \"UserInfo.ConfirmPassword\", self.password());\r\n if (self.googleUserId != null)\r\n addHiddenField(\"payment-form\", \"UserInfo.GoogleToken\", self.googleUserId);\r\n\r\n if (self.phoneInput != null && $(\"#phone\").val() != \"\") {\r\n var phoneNumber = self.phoneInput.getNumber();\r\n var phoneCountry = self.phoneInput.getSelectedCountryData().name;\r\n\r\n addHiddenField(\"payment-form\", \"UserInfo.Phone\", phoneNumber);\r\n addHiddenField(\"payment-form\", \"UserInfo.PhoneCountry\", phoneCountry);\r\n }\r\n\r\n addHiddenField(\"payment-form\", \"Coupon\", self.coupon());\r\n\r\n\r\n var obj = jqForm.serialize();\r\n disableSubmit();\r\n $.post(url, obj).done(function(result) {\r\n\r\n\r\n // Start Visual Website Optimizer Code \r\n window._vis_opt_queue = window._vis_opt_queue || [];\r\n window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(200); });\r\n // End Visual Website Optimizer Code\r\n\r\n SendGaRegistrationStep(\"Done\");\r\n SendGaRegistrationPageView(\"done\");\r\n SendMixpanelSignupStep(\"Done\");\r\n\r\n try {\r\n if (typeof userengage !== 'undefined') {\r\n userengage(\"client.update\", {\r\n user_id: self.email(),\r\n email: self.email()\r\n });\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n\r\n if (!dontRedirect)\r\n window.location = result.RedirectTo;\r\n\r\n self.redirectTo(result.RedirectTo);\r\n }).fail(function(data) {\r\n result = data.responseJSON || { ErrorMessage: \"Unknown error has occurred, please try again or contact support\" };\r\n njoAppNotifier.notifyError(result.ErrorMessage, result.Description || \"\");\r\n enableSubmit();\r\n }).always(function() {\r\n });\r\n }\r\n\r\n self.stripeLoaded = false;\r\n\r\n self.initPayPal = function(elementId, planPrice, planName) {\r\n paypal.Buttons({\r\n createOrder: function(data, actions) {\r\n // Set up the transaction\r\n return actions.order.create({\r\n purchase_units: [{\r\n amount: {\r\n value: planPrice\r\n },\r\n description: planName\r\n }]\r\n });\r\n },\r\n onApprove: function(data, actions) {\r\n disableSubmit();\r\n // Capture the funds from the transaction\r\n return actions.order.capture().then(function(details) {\r\n // Show a success message to your buyer\r\n $.post(\"/PayPalWorkflow/TransactionComplete\", {\r\n orderId: data.orderID,\r\n planName: planName\r\n }).done(function(responseData) {\r\n console.log(\"Transaction completed and accepted\", responseData);\r\n if (responseData.status === \"COMPLETED\") {\r\n var form = $(\"#payment-form\");\r\n\r\n addHiddenField(\"payment-form\", \"PayPalOrderId\", responseData.id);\r\n addHiddenField(\"payment-form\", \"PayPalPayerId\", responseData.payer.payer_id);\r\n\r\n submitForm(form);\r\n } else {\r\n var notify = new PNotify({\r\n title: \"Unknown error has occurred, please try again or contact support\",\r\n animate_speed: \"fast\",\r\n type: \"error\"\r\n });\r\n enableSubmit();\r\n }\r\n }).fail(function() {\r\n var notify = new PNotify({\r\n title: \"Unknown error has occurred, please try again or contact support\",\r\n animate_speed: \"fast\",\r\n type: \"error\"\r\n });\r\n enableSubmit();\r\n });\r\n });\r\n }\r\n }).render(elementId);\r\n };\r\n\r\n self.init = function(isSpecial, planPrice) {\r\n special = isSpecial;\r\n\r\n var paypalButtonContainer = \"#paypal-button\";\r\n var planName = $(\"#planName\").val();\r\n if ($(paypalButtonContainer).length > 0) {\r\n self.initPayPal(paypalButtonContainer, planPrice, planName);\r\n }\r\n };\r\n\r\n self.phoneInput = null;\r\n self.initPhone = function(inputSelector) {\r\n var phone = document.querySelector(inputSelector);\r\n\r\n if (!phone)\r\n return;\r\n\r\n self.phoneInput = window.intlTelInput(phone, {\r\n utilsScript: \"/Scripts/phonenumber/utils.js\",\r\n separateDialCode: true\r\n });\r\n };\r\n\r\n self.showWidgetPopup = function() {\r\n if (window.HubSpotConversations)\r\n window.HubSpotConversations.widget.open();\r\n else\r\n console.log(\"Widget is not presented or initialized\");\r\n };\r\n}\r\n\r\nglobalInit.init();\r\n\r\nvar abVersion = getQueryParameter(\"ver\");\r\nvar model = new RegisterModel(abVersion);\r\n\r\nfunction onSignIn() {\r\n //model.continueGoogleSignup();\r\n}\r\n\r\n$(document).ready(function() {\r\n var leadMode = getQueryParameter(\"features_variant\");\r\n\r\n if (leadMode === \"linkbuilding\") {\r\n $(\"#linkBuildingLead, #testimonialsYasirKhan, #testimonialsRonStefanski\").removeClass(\"hidden\");\r\n } else if (leadMode === \"instagram\") {\r\n $(\"#instagramPagesLead, #testimonialsYasirKhan, #testimonialsRonStefanski\").removeClass(\"hidden\");\r\n } else if (leadMode === \"bf2020offer\") {\r\n $(\"#bf2020offer, #testimonialsYasirKhan, #testimonialsRonStefanski\").removeClass(\"hidden\");\r\n } else {\r\n $(\"#undefinedLead, #testimonialsYasirKhan, #testimonialsRonStefanski\").removeClass(\"hidden\");\r\n }\r\n\r\n // We send 0 as initial step for registration page\r\n SendGaRegistrationStep(\"Start\");\r\n SendGaRegistrationPageView(\"start\");\r\n SendMixpanelSignupStep(\"Start\");\r\n\r\n // New user registration - set email if provided\r\n var userEmailValue = $(\"#userEmail\").val();\r\n if (userEmailValue !== \"\") {\r\n model.email(userEmailValue);\r\n }\r\n\r\n $(\"#email, #password\").on(\"focus\", function() {\r\n model.loadStripe();\r\n });\r\n\r\n // Model initialization\r\n var special = $(\"#special\").val() === \"True\";\r\n var planPrice = $(\"#planPrice\").val();\r\n model.init(special, planPrice);\r\n ko.applyBindings(model, document.getElementById(\"njo-content\"));\r\n\r\n var coupon = getQueryParameter(\"coupon\");\r\n model.coupon(coupon);\r\n\r\n $(\".cvv-help\").mouseover(function(s, e) {\r\n $(\".detailed-popup\").show();\r\n }).mouseleave(function(s, e) {\r\n $(\".detailed-popup\").hide();\r\n });\r\n model.initPhone(\"#phone\");\r\n\r\n $(\"#cardFaq\").appendTo(\"body\");\r\n\r\n var setupTooltip = function(identifier) {\r\n var tooltipSelector = \"[data-toggle='\" + identifier + \"']\";\r\n\r\n $(tooltipSelector).css(\"pointer-events\", \"auto\");\r\n\r\n _.each($(tooltipSelector), function(tooltipedItem) {\r\n $(tooltipedItem).tooltip()\r\n .data(\"bs.tooltip\")\r\n .tip()\r\n .addClass(identifier);\r\n });\r\n };\r\n\r\n setupTooltip(\"tooltip-info\");\r\n setupTooltip(\"tooltip-error\");\r\n});\r\n"],"sourceRoot":""}