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()");
};
}]);