pagelessOnboardingApp.controller("showSignUpController",['$rootScope','$scope',function($rootScope,$scope){ $scope.showSignupPopup = function(originName){ var pageName = window.currentPage; $rootScope.$broadcast('showSignUp',{ origin:originName , pageType:pageName}); } }]); pagelessOnboardingApp .controller( "pagelessOnboardingController", [ '$scope', '$document', '$window', '$timeout', '$http', '$filter', 'pagelessOnboardingService', 'mySharedService', 'Constants', 'pagelessOnboardingConstants', 'commonsAppServices', 'mixpanelService', function($scope, $document, $window, $timeout, $http, $filter, pagelessOnboardingService, mySharedService, Constants, pagelessOnboardingConstants, commonsAppServices, mixpanelService) { var mixpanel_c = pagelessOnboardingConstants.mixpanelUtil.mixpanel_property; var ga_c = pagelessOnboardingConstants.ga_property; var err_c = pagelessOnboardingConstants.error_messages; var visitorId = undefined; var watchListCompany = undefined; var OB_BOTTOM_BANNER_SHOWED='obbbs';//ob_bottom_banner_showed $scope.checkCompanyEndsWithS = function(compName){ return $filter('checkCompanyEndsWithS')(compName); }; function init() { //Get user country var promise = pagelessOnboardingService.getUserCountry(); promise.then(function (response) { if (response.data.country == 'canada') { $scope.isCanadian = true; } if (response.data.ip != undefined && response.data.ip != "" ) { $scope.registeredUserIP = response.data.ip; } }); if (typeof companyName != 'undefined') { $scope.compName = $scope.checkCompanyEndsWithS(companyName); } $scope.employer_section = {}; $scope.currentKey = ''; $scope.employer_section.myEmployer = []; watchListCompany = undefined; $scope.isEmployerAdded = false; if (window.currentPage != undefined && window.currentPage != "index") { //$timeout(function () { //$scope.showPagelessOnboardingPopup = true; $timeout(function () { autoFocusEmailInputField(); }, 500); //}, 1500); } } init(); //Custom Error Message /*$scope.setErrorMessage = function(className, text){ var html = ''; html += '
'; html += ''; html += ''; html += text; html += ''; }*/ if(window.isPreRender != undefined && window.isPreRender != "true"){ $timeout(function () { $scope.showCloseButton = false; $scope.showPagelessOnboardingPopup = true; }, 1500); } $scope.responseConstants = pagelessOnboardingConstants.response; $scope.searchOptions={}; $scope.searchOptions.showSearch = true; $scope.showPagelessOnboardingPopup = false; // To show conversion widget only in poll pages for 6 weeks from now. $scope.showCloseButton = true; if (window.currentPage != undefined && window.currentPage == "pollsandinsights") { $scope.showCloseButton = false; $scope.showPagelessOnboardingPopup = true; } $scope.showErrorMsg = false; $scope.showInfoMsg=false; $scope.showCompanyErrorMsg = false; $scope.showSignUpEmailErrorMsg = false; $scope.isSignedUpForEmail = false; $scope.showLoading = false; $scope.onBoardingStep = 1; $scope.showOBBottomBanner = false; $scope.showOBBottomBannerSlide = false; var userEmail; var employerName = undefined; var LOGO_CONFIRMATION = "logo_c"; $scope.showSignUpPopup = function(){ init(); $scope.showPagelessOnboardingPopup = true; }; $scope.hideSignUpPopup = function(){ $scope.showPagelessOnboardingPopup = false; $scope.showErrorMsg = false; $scope.showInfoMsg=false; $scope.showCompanyErrorMsg = false; $scope.showSignUpEmailErrorMsg = false; $scope.showLoading = false; }; $scope.$on('showSignUp', function(event,args) { $scope.showSignupPopup(args); }); $scope.$on('showOBBottomBanner', function(event, args){ //var obBannerShowed = getCookie(OB_BOTTOM_BANNER_SHOWED); //if(obBannerShowed != '1') { // $scope.showOBBottomBanner = true; //$timeout(function(){ // $scope.showOBBottomBannerSlide = true; //}, 1000); // setCookie(OB_BOTTOM_BANNER_SHOWED, '1', 86400); //} }); $scope.hideOBBottomBanner = function() { $scope.showOBBottomBanner = false; $scope.showOBBottomBannerSlide = false; }; $scope.showSignupPopup = function(args){ $scope.prop={}; if(args!=undefined){ $scope.prop.origin = args.origin; $scope.prop.pageType = args.pageType; $scope.watchListCompany = args.watchListId; if($scope.prop.origin==undefined){ $scope.prop.origin="edit"; } mixpanelService.trackEvent("Conversion Widget Shown",$scope.prop); } init(); $scope.showPagelessOnboardingPopup = true; } function autoFocusEmailInputField(){ var inputElement = document.getElementById('pagelessOBEmailInput1'); if(inputElement != null && $scope.onBoardingStep == 1){ document.getElementById("pagelessOBEmailInput1").focus(); } } $scope.getEmployer = function() { var list = new Array(); if ($scope.employer_section.myEmployer.id != undefined) { list.push($scope.employer_section.myEmployer); } return list; }; $scope.hideErrormsg = function(){ $scope.showErrorMsg = false; $scope.showInfoMsg = false; $scope.showSignUpEmailErrorMsg = false; }; $scope.showRegistration = function(){ $scope.hideLink = true; $scope.showRegistrationForm = true; }; $scope.setSignedUpForEmail = function(){ $scope.SignUpEmailErrorMsg = err_c.ACCEPT_TERMS_OF_USE; $scope.isSignedUpForEmail = !$scope.isSignedUpForEmail; if($scope.isSignedUpForEmail){ $scope.showSignUpEmailErrorMsg = false; } } function validateField(email){ if(email == "" || email == undefined){ $scope.showErrorMsg = true; $scope.ErrorMsg = "Email address is required."; return false; } if(!validateEmail(email)){ $scope.showErrorMsg = true; $scope.ErrorMsg = "Please enter a valid email address."; return false; } var verificationResult = pagelessOnboardingService.verifyEmail(email); verificationResult.then(function(result) { var data = result.data; if(data != null && data.status == false){ $scope.showErrorMsg = true; $scope.ErrorMsg = data.error_msg; }else{ $scope.showErrorMsg = false; postEmailValidation(email); } }); }; function postEmailValidation(email){ var timeZone = new Date().getGmtOffset(); var targetURL; if(window.currentPage != "errorPage"){ targetURL = window.location.href; } $scope.showErrorMsg = false; if ($scope.isCanadian && !$scope.isSignedUpForEmail) { $scope.SignUpEmailErrorMsg = err_c.ACCEPT_TERMS_OF_USE; $scope.showSignUpEmailErrorMsg = true; } else { $scope.showSignUpEmailErrorMsg = false; $scope.showLoading = true; var promise = pagelessOnboardingService.userRegistration(email, timeZone, window.companyId, targetURL, $scope.onBoardingStep, visitorId, $scope.watchListCompany, $scope.showOBBottomBanner, $scope.isCanadian, $scope.registeredUserIP); promise.then(function (response) { try { _gaq.push(['_trackEvent', ga_c.CONVERSION_REG, ga_c.VIA_EMAIL, ga_c.CONVERSION_GA]); } catch (exception) { // } var isHomePage = (window.currentPage == "index" || window.currentPage == "mobile") ? true : false if (response.data.result == $scope.responseConstants.SUCCESS_STRING) { // Registration is completed $("#userEmail").val(response.data.userEmail); setCookie(USER_REG, 0, 300) if (response.data.isOnboardingComplete == "true") { // Onbaording is completed and hence needs to be redirected to corresponding logged in page if (window.currentPage == "index" || window.currentPage == "mobile") { //var redirectURL = response.data.employerURL; var redirectURL = HOST_WITHOUT_SSL + "home.htm?onBoardingComplete=true"; var targetURL = getUrlParameter('targetURL'); if (targetURL != undefined) { redirectURL = targetURL; } $scope.showLoading = false trackMixpanelLoginEvent(response.data, getCallBckFn(redirectURL)); } else if (window.isMarketingPage || window.currentPage == "errorPage") { $scope.showLoading = false trackMixpanelLoginEvent(response.data, getCallBckFn(response.data.employerURL + "?onBoardingComplete=true")); } else { $scope.showLoading = false trackMixpanelLoginEvent(response.data, getCallBckFn(window.location.href + "?onBoardingComplete=true")); } } else { // Employer is not detected yet $scope.showPagelessOnboardingPopup = true; trackMixpanelLoginEvent(response.data); $scope.showLoading = false; $scope.onBoardingStep = 3; trackPopUpEvent(mixpanel_c.POPUP_ONBOARDING_STEP3_STARTED, email); } } else { $scope.showLoading = false; if (response.data.result == $scope.responseConstants.INFORMATION_STRING || response.data.result == $scope.responseConstants.AUTO_LOGIN_SUCCESS_STRING) { // when user enters registered email in second step if (response.data.result == $scope.responseConstants.INFORMATION_STRING) { //case 1 - when user has not signed in with this email before in the same browser if (response.data.event == $scope.responseConstants.EVENT) { trackSignInRequest(response.data.memberId, email, mixpanel_c.SIGNUP_FORM_ORIGIN); } $scope.showInfoMsg = true; $scope.InfoMsg = response.data.message; } else { //case 2 - when user has already signed in with this email before in the same browser var targetURL = undefined; if (window.currentPage == "errorPage" || window.currentPage == "index") { /*targetURL = getUrlParameter('targetURL'); if (targetURL == undefined) { targetURL = HOST_WITHOUT_SSL + "home.htm"; }*/ targetURL = HOST_WITHOUT_SSL + "manage-companies.htm"; } trackSignInRequest(response.data.memberId, email, mixpanel_c.SIGNUP_FORM_ORIGIN, true, targetURL); } } else if (response.data.employer_status == "-1") { // When User has entered email for which the employer is not in our db clearOBEmailInput(); $scope.onBoardingStep = 3; setCookie(USER_LOGGEDIN, 1, 31536000); trackPopUpEvent(mixpanel_c.POPUP_ONBOARDING_STEP3_STARTED, email); } else { $scope.showErrorMsg = true; $scope.ErrorMsg = response.data.message; } return; } }); } } function clearOBEmailInput(){ if(document.getElementById("pagelessOBEmailInput1")) document.getElementById("pagelessOBEmailInput1").value = ""; if(document.getElementById("pagelessOBEmailInput2")) document.getElementById("pagelessOBEmailInput2").value = ""; if(document.getElementById("pagelessOBEmailInput3")) document.getElementById("pagelessOBEmailInput3").value = ""; } function validateEmail(email){ return /^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/i .test(email); } /*$scope.openHPVideo = function (){ $window.open("https://www.youtube.com/embed/vDAubpbnlsc?autoplay=true", "_blank", "toolbar=yes, scrollbars=no, resizable=no, top=100, left=300, width=700, height=400"); }*/ function trackPopUpEvent(event,email,visitorId,action){ var prop = {'Visitor Id':visitorId}; prop["User Email"] = email; prop["Action"] = action; mixpanelService.trackEvent(event,prop); } var isFromConversionBanner = false; $scope.submitRegistrationForConversionBanner = function(email,action) { $scope.submitRegistrationForm(email,action); } $scope.submitRegistrationForm = function(email,action){ setPageTypeCookie(); validateField(email); }; $scope.setEmployerField = function(company, isRedirectionRequired) { $scope.employer_section.myEmployer = company; employerName = $scope.employer_section.myEmployer.name; $scope.ownership=$scope.employer_section.myEmployer.ownership; $scope.searchOptions.showSearch = false; $scope.showCompanyErrorMsg = false; $(".pageless-onboarding-popup #searchAndManage").val($scope.employer_section.myEmployer.name); if(isRedirectionRequired){ $scope.submitEmployerDetail(); } }; //used for mobile home page $scope.selectCompany = function(company){ var seoName = getSEOFriendlyCompanyName(company.shortName); var companyProfileURL = getCompanyInfoUrl(company.id,seoName); window.location.assign(companyProfileURL); } $scope.addEmployerCompany = function(company, isEmployer) { userEmail = $("#userEmail").val(); $scope.employer_section.myEmployer = company; $scope.ownership=$scope.employer_section.myEmployer.ownership; $scope.searchOptions.showSearch = false; $scope.isEmployerAdded=true; $scope.currentKey=$scope.employer_section.myEmployer.name; $("#registrationFlowSteps #searchAndManage").val($scope.employer_section.myEmployer.name); $scope.showLoading = true; setCookie(LOGO_CONFIRMATION, 0, 300); var promise = pagelessOnboardingService.setEmployerOrInterestedCompany(company, userEmail, isEmployer); promise.then(function(response){ if(response.data.status == 'success'){ var seoName = getSEOFriendlyCompanyName($scope.employer_section.myEmployer.shortName); var companyProfileURL = getCompanyInfoUrl($scope.employer_section.myEmployer.id,seoName); var props={}; props['Skipped Step']=false; $scope.showLoading = false; if(isEmployer) { mixpanelService.trackEvent(mixpanel_c.HP_ONBOARDING_STEP1_COMPLETED,props,getCallBckFn(companyProfileURL+"?onBoardingComplete=true")); } else { var props={}; props['back']=false; mixpanelService.trackEvent(mixpanel_c.HP_ONBOARDING_STEP2_COMPLETED,props,getCallBckFn(companyProfileURL+"?onBoardingComplete=true")); } } else { $scope.showLoading = false; $scope.showErrorMsg = true; $scope.ErrorMsg = "OOPS! Something went wrong while setting an employer. Please try again!!"; return; } }); }; $scope.submitEmployerDetail = function(interestedCompany){ if(currentPage == "cpLayout" && deviceType=='Desktop'){ var tabURL = HOST_WITHOUT_SSL + "home.htm?utm_source=%22reg_popup%22" openInNewTab(tabURL); } if(($scope.employer_section.myEmployer.length == 0) || employerName != $("#pageless-onboarding-popup-container #searchAndManage").val()) { $scope.showCompanyErrorMsg = true; $scope.CompanyErrorMsg = "Please select a company from the dropdown menu"; $scope.employer_section.myEmployer=[]; } else { $scope.showCompanyErrorMsg = false; $scope.showLoading = true; $scope.isEmployerAdded=true; $scope.currentKey=$scope.employer_section.myEmployer.name; userEmail = $("#userEmail").val(); var company = $scope.employer_section.myEmployer; var isEmployer = false; if(interestedCompany == undefined || interestedCompany == null || interestedCompany){ isEmployer = true; } setCookie(LOGO_CONFIRMATION, 0, 300); var promise = pagelessOnboardingService.setEmployerOrInterestedCompany(company, userEmail, isEmployer); promise.then(function(response){ if(response.data.status == 'success'){ var prop = {'EmployerId':company.id}; prop[' Employer Short Name'] = company.shortName; mixpanelService.trackEvent(mixpanel_c.POPUP_ONBOARDING_STEP3_COMPLETED,prop); var redirectURL = window.location.href; if(window.currentPage != undefined && window.currentPage == "index"){ redirectURL = HOST_WITHOUT_SSL + "manage-companies.htm"; /*var targetURL=getUrlParameter('targetURL'); if(targetURL!=undefined){ redirectURL = targetURL; }*/ }else if (window.isMarketingPage || window.currentPage == "errorPage") { var seoName = getSEOFriendlyCompanyName(company.shortName); redirectURL = getCompanyInfoUrl(company.id,seoName); } redirectURL = redirectURL+"?onBoardingComplete=true"; $scope.showLoading = false; getCallBckFn(redirectURL)(); } else { $scope.showLoading = false; $scope.showErrorMsg = true; $scope.ErrorMsg = "OOPS! Something went wrong while setting an employer. Please try again!!"; return; } }); } }; $scope.redirectToCP = function(company){ $scope.showLoading = true; if(company != undefined || company != null){ $scope.employer_section.myEmployer = company; } $(".conversion_var #searchAndManage").val($scope.employer_section.myEmployer.name); var seoName = getSEOFriendlyCompanyName($scope.employer_section.myEmployer.shortName); var companyProfileURL = getCompanyInfoUrl($scope.employer_section.myEmployer.id,seoName); window.location.assign(companyProfileURL); }; $scope.skipEmployer = function(){ var companyURL = window.location.href; var props={} props['Skipped Step']=true; }; $scope.skipEmployerStep = function(){ var props={}; props['Skipped Step']=true; mixpanelService.trackEvent(mixpanel_c.HP_ONBOARDING_STEP1_COMPLETED,props,function(){ mixpanelService.trackEvent(mixpanel_c.HP_ONBOARDING_STEP2_STARTED); }); }; $scope.backToEmployerStep = function (){ var props={}; props['back']=true; mixpanelService.trackEvent(mixpanel_c.HP_ONBOARDING_STEP2_COMPLETED,props, function (){ mixpanelService.trackEvent(mixpanel_c.HP_ONBOARDING_STEP1_STARTED); }); }; $scope.isEnabled=function(){ var val=$("#pageless-onboarding-popup-container #searchAndManage").val(); var isEmployer= $scope.employer_section.myEmployer; if(isEmployer.length == 0){ return false; } return true; }; $scope.showLoginPopupContainer = function(){ var signInFormDiv = document.querySelector("#signInFormDiv").classList; document.querySelector("#pageless-onboarding-popup").style.display = "none"; document.querySelector("#signInFormDivContainer").style.display = "block"; signInFormDiv.add("showLogin"); $(".showLogin #signInFormResponseDivContainer .button_submit").attr("onclick","closeSignInLink()"); }; }]);