var Atrino = function () { // constants var SEEDED_CONTACT_ID = "61"; var ACTIVE_CONTACT_ID = "ACTIVE_CONTACT_ID"; var ACTIVE_CONTACT_FIRST_NAME = "ACTIVE_CONTACT_FIRST_NAME"; var ACTIVE_CONTACT_LAST_NAME = "ACTIVE_CONTACT_LAST_NAME"; var EVENT_REGISTRATION_COMPLETE = "EVENT_REGISTRATION_COMPLETE"; var EVENT_REGISTRATION_REGISTERED_MESSAGE = "Thank you for registering."; var EVENT_REGISTRATION_VALIDATION_MESSAGE = "Please fill in first name, last name and email address. Thank you."; var EVENT_REGISTRATION_ERROR_MESSAGE = "Error registering for event"; var PREFS_COST = "PREFS_COST"; var PREFS_AVAILABILITY = "PREFS_AVAILABILITY"; var PREFS_SAFETY = "PREFS_SAFETY"; var PREFS_DOSAGE = "PREFS_DOSAGE"; var ACTIVITY_RECORD_NAME = "ProzalanD HCP"; function describeAPIEntities() { var describeContact = { "action": "GET", "method": "describe", "arg": "OptInActivity", // Contact, OptInActivity "data": null }; $.ajax({ type: 'POST', url: '/nexus/api/call', data: describeContact, dataType: 'json', success: function (result) { } }); } function createEventRegistrationHandlers() { var eventRegistrationModal = null; var $container = $('#registerForEventContainer'); $('.register').click(function (e) { e.preventDefault(); eventRegistrationModal = $('.event-registration-modal').modal(); }); var eventRegistrationComplete = sessionStorage.getItem(EVENT_REGISTRATION_COMPLETE); if (eventRegistrationComplete && eventRegistrationComplete === "true") { $container.find('.js-form').hide(); $container.find('.js-error').hide(); $container.find('.js-message').show(); $container.find('.js-message').html(EVENT_REGISTRATION_REGISTERED_MESSAGE); } $('#registerButton').click(function () { var firstName = $container.find('#firstName').val(); var lastName = $container.find('#lastName').val(); var email = $container.find('#email').val(); var receiveMoreProductInformation = $container.find('input[type="checkbox"]').prop('checked'); if (firstName.length == 0 || lastName.length == 0 || email.length == 0) { $container.find('.js-message').show(); $container.find('.js-message').html(EVENT_REGISTRATION_VALIDATION_MESSAGE); return; } var createContact = { "action": "POST", "method": "create", "arg": "contact", "data": { "Resource": { "FirstName": firstName, "LastName": lastName, "Email": email } } }; var getContact = { "action": "GET", "method": "get", "arg": "contact", "id": SEEDED_CONTACT_ID }; $container.find('.js-form').hide(); $container.find('.js-loading').show(); $container.find('.js-message').html('').hide(); $container.find('.js-error').html('').hide(); var jqxhr = $.ajax({ type: 'POST', url: '/nexus/api/call', data: createContact, dataType: 'json' }) .done(function (result) { if (result.Resources && result.Resources && result.Resources.ResourceStatus && result.Resources.ResourceStatus.Resource) { $container.find('.js-loading').hide(); $container.find('.js-message').html(EVENT_REGISTRATION_REGISTERED_MESSAGE); $container.find('.js-message').show(); var contactId = result.Resources.ResourceStatus.Resource.Id; sessionStorage.setItem(ACTIVE_CONTACT_ID, contactId); sessionStorage.setItem(ACTIVE_CONTACT_FIRST_NAME, result.Resources.ResourceStatus.Resource.FirstName); sessionStorage.setItem(ACTIVE_CONTACT_LAST_NAME, result.Resources.ResourceStatus.Resource.LastName); sessionStorage.setItem(EVENT_REGISTRATION_COMPLETE, true); if (receiveMoreProductInformation && receiveMoreProductInformation === true) { var createOptinActivity = { "action": "POST", "method": "create", "arg": "OptinActivity", "data": { "Resource": { "TopicId": "1", "State": "In", "Channel": "Email", "TargetEntityId": contactId } } }; $.ajax({ type: 'POST', url: '/nexus/api/call', data: createOptinActivity, dataType: 'json' }) .done(function (result) { var rs = result; }) .fail(function () { }) .always(function () { }); } var curDate = new Date(); var createContactResponseLog = { "action": "POST", "method": "create", "arg": "contactResponseLog", "data": { "Resource": { "ContactId": contactId, "ParentEntityType": 'CampaignWave', "ParentEntityId": 1, "EventType": 'Responded', "FlagSet": 'true', "EventTimestamp": curDate.toISOString().substring(0,19) + "Z" } } }; $.ajax({ type: 'POST', url: '/nexus/api/call', data: createContactResponseLog, dataType: 'json' }) .done(function (result) { var rs = result; }) .fail(function () { }) .always(function () { }); var createActivity = { "action": "POST", "method": "create", "arg": "activity", "data": { "Resource": { "Name": ACTIVITY_RECORD_NAME, "ContactId": contactId, "ActivityType": "Registration", "ActivitySubType": "Welcome Email", "Status": "Completed" } } }; $.ajax({ type: 'POST', url: '/nexus/api/call', data: createActivity, dataType: 'json' }) .done(function (result) { var rs = result; }) .fail(function () { }) .always(function () { }); } else { $container.find('.js-loading').hide(); $container.find('.js-error').html(EVENT_REGISTRATION_REGISTERED_MESSAGE); //$container.find('.js-error').html(EVENT_REGISTRATION_ERROR_MESSAGE + ' - ' + result.ErrorMessage); $container.find('.js-error').show(); } }) .fail(function () { $container.find('.js-loading').hide(); $container.find('.js-error').show(); }) .always(function () { }); }); } function updateUserPreferencesDisplay() { var $container = $('div.preferencesform'); var activePrefCost = sessionStorage.getItem(PREFS_COST); if (activePrefCost && activePrefCost === "true") { $('div.option-cost').show(); $container.find('div.js-form input[name="prozaland-cost"]').prop('checked', true); } else { $('div.option-cost').hide(); } var prefsAvailability = sessionStorage.getItem(PREFS_AVAILABILITY); if (prefsAvailability && prefsAvailability === "true") { $('div.option-availability').show(); $container.find('div.js-form input[name="prozaland-availability"]').prop('checked', true); } else { $('div.option-availability').hide(); } var prefsDosage = sessionStorage.getItem(PREFS_DOSAGE); if (prefsDosage && prefsDosage === "true") { $('div.option-dosage').show(); $container.find('div.js-form input[name="prozaland-dosage"]').prop('checked', true); } else { $('div.option-dosage').hide(); } var prefsSafety = sessionStorage.getItem(PREFS_SAFETY); if (prefsSafety && prefsSafety === "true") { $('div.option-safety').show(); $container.find('div.js-form input[name="prozaland-safety"]').prop('checked', true); } else { $('div.option-safety').hide(); } } function createUserPreferencesHandlers() { var targetId = SEEDED_CONTACT_ID; if (sessionStorage.getItem(ACTIVE_CONTACT_ID) && sessionStorage.getItem(ACTIVE_CONTACT_ID).length > 0) { targetId = sessionStorage.getItem(ACTIVE_CONTACT_ID); } var preferences = {}; var eventRegistrationModal = null; var $container = $('div.preferencesform'); if ($('.preferences').length > 0) { var getContact = { "action": "GET", "method": "get", "arg": "contact", "id": targetId }; $.ajax({ type: 'POST', url: '/nexus/api/call', data: getContact, dataType: 'json' }) .done(function (result) { if (result && result.Resources && result.Resources.ResourceStatus && result.Resources.ResourceStatus.Resource && result.Resources.ResourceStatus.Resource.MessagePreferenceCode) { preferences = JSON.parse(result.Resources.ResourceStatus.Resource.MessagePreferenceCode); sessionStorage.setItem(PREFS_COST, preferences.prozalandCost); sessionStorage.setItem(PREFS_AVAILABILITY, preferences.prozalandAvailability); sessionStorage.setItem(PREFS_SAFETY, preferences.prozalandSafety); sessionStorage.setItem(PREFS_DOSAGE, preferences.prozalandDosage); } }) .fail(function () { }) .always(function () { updateUserPreferencesDisplay(); }); } $('.preferences').click(function (e) { e.preventDefault(); eventRegistrationModal = $('.user-preferences-modal-lg').modal(); }); $container.find('#user_preferences div.js-form button').click(function () { var prefsCost = $container.find('div.js-form input[name="prozaland-cost"]').prop('checked'); var prefsAvailability = $container.find('div.js-form input[name="prozaland-availability"]').prop('checked'); var prefsSafety = $container.find('div.js-form input[name="prozaland-safety"]').prop('checked'); var prefsDosage = $container.find('div.js-form input[name="prozaland-dosage"]').prop('checked'); preferences.prozalandCost = prefsCost; preferences.prozalandAvailability = prefsAvailability; preferences.prozalandSafety = prefsSafety; preferences.prozalandDosage = prefsDosage; var updateContact = { "action": "POST", "method": "update", "arg": "contact", "data": { "Resource": { "Id": targetId, "MessagePreferenceCode": JSON.stringify(preferences) } } }; $container.find('.js-form').hide(); $container.find('.js-loading').show(); var jqxhr = $.ajax({ type: 'POST', url: '/nexus/api/call', data: updateContact, dataType: 'json' }) .done(function (result) { $container.find('.js-loading').hide(); $container.find('.js-form').show(); sessionStorage.setItem(PREFS_COST, prefsCost); sessionStorage.setItem(PREFS_AVAILABILITY, prefsAvailability); sessionStorage.setItem(PREFS_SAFETY, prefsSafety); sessionStorage.setItem(PREFS_DOSAGE, prefsDosage); updateUserPreferencesDisplay(); eventRegistrationModal.modal('hide'); }) .fail(function () { $container.find('.js-loading').hide(); $container.find('.js-error').show(); }) .always(function () { }); }); } function createFileDownloadHandlers() { $('.field-item .file a').click(function (e) { var $this = $(this); var targetId = SEEDED_CONTACT_ID; if (sessionStorage.getItem(ACTIVE_CONTACT_ID) && sessionStorage.getItem(ACTIVE_CONTACT_ID).length > 0) { targetId = sessionStorage.getItem(ACTIVE_CONTACT_ID); } var createActivity = { "action": "POST", "method": "create", "arg": "activity", "data": { "Resource": { "Name": ACTIVITY_RECORD_NAME, "ContactId": targetId, "Notes": $this.attr('href'), "ActivityType": "Download", "Status": "Completed" } } }; var jqxhr = $.ajax({ type: 'POST', url: '/nexus/api/call', data: createActivity, dataType: 'json' }) .done(function (result) { var rs = result; }) .fail(function () { }) .always(function () { }); }); } function createRequestSamplesHandlers() { $('.requestSamples').click(function (e) { e.preventDefault(); $('.request-samples-modal').modal(); }); } function createRequestSalesRepVisitHandlers() { $('.requestSalesRepVisit').click(function (e) { e.preventDefault(); $('.request-sales-rep-visit-modal').modal(); }); } function initMenu() { var $productMenu = $('.productMenu'); // adds class to product submenu for mobile devices if ($productMenu.css("margin-top") == "-15px") { $productMenu.addClass("superhero-dropdown"); } // Cancels click event for drop-down options in main menu $('li.expanded').children('a').click(function (event) { event.preventDefault(); }); $(".expanded").click(function (event) { $(this).first('a', function () { event.preventDefault(); }); }); // google translate link for other languages var originURL = window.location.origin; $('.content .important_links .tab a:contains("French")').attr('target', 'blank').attr('href', 'sites/default/files/homepage_fr.html'); } function init() { createEventRegistrationHandlers(); createUserPreferencesHandlers(); createFileDownloadHandlers(); createRequestSamplesHandlers(); createRequestSalesRepVisitHandlers(); initMenu(); //describeAPIEntities(); } return { init: init } } (); $(function () { Atrino.init(); })