/*global janrain, console, UMP_exports, wpCookies, wp, State, rDil, s_gi, s_account */
/*
Janrain initializations and settings for JUMP.
For more information about these settings, see the following documents:
http://developers.janrain.com/documentation/widgets/social-sign-in-widget/social-sign-in-widget-api/settings/
http://developers.janrain.com/documentation/widgets/user-registration-widget/capture-widget-api/settings/
http://developers.janrain.com/documentation/widgets/social-sharing-widget/sharing-widget-js-api/settings/
*/
var UMP = (function ( $, janrain ) {
'use strict';
var self = {
ajax_url: null,
httpsLoadUrl: null,
httpLoadUrl: null,
httpsShareLoadUrl: null,
httpShareLoadUrl: null,
authenticated: new State( false ),
user_data: new State(),
deferred: {
loaded: $.Deferred(),
authenticated: $.Deferred() // deprecated
},
manage_options_cap: null, // @todo no need to be exposed
edit_profile_shortcode: null, // @todo no need to be exposed
cookie_name_key: null,
cookie_avatar_key: null,
avatar_default: null,
cookie_expiration: null,
loading_entity_text: null,
is_edit_profile: null,
is_logout: null,
edit_profile_class: null,
get_entity_info_nonce: null,
get_et_middleware_data_nonce: null,
subscribers: {},
user_data_storage_key: 'janrain_user_data',
et_loaded: 'et_loaded',
m2o_migrated_email: null,
migratedM2OSignInScreenLabels: null,
auth_redirect_url: null,
is_fetching: false,
is_et_loaded: false,
validated: false,
favs_loaded: false,
// Used to store previous URL request made by unauthenticated user.
previous_path_storage_key: 'janrain_previous_path_request',
sign_in_screen_labels: {},
acceptance_screen_user_data: null,
// Janrain/Omniture tracking
auth_status: null,
modulestring: null,
sign_in_social: false,
sign_in_modal: true,
auth_type: null,
errorMessage: null,
onModalOpen: false
};
$.extend( self, UMP_exports );
/**
* Runs at: before ready
*/
self.load = function () {
var e = document.createElement('script');
e.type = 'text/javascript';
e.id = 'janrainAuthWidget';
if (document.location.protocol === 'https:') {
e.src = self.httpsLoadUrl;
} else {
e.src = self.httpLoadUrl;
}
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(e, s);
if (typeof window.janrain.settings.share === 'object') {
e = document.createElement('script');
e.type = 'text/javascript';
e.id = 'janrainWidgets';
if (document.location.protocol === 'https:') {
e.src = self.httpsShareLoadUrl;
} else {
e.src = self.httpShareLoadUrl;
}
s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(e, s);
}
};
self.validate_birthday = function() {
if ( ( $('[id$=_birthdate_required_dateselectyear].capture_select').val() === null )
&&
( $('[id$=_birthdate_required_dateselectmonth].capture_select').val() === null )
&&
( $('[id$=_birthdate_required_dateselectday].capture_select').val() === null )
) {
return false;
} else {
return true;
}
};
self.show_birthday_error = function() {
var $dateBlock = $('[id$=_birthdate_dateselectyear].capture_select').closest('.capture_dateselectBlock');
$dateBlock.addClass('capture_error');
$dateBlock.find('.capture_tip_error').text('Birthdate is required');
};
/**
* Runs when self.deferred.loaded resolves
*/
self.init = function () {
var update_acceptance_data = function() {
UMP.acceptance_screen_user_data = {
givenName: $('[id$=_firstname].capture_text_input').val() || $('[id$=_firstName].capture_text_input').val(),
familyName: $('[id$=_lastname].capture_text_input').val() || $('[id$=_lastName].capture_text_input').val(),
zip: $('[id$=_postalCode].capture_text_input').val() || $('[id$=_postalCode_required].capture_text_input').val(),
gender: $('[id$=_gender].capture_select').val(),
birthday: $('[id$=_birthdate_required_dateselectyear].capture_select').val() + '-' +
$('[id$=_birthdate_required_dateselectmonth].capture_select').val() + '-' +
$('[id$=_birthdate_required_dateselectday].capture_select').val(),
newsletters: {}
};
}
$('.ump-subscription-lists .ump-subscription-list-id').each(function(){
var newsletter_id = $( this ).val();
var newsletter_id_arr = newsletter_id.split(':');
var categories = [ 'sn', 'cjcl', 'cisl', 'cfac' ];
if ( categories.indexOf( newsletter_id_arr[1].innerText ) !== 1 ) {
if(newsletter_id_arr.length < 4 && $(this).parents('.ump-subscription-lists').hasClass('ump-subscription-lists-radio') === false ) {
$(this).parents('li').eq(0).hide();
}
}
});
$('#traditionalRegistration .ump-subscription-lists .ump-subscription-list-id').each(function(){
var newsletter_id = $( this ).val();
var newsletter_id_arr = newsletter_id.split(':');
var categories = [ 'sn', 'cjcl', 'cisl', 'cfac' ];
if ( categories.indexOf( newsletter_id_arr[1].innerText ) !== 1 ) {
if(newsletter_id_arr.length >= 4) {
$(this).parents('li').eq(0).hide();
}
}
});
// When you click on the register button we capture the user information
$( 'body' ).on( 'click', '#capture_socialRegistration_socialRegistration_signInButton, #capture_traditionalRegistration_createAccountButton, #capture_legalAcceptanceScreen_legalAcceptanceAcceptButton, #registrationNewVerification #ump_janrain_modal_close', function( event ) {
//if ( null !== UMP.acceptance_screen_user_data ) {
// return;
//}
// otherwise let's populate the newsletter data
//event.preventDefault();
var container = $( event.target ).parents('.capture_screen_container')[0];
update_acceptance_data();
// Save newsletter data
var buttonId = (typeof $( event.target ).attr('id') !== 'undefined') ? $( event.target ).attr('id') : 'registrationButton';
$( container ).find('.ump-subscription-lists .ump-subscription-list-id').each( function( ) {
var newsletter_id = $( this ).val();
var parm3 = 'explicit';
var checked = ( this.checked ? 1 : 0 );
var newsletter_id_arr = newsletter_id.split(':');
var categories = [ 'sn', 'cjcl', 'cisl', 'cfac' ];
if ( categories.indexOf( newsletter_id_arr[1].innerText ) !== 1 ) {
if(newsletter_id_arr.length > 3) {
parm3 = (checked) ? parm3 : '';
} else {
parm3 = 'implied';
checked = 1;
}
}
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ] = {};
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].subscribed = checked;
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].parm1 = location.href;
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].parm3 = parm3;
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].parm4 = buttonId;
} );
//$( event.target ).click();
} );
$(document).on( 'click', '#registrationNewVerification .registration-new-verification-submit', function( event ) {
var container = $( event.target ).parents('.capture_screen_container')[0];
var buttonId = (typeof $( event.target ).attr('id') !== 'undefined') ? $( event.target ).attr('id') : 'registrationButton';
$( container ).find('.ump-subscription-lists .ump-subscription-list-id').each( function( ) {
var newsletter_id = $( this ).val();
var parm3 = 'explicit';
var checked = ( this.checked ? 1 : 0 );
var newsletter_id_arr = newsletter_id.split(':');
var categories = [ 'sn', 'cjcl', 'cisl', 'cfac' ];
if ( categories.indexOf( newsletter_id_arr[1].innerText ) !== 1 ) {
if(newsletter_id_arr.length > 3 || newsletter_id_arr[1] == 'cjcl' || newsletter_id_arr[1] == 'cisl' || newsletter_id_arr[1] == 'cfac') {
parm3 = (checked) ? parm3 : '';
} else {
parm3 = 'implied';
checked = 1;
}
}
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ] = {};
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].subscribed = checked;
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].parm1 = location.href;
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].parm3 = parm3;
UMP.acceptance_screen_user_data.newsletters[ newsletter_id ].parm4 = buttonId;
} );
var access_token_tmp = UMP.getAccessToken();
var user_data = self.user_data.get();
var uuid_tmp = user_data && user_data.uuid ? user_data.uuid : '';
self.updateEtNewslettersDataExtensions( {
access_token: access_token_tmp,
uuid: uuid_tmp,
acceptance_screen_user_data: UMP.acceptance_screen_user_data,
callback: function ( error, response ) {}
} );
self.auth_status = 'authenticated user janrain';
self.modulestring = 'newsletter confirmation|janrain';
self.jAT();
//$( this ).html( '
' );
$('.personalization-notice').removeClass('hidden');
$('#janrainModal').addClass('wide');
$('.sticky-sidebar').show();
$('.sidebar-personalization').removeClass('hidden-xs');
$('.personalization-notice').parent().addClass('wide');
if(localStorage.favourites&&localStorage.favourites!=[]&&localStorage.favourites!='[]') {
janrain.capture.ui.modal.close();
} else {
$( '#registrationNewVerification' ).html( $('.personalization-notice') );
}
} );
$(document).on( 'click', '#registrationNewVerification .registration-new-verification-skip', function( event ) {
if(localStorage.favourites&&localStorage.favourites!=[]&&localStorage.favourites!='[]') {
janrain.capture.ui.modal.close();
} else {
$('.personalization-notice').removeClass('hidden');
$( '#registrationNewVerification' ).html( $('.personalization-notice') );
}
})
// This is caught before finally submitting the form to Janrain but after the janrain validation
$(document).on('submit', 'form#capture_traditionalRegistration_registrationForm_radio_2, form#capture_socialRegistration_socialRegistrationForm_radio', function( event ){
self.validated = true;
/*
if ( $('[id$=_passwordConfirm].capture_text_input').length !== 0 ) {
if ( $('[id$=_passwordConfirm].capture_text_input').val() === '' ) {
var $passwordBlock = $('[id$=_passwordConfirm].capture_text_input').closest('.capture_form_item');
$passwordBlock.addClass('capture_error');
$passwordBlock.find('.capture_tip_error').text('Confirm Password cannot be empty');
self.validated = false;
}
}
*/
//otherwise let's populate the newsletter data
if ( ! self.validated ) {
$(this).find('.capture_processing').hide();
var $submitButton = ($(this).find('#capture_traditionalRegistration_createAccountButton').length !== 0) ? $(this).find('#capture_traditionalRegistration_createAccountButton') : $(this).find('#capture_socialRegistration_socialRegistration_signInButton');
$submitButton.show();
event.preventDefault();
return false;
}
if ( !self.sign_in_social ) {
self.auth_type = 'email';
}
self.auth_status = 'authenticated user janrain';
self.modulestring = 'sign up confirmation|janrain';
} );
// if ( $.browser.msie && $.browser.version < 9) {
// $('html').addClass('lt-ie9');
// }
if ( janrain.settings.capture.federateLogoutUri ) {
janrain.events.onCaptureSessionEnded.addHandler( function () {
jQuery.get( janrain.settings.capture.federateLogoutUri, function ( data, textStatus, jqXHR ) {
// cookies have been cleared
} );
} );
}
self.setupAamIdSync();
janrain.events.onCaptureLoginSuccess.addHandler( function ( result ) {
janrain.capture.ui.modal.close();
self.sessionFoundHandler( result );
} );
janrain.events.onCaptureSessionFound.addHandler( self.sessionFoundHandler );
janrain.events.onCaptureRegistrationSuccess.addHandler( self.sessionFoundHandler );
janrain.events.onCaptureRegistrationSuccess.addHandler( self.registrationSuccessHandler );
janrain.events.onCaptureSessionEnded.addHandler( self.sessionEndedHandler );
janrain.events.onCaptureExpiredToken.addHandler( self.sessionEndedHandler );
janrain.events.onCaptureInvalidToken.addHandler( self.sessionEndedHandler );
janrain.events.onCaptureSessionNotFound.addHandler( self.sessionEndedHandler );
janrain.events.onCaptureScreenShow.addHandler( self.screenShowHandler );
janrain.events.onCaptureRenderComplete.addHandler( function ( flow ) {
if ( 'legalAcceptanceScreen' === flow.screen ) {
$( '#capture_legalAcceptanceScreen_email' ).attr( 'disabled', true );
$( '#capture_legalAcceptanceScreen_legalAcceptanceAcceptButton' ).val( 'Confirm Account' ).hide();
$( '#legalAcceptances .ump-subscription-lists' ).hide();
if ( $( '#capture_legalAcceptanceScreen_traditionalRegistration_displayName' ).val() != "" ) {
$( '#capture_legalAcceptanceScreen_traditionalRegistration_displayName' ).prop( 'disabled', true );
}
$( '#capture_legalAcceptanceScreen_legalAcceptanceAcceptButton' ).attr( 'disabled', true );
$( '#capture_legalAcceptanceScreen_legalAcceptanceAcceptButton' ).addClass( "disabled" );
}
} );
var success_handler = function( result ) {
if ( 'legalAcceptancePostLoginForm_radio' != result.form && 'registered' === result.statusMessage ) {
janrain.capture.ui.renderScreen( 'registrationNewVerification' );
$( '#registrationNewVerification .ump_janrain_modal_close' ).hide();
$( '.janrain_modal_closebutton' ).hide();
self.updateEtNewslettersDataExtensions( {
access_token: result.accessToken,
uuid: result.userData.uuid,
acceptance_screen_user_data: UMP.acceptance_screen_user_data,
callback: function ( error, response ) {
//self.refreshUserData();
$( '#registrationNewVerification .ump_janrain_modal_close' ).show();
$( '.janrain_modal_closebutton' ).show();
$( '#registrationNewVerification .capture_processing' ).hide();
if ( 'legalAcceptancePostLoginForm_radio' === result.form ) {
$( '#registrationNewVerification #successMessageMigrated' ).show();
} else {
$( '#registrationNewVerification #successMessageSignup' ).show();
}
if (error) {
$( '#registrationNewVerification #errorMessage' ).show();
}
}
} );
//Newsletters details page
self.auth_status = 'authenticated user janrain';
self.modulestring = 'newsletter details|janrain';
self.jAT();
}
}
janrain.events.onCaptureRegistrationSuccess.addHandler( success_handler );
janrain.events.onCaptureLoginSuccess.addHandler( success_handler );
janrain.events.onCaptureEmailVerificationSuccess.addHandler( function ( result ) {
self.refreshUserData();
} );
// Fires when a user profile saves successfully.
janrain.events.onCaptureProfileSaveSuccess.addHandler( self.updateNameAndAvatar );
// Fires when a photograph uploads successfully.
janrain.events.onCapturePhotoUploadSuccess.addHandler( self.updateNameAndAvatar );
janrain.events.onCaptureSaveSuccess.addHandler( function( result ) {
// When a photograph sucessfully cropped.
if ( 'photoCropped' === result.statusMessage ) {
self.updateNameAndAvatar();
}
} );
// Fires after a Federate token has been refreshed.
janrain.events.onCaptureFederateRefreshedToken.addHandler( self.updateAccessToken );
// Listens to storage event so that changes on user_data is reflected on other windows.
// Please note that the handler checks key in event object, unfortunately old IE doesn't
// have that key in event object.
$(window).on('storage', self.storageEventHandler);
// Postal code value converter to uppercase.
$( document ).on('blur', '[name*="postalCode"]', function() {
this.value = this.value.toUpperCase().replace( /^\s+/, '' ).replace( /\s+$/, '' );
} );
// Postal code validation.
janrain.capture.ui.registerFunction( 'postal_code_validation', self.canadaPostalCodeValidation );
janrain.capture.ui.registerFunction( 'postal_code_optional_validation', self.canadaPostalCodeOptionalValidation );
// Unlink social account handler to restore the link back. See also screenShowHandler
// which deactivates linked accounts when 'editProfile' screen is shown.
janrain.events.onCaptureProfileUnlink.addHandler( function( obj ) {
$( 'body' ).removeClass( 'linked_' + obj.provider );
} );
// M2O conversion modal handler.
if ( self.m2o_migrated_email ) {
janrain.events.onCaptureSessionNotFound.addHandler( function() {
janrain.capture.ui.renderScreen( "signIn" );
} );
}
janrain.events.onCaptureSessionFound.addHandler( self.normalizeSignInScreenAfterMigratedM2O );
var go_back = function () {
var redirect;
if ( document.referrer && document.referrer !== location.href ) {
redirect = document.referrer;
} else {
redirect = '/';
}
window.location = redirect;
};
if ( self.is_edit_profile && $('body').hasClass( self.edit_profile_class ) ) {
janrain.events.onCaptureSessionEnded.addHandler( go_back );
janrain.events.onCaptureAccessDenied.addHandler( function() {
// Store location.path_name + location.hash on self.previous_path_storage_key
// so that we can redirect back the user after re-authenticated.
if ( window.localStorage ) {
window.localStorage[ self.previous_path_storage_key ] = location.href;
}
go_back();
} );
self.profileTabs();
}
janrain.capture.ui.start();
self.handleAutoJumpScreen();
$( '.ump-user-account-links' ).on( 'click', '.retry-start-login', function() {
$( '.login-failed-note' ).html('').hide();
$( '.captureSignInLink' ).show();
});
// Click handler for "?" link that toggles the visibility of the explanation
// on the login screen.
$( document ).on( 'click', '.toggle-ump-sign-in-custom-message-content-body', function(e) {
e.preventDefault();
$( '.ump-sign-in-custom-message-content-body' ).slideToggle();
$(this).toggleClass('active');
});
if ( $( '#janrainEngageEmbed #janrainView' ).css('visibility') === 'hidden' ) {
$( '.ump-sign-in-custom-message' ).hide();
}
$( ".capture-ui-content-right .tab-sign-in").addClass( "underline" );
var email_input;
$( document ).on( 'click', '.capture-ui-content-right .tab-sign-up', function() {
email_input = $(".capture_traditionalSignIn_emailAddress").val();
$('#janrainModal').find('input[type="email"]').parent().removeClass('capture_error');
janrain.capture.ui.renderScreen( 'traditionalRegistration' );
$( ".capture_traditionalRegistration_emailAddress" ).val( email_input );
$( ".capture_traditionalRegistration_password" ).val( "" );
//document.getElementById( 'capture_traditionalRegistration_createAccountButton' ).style.display = '';
$( ".capture-ui-content-right .tab-button").removeClass( "underline" );
$( ".capture-ui-content-right .tab-sign-up").addClass( "underline" );
$( "#capture_traditionalRegistration_createAccountButton" ).attr( 'disabled', true );
$( "#capture_traditionalRegistration_createAccountButton" ).addClass( "disabled" );
self.sign_in_modal = false;
self.auth_status = 'non authenticated';
self.modulestring = 'sign up details|janrain';
self.errorMessage = null;
self.jAT();
});
$( document ).on( 'click', '.capture-ui-content-right .tab-sign-in', function() {
email_input = $( ".capture_traditionalRegistration_emailAddress" ).val();
$('#janrainModal').find('input[type="email"]').parent().removeClass('capture_error');
janrain.capture.ui.renderScreen( 'signIn' );
$(".capture_traditionalSignIn_emailAddress").val( email_input );
$( ".capture-ui-content-right .tab-button").removeClass( "underline" );
$( ".capture-ui-content-right .tab-sign-in").addClass( "underline" );
self.sign_in_modal = true;
self.auth_status = 'non authenticated';
self.modulestring = 'sign in details|janrain';
self.jAT();
});
/*
$( document ).on( 'click', '.capture-ui-content-right .tab-sign-in, .capture-ui-content-right .tab-sign-up', function() {
$( '#janrain-googleplus' ).detach().appendTo( '#janrainProviders_0' );
$( '#janrain-twitter' ).detach().appendTo( '#janrainProviders_1');
});
*/
$( document ).on( 'click', '.capture_signIn_traditionalSignIn_password-show', function() {
$( '#capture_signIn_traditionalSignIn_password' ).attr( 'type', function( index, attr ) {
return attr == 'password' ? 'text' : 'password';
});
});
$( document ).on( 'click', '.capture_traditionalRegistration_traditionalRegistration_password-show', function() {
$( '#capture_traditionalRegistration_traditionalRegistration_password' ).attr( 'type', function( index, attr ) {
return attr == 'password' ? 'text' : 'password';
});
});
$( document ).on( 'click', '#janrainModalOverlay', function() {
$( '.janrain_modal_closebutton' ).click();
});
$( document ).on( 'change', '#traditionalRegistration #traditional_termsAndConditions, #legalAcceptances #traditional_termsAndConditions', function() {
if ( this.checked ) {
$( ".capture_btn" ).attr( 'disabled', false );
$( ".capture_btn" ).removeClass( "disabled" );
} else {
$( ".capture_btn" ).attr( 'disabled', true );
$( ".capture_btn" ).addClass( "disabled" );
}
});
$( document ).on( 'DOMSubtreeModified', '#capture_signIn_userInformationForm_errorMessages', function(){
self.errorMessage = $('.capture_form_error').text();
self.sign_in_modal = true;
self.auth_status = 'non authenticated';
self.modulestring = 'sign in details|janrain';
self.jAT();
});
$( document ).on( 'click', '#capture_signIn_traditionalSignIn_signInButton, #capture_returnTraditional_traditionalSignIn_signInButton', function() {
self.auth_type = 'email';
});
$( document ).on( 'click', '#janrain-facebook', function() {
self.sign_in_social = true;
self.auth_type = 'facebook';
});
$( document ).on( 'click', '#janrain-googleplus', function() {
self.sign_in_social = true;
self.auth_type = 'google';
});
$( document ).on( 'click', '#janrain-yahoo', function() {
self.sign_in_social = true;
self.auth_type = 'yahoo';
});
$( document ).on( 'click', '#janrain-twitter', function() {
self.sign_in_social = true;
self.auth_type = 'twitter';
});
};
// logic to create Janrain analytics tracking for evar detail supplied
self.jAT = function() {
rdm.dtm.dl.janrain = {
modulestring: self.modulestring,
authenticationStatus: self.auth_status,
authenticationType: self.auth_type,
errorMessage: self.errorMessage
};
console.log(rdm.dtm.dl.janrain);
try {
_satellite.track("janrain");
console.log('_satellite janrain track started...');
} catch (e) {
console.log(e);
}
};
/**
* Allow screens to be jumped-to via query parameter
*/
self.handleAutoJumpScreen = function () {
var jump, matches, jumpedScreen;
matches = location.search.match( /(?:janrain|ump)[_-]?screen=(\w+)/i );
if ( ! matches ) {
return;
}
jumpedScreen = matches[1];
jumpedScreen = 'signin' === jumpedScreen.toLowerCase() ? 'signIn' : jumpedScreen;
if ( 'signIn' === jumpedScreen ) {
/**
* Executed whenever the authentication state changes.
*/
jump = function ( params ) {
params = params || {};
if ( params.authenticated && ! self.wasInitiallyLoggedOut && ! self.authWindowOpened ) {
console.info( "Already logged in. Not showing signin screeng" );
// // Force the user to log-out if they land on this page so that they won't get stuck
// self.wasInitiallyLoggedOut = true;
// janrain.capture.ui.endCaptureSession();
// if ( window.console && console.info ) {
// console.info( "Already logged in. Logging out..." );
// }
} else if ( ! params.authenticated ) {
janrain.capture.ui.modal.open( jumpedScreen );
self.authWindowOpened = true;
}
};
/**
* Handle closing the modal, either in response to a user authenticating
* or in response to a user cancelling the authentication.
*/
janrain.events.onModalClose.addHandler( function () {
setTimeout( function () {
var redirect_url = self.auth_redirect_url || '';
if ( ! self.authenticated.get() ) {
redirect_url += ( redirect_url.indexOf( '?' ) === -1 ? '?' : '&' ) + 'ump-login-cancelled=1';
}
location.replace( redirect_url ); // when the user closes the modal
}, 1000 ); // just in case something is happening, but we should wait until some Federate event fires (but none exist)
} );
} else {
jump = function () {
if ( [ 'mergeAccounts' ].indexOf( jumpedScreen ) !== -1 ) {
throw new Error( 'Jump-to-Screen not supported for: ' + jumpedScreen );
} else if ( 'publicProfileModal' === jumpedScreen ) {
var uuid = janrain.capture.ui.getReturnExperienceData( 'uuid' );
if ( ! uuid ) {
throw new Error( 'No uuid for Janrain so cannot jump to publicProfileModal' );
}
janrain.capture.ui.getPublicProfile( 'publicProfileModal', uuid );
} else {
janrain.capture.ui.renderScreen( jumpedScreen );
}
};
}
// Note that we can't use self.authenticated.watch() because it has an initial false state for some reason
var jumpAuthenticated = function () {
jump( { authenticated: true } );
};
janrain.events.onCaptureLoginSuccess.addHandler( jumpAuthenticated );
janrain.events.onCaptureSessionFound.addHandler( jumpAuthenticated );
janrain.events.onCaptureRegistrationSuccess.addHandler( jumpAuthenticated );
var jumpUnauthenticated = function () {
jump( { authenticated: false } );
};
janrain.events.onCaptureSessionEnded.addHandler( jumpUnauthenticated );
janrain.events.onCaptureExpiredToken.addHandler( jumpUnauthenticated );
janrain.events.onCaptureInvalidToken.addHandler( jumpUnauthenticated );
janrain.events.onCaptureSessionNotFound.addHandler( jumpUnauthenticated );
};
self.getQueryVariable = function(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i 0) {
jQuery('.process_indicator').hide();
jQuery('.et-middleware-data-wrapper').html('').append(r);
// window.localStorage.removeItem( self.et_loaded );
}
});
xhr.always( function( xhr, textStatus ) {
self.is_et_loaded = false;
} );
}
/**
* Get user data via localStorage or asynchronously via Ajax if not available.
* Note that if using localStorage, the callback will be invoked synchronously.
*
* @param {Object} {uuid, access_token, force, callback}
*/
self.getUserData = function ( args ) {
var uuid = args.uuid;
var access_token = args.access_token;
var force = !! args.force;
var external_callback = args.callback;
var callback = function ( error ) {
if ( error ) {
if ( window.console && console.error ) {
console.warn( 'Failed to get user data:', error );
}
$( UMP ).trigger( 'user_data_failure', [ error ] );
} else {
$( UMP ).trigger( 'user_data_success', Array.prototype.slice.call( arguments, 1 ) );
}
external_callback.apply( null, arguments );
};
var user_data;
if ( ! force ) {
if ( window.localStorage && window.localStorage[self.user_data_storage_key] ) {
user_data = window.localStorage[self.user_data_storage_key];
} else {
user_data = wpCookies.get( self.user_data_storage_key );
}
// Return previously-loaded user data
if ( user_data ) {
user_data = JSON.parse( user_data );
if ( user_data && user_data.uuid === uuid ) {
// Update accessToken.
user_data.accessToken = self.getAccessToken();
self.user_data.set( user_data );
self.get_et_middleware_data(uuid, user_data.email, access_token);
callback( null, user_data );
return;
}
}
}
// There were multiple calls to this, let's avoid running an API call if one is already in progress
if (self.is_fetching)
return;
self.is_fetching = true;
// Gets entity info via ajax.
var xhr = jQuery.ajax( {
url: self.ajax_url,
type: 'POST',
data: {
'action': 'get_entity_info',
'uuid': uuid,
'nonce': self.get_entity_info_nonce,
'access_token': access_token
}
} );
xhr.done( function(r) {
try {
if ( ! r.success ) {
throw new Error( 'User info service failure: ' + r.data );
}
if ( ! r.data.user ) {
throw new Error( 'User info was empty' );
}
if ( ! r.data.user.profile_image ) {
r.data.user.profile_image = self.avatar_default;
}
r.data.user.accessToken = access_token;
if ( window.localStorage ) {
window.localStorage[self.user_data_storage_key] = JSON.stringify( r.data.user );
} else {
wpCookies.set( self.user_data_storage_key, JSON.stringify( r.data.user ), new Date( r.data.exprires ), '/' );
}
self.user_data.set( r.data.user );
self.get_et_middleware_data(uuid, r.data.user.email, access_token);
callback( null, r.data.user );
} catch (e) {
callback( e );
}
} );
xhr.fail( function( xhr, textStatus ) {
callback( new Error( textStatus ) );
} );
// Let's reset on complete of AJAX call so we can make this call again
xhr.always( function( xhr, textStatus ) {
self.is_fetching = false;
} );
};
/**
* Get user can email flag asynchronously via Ajax.
*
* @param {Object} {uuid, callback}
*/
self.getUserCanEmailFlag = function ( args ) {
var uuid = args.uuid;
var external_callback = args.callback;
var callback = function ( error ) {
if ( error ) {
if ( window.console && console.error ) {
console.error( 'Failed to get user can email flag:', error );
}
$( UMP ).trigger( 'user_can_email_flag_failure', [ error ] );
} else {
$( UMP ).trigger( 'user_can_email_flag_success', Array.prototype.slice.call( arguments, 1 ) );
}
external_callback.apply( null, arguments );
};
var user_data;
// Gets entity info via ajax.
var xhr = jQuery.ajax( {
url: self.ajax_url,
type: 'POST',
data: {
'action': 'get_user_can_email_info',
'uuid': uuid,
'nonce': self.get_user_can_email_info_nonce,
}
} );
xhr.done( function(r) {
try {
if ( ! r.success ) {
throw new Error( 'User info service failure: ' + r.data );
}
//callback( null, r.data.canEmail );
callback( null, r.data );
} catch (e) {
callback( e );
}
} );
xhr.fail( function( xhr, textStatus ) {
callback( new Error( textStatus ) );
} );
};
/**
* Update ExactTarget newsletters data extensions asynchronously via Ajax.
*
* @param {Object} {uuid, access_token, acceptance_screen_user_data, callback}
*/
self.updateEtNewslettersDataExtensions = function ( args ) {
var uuid = args.uuid,
access_token = args.access_token,
acceptance_screen_user_data = args.acceptance_screen_user_data,
external_callback = args.callback;
var callback = function ( error ) {
if ( error ) {
if ( window.console && console.error ) {
console.error( 'Failed to update ExactTarget data extensions:', error );
}
$( UMP ).trigger( 'update_et_newsletters_data_extensions_failure', [ error ] );
} else {
$( UMP ).trigger( 'update_et_newsletters_data_extensions_success', Array.prototype.slice.call( arguments, 1 ) );
}
external_callback.apply( null, arguments );
};
var user_data;
// Gets entity info via ajax.
var xhr = jQuery.ajax( {
url: self.ajax_url,
type: 'POST',
timeout: 0,
data: {
'action': 'update_et_newsletters_data_extensions',
'uuid': uuid,
'access_token': access_token,
'acceptance_screen_user_data': acceptance_screen_user_data,
'nonce': self.update_et_newsletters_data_extensions_nonce,
}
} );
xhr.done( function(r) {
try {
if ( ! r.success ) {
throw new Error( 'ExactTarget update service failure: ' + r.data );
}
callback( null, r );
} catch (e) {
callback( e );
}
} );
xhr.fail( function( xhr, textStatus ) {
callback( new Error( textStatus ) );
} );
};
/**
* Clear localStorage and cookie of user data
*/
self.clearUserData = function () {
if ( window.localStorage && window.localStorage[self.user_data_storage_key] ) {
delete window.localStorage[self.user_data_storage_key];
}
wpCookies.remove( self.user_data_storage_key, '/' );
self.user_data.set( undefined );
console.log("UMP - flushed local storage");
};
/**
*
* @param {Function} [callback]
*/
self.refreshUserData = function( callback ) {
callback = callback || function( error ){
if ( error ) {
throw error;
}
};
var user_data = self.user_data.get();
if ( ! user_data ) {
callback( new Error( 'No user data to refresh. Please re-login.' ) );
} else {
UMP.getUserData( {
uuid: user_data.uuid,
access_token: UMP.getAccessToken(),
force: true,
callback: callback
} );
}
};
/**
* Updates profile displayName and image in header.
*/
self.updateNameAndAvatar = function() {
self.refreshUserData( function( error, user_data ) {
if ( error ) {
if ( window.console && console.error ) {
console.error( 'Failed to updates displayName and image: ' + error.message );
}
} else {
$('.profile-avatar', '.ump-user-account-links').attr('src', user_data.profile_image ).show();
$('.profile-name', '.ump-user-account-links').text( user_data.displayName );
}
} );
};
/**
* Updates accessToken in localStorage or cookies.
*/
self.updateAccessToken = function( accessToken ) {
var user_data = self.user_data.get();
if ( user_data && user_data.accessToken && accessToken ) {
user_data.accessToken = accessToken;
if ( window.localStorage ) {
window.localStorage[self.user_data_storage_key] = JSON.stringify( user_data );
} else {
var exp = new Date();
exp.setTime( exp.getTime() + 3600*24000 ); // One day expiration.
wpCookies.set( self.user_data_storage_key, JSON.stringify( user_data ), exp, '/' );
}
user_data = $.extend( {}, user_data ); // Clone to trigger watch
self.user_data.set( user_data );
}
};
/**
* Handler when Janrain session if found.
*
* @param result
*/
self.sessionFoundHandler = function( result ) {
$( '.ump-user-account-links' ).addClass( 'ump-authenticated' );
$( '.captureSignInLink' ).hide();
$( '.captureProfileWrapper' ).show();
$( '.captureSubWrapper' ).show();
$( '.login-failed-note' ).html('').hide();
// Show loading first before entity information retrieved.
$('.profile-avatar', '.ump-user-account-links').hide();
$('.profile-name', '.ump-user-account-links').html(UMP.loading_entity_text);
self.getUserData( {
uuid: janrain.capture.ui.getReturnExperienceData( 'uuid' ),
//force: true,
access_token: result.accessToken,
callback: function ( error, user_data ) {
if ( error ) {
// @todo Move the contents of this into another watcher of user_data?
if ( window.console && console.error ) {
console.error( 'Janrain failed to login: ' + error.message );
}
self.sessionEndedHandler();
$( '.captureSignInLink' ).hide();
$( '.login-failed-note' ).html( 'Unexpected error. Try again?' ).show();
} else {
$('.profile-avatar', '.ump-user-account-links').attr('src', user_data.profile_image ).show();
$('.profile-name', '.ump-user-account-links').text( user_data.displayName );
if( user_data.emailVerified === null && location.pathname.indexOf('edit-profile') > -1 ){
$('#janrainCaptureWidget').hide();
$('#editProfile').remove();
self.invokeVerifyEmailScreen();
$("#janrainModal #verifyEmail").find('h1').html('Please verify your account');
$("#janrainModal #verifyEmail").find('p').html('Enter your email below and confirm your Sportsnet account to access these features.');
}
const stylesBlock = {
background: 'rgba(255, 255, 255, 0.5)',
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
width: '100%',
height: '100%',
paddingTop: '20%',
paddingLeft: 'calc(50% - 160px)',
zIndex: 9
};
if( user_data.emailVerified === null && location.pathname.indexOf('article') > -1 ){
if( $('.comment-viafoura-wrapper').length > 0 ){
$('.comment-viafoura-wrapper').find('.vf-conversations').append('');
$('.viafoura-blocked-box').css(stylesBlock);
}
window.vf.$subscribe('commenting', 'loaded', function(el) {
$(el).append('');
$('.viafoura-blocked-box').css(stylesBlock);
});
}
// Check previous request attempt. If exists then redirects user
// to previous path attempt.
if ( window.localStorage && window.localStorage[ self.previous_path_storage_key ] ) {
var path_and_hash = window.localStorage[ self.previous_path_storage_key ];
// Removes it from localStorage before redirecting.
delete window.localStorage[ self.previous_path_storage_key ];
location.replace( path_and_hash );
}
}
}
} );
self.authenticated.set( true );
// SiteCatalyst integration.
if ( 'string' === typeof s_account && 'function' === typeof s_gi ) {
var s = s_gi( s_account );
s.eVar52 = 'janrain';
s.events = 'event1';
s.linkTrackVars = 'events,eVar52';
s.linkTrackEvents = 'event1';
//s.tl( true, 'o', 'janrain' );
s.eVar52 = '';
s.events = '';
s.linkTrackVars = '';
s.linkTrackEvents = '';
if ( self.auth_status === 'non authenticated' ) {
self.auth_status = 'authenticated user janrain';
self.errorMessage = null;
if ( self.sign_in_modal ) {
self.modulestring = 'sign in confirmation|janrain';
} else {
self.modulestring = 'sign up confirmation|janrain';
}
self.jAT();
}
}
};
/**
* Handler when Janrain registration is successfull.
*/
self.registrationSuccessHandler = function( r ) {
// Makes sure socialRegister action doesn't stuck if verifiedEmail
// is available.
//
// authProfileData property exists on socialRegister action. Twitter
// doesn't return verifiedEmail (its value is null) and will popup
// another dialog notifying verification email step.
if ( r.authProfileData && r.authProfileData.verifiedEmail ) {
janrain.capture.ui.modal.close();
}
self.sessionFoundHandler( r );
};
/**
* Tabs in profile page.
*/
self.profileTabs = function() {
var container = $( '.' + self.edit_profile_class );
var loadTab = function( tab ) {
$( '.tabs a', container ).removeClass( 'active' );
$( '.panes .pane', container ).removeClass( 'active' );
tab.addClass( 'active' );
$( tab.attr( 'href' ) ).addClass( 'active' );
$( '.pane-title' ).html( tab.html() );
};
var loadTabInHash = function() {
var hash = window.location.hash;
if ( '' === window.location.hash ) {
hash = '#tab_edit';
}
else if ( '#tab_' !== hash.substr(0, 5) ) {
return;
}
var tab = $('.tabs a[href="' + hash + '"]' );
if ( 1 !== tab.length ) {
return;
}
loadTab( tab );
};
janrain.events.onCaptureScreenShow.addHandler( function( r ) {
if ( 'editProfile' === r.screen ) {
loadTabInHash();
}
} );
container.on( 'click', '.tabs a', function( e ) {
e.preventDefault();
var tab = $( this );
loadTab( tab );
if ( history.pushState ) {
history.pushState({}, '', tab.attr('href'));
}
} );
$(window).on('popstate', loadTabInHash);
};
/**
*
*/
self.setupAamIdSync = function () {
var handler = function () {
var once = function ( data ) {
if ( ! data ) {
return; // keep watching for when user data is supplied
}
self.user_data.unwatch( once );
if ( 'undefined' === typeof rDil ) {
return;
}
rDil.api.aamIdSync( {
dpid: '1302',
dpuuid: data.uuid,
minutesToLive: 20160
} );
if ( data.hashedEmail ) {
rDil.api.aamIdSync( {
dpid: '764',
dpuuid: data.hashedEmail,
minutesToLive: 20160
} );
}
if ( data.hashedDisplayName ) {
rDil.api.aamIdSync( {
dpid: '1303',
dpuuid: data.hashedDisplayName,
minutesToLive: 20160
} );
}
};
self.user_data.watch( once );
};
janrain.events.onCaptureRegistrationSuccess.addHandler( handler );
janrain.events.onCaptureLoginSuccess.addHandler( handler );
var handlerProfileUpdated = function() {
self.refreshUserData( function( error, user_data ) {
if ( error ) {
if ( window.console && console.error ) {
console.error( 'Failed to send updated profile to AAM: ' + error.message );
}
} else {
var params = {
c_site: window.location.hostname,
c_section: window.location.pathname + window.location.search,
c_uuid: user_data.uuid,
c_email: user_data.hashedEmail,
c_displayname: user_data.hashedDisplayName,
c_postalcode: user_data.hashedZipCode,
c_telephone: user_data.hashedPhone,
c_gender: ( 'Not Specified' !== user_data.gender ? user_data.gender : null ),
c_birthyear: user_data.birthday ? user_data.birthday.substring( 0, 4 ) : null,
c_location: user_data.primaryAddress.city
};
$.each( params, function ( key, value ) {
if ( ! value ) {
delete params[ key ];
}
} );
var url = 'http://rogers.demdex.net/event?' + $.param( params );
// Request it via img tag.
$( 'body' ).append( $( '', { src: url } ) );
}
} );
};
janrain.events.onCaptureProfileSaveSuccess.addHandler( handlerProfileUpdated );
};
self.loadFavouritesTab = function () {
SN.personalizationModalv2.init();
if (localStorage.favourites) {
var favourites = JSON.parse(localStorage.favourites);
$('#tab_favs .placeholder').hide();
$('#tab_favs ul').empty();
$.each( favourites, function( key, fav_item ) {
var thumb = fav_item.img_url ? fav_item.img_url : fav_item.icon;
if (!thumb||thumb==''||thumb=='https://www.sportsnet.ca/img'){
thumb = '/wp-content/themes/sportsnet-nhl/images/sn_default_logo.svg';
}
var taxonomy = fav_item.taxonomy ? fav_item.taxonomy : 'teams';
$('#tab_favs ul.'+taxonomy).append(''+fav_item.name+'');
$('#tab_favs h4.'+taxonomy).removeClass('hidden');
});
}
};
/**
* Handler for Janrain Capture screen show.
*
* @param result
*/
self.screenShowHandler = function ( result ) {
var uuid = janrain.capture.ui.getReturnExperienceData( 'uuid' )
if ('legalAcceptanceScreen' === result.screen) {
self.getUserCanEmailFlag( {
uuid: janrain.capture.ui.getReturnExperienceData( 'uuid' ),
callback: function ( error, newsletters ) {
//$( '#legalAcceptances .ump-subscription-lists' ).show();
var isSubscribed = 0;
var lists = $( '#legalAcceptances .ump-subscription-lists .ump-subscription-list-id' );
if ( ! error && ( (typeof newsletters.rdm_newsletters !== 'undefined') && (newsletters.rdm_newsletters !== false) ) ) {
// Based on our preferences, let's precheck the boxes we are already signed up for
lists.each( function( ) {
var $current_list = $( this );
var newsletter_id = $current_list.val();
$.each(newsletters.rdm_newsletters, function(i, v) {
if ((v.newsletterID == newsletter_id) && (v.subscribed)) {
$current_list.prop( 'checked', true );
isSubscribed++;
$current_list.parent().hide(); // let's hide it since we are subscribed
return false;
}
});
});
}
// Hide the loading message in either case
$( '#legalAcceptances .ump-loading-newsletter-message' ).hide();
// if all the boxes are checked then hide the whole unit as well
if (isSubscribed == lists.length) {
$( '#legalAcceptances #newsletters-lists-registration' ).hide();
} else {
$( '#legalAcceptances .ump-subscription-lists' ).show();
}
$( '#capture_legalAcceptanceScreen_legalAcceptanceAcceptButton' ).show();
}
} );
}
// Use event delegation instead of inline onclick handlers for close buttons
var janrainModal = $( '#janrainModal' );
if ( ! janrainModal.data( 'closeDelegationAdded' ) ) {
janrainModal.data( 'closeDelegationAdded', true );
janrainModal.on( 'click', '.ump_janrain_modal_close, .janrain_modal_closebutton', function ( e ) {
e.preventDefault();
janrain.capture.ui.modal.close();
self.onModalOpen = false;
} );
janrainModal.on( 'click', '.ump_janrain_modal_personalization', function ( e ) {
e.preventDefault();
janrain.capture.ui.modal.close();
$('.personalization-cta-v2 #pp-modal-trigger').click();
self.onModalOpen = false;
} );
}
if ( result.screen === 'returnTraditional' ) {
var name = janrain.capture.ui.getReturnExperienceData( 'displayName' );
if ( name ) {
$( '#traditionalWelcomeName' ).text( name );
}
}
// When registration screen is shown, check if there's terms and registration
// checkbox. Hides the register button if not checked.
if ( 'traditionalRegistration' === result.screen || 'socialRegistration' === result.screen ) {
$( ".capture-ui-content-right .tab-button").removeClass( "underline" );
$( ".capture-ui-content-right .tab-sign-up").addClass( "underline" );
$( ".capture_traditionalRegistration_password" ).val( "" );
var regType = ( 'traditionalRegistration' === result.screen ) ? 'traditional' : 'social';
var confirmCb = document.getElementById( regType + '_termsAndConditions' );
var btnRegister = ( 'traditional' === regType ) ? 'capture_traditionalRegistration_createAccountButton' : 'capture_socialRegistration_socialRegistration_signInButton';
$( btnRegister ).attr( 'disabled', true );
$( "#capture_traditionalRegistration_createAccountButton" ).attr( 'disabled', true );
$( "#capture_traditionalRegistration_createAccountButton" ).addClass( "disabled" );
var err_message = $('.capture_tip_error').text();
//console.log('err_message: '+err_message);
if ( err_message.includes("email already exists") ) {
$( ".capture_form_item_traditionalRegistration_emailAddress .capture_tip_error").css("display","block");
$( "#capture_traditionalRegistration_registrationForm_radio_2").addClass( "capture_form_level_error" );
}
if ( confirmCb ) {
//document.getElementById( btnRegister ).style.display = ( confirmCb.checked ) ? '' : 'none';
}
}
if ( result.screen === 'editProfile' ) {
// Change default placeholders and labels
$( '#capture_editProfile_addressDrop_zippostalcode' ).attr( 'placeholder', 'postal code' );
$( '#capture_editProfile_form_item_profileBlurb > label' ).text( 'Profile Description' );
$( '#capture_editProfile_form_item_email > label' ).text( 'Email address' );
$( '#capture_editProfile_form_item_phone > label' ).text( 'Phone Number' );
$( '#capture_editProfile_email' ).prop( 'disabled', true ).prop( 'title', 'You cannot edit this field.' );
$( '#capture_editProfile_form_item_birthdate > label' ).text( 'Birth Date' );
$( "#janrainModal .janrain-capture-ui.capture-ui-content h1" ).text( "Change Profile Picture" );
$( '' ).insertAfter( "#capture_editProfile_photo_chooser" );
$( "#capture_editProfile_photo_submit" ).val( "Save" );
$( '#capture_editProfile_form_item_displayName .capture_tip' ).hide();
$( '#capture_editProfile_displayName' ).prop( 'disabled', true ).prop( 'title', 'You cannot edit this field.' );
var user_first_last = $( "#capture_editProfile_name_firstname" ).val() + ' ' + $( "#capture_editProfile_name_lastname" ).val();
var user_display_name = $( "#capture_editProfile_displayName" ).val();
$( ".name-first-last-mobile" ).text( user_first_last );
$( ".name-displayname-mobile" ).text( user_display_name );
$( ".name-email-mobile" ).text( JSON.parse(localStorage.janrainCaptureProfileData).email );
$( ".name-displayname-mobile" ).appendTo( "#capture_editProfile_photoManager_parent" );
$( ".name-first-last-mobile" ).appendTo( "#capture_editProfile_photoManager_parent" );
$( ".name-email-mobile").appendTo( "#capture_editProfile_photoManager_parent" );
// Make provinces the default
var province_select = $( '#capture_editProfile_addressDrop_stateprovince' );
if ( province_select.length ) {
var first_option = province_select.find( 'option:first' );
first_option.text( 'province' );
var province_codes = [ 'AB', 'BC', 'MB', 'NB', 'NL', 'NS', 'NT', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT' ];
$.each( province_codes.reverse(), function ( i, province_code ) {
province_select.find( 'option[value="' + province_code + '"]' ).insertAfter( first_option );
} );
}
// Make Canada the default
var user_data = UMP.user_data.get();
var country = $( '#capture_editProfile_addressDrop_country' );
country.find( 'option[value="Canada"]' ).insertBefore( country.find( 'option[value="United States"]' ) );
if ( country.length && user_data && ! user_data.primaryAddress.country ) {
country.val( 'Canada' );
user_data.primaryAddress.country = 'Canada'; // this is needed so that upon save, another selection won't get immediately reset in the select
}
// Deactivates already linked accounts
var linked_accounts = $('.capture_provider_linked');
$.each(linked_accounts, function(i, linked_account) {
var provider_name = $(linked_account).data('capturerelatedfieldsid').replace('capture_editProfile_linkedAccounts_extraFields_', '');
$('body').addClass('linked_' + provider_name);
});
$( document ).on('click', "#capture_editProfile_upload_photo_link", function(){
$( "#janrainModal .janrain-capture-ui.capture-ui-content h1" ).text( "Change Profile Picture" );
});
self.loadFavouritesTab();
$( document ).on('click', "#capture_editProfile_add_favs", function(){
$('.personalization-cta-v2 #pp-modal-trigger').trigger('click');
});
}
// Shows M2O migrated modal if 'migrated-m2o-user-email=(email)' appears in query string.
if ( self.m2o_migrated_email && 'signIn' === result.screen ) {
self.updateSignInScreenForMigratedM2O();
}
};
/**
* Handler when Janrain session is ended or not found.
*/
self.sessionEndedHandler = function() {
$( '.ump-user-account-links' ).removeClass( 'ump-authenticated' );
self.clearUserData();
$( '.captureSignInLink' ).css( 'display', '' );
$( '.captureProfileWrapper' ).hide();
$( '.captureSubWrapper' ).hide();
$( '.login-failed-note' ).html('').hide();
self.authenticated.set( false );
// Open signIn modal if there was an attempt to access restricted area, that's,
// there's previous path in localStorage.
if ( window.localStorage && window.localStorage[ self.previous_path_storage_key ] ) {
janrain.capture.ui.renderScreen( 'signIn' );
}
if( location.pathname.indexOf('article') > -1 ){
const blockedBox = $('.viafoura-blocked-box');
if(blockedBox.length > 0){
blockedBox.remove();
}
}
};
/**
* Validate Canadian postal code. This function is registered to 'postal_code_validation'
* via janrain.capture.ui.registerFunction.
*/
self.canadaPostalCodeValidation = function( name, value, validation ) {
validation.pending();
var validLength = (value.length === 6 || value.length === 7);
var regex = /^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} ?\d{1}[A-Z]{1}\d{1}$/i;
if (regex.test(value) && validLength) {
validation.valid();
return true;
} else {
validation.notValid("Invalid");
return false;
}
};
/**
* Validate Canadian postal code optionally. This function is registered to 'postal_code_optional_validation'
* via janrain.capture.ui.registerFunction.
*/
self.canadaPostalCodeOptionalValidation = function( name, value, validation ) {
validation.pending();
var validLength = (value.length === 6 || value.length === 7 || value.length === 0);
var regex = /^$|^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} ?\d{1}[A-Z]{1}\d{1}$/;
if (regex.test(value) && validLength ) {
validation.valid();
return true;
} else {
validation.notValid("Invalid");
return false;
}
};
/**
* Updates signIn screen for migrated M2O users.
*/
self.updateSignInScreenForMigratedM2O = function() {
$( '#signIn' ).addClass( 'm2o-migrated-screen' );
var $primaryHeader = $( '.capture_header h1', '#signIn' ),
$secondaryHeader = $( '.capture_signin h2.secondary-header', '#signIn' ),
$preEmailHeader = $( '.capture_signin h2.preemail-header', '#signIn' ),
replaced_url;
// Save signIn labels to be restored after migrated user logged-in.
self.sign_in_screen_labels.primaryHeader = $primaryHeader.html();
self.sign_in_screen_labels.secondaryHeader = $secondaryHeader.html();
self.sign_in_screen_labels.preEmailHeader = $preEmailHeader.html();
$primaryHeader.html( self.migratedM2OSignInScreenLabels.primaryHeader );
$secondaryHeader.html( self.migratedM2OSignInScreenLabels.secondaryHeader );
$preEmailHeader.html( self.migratedM2OSignInScreenLabels.preEmailHeader );
// Injects email in query string
$( '#capture_signIn_traditionalSignIn_emailAddress' ).val( self.m2o_migrated_email || '' ).focus();
// Replaces state.
if ( history.replaceState ) {
replaced_url = window.location.href;
replaced_url = replaced_url.replace( /(m2o_migrated_email=[^&]+)&?/, '' );
replaced_url = replaced_url.replace( /(m2o_mcrypt_iv=[^&]+)&?/, '' );
replaced_url = replaced_url.replace( /[\?&]$/, '' );
history.replaceState( {}, document.title, replaced_url );
}
};
/**
* Normalizes signIn screen after modified by migrated M2O screen.
*/
self.normalizeSignInScreenAfterMigratedM2O = function() {
var $primaryHeader = $( '.capture_header h1', '#signIn' ),
$secondaryHeader = $( '.capture_signin h2', '#signIn' );
$primaryHeader.html( self.sign_in_screen_labels.primaryHeader );
$secondaryHeader.html( self.sign_in_screen_labels.secondaryHeader );
$( '#signIn' ).removeClass( 'm2o-migrated-screen' );
self.m2o_migrated_email = false;
};
/**
* Handler for 'storage' event so that other windows reflect the state.
*/
self.storageEventHandler = function(e) {
if ( e.key !== self.user_data_storage_key ) {
return;
}
var user_data = e.newValue;
if ( user_data ) {
// Actually sessionFoundHandler is handler for Janrain event.
// Since only result.accessToken being used we can pass user_data
// here where 'accessToken' also exists.
self.sessionFoundHandler( user_data );
} else { // storage is cleared
self.sessionEndedHandler();
}
};
self.getAccessToken = function() {
return localStorage.getItem('janrainCaptureToken');
};
self.invokeVerifyEmailScreen = function () {
janrain.capture.ui.renderScreen('verifyEmail');
}
/**
* Initialize!
*/
window.janrainCaptureWidgetOnLoad = function() {
if ( self.is_logout ) {
janrain.capture.ui.endCaptureSession();
} else {
self.deferred.loaded.resolve();
}
$( window ).trigger( 'janrainReady' );
// Accessibility: Focus on input email when onModalOpen fires
janrain.events.onModalOpen.addHandler(function(event){
if ( !self.onModalOpen ) {
self.modulestring = 'home|janrain';
self.auth_status = 'non authenticated';
self.jAT();
self.onModalOpen = true;
}
$('#janrainModal').find('input[type="email"]').parent().removeClass('capture_error');
//$('#janrainModal').find('input[type="email"]').focus();
});
// Fix: prevent clicking twice on forgotPassword anchor link
$('body').on('mouseover', '#umpv2ForgotPassword', function(event) {
event.preventDefault();
/* Act on the event */
if(!$(this).is(':focus')){
$(this).focus();
$('#janrainModal').find('input[type="email"]').parent().removeClass('capture_error');
}
});
};
self.load();
$( function () {
janrain.ready = true;
} );
self.deferred.loaded.done( function () {
self.init();
} );
return self;
}( jQuery, window.janrain ));