{"version":3,"file":"re_publicuserlistings_initialiser.749b23837d254a6df16a.js","mappings":"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","sources":["webpack:///./Common/re_inbox_notification_control.js","webpack:///./Common/re_notifications_drawer_control.js","webpack:///./Common/re_share_widget_control.js","webpack:///./Data/re_notificationsenum_data.js","webpack:///./Data/re_relationshiptypes_data.js","webpack:///./Navigation/re_missed_reblasts_control.js","webpack:///./Navigation/re_navigation_control.js","webpack:///./Navigation/re_navigation_dialpad_control.js","webpack:///./Navigation/re_navigation_experience_control.js","webpack:///./Navigation/re_navigation_invite_control.js","webpack:///./Navigation/re_navigation_mobile_control.js","webpack:///./Navigation/re_navigation_scroll_control.js","webpack:///./Navigation/re_navigation_state_control.js","webpack:///./Navigation/re_navigation_tree_control.js","webpack:///./Navigation/re_navigation_unseen_notifications_control.js","webpack:///./Notifications/re_notification_delete_control.js","webpack:///./Notifications/re_notification_visit_control.js","webpack:///./Notifications/re_notificationtoolbar_connectionlist_control.js","webpack:///./Notifications/re_notificationtoolbar_genericlist_control.js","webpack:///./Profile/re_profile_scroll_control.js","webpack:///./PublicUserListings/re_publicuserlistings_initialiser.js","webpack:///./Services/re_connection_service.js","webpack:///./Services/re_contentreach_service.js","webpack:///./Services/re_missed_reblasts_service.js","webpack:///./Services/re_notification_service.js","webpack:///./Templates/Common/re_share_widget_compiled.js","webpack:///./Templates/re_genericmessage_drawer_compiled.js","webpack:///./Templates/re_notificationtoolbar_list_compiled.js","webpack:///./UserLastActiveDate/re_userlastactivedate_control.js","webpack:///./Utilities/re_track_phonenumber_utilities.js","webpack:///../../vendor/sticky-sidebar/sticky-sidebar.min.js","webpack:///./Templates/Common/re_share_widget_template.html","webpack:///./Templates/re_genericmessage_drawer_template.html","webpack:///./Templates/re_notificationtoolbar_list_template.html","webpack:///external \"Pusher\"","webpack:///external \"jQuery\""],"sourcesContent":["define(['jquery', 'pubsub', 'generalUtilities', 'realtimeControl'], function inboxNotificationControl(\r\n\t$,\r\n\tpubsub,\r\n\tgeneralUtilities\r\n) {\r\n\t/**\r\n\t * re_inbox_notification_control\r\n\t * @exports inboxNotificationControl\r\n\t * @author Eugene Katsov\r\n\t */\r\n\r\n\t//#region set up\r\n\r\n\t'use strict';\r\n\r\n\tvar module, selectors;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\r\n\tselectors = {\r\n\t\tnavInboxContainer: '.re-nav-inbox',\r\n\t\tinboxRedDot: '.js-notificationcount-inbox'\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t//#region utilities\r\n\r\n\t/**\r\n\t * Animate the red dot to alert the user\r\n\t * Leave a red dot behind after animation\r\n\t */\r\n\tmodule.private.animateRedDot = function animateRedDot() {\r\n\t\tif (!$(selectors.navInboxContainer).hasClass('re-nav-hasactivity')) {\r\n\t\t\t$(selectors.navInboxContainer).addClass('re-nav-hasactivity');\r\n\t\t}\r\n\r\n\t\t$(selectors.inboxRedDot).addClass('sonar-wave');\r\n\r\n\t\tsetTimeout(function animateRedDotTimeout() {\r\n\t\t\t$(selectors.inboxRedDot).removeClass('sonar-wave');\r\n\t\t}, 1500);\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\t\tif (window.pageType === 'message-inbox') {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// module config\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n\t\tif (generalUtilities.prop(window, 'RESAAS.User2.UserPusherChannel')) {\r\n\t\t\tpubsub.publish('uiAction.RSRealtimeSubscribe', {\r\n\t\t\t\tchannel: window.RESAAS.User2.UserPusherChannel\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tpubsub.subscribe('data.Realtime.NewInstantMessage', module.private.animateRedDot);\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t//#region external event bindings\r\n\tmodule.private.init();\r\n\r\n\t//#endregion\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","define([\r\n\t'jquery',\r\n\t'pubsub',\r\n\t'generalUtilities',\r\n\t'Handlebars',\r\n\t'genericMessageDrawerCompiled',\r\n\t'realtimeControl'\r\n], function notificationsDrawerControl($, pubsub, generalUtilities, Handlebars, genericMessageDrawerCompiled) {\r\n\t/**\r\n\t * re_notifications_drawer_control\r\n\t * @exports notificationsDrawerControl\r\n\t * @author Eugene Katsov\r\n\t */\r\n\r\n\t//#region set up\r\n\r\n\t'use strict';\r\n\r\n\tvar module, selectors, elements, values;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\r\n\tselectors = {\r\n\t\tnotificationsContainer: '.re-notifications-drawer',\r\n\t\tnotificationsList: '.re-notifications-list',\r\n\t\tnotificationItem: '.js-inbox-notification-body',\r\n\t\tnotificationClose: '.js-close-item'\r\n\t};\r\n\r\n\telements = {};\r\n\tvalues = {};\r\n\r\n\tvalues.notificationDrawer = [];\r\n\r\n\tvalues.config = {};\r\n\r\n\tvalues.drawerContainer = [\r\n\t\t'
',\r\n\t\t'',\r\n\t\t'
'\r\n\t].join('');\r\n\r\n\t//#endregion\r\n\r\n\t//#region utilities\r\n\r\n\t/**\r\n\t * Add notification event handler method\r\n\t * @param {object} e event\r\n\t * @param {object} data pusher data\r\n\t */\r\n\tmodule.private.handleDataPusher = function handleDataPusher(e, data) {\r\n\t\tif (\r\n\t\t\t!data ||\r\n\t\t\t!data.ShowDrawerMessage ||\r\n\t\t\tgeneralUtilities.getNavigationState().isCompact ||\r\n\t\t\t(window.pageType === 'message-inbox' && data.Event === 'NewInstantMessage')\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tmodule.private.createNotification(data);\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t/**\r\n\t * Get index of obj method\r\n\t * @param {object} obj notification object\r\n\t */\r\n\tmodule.private.getIndexByMsgId = function getIndexByMsgId(obj) {\r\n\t\tvar i, index;\r\n\r\n\t\tfor (i = 0; i < values.notificationDrawer.length; i++) {\r\n\t\t\tif (values.notificationDrawer[i].NotificationId === obj.NotificationId) {\r\n\t\t\t\tindex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index >= 0 ? index : null;\r\n\t};\r\n\r\n\t/**\r\n\t * Add notification method\r\n\t * @param {object} obj response data\r\n\t */\r\n\tmodule.private.createNotification = function createNotification(obj) {\r\n\t\t// make NewInstantMessage messaeg data object consistent with generic notiofcation object.\r\n\t\tif (obj.Event === 'NewInstantMessage') {\r\n\t\t\tobj.Title = obj.SenderFirstName + obj.SenderLastName;\r\n\t\t\tobj.Body = obj.Message;\r\n\t\t\tobj.NotificationDeepLink = obj.ConversationDeepLink;\r\n\t\t}\r\n\r\n\t\tobj.NotificationDeepLink = generalUtilities.addParamsToUrlQueryString(obj.NotificationDeepLink, {\r\n\t\t\tnotificationId: obj.NotificationId\r\n\t\t});\r\n\t\tobj.MixpanelType = generalUtilities.stringFormat('{0} push notification', obj.Event);\r\n\r\n\t\tvalues.notificationDrawer.unshift(obj);\r\n\t\tmodule.private.injectNotification(obj);\r\n\r\n\t\tmodule.private.deleteNotification(values.notificationDrawer[values.config.drawerSize]);\r\n\t\tif (values.config.autoDelete) {\r\n\t\t\tmodule.private.autoDelete(values.notificationDrawer[0]);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Inject notification method\r\n\t * @param {object} obj response data\r\n\t */\r\n\tmodule.private.injectNotification = function injectNotification(obj) {\r\n\t\tif (!obj) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\telements.notificationsList.prepend(genericMessageDrawerCompiled(obj));\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t/**\r\n\t * Delete notification method\r\n\t * @param {object} data notification object\r\n\t */\r\n\tmodule.private.deleteNotification = function deleteNotification(obj) {\r\n\t\tvar index;\r\n\r\n\t\tif (!obj) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tindex = module.private.getIndexByMsgId({ NotificationId: obj.NotificationId });\r\n\r\n\t\tif (index == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!obj.ConversationId) {\r\n\t\t\tobj = values.notificationDrawer[index];\r\n\t\t}\r\n\r\n\t\tpubsub.publish('uiAction.deleteNotification', obj);\r\n\r\n\t\t$(generalUtilities.stringFormat('li[data-notificationid=\"{0}\"]', obj.NotificationId)).fadeOut(500, function () {\r\n\t\t\t$(this).remove();\r\n\t\t});\r\n\r\n\t\tvalues.notificationDrawer.splice(index, 1);\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t/**\r\n\t * Autodelete notification method\r\n\t * @param {object} obj notification object\r\n\t */\r\n\tmodule.private.autoDelete = function autoDelete(obj) {\r\n\t\tsetTimeout(function deleteNotification() {\r\n\t\t\tmodule.private.deleteNotification(obj);\r\n\t\t}, values.config.timeToLive);\r\n\t};\r\n\r\n\t// #endregion\r\n\r\n\t// #region dom event handlers\r\n\r\n\t/**\r\n\t * Notification click handler method\r\n\t * @param {object} e event\r\n\t */\r\n\tmodule.private.handleNotificationClick = function handleNotificationClick(e) {\r\n\t\te.preventDefault();\r\n\t\tgeneralUtilities.redirect(e.currentTarget.href);\r\n\t};\r\n\r\n\t/**\r\n\t * Notification dismiss click handler method\r\n\t * @param {object} e event\r\n\t */\r\n\tmodule.private.handleNotificationDismiss = function handleNotificationDismiss(e) {\r\n\t\te.preventDefault();\r\n\t\tmodule.private.deleteNotification({ NotificationId: e.currentTarget.dataset.notificationid });\r\n\t};\r\n\r\n\t// #endregion\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\t\t// module config\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n\t\t// notification object config\r\n\t\tvalues.config.timeToLive = (data && data.timeToLive) || 12000;\r\n\t\tvalues.config.drawerSize = (data && data.drawerSize) || 3;\r\n\t\tvalues.config.container = (data && data.container) || selectors.notificationsList;\r\n\t\tvalues.config.autoDelete = data && data.autoDelete === false ? false : true;\r\n\r\n\t\t// elements\r\n\t\telements.body = $('body');\r\n\r\n\t\t// inject the drawer\r\n\t\t$(elements.body).append(values.drawerContainer);\r\n\r\n\t\t// set dependent module values\r\n\t\telements.notificationsContainer = $(values.config.container);\r\n\t\telements.notificationsList = $(selectors.notificationsList);\r\n\r\n\t\tif (generalUtilities.prop(window, 'RESAAS.User2.UserPusherChannel')) {\r\n\t\t\tpubsub.publish('uiAction.RSRealtimeSubscribe', {\r\n\t\t\t\tchannel: window.RESAAS.User2.UserPusherChannel\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// dom event binding\r\n\t\telements.body.on('click', selectors.notificationItem, module.private.handleNotificationClick);\r\n\t\telements.body.on('click', selectors.notificationClose, module.private.handleNotificationDismiss);\r\n\t};\r\n\r\n\t// #region external event bindings\r\n\tpubsub.subscribe('data.Realtime', module.private.handleDataPusher);\r\n\r\n\tmodule.private.init();\r\n\r\n\t// #endregion\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","define(['jquery', 'moduleUtilities', 'generalUtilities', 'shareWidgetCompiled'], function shareWidgetControl(\r\n\t$,\r\n\tmoduleUtilities,\r\n\tgeneralUtilities,\r\n\tshareWidgetCompiled\r\n) {\r\n\t'use strict';\r\n\t/**\r\n\t * re_share_widget_control\r\n\t * @exports shareWidgetControl\r\n\t * @author John Allan\r\n\t */\r\n\t//#region set up\r\n\r\n\tvar module, selectors, elements, values;\r\n\r\n\tmodule = {};\r\n\t/** @module */\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\tselectors = {\r\n\t\tbody: 'body',\r\n\t\tshareButton: '.js-share',\r\n\t\tshareButtonEtAl: '.js-share, .js-share *',\r\n\t\tshareWidget: '.js-sharewidget, .js-sharewidget *',\r\n\t\tshareWidgetPosition: '.js-sharewidget-position',\r\n\t\tshareWidgetContent: '.js-sharewidget-content',\r\n\t\tshareAllListingsCheckbox: '.js-share-all-listings-checkbox'\r\n\t};\r\n\telements = {};\r\n\tvalues = {\r\n\t\toffset: 15 // must be the same as offset defined in _sharewidget.scss\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t//#region utilities\r\n\r\n\t/**\r\n\t * Determines if a string a valid URL\r\n\t * @param {string} url string to test\r\n\t * @return {boolean}\r\n\t */\r\n\t// TODO move to general utilities\r\n\tmodule.private.isURL = function isURL(url) {\r\n\t\tvar regexp;\r\n\t\tregexp = /(?:(?:https?):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[\\/?#]\\S*)?/i; // jshint ignore:line\r\n\t\treturn regexp.test(url);\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve the data from the DOM e.g. href, contentType\r\n\t * @param {object} el DOM element of anchor which was clicked\r\n\t * @return {object}\r\n\t */\r\n\tmodule.private.getContentData = function getContentData(el) {\r\n\t\tvar data;\r\n\t\r\n\t\tdata = {};\r\n\t\tdata.href = el.getAttribute('href');\r\n\t\tdata.type = el.getAttribute('data-share-type');\r\n\t\tdata.subType = el.getAttribute('data-share-subtype');\r\n\t\tdata.sharePage = el.getAttribute('data-share-page');\r\n\t\tdata.sharePageOverride = el.getAttribute('data-share-page-override');\r\n\t\tdata.showpermalink = el.getAttribute('data-showpermalink') !== \"false\";\r\n\t\t// available if we want to customize the share message in the future\r\n\t\t// author = el.getAttribute('data-share-author');\r\n\t\tdata.facebookAppId = generalUtilities.prop(window, 'RESAAS.Environment.FacebookAppId');\r\n\t\tdata.applicationUrl = generalUtilities.prop(window, 'RESAAS.Environment.ApplicationUrl');\r\n\r\n\t\t// if the href is not a url assume we are sharing the page\r\n\t\tif (!module.private.isURL(data.href)) {\r\n\t\t\tdata.href = window.location.href;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\t/**\r\n\t * Build the viewmodel used to render the template.\r\n\t * @param {object} data Content data extracted from the DOM\r\n\t * @return {object}\r\n\t */\r\n\tmodule.private.getViewModel = function getViewModel(data) {\r\n\t\tvar d, config, shareAllText, href, username;\r\n\t\td = $.extend({}, data);\r\n\t\tif (d.sharePageInput) {\r\n\t\t\thref = window.location.href;\r\n\t\t\tif (d.sharePageOverride) {\r\n\t\t\t\thref = d.sharePageOverride;\r\n\t\t\t}\r\n\t\t\td.encodedHref = encodeURIComponent(href);\r\n\t\t} else {\r\n\t\t\thref = d.href\r\n\t\t\td.encodedHref = encodeURIComponent(href);\r\n\t\t}\r\n\r\n\t\tconfig = {\r\n\t\t\tfacebook: {\r\n\t\t\t\thref: generalUtilities.stringFormat(\r\n\t\t\t\t\t'https://www.facebook.com/dialog/share?href={0}&app_id={1}&display=page&redirect_uri=https%3A%2F%2Fwww.facebook.com',\r\n\t\t\t\t\td.encodedHref,\r\n\t\t\t\t\td.facebookAppId\r\n\t\t\t\t)\r\n\t\t\t},\r\n\t\t\ttwitter: {\r\n\t\t\t\thref: generalUtilities.stringFormat('https://twitter.com/intent/tweet?url={0}', d.encodedHref)\r\n\t\t\t},\r\n\t\t\tlinkedin: {\r\n\t\t\t\thref: generalUtilities.stringFormat(\r\n\t\t\t\t\t'https://www.linkedin.com/shareArticle?url={0}&mini=true&source=RESAAS',\r\n\t\t\t\t\td.encodedHref\r\n\t\t\t\t)\r\n\t\t\t},\r\n\t\t\tpinterest: {\r\n\t\t\t\thref: generalUtilities.stringFormat('http://pinterest.com/pin/create/button/?url={0}', d.encodedHref)\r\n\t\t\t},\r\n\t\t\temail: {\r\n\t\t\t\thref: generalUtilities.stringFormat('mailto:?body={0}', d.encodedHref)\r\n\t\t\t},\r\n\t\t\tinbox: {\r\n\t\t\t\thref: generalUtilities.stringFormat('{0}/inbox?Message={1}', d.applicationUrl, href, d.encodedHref)\r\n\t\t\t},\r\n\t\t\tpermalink:\r\n\t\t\t\td.href === window.location.href || !d.showpermalink\r\n\t\t\t\t\t? false\r\n\t\t\t\t\t: {\r\n\t\t\t\t\t\t\thref: d.href,\r\n\t\t\t\t\t\t\texternal: d.href.indexOf(d.applicationUrl) === -1\r\n\t\t\t\t\t },\r\n\t\t\tcontent: d\r\n\t\t};\r\n\r\n\t\tswitch (data.type) {\r\n\t\t\tcase 'post':\r\n\t\t\t\tconfig.pinterest = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'privatepost':\r\n\t\t\t\tconfig.facebook = false;\r\n\t\t\t\tconfig.twitter = false;\r\n\t\t\t\tconfig.linkedin = false;\r\n\t\t\t\tconfig.pinterest = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'publiclead':\r\n\t\t\t\tconfig.pinterest = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'privatelead':\r\n\t\t\tcase 'privatelisting':\r\n\t\t\t\tconfig.facebook = false;\r\n\t\t\t\tconfig.twitter = false;\r\n\t\t\t\tconfig.linkedin = false;\r\n\t\t\t\tconfig.pinterest = false;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tusername = document.querySelector('.user-profile-details span[itemprop=\"name\"]');\r\n\t\tif (d.sharePage) {\r\n\t\t\tif (username) {\r\n\t\t\t\tshareAllText = generalUtilities.stringFormat(window.RESAAS.Localization.Listings.USER_SHARE_ALL_LISTINGS_TEXT, username.innerHTML)\r\n\t\t\t} else {\r\n\t\t\t\tshareAllText = window.RESAAS.Localization.Listings.SHARE_ALL_MY_LISTINGS_TEXT;\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\r\n\t\tconfig.shareAllUsersListingsText = shareAllText;\r\n\t\tconfig.sharePageInput = d.sharePageInput;\r\n\t\tconfig.sharePage = d.sharePage;\r\n\r\n\t\treturn config;\r\n\t};\r\n\r\n\t/**\r\n\t * Determine which position in this order top, right, left, bottom is ideal\r\n\t * @param {object} origin Element to which the content position is relative\r\n\t * @param {object} el Element which is being positioned\r\n\t * @param {object} [viewport=window] Viewport which might cut off the content if not positioned correctly\r\n\t * @return {object}\r\n\t */\r\n\tmodule.private.getIdealPosition = function getIdealPosition(origin, el, viewport) {\r\n\t\tvar originRect, elRect, w, top, bottom, left, right, ideal;\r\n\r\n\t\tw = viewport || window;\r\n\t\toriginRect = origin.getBoundingClientRect();\r\n\t\telRect = el.getBoundingClientRect();\r\n\r\n\t\ttop = {\r\n\t\t\ttop: originRect.top - values.offset - elRect.height >= 0,\r\n\t\t\tbottom: originRect.top - values.offset <= w.innerHeight,\r\n\t\t\tleft: originRect.left - (elRect.width - originRect.width) / 2 >= 0,\r\n\t\t\tright: originRect.right + (elRect.width - originRect.width) / 2 <= w.innerWidth\r\n\t\t};\r\n\r\n\t\tbottom = {\r\n\t\t\ttop: originRect.bottom + values.offset >= 0,\r\n\t\t\tbottom: originRect.bottom + values.offset + elRect.height <= w.innerHeight,\r\n\t\t\tleft: originRect.left - (elRect.width - originRect.width) / 2 >= 0,\r\n\t\t\tright: originRect.right + (elRect.width - originRect.width) / 2 <= w.innerWidth\r\n\t\t};\r\n\r\n\t\tright = {\r\n\t\t\ttop: originRect.top - (elRect.height - originRect.height) / 2 >= 0,\r\n\t\t\tbottom: originRect.bottom + (elRect.height - originRect.height) / 2 <= w.innerHeight,\r\n\t\t\tleft: originRect.right + values.offset >= 0,\r\n\t\t\tright: originRect.right + values.offset + elRect.width <= w.innerWidth\r\n\t\t};\r\n\r\n\t\tleft = {\r\n\t\t\ttop: originRect.top - (elRect.height - originRect.height) / 2 >= 0,\r\n\t\t\tbottom: originRect.bottom + (elRect.height - originRect.height) / 2 <= w.innerHeight,\r\n\t\t\tleft: originRect.left - values.offset - elRect.width >= 0,\r\n\t\t\tright: originRect.left - values.offset <= w.innerWidth\r\n\t\t};\r\n\r\n\t\tif (top.top && top.right && top.bottom && top.left) {\r\n\t\t\tideal = 'top';\r\n\t\t} else if (right.top && right.right && right.bottom && right.left) {\r\n\t\t\tideal = 'right';\r\n\t\t} else if (left.top && left.right && left.bottom && left.left) {\r\n\t\t\tideal = 'left';\r\n\t\t} else if (bottom.top && bottom.right && bottom.bottom && bottom.left) {\r\n\t\t\tideal = 'bottom';\r\n\t\t} else {\r\n\t\t\t// TODO Assuming this for the mobile case\r\n\t\t\t// Could be improved by include the potential vertically scroll in calculations\r\n\t\t\t// e.g. if no direction is ideal but left is only cut off by the bottom and use can scroll\r\n\t\t\t// then left is the ideal\r\n\t\t\tideal = 'left';\r\n\t\t}\r\n\r\n\t\treturn ideal;\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t//#region dom event handlers\r\n\t/**\r\n\t * Handle click on , opens a share widget or closes them all\r\n\t * @param {object} e Click event\r\n\t */\r\n\tmodule.private.handleBodyClick = function handleClick(e) {\r\n\t\tvar contentData,\r\n\t\t\tanchor;\r\n\r\n\t\tif (!e.target.matches(selectors.shareWidget)) {\r\n\t\t\t$(selectors.shareWidget).remove();\r\n\t\t}\r\n\r\n\t\tif (e.target.matches(selectors.shareButtonEtAl)) {\r\n\t\t\te.preventDefault();\r\n\t\r\n\t\t\t// TODO polyfill for Element.prototype.closest would mean no jQuery here\r\n\t\t\tanchor = $(e.target).closest(selectors.shareButton)[0];\r\n\t\t\tcontentData = module.private.getContentData(anchor);\r\n\r\n\t\t\t// render share widget\r\n\t\t\tmodule.private.renderShareWidget(contentData, anchor)\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tmodule.private.renderShareWidget = function renderShareWidget(contentData, anchor) {\r\n\t\tvar html,\r\n\t\t\tviewModel,\r\n\t\t\tidealPosition,\r\n\t\t\tidealPositionClass,\r\n\t\t\twidgetParent,\r\n\t\t\twidgetPosition,\r\n\t\t\twidgetContent,\r\n\t\t\tshareAllListingsCheckbox;\r\n\r\n\t\tviewModel = module.private.getViewModel(contentData);\r\n\t\thtml = shareWidgetCompiled(viewModel);\r\n\r\n\t\tanchor.insertAdjacentHTML('afterend', html);\r\n\t\twidgetParent = anchor.parentElement;\r\n\t\twidgetPosition = anchor.nextElementSibling.querySelector(selectors.shareWidgetPosition);\r\n\t\twidgetContent = anchor.nextElementSibling.querySelector(selectors.shareWidgetContent);\r\n\r\n\t\tidealPosition = module.private.getIdealPosition(widgetParent, widgetContent);\r\n\t\tidealPositionClass = ['re-sharewidget-position-', idealPosition].join('');\r\n\r\n\t\twidgetPosition.classList.add(idealPositionClass);\r\n\t\tshareAllListingsCheckbox = document.querySelector(selectors.shareAllListingsCheckbox);\r\n\t\tif (shareAllListingsCheckbox) {\r\n\t\t\tshareAllListingsCheckbox.addEventListener('change', function handleChange(event){ module.private.handleSharePageCheckboxClick(event, contentData, anchor) })\r\n\t\t}\r\n\t}\r\n\r\n\tmodule.private.handleSharePageCheckboxClick = function handleSharePageCheckboxClick(e, contentData, anchor) {\r\n\t\tvar shareWidget, data;\r\n\t\tshareWidget = document.querySelector(selectors.shareWidget)\r\n\t\tdata = Object.assign({}, contentData);\r\n\r\n\t\tif (e.target.checked) {\r\n\t\t\tdata.sharePageInput = true;\r\n\t\t} else {\r\n\t\t\tdata.sharePageInput = false;\r\n\t\t}\r\n\r\n\t\tif (shareWidget) {\r\n\t\t\t$(selectors.shareWidget).remove();\r\n\t\t}\r\n\r\n\t\tmodule.private.renderShareWidget(data, anchor);\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t */\r\n\tmodule.private.init = function init() {\r\n\t\t// module config\r\n\t\tmodule.properties.guid = generalUtilities.uuid();\r\n\r\n\t\t// polyfill matches()\r\n\t\tif (!Element.prototype.matches) {\r\n\t\t\tElement.prototype.matches = Element.prototype.msMatchesSelector;\r\n\t\t}\r\n\r\n\t\t// dom event bindings\r\n\t\tdocument.body.addEventListener('click', module.private.handleBodyClick);\r\n\t};\r\n\r\n\t//#region external event bindings\r\n\r\n\tmodule.private.init();\r\n\r\n\t//#endregion\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","/**\r\n * re_notificationsenum_data\r\n * @module notificationsEnumData\r\n * @author Eugene Katsov\r\n */\r\n\r\ndefine([],\r\n\r\n\tfunction () {\r\n\t\t'use strict';\r\n\r\n\t\tvar data = {};\r\n\t\tdata.RegularUserUpgradeNotification = 0;\r\n\t\tdata.InviteToSellingCommunityNotification = 1;\r\n\t\tdata.GeneralTextNotification = 2;\r\n\t\tdata.GeneralHtmlNotification = 3;\r\n\t\tdata.InviteToConnectNotification = 4;\r\n\t\tdata.ReblastCommentNotification = 5;\r\n\t\t\r\n\t\tvar module = {\r\n\t\t\tbrowse: function () {\r\n\t\t\t\treturn data;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn module;\r\n\t}\r\n);","/**\r\n * re_relationshiptypes_data\r\n * @module relationshiptypesData\r\n * @author Eugene Katsov\r\n */\r\n\r\ndefine([],\r\n\r\n\tfunction () {\r\n\t\t'use strict';\r\n\r\n\t\tvar data = {};\r\n\t\tdata.Following = 0;\r\n\t\tdata.Connection = 1;\r\n\t\tdata.SellingCommunity = 2;\r\n\t\tdata.Office = 3;\r\n\t\tdata.Firm = 4;\r\n\t\tdata.RealEstateBoard = 5;\r\n\r\n\t\tvar module = {\r\n\t\t\tbrowse: function () {\r\n\t\t\t\treturn data;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn module;\r\n\t}\r\n);","define([\r\n\t'jquery',\r\n\t'pubsub',\r\n\t'moduleUtilities',\r\n\t'generalUtilities',\r\n\t'missedReblastsService',\r\n\t'realtimeControl'\r\n], function missedReblastsControl($, pubsub, moduleUtilities, generalUtilities) {\r\n\t/**\r\n\t * re_missed_reblats_control\r\n\t * @exports missedReblastsControl\r\n\t * @author May Montazer\r\n\t */\r\n\r\n\t//#region set up\r\n\r\n\t'use strict';\r\n\r\n\tvar module, selectors, elements;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\tselectors = {\r\n\t\tactivityListWrapper: '.re-nav-activity',\r\n\t\tactivityPanel: '.js-activity-panel',\r\n\t\tactivityLink: '.js-activity-item a[data-id]',\r\n\t\tactivityItems: '.js-activity-item',\r\n\t\tnewReblastsBtn: '.reblasts-stream-count'\r\n\t};\r\n\telements = {};\r\n\r\n\t//#endregion\r\n\r\n\t//#region utilities\r\n\r\n\t/**\r\n\t * Publish new reblast pusher channel\r\n\t */\r\n\tmodule.private.listenPusher = function listenPusher() {\r\n\t\tif (generalUtilities.prop(window, 'RESAAS.Environment.PusherNewReblastChannel')) {\r\n\t\t\tpubsub.publish('uiAction.RSRealtimeSubscribe', {\r\n\t\t\t\tchannel: RESAAS.Environment.PusherNewReblastChannel\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * update activity panel and indicator numbers base on the new reblsat numbers\r\n\t * @param {object} data reponse from new reblast pusher channel\r\n\t * @param {object} event The pubsub event.\r\n\t */\r\n\tmodule.private.handleDataRealTimeNewReblast = function handleDataRealTimeNewReblast(event, data) {\r\n\t\tvar $count, $parent, newReblast;\r\n\t\tif (data.FeedId) {\r\n\t\t\t$parent = elements.activityLink\r\n\t\t\t\t.filter(generalUtilities.stringFormat('[data-id=\"{0}\"]', data.FeedId))\r\n\t\t\t\t.parent('.js-activity-item');\r\n\t\t\tif (!$parent.hasClass('re-secondary-hasactivity')) {\r\n\t\t\t\t$parent.addClass('re-secondary-hasactivity');\r\n\t\t\t}\r\n\r\n\t\t\t$count = elements.activityLink\r\n\t\t\t\t.filter(generalUtilities.stringFormat('[data-id=\"{0}\"]', data.FeedId))\r\n\t\t\t\t.find('.re-notification');\r\n\r\n\t\t\t$count.each(function countEach() {\r\n\t\t\t\tvar $self, $text;\r\n\r\n\t\t\t\t$self = $(this);\r\n\t\t\t\t$text = $self.text();\r\n\r\n\t\t\t\tif ($text.indexOf('+') === -1) {\r\n\t\t\t\t\tif ($text !== '') {\r\n\t\t\t\t\t\tnewReblast = parseInt($text, 10) + 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewReblast = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$self.text(newReblast > 20 ? '20+' : newReblast);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (\r\n\t\t\t\t!elements.activityListWrapper.hasClass('re-nav-hasactivity') &&\r\n\t\t\t\telements.activityListWrapper.find('.re-secondary-hasactivity').length > 0\r\n\t\t\t) {\r\n\t\t\t\telements.activityListWrapper.addClass('re-nav-hasactivity');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Publish a missed reblasts request\r\n\t */\r\n\tmodule.private.missedReblastsBrowse = function missedReblastsBrowse() {\r\n\t\tvar request, requestOptions, serviceObject;\r\n\t\t// seen in the request/response but not passed to the webservice (same as module.properties)\r\n\t\trequestOptions = {};\r\n\r\n\t\t// sent to webservice\r\n\t\trequest = {};\r\n\t\tserviceObject = moduleUtilities.createServiceObject(request, module.properties, requestOptions);\r\n\r\n\t\t// service needs to be using publish2\r\n\t\tpubsub.publish('uiNeeds.MissedReblastsBrowse', serviceObject);\r\n\t};\r\n\r\n\t/**\r\n\t * return just reblasts that MissedReblastCount is not zero\r\n\t * @param {object} data reponse from missed reblasts service\r\n\t */\r\n\tmodule.private.filterMissedReblastData = function filterMissedReblastData(data) {\r\n\t\tvar dataFilter;\r\n\r\n\t\tdataFilter = [];\r\n\r\n\t\tif (Array.isArray(data.response)) {\r\n\t\t\tdata.response.forEach(function responseForEach(item, index) {\r\n\t\t\t\tif (item.MissedReblastCount !== 0) {\r\n\t\t\t\t\tdataFilter.push(data.response[index]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn dataFilter;\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t//#region pubsub event handlers\r\n\r\n\t/**\r\n\t * Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t * @param {object} e The pubsub event.\r\n\t * @param {object} data Data object from service.\r\n\t */\r\n\tmodule.private.handleDataMissedReblasts = function handleDataMissedReblasts(e, data) {\r\n\t\tvar success;\r\n\r\n\t\tsuccess = generalUtilities.prop(data, 'response');\r\n\t\tif (moduleUtilities.isOwnEvent(data, module.properties)) {\r\n\t\t\tif (!success) {\r\n\t\t\t\tmodule.private.handleDataMissedReblastsError(e, data);\r\n\t\t\t} else {\r\n\t\t\t\tmodule.private.handleDataMissedReblastsSuccess(e, data);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * missed reblast success handler - filtering data and render on dom\r\n\t * @param {object} e event.\r\n\t * @param {object} data reponse data.\r\n\t */\r\n\tmodule.private.handleDataMissedReblastsSuccess = function handleDataMissedReblastsSuccess(e, data) {\r\n\t\tvar filteredData, $count, $parent;\r\n\r\n\t\tfilteredData = module.private.filterMissedReblastData(data);\r\n\r\n\t\tif (filteredData.length > 0) {\r\n\t\t\tfilteredData.forEach(function filteredDataForEach(item) {\r\n\t\t\t\t$parent = elements.activityLink\r\n\t\t\t\t\t.filter(generalUtilities.stringFormat('[data-id=\"{0}\"]', item.FeedId))\r\n\t\t\t\t\t.parent('.js-activity-item');\r\n\t\t\t\t$parent.addClass('re-secondary-hasactivity');\r\n\r\n\t\t\t\t$count = elements.activityLink\r\n\t\t\t\t\t.filter(generalUtilities.stringFormat('[data-id=\"{0}\"]', item.FeedId))\r\n\t\t\t\t\t.find('.re-notification');\r\n\r\n\t\t\t\t$count.each(function countEach() {\r\n\t\t\t\t\tvar $self = $(this);\r\n\t\t\t\t\t// also check if we are over 20 - 20+\r\n\t\t\t\t\t$self.text(item.MissedReblastCount > 20 ? '20+' : item.MissedReblastCount);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif (elements.activityListWrapper.find('.re-secondary-hasactivity').length > 0) {\r\n\t\t\t\telements.activityListWrapper.addClass('re-nav-hasactivity');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * missed reblast fail handler\r\n\t * @param {object} e event.\r\n\t * @param {object} data reponse data.\r\n\t */\r\n\tmodule.private.handleDataMissedReblastsError = function handleDataMissedReblastsError(e, data) {\r\n\t\tpubsub.publish('loggly.error', {\r\n\t\t\tmessage: generalUtilities.stringFormat('getting missed reblast number is failed {0}', JSON.stringify(data))\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Handle click on the activity item, hide the indicator on the ctivity item and red circle on the activity menu\r\n\t * @param {object} e Click event\r\n\t */\r\n\tmodule.private.hideFeedsIndicator = function hideFeedsIndicator(e) {\r\n\t\tvar dataId =\r\n\t\t\t$(this)\r\n\t\t\t\t.find('a')\r\n\t\t\t\t.attr('data-id') || $('.re-nav-secondary-list .re-nav-item-active').data('id');\r\n\r\n\t\telements.activityLink\r\n\t\t\t.filter(generalUtilities.stringFormat('[data-id=\"{0}\"]', dataId))\r\n\t\t\t.find('.re-notification')\r\n\t\t\t.html('');\r\n\t\telements.activityLink\r\n\t\t\t.filter(generalUtilities.stringFormat('[data-id=\"{0}\"]', dataId))\r\n\t\t\t.parent('.js-activity-item')\r\n\t\t\t.removeClass('re-secondary-hasactivity');\r\n\r\n\t\tif (elements.activityListWrapper.find('.re-secondary-hasactivity').length === 0) {\r\n\t\t\telements.activityListWrapper.removeClass('re-nav-hasactivity');\r\n\t\t}\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\r\n\t\t// exit if user is not logged in\r\n\t\tif (!generalUtilities.prop(RESAAS, 'User2.UserId')) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// module config\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n\t\tpubsub.subscribe('data.MissedReblastsBrowse', module.private.handleDataMissedReblasts);\r\n\t\tpubsub.subscribe('data.Realtime.NewReblast', module.private.handleDataRealTimeNewReblast);\r\n\r\n\t\tmodule.private.missedReblastsBrowse();\r\n\t\tmodule.private.listenPusher();\r\n\r\n\t\t// elements\r\n\t\telements.body = $('body');\r\n\t\telements.activityListWrapper = $(selectors.activityListWrapper);\r\n\t\telements.activityPanel = $(selectors.activityPanel);\r\n\t\telements.activityLink = $(selectors.activityLink);\r\n\t\telements.activityItems = $(selectors.activityItems);\r\n\t\telements.newReblastsBtn = $(selectors.newReblastsBtn);\r\n\r\n\t\t// dom event binding\r\n\t\telements.activityPanel.on('click', '.js-activity-item', module.private.hideFeedsIndicator);\r\n\t\telements.newReblastsBtn.on('click', module.private.hideFeedsIndicator);\r\n\r\n\t\treturn true;\r\n };\r\n\r\n window.addEventListener('load', function () {\r\n module.private.init();\r\n });\r\n\r\n\t//#endregion\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","/**\r\n * @fileOverview re_navigation_control.js\r\n *\r\n * @author John Allan\r\n *\r\n */\r\ndefine([\r\n 'pubsub',\r\n 'generalUtilities',\r\n 'inboxNotificationControl',\r\n 'navigationStateControl',\r\n 'notificationToolbarGenericListControl',\r\n 'notificationConnectionListControl',\r\n 'notificationVisitControl',\r\n 'navigationTreeControl',\r\n 'navigationMobileControl',\r\n 'navigationDialpadControl',\r\n 'navigationMissedReblastControl',\r\n 'navigationExperienceControl',\r\n 'navigationScrollControl',\r\n 'navigationInviteControl',\r\n 'toolbarControl',\r\n 'userLastActiveDateControl',\r\n 'navigationUnseenNotificationControl'\r\n], function navigationControl(pubsub, generalUtilities) {\r\n 'use strict';\r\n\r\n var module = {};\r\n var elements = {};\r\n var selectors = {};\r\n var values = {};\r\n\r\n module.CONTROL_ID = generalUtilities.uuid();\r\n module.private = {};\r\n\r\n selectors.navContainer = '.js-nav-container';\r\n selectors.feedApp = '#FeedApp';\r\n selectors.groupCreate = '.js-group-create';\r\n\r\n values.groupCreate = 'groupCreate';\r\n\r\n module.private.handleGroupCreateClick = function handleGroupCreateClick(e) {\r\n if (!elements.feedApp.length) {\r\n if (Modernizr.localstorage ) {\r\n localStorage.setItem(values.groupCreate, values.groupCreate);\r\n }\r\n generalUtilities.redirect('/');\r\n }\r\n };\r\n\r\n module.private.init = function(e, data) {\r\n elements.navContainer = $(selectors.navContainer);\r\n elements.feedApp = $(selectors.feedApp);\r\n\r\n elements.navContainer.on('click', selectors.groupCreate, module.private.handleGroupCreateClick);\r\n\r\n pubsub.publish('uiAction.NavigationStateControlInit');\r\n };\r\n\r\n module.private.init();\r\n\r\n return module;\r\n});\r\n","define(['jquery', 'pubsub', 'moduleUtilities', 'generalUtilities'], function navigationDialpadControl(\r\n\t$,\r\n\tpubsub,\r\n\tmoduleUtilities,\r\n\tgeneralUtilities\r\n) {\r\n\t/**\r\n\t * re_navigation_dialpad_control\r\n\t * @exports navigationDialpadControl\r\n\t * @author John Allan\r\n\t */\r\n\t//#region set up\r\n\t'use strict';\r\n\r\n\tvar module, selectors, elements;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\tselectors = {\r\n\t\taccordionOpen: '.accordion-open',\r\n\t\taccordion: '.js-nav-accordion',\r\n\t\ttoggleAccordion: '.js-toggle-accordion',\r\n\t\texperienceNav: '.js-nav-secondary-experiences'\r\n\t};\r\n\telements = {};\r\n\r\n\t//#endregion\r\n\r\n\t//#region pubsub event handlers\r\n\r\n\t/**\r\n\t * Toggles experiences submenus\r\n\t * @param {object} [e] the event\r\n\t */\r\n\tmodule.private.handleToggleAccordionClick = function handleToggleAccordionClick(e) {\r\n\t\tvar $this = $(e.currentTarget);\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\t$(selectors.accordionOpen)\r\n\t\t\t.not($this.parent().siblings(selectors.accordion))\r\n\t\t\t.removeClass('accordion-open')\r\n\t\t\t.slideUp('fast');\r\n\t\t$(selectors.toggleAccordion + '.toggle-open')\r\n\t\t\t.not($this)\r\n\t\t\t.removeClass('toggle-open');\r\n\t\t$this\r\n\t\t\t.toggleClass('toggle-open')\r\n\t\t\t.parent()\r\n\t\t\t.siblings(selectors.accordion)\r\n\t\t\t.toggleClass('accordion-open')\r\n\t\t\t.slideToggle('fast');\r\n\t};\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\t\t// module config\r\n\t\telements.experienceNav = $(selectors.experienceNav);\r\n\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n\t\telements.toggleAccordion = $(selectors.toggleAccordion);\r\n\r\n\t\telements.toggleAccordion\r\n\t\t\t.off('click.NavigationDialpadControl')\r\n\t\t\t.on('click.NavigationDialpadControl', module.private.handleToggleAccordionClick);\r\n\t};\r\n\r\n\t//#region external event bindings\r\n\r\n\tmodule.private.init();\r\n\r\n\t//#endregion\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","define([\r\n\t'jquery', 'pubsub', 'moduleUtilities', 'generalUtilities'],\r\n\r\n\tfunction ($, pubsub, moduleUtilities, generalUtilities) {\r\n\t\t/**\r\n\t\t* re_navigation_experience_control\r\n\t\t* @exports navigationExperienceControl\r\n\t\t* @author Sylvia Wang\r\n\t\t*/\r\n\t\t//#region set up\r\n\t\t'use strict';\r\n\r\n\t\tvar module, selectors, elements;\r\n\r\n\t\tmodule = {};\r\n\t\tmodule.private = {};\r\n\t\tmodule.properties = {};\r\n\t\tselectors = {\r\n\t\t\texperiencesSubnav: '.js-nav-secondary-experiences',\r\n\t\t\tnavContainer: '.js-nav-container',\r\n\t\t\texperienceItem: '.js-nav-item[data-targetexperience]',\r\n\t\t\texperienceNotification: '.js-nav-item[data-targetexperience] .re-notification'\r\n\t\t};\r\n\t\telements = {};\r\n\r\n\t\t//#endregion\r\n\r\n\r\n\t\t//#region pubsub event handlers\r\n\r\n\t\t/**\r\n\t\t* handles experience switching\r\n\t\t* @param {object} [e] the event\r\n\t\t*/\r\n\t\tmodule.private.handleExperienceClick = function (e) {\r\n\t\t\tvar href, arr, guid, reblastUrl, selector, isInternalLink, link, domainUrl, isActivityLink, targetExperience, currentExperience, redirectPageCB;\r\n\r\n\t\t\thref = e.currentTarget.href;\r\n\t\t\tarr = href.split('/');\r\n\t\t\tguid = arr[arr.length - 2]; // will only be a GUID when joining REMAX QA group if not already a members\r\n\t\t\treblastUrl = arr[arr.length - 1];\r\n\t\t\tlink = generalUtilities.prop(RESAAS, 'Environment.ApplicationUrl');\r\n\t\t\tdomainUrl = generalUtilities.prop(RESAAS, 'User2.DomainUrl');\r\n\r\n\t\t\ttargetExperience = $(e.currentTarget).data().targetexperience;\r\n\t\t\tcurrentExperience = $(selectors.experiencesSubnav).data('currentexperience');\r\n\r\n\t\t\t// If reblast URL contains a = (ex: query string), then we'll grab what comes after it. Otherwise, grab the whole URL.\r\n\t\t\tselector = (reblastUrl.indexOf('=') > -1) ? reblastUrl.split('=')[1] : reblastUrl;\r\n\r\n\t\t\t// If the target hostname is the same as the current hostname, OR if there is no hostname (indicating a target on the same site)\r\n\t\t\tisInternalLink = location.hostname === e.currentTarget.hostname || !e.currentTarget.hostname.length;\r\n\t\t\tisActivityLink = (href === link + '/') || (href.indexOf(link + domainUrl + '#') === 0) || (href.indexOf('/join?group') > -1);\r\n\r\n\t\t\tif (isInternalLink) {\r\n\t\t\t\tgeneralUtilities.setCookie(\"resaasexperience\", targetExperience);\r\n\t\t\t}\r\n\r\n\t\t\tredirectPageCB = function () {\r\n\t\t\t\t//reloads page for activities links\r\n\t\t\t\tif (isInternalLink && isActivityLink) {\r\n\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\twindow.history.pushState('', '', href);\r\n\t\t\t\t\tgeneralUtilities.reload(true);\r\n\t\t\t\t}\r\n\t\t\t\t// redirects otherwise\r\n\t\t\t\telse {\r\n\t\t\t\t\tgeneralUtilities.redirect(href);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\tif (targetExperience !== currentExperience) {\r\n\t\t\t\tpubsub.publish('mixpanel.Intent', { type: 'click experience, target-experience = ' + targetExperience });\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tredirectPageCB();\r\n\t\t\t\t}, 250);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tredirectPageCB();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Initiates the module, creates a guid and binds dom events.\r\n\t\t* @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t* @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t*/\r\n\t\tmodule.private.init = function (e, data) {\r\n\t\t\tvar currentExperience;\r\n\r\n\t\t\t//module config\r\n\t\t\telements.navContainer = $(selectors.navContainer);\r\n\r\n\t\t\tmodule.properties.guid = (data && data.guid) ? data.guid : generalUtilities.uuid();\r\n\r\n\t\t\t// marking current experience in the switcher\r\n\t\t\tcurrentExperience = $(selectors.experiencesSubnav).data('currentexperience');\r\n\t\t\t$(selectors.experienceItem + '[data-targetexperience=\"' + currentExperience + '\"]').addClass('re-current-experience');\r\n\r\n\t\t\telements.navContainer.off('click.navigationExperienceControl').on('click.navigationExperienceControl', selectors.experienceItem, selectors.experienceNotification, module.private.handleExperienceClick);\r\n\r\n\t\t};\r\n\r\n\t\t//#region external event bindings\r\n\r\n\t\tmodule.private.init();\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//expose API\r\n\t\treturn module;\r\n\t}\r\n);\r\n","/**\r\n * re_navigation_invite_control\r\n * @exports navigationInviteControl\r\n * @author Suen Ting\r\n */\r\ndefine(['generalUtilities', 'moduleUtilities', 'validator', 'pubsub'], function navigationInviteControl(\r\n generalUtilities,\r\n moduleUtilities,\r\n validator,\r\n pubsub\r\n) {\r\n var module, selectors, elements;\r\n\r\n module = {};\r\n module.private = {};\r\n module.properties = {};\r\n selectors = {\r\n inviteIcon: '.js-invite',\r\n inputHref: '#js-invite-href',\r\n copyButton: '#js-invite-copy',\r\n inviteForm: '.js-invite-form',\r\n inviteOption: '.js-invite-option',\r\n inviteBtn: '#js-invite-btn',\r\n errorMessage: '.js-invite-form .error',\r\n email: '#InviteEmail',\r\n inviteWithEmailForm: '#invite-with-email'\r\n };\r\n\r\n elements = {};\r\n\r\n var constraints = {\r\n InviteEmail: {\r\n email: {\r\n message: ['^', RESAAS.Localization.Navigation.INVITE_WITH_EMAIL_VALIDATION].join(' ')\r\n },\r\n presence: {\r\n message: ['^', RESAAS.Localization.Navigation.INVITE_WITH_EMAIL_VALIDATION].join(' ')\r\n }\r\n }\r\n };\r\n\r\n module.private.inviteClicked = function inviteClicked() {\r\n pubsub.publish('mixpanel.Intent', {\r\n type: 'open invite widget',\r\n context: 'toolbar invite'\r\n });\r\n };\r\n\r\n module.private.copyInviteClicked = function copyInviteClicked() {\r\n elements.inputHref.focus(); // required to highlight text on older browsers (pre ios10) as document.execCommand(\"copy\") wont work\r\n elements.inputHref.select();\r\n elements.inputHref.setSelectionRange(0, 99999); /* For mobile devices */\r\n document.execCommand('copy');\r\n\r\n pubsub.publish('mixpanel.Intent', {\r\n type: 'copy invite url',\r\n context: 'toolbar invite'\r\n });\r\n };\r\n\r\n module.private.inviteOptionClicked = function inviteOptionClicked(e) {\r\n elements.inviteOption.toggleClass('re-invite-option-selected');\r\n elements.inviteForm.toggleClass('hide');\r\n pubsub.publish('mixpanel.Intent', {\r\n type: e.currentTarget.dataset.mixpaneltype,\r\n context: 'toolbar invite'\r\n });\r\n };\r\n\r\n /**\r\n * Handle click on the action, Invite a user\r\n * @param {object} e Click event\r\n */\r\n module.private.inviteBtnClicked = function(e) {\r\n var requestOptions, request, serviceObject, email, invalid;\r\n email = elements.email.val();\r\n\r\n invalid = validator.validate(elements.inviteWithEmailForm, constraints);\r\n\r\n if (invalid) {\r\n validator.showErrors(elements.inviteWithEmailForm, invalid, false);\r\n return;\r\n }\r\n\r\n elements.inviteWithEmailForm.find(\":input, .re-input-wrapper\").removeClass('error');\r\n elements.inviteWithEmailForm.find('.error-message').remove();\r\n\r\n requestOptions = {};\r\n\r\n request = {\r\n contact: {\r\n Name: 'there',\r\n Email: email,\r\n Invite: true\r\n }\r\n };\r\n\r\n serviceObject = moduleUtilities.createServiceObject(request, module.properties, requestOptions);\r\n\r\n generalUtilities.disableAndWaitFor(e.target, 'data.ConnectionAdd');\r\n pubsub.publish('uiHas.ConnectionAdd', serviceObject);\r\n pubsub.publish('mixpanel.Intent', {\r\n type: 'Sent invite email',\r\n context: 'toolbar invite'\r\n });\r\n };\r\n\r\n /**\r\n * Invite response error handler\r\n * @param {object} e event\r\n * @param {object} data response data\r\n */\r\n module.private.handleDataInviteError = function(e, data) {\r\n pubsub.publish('loggly.error', { message: JSON.stringify(data) });\r\n\r\n pubsub.publish('uiAction.MessageAdd', {\r\n message: RESAAS.Localization.Global.GENERIC_WEBSERVICE_ERROR_MESSAGE,\r\n type: 'error'\r\n });\r\n };\r\n\r\n /**\r\n * Invite response success handler\r\n * @param {object} e event\r\n * @param {object} data response data\r\n */\r\n module.private.handleDataInviteSuccess = function(e, data) {\r\n pubsub.publish('uiAction.MessageAdd', {\r\n message: window.RESAAS.Localization.Navigation.INVITE_AGENT_SUCCEEDED\r\n });\r\n };\r\n\r\n /**\r\n * Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n * @param {object} e The pubsub event.\r\n * @param {object} data Data object from service.\r\n */\r\n module.private.handleDataInvite = function(e, data) {\r\n var success;\r\n elements.email.val('');\r\n if (moduleUtilities.isOwnEvent(data, module.properties)) {\r\n success = generalUtilities.prop(data, 'response.SaveResult.Success');\r\n if (!success) {\r\n module.private.handleDataInviteError(e, data);\r\n } else {\r\n module.private.handleDataInviteSuccess(e, data);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Initiates the module, creates a guid and binds dom events.\r\n * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n */\r\n module.private.init = function init(e, data) {\r\n var applicationUrl, domainUrl, returnUrl, queryParams;\r\n \r\n //module config\r\n module.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n applicationUrl = generalUtilities.prop(RESAAS, 'Environment.ApplicationUrl');\r\n domainUrl = generalUtilities.prop(RESAAS, 'User2.DomainUrl');\r\n returnUrl = encodeURIComponent(generalUtilities.stringFormat('{0}/profile', domainUrl));\r\n\r\n // elements\r\n elements.inviteIcon = document.querySelector(selectors.inviteIcon);\r\n elements.inputHref = document.querySelector(selectors.inputHref);\r\n elements.copyButton = document.querySelector(selectors.copyButton);\r\n elements.inviteOption = $(selectors.inviteOption);\r\n elements.inviteForm = $(selectors.inviteForm);\r\n elements.email = $(selectors.email);\r\n elements.inviteBtn = document.querySelector(selectors.inviteBtn);\r\n elements.errorMessage = document.querySelector(selectors.errorMessage);\r\n elements.inviteWithEmailForm = $(selectors.inviteWithEmailForm);\r\n\r\n // note: elements are not defined on initialization in karma. or for regular users\r\n if (!elements.inviteIcon || !elements.inputHref || !elements.copyButton || !elements.inviteBtn) {\r\n return;\r\n }\r\n elements.inputHref.value = generalUtilities.stringFormat(\r\n '{0}/signup?ReturnUrl={1}&utm_source=RESAAS+Users&utm_medium=Email&utm_content=Toolbar+Invite+URL&utm_campaign=Invite+Users',\r\n applicationUrl,\r\n returnUrl\r\n );\r\n\r\n elements.copyButton.addEventListener('click', module.private.copyInviteClicked);\r\n elements.inviteIcon.addEventListener('click', module.private.inviteClicked);\r\n elements.inputHref.addEventListener('click', module.private.copyInviteClicked);\r\n elements.inviteBtn.addEventListener('click', module.private.inviteBtnClicked);\r\n elements.inviteOption.on('click', module.private.inviteOptionClicked);\r\n // handle user invite hashchange\r\n window.addEventListener('hashchange', function (event) {\r\n if (window.location.hash.indexOf('invite') !== -1) {\r\n document.querySelector('.js-invite').click();\r\n module.private.inviteClicked();\r\n window.location.hash = \"\"\r\n }\r\n });\r\n };\r\n\r\n pubsub.subscribe('data.ConnectionAdd', module.private.handleDataInvite);\r\n\r\n module.private.init();\r\n\r\n return module;\r\n});\r\n","define(['jquery', 'pubsub', 'moduleUtilities', 'generalUtilities'], function navigationMobileControl(\r\n\t$,\r\n\tpubsub,\r\n\tmoduleUtilities,\r\n\tgeneralUtilities\r\n) {\r\n\t/**\r\n\t * re_navigation_mobile_control\r\n\t * @exports navigationMobileControl\r\n\t * @author John Allan\r\n\t */\r\n\t//#region set up\r\n\t'use strict';\r\n\r\n\tvar module, selectors, elements, values;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\tselectors = {\r\n\t\tnavMobile: '.js-nav-mobile',\r\n\t\tnavPrimary: '.re-nav-primary',\r\n\t\tnavSecondary: '.re-nav-secondary',\r\n\t\tmobileNavToggle: '.js-nav-mobile-toggle',\r\n\t\tactivityItem: '.js-activity-item > a, .js-group-create'\r\n\t};\r\n\telements = {};\r\n\tvalues = {\r\n\t\tpositionScroll: 0,\r\n\t\tnavOpenClass: 're-nav-open',\r\n\t\tnavItemOpenClass: 're-nav-item-open',\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t//#region pubsub event handlers\r\n\r\n\tmodule.private.closeMobileMenu = function closeMobileMenu(skipScrollReset) {\r\n\t\t// style ui\r\n\t\t$([selectors.mobileNavToggle, selectors.navMobile].join()).removeClass(values.navOpenClass);\r\n\r\n\t\t// update page layout\r\n\t\telements.html.removeClass('re-compact-overflow-y-hidden');\r\n\r\n\t\tif (!skipScrollReset) {\r\n\t\t\telements.window.scrollTop(values.positionScroll);\r\n\t\t}\r\n\t};\r\n\r\n\tmodule.private.openMobileMenu = function openMobileMenu() {\r\n\t\t// close any old menus\r\n\t\t$('.re-nav-item-open')\r\n\t\t\t.removeClass(values.navItemOpenClass)\r\n\t\t$('.re-mobile-list-item.re-nav-open, .js-nav-mobile .js-nav-list-item-primary.re-nav-open')\r\n\t\t\t.removeClass(values.navOpenClass)\r\n\t\t\t.find(selectors.navSecondary)\r\n\t\t\t.attr('aria-hidden', true);\r\n\t\t\r\n\t\t// style ui\r\n\t\t$([selectors.mobileNavToggle, selectors.navMobile].join()).addClass(values.navOpenClass);\r\n\r\n\t\t// update page layout\r\n\t\tvalues.positionScroll = elements.window.scrollTop();\r\n\t\telements.body.css({\r\n\t\t\ttop: generalUtilities.stringFormat('-{0}px', values.positionScroll)\r\n\t\t});\r\n\t\telements.html.addClass('re-compact-overflow-y-hidden');\r\n\r\n\t\t// open active menu item - add open class to parent and remove aria-hidden from all sub navs\r\n\t\t$('.js-nav-mobile .re-nav-item-active:not(.js-experience-switcher)')\r\n\t\t\t.addClass(values.navItemOpenClass)\r\n\t\t\t.parent()\r\n\t\t\t.addClass(values.navOpenClass)\r\n\t\t\t.find(selectors.navSecondary)\r\n\t\t\t.removeAttr('aria-hidden');\r\n\t};\r\n\r\n\t/**\r\n\t * Toggles mobile menu\r\n\t */\r\n\tmodule.private.handleMobileToggleClick = function handleMobileToggleClick(e) {\r\n\t\tvar opening;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\topening = !$(selectors.navMobile).hasClass(values.navOpenClass);\r\n\r\n\t\tmodule.private.closeMobileMenu(opening);\r\n\r\n\t\tif (opening) {\r\n\t\t\tmodule.private.openMobileMenu();\r\n\t\t}\r\n\t};\r\n\r\n\tmodule.private.handleClickActivityItem = function handleClickActivityItem() {\r\n\t\tvalues.scrollTop = 0;\r\n\t\tmodule.private.closeMobileMenu();\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\t\t// module config\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\t\telements.navMobileToggle = $(selectors.mobileNavToggle);\r\n\t\telements.html = $('html');\r\n\t\telements.body = $('body');\r\n\t\telements.window = $(window);\r\n\t\telements.navMobile = $(selectors.navMobile);\r\n\r\n\t\t// bind to hamburger icon on click event\r\n\t\telements.navMobileToggle.on('click', module.private.handleMobileToggleClick);\r\n\t\telements.navMobile.on('click', selectors.activityItem, module.private.handleClickActivityItem);\r\n\t};\r\n\r\n\t//#region external event bindings\r\n\r\n\tmodule.private.init();\r\n\r\n\t//#endregion\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","define([\r\n\t'pubsub', 'generalUtilities', 'stickySidebar'],\r\n\r\n\tfunction (pubsub, generalUtilities) {\r\n\t\t'use strict';\r\n\t\t/**\r\n\t\t* re_navigation_scroll_control\r\n\t\t* @exports navigationScrollControl\r\n\t\t* @author John Allan\r\n\t\t*/\r\n\t\t//#region set up\r\n\r\n\t\tvar module, selectors, elements, values;\r\n\r\n\t\tmodule = {};\r\n\t\t/** @module */\r\n\t\tmodule.private = {};\r\n\t\tmodule.properties = {};\r\n\r\n\t\tselectors = {\r\n\t\t\tleftNavigation: '.re-page-navigation',\r\n\t\t\tpageContent: '.re-page-content',\r\n\t\t\tpageWrapper: '.re-page-wrapper',\r\n\t\t\tstickySidebar: '.js-stickysidebar',\r\n\t\t\tstickySidebarInner: '.js-stickysidebar-inner'\r\n\t\t};\r\n\r\n\t\telements = {};\r\n\t\tvalues = {};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region utilities\r\n\r\n\t\t/**\r\n\t\t* Sticks the navigation.\r\n\t\t* @example\r\n\t\t* module.private.stickNavigation();\r\n\t\t*/\r\n\t\tmodule.private.stickNavigation = function () {\r\n\t\t\tif (values.navigation) {\r\n\t\t\t\tmodule.private.unStickNavigation();\r\n\t\t\t}\r\n\r\n\t\t\t//setup sticky nav\r\n\t\t\tvalues.navigation = new StickySidebar(selectors.stickySidebar, {\r\n\t\t\t\tcontainerSelector: selectors.pageWrapper,\r\n\t\t\t\tinnerWrapperSelector: selectors.stickySidebarInner,\r\n\t\t\t\ttopSpacing: 70,\r\n\t\t\t\tbottomSpacing: 20\r\n\t\t\t});\r\n\r\n\t\t\t//watch the nav and page for size changes\r\n\t\t\tvalues.ro.observe(elements.pageContent);\r\n\t\t\tvalues.ro.observe(elements.navContainerInnerInner);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Updates the navigation posiiton.\r\n\t\t* @example\r\n\t\t* module.private.updateNavigation();\r\n\t\t*/\r\n\t\tmodule.private.updateNavigation = function () {\r\n\t\t\tif (values.navigation) {\r\n\t\t\t\tvalues.navigation.updateSticky();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Unsticks the navigation removing all styles and event bindings.\r\n\t\t* @example\r\n\t\t* module.private.unStickNavigation();\r\n\t\t*/\r\n\t\tmodule.private.unStickNavigation = function () {\r\n\t\t\tif (values.navigation) {\r\n\t\t\t\tvalues.navigation.destroy();\r\n\t\t\t\tdelete values.navigation;\r\n\t\t\t}\r\n\r\n\t\t\tvalues.ro.unobserve(elements.pageContent);\r\n\t\t\tvalues.ro.unobserve(elements.navContainerInnerInner);\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region pubsub event handlers\r\n\r\n\t\t/**\r\n\t\t* Handle uiAction.NavigationStateChanged setting up or tearing down the sticky navigation.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleUiActionNavigationStateChanged = function (e, data) {\r\n\t\t\tif (data.isCompact) {\r\n\t\t\t\tmodule.private.unStickNavigation();\r\n\t\t\t} else {\r\n\t\t\t\tmodule.private.stickNavigation();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t/**\r\n\t\t* Initiates the module, creates a guid and binds dom events.\r\n\t\t* @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t* @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t*/\r\n\t\tmodule.private.init = function (e, data) {\r\n\t\t\tvar navigationState;\r\n\r\n\t\t\tif (!window.requestAnimationFrame || !Function.prototype.bind) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t//module config\r\n\t\t\tmodule.properties.guid = (data && data.guid) ? data.guid : generalUtilities.uuid();\r\n\r\n\t\t\t//get current page state\r\n\t\t\telements.leftNavigation = document.querySelector(selectors.leftNavigation);\r\n\t\t\tnavigationState = generalUtilities.getNavigationState();\r\n\r\n\t\t\t//if left navigation exists\r\n\t\t\tif (elements.leftNavigation) {\r\n\r\n\t\t\t\t//create resize observer\r\n\t\t\t\tvalues.ro = new ResizeObserver(function (entries, observer) {\r\n\t\t\t\t\tmodule.private.updateNavigation();\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//find DOM elements\r\n\t\t\t\telements.pageContent = document.querySelector(selectors.pageContent);\r\n\t\t\t\telements.navContainerInnerInner = document.querySelector(selectors.stickySidebarInner);\r\n\r\n\t\t\t\t//listen for changes in navigationState.isCompact\r\n\t\t\t\tpubsub.subscribe('uiAction.NavigationStateChanged', module.private.handleUiActionNavigationStateChanged);\r\n\r\n\t\t\t\t//if we are not in compact mode\r\n\t\t\t\tif (!navigationState.isCompact) {\r\n\t\t\t\t\tmodule.private.stickNavigation();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#region external event bindings\r\n\r\n\t\tmodule.private.init();\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//expose API\r\n\t\treturn module;\r\n\t}\r\n);\r\n","define(['jquery', 'pubsub', 'moduleUtilities', 'generalUtilities'], function navigationStateControl(\r\n\t$,\r\n\tpubsub,\r\n\tmoduleUtilities,\r\n\tgeneralUtilities\r\n) {\r\n\t/**\r\n\t * re_navigation_state_control\r\n\t * @exports navigationStateControl\r\n\t * @author John Allan\r\n\t */\r\n\t//#region set up\r\n\t'use strict';\r\n\r\n\tvar module, selectors, elements, values;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\tselectors = {};\r\n\telements = {};\r\n\tvalues = {};\r\n\r\n\tselectors.html = 'html';\r\n\tselectors.nav = '.js-nav-container';\r\n\tselectors.navItem = '.js-nav-item';\r\n\tselectors.primaryNavListItem = '.js-nav-list-item-primary';\r\n\tselectors.footer = '.re-page-footer';\r\n\r\n\tvalues.activeClass = 're-nav-item-active';\r\n\tvalues.highlightClass = 're-nav-highlight';\r\n\tvalues.openClass = 're-nav-item-open';\r\n\r\n\t//#endregion\r\n\r\n\t//#region utilities\r\n\r\n\t/**\r\n\t * Publishes an updated navigation state if there is a change\r\n\t */\r\n\tmodule.private.publishState = function publishState(force) {\r\n\t\tvar currentState, currentStateString;\r\n\t\tcurrentState = generalUtilities.getNavigationState();\r\n\t\tcurrentStateString = JSON.stringify(currentState);\r\n\r\n\t\tif (force === true || !values.previousStateString || values.previousStateString !== currentStateString) {\r\n\t\t\tvalues.previousStateString = currentStateString;\r\n\t\t\tpubsub.publish('uiAction.NavigationStateChanged', currentState);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * selects a nav item based on url\r\n\t * @returns {object} containing a $primary and $secondary navigation node\r\n\t */\r\n\tmodule.private.urlToNavSelectors = function urlToNavSelectors(domainUrl, pathname, hash, search) {\r\n\t\tvar result, dashboard, domHash, activeTab, pathSegment, regexResult, currentReblastTab, urlQuery, groupUniquName, decodedUrl;\r\n\r\n\t\tresult = {};\r\n\t\tdashboard = ['[href=\"', domainUrl, '/dashboard\"]'].join('');\r\n\r\n\t\t// set the default selectors\r\n\t\tresult.secondary = ['[href=\"', pathname.replace(/\\/$/, ''), hash, '\"]'].join('');\r\n\r\n\t\t// set page specific primary and secondary selectors\r\n\t\tswitch (window.pageType) {\r\n\t\t\tcase 'profile':\r\n\t\t\t\tresult.primary = '[data-id=\"activity\"]';\r\n\r\n\t\t\t\t// find the currently selected tab in the old nav\r\n\t\t\t\tactiveTab = document.querySelector('.tab.active a');\r\n\t\t\t\tdomHash = activeTab ? activeTab.hash : false;\r\n\t\t\t\turlQuery = generalUtilities.queryStringToObject(search);\r\n\r\n\t\t\t\tif (urlQuery && urlQuery.ReturnUrl) {\r\n\t\t\t\t\tdecodedUrl = decodeURIComponent(urlQuery.ReturnUrl);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tgroupUniquName = pathname.indexOf('/feed/group') > -1 ? pathname.split(\"/feed/group/\")[1] : false;\r\n\r\n\t\t\t\tif (domHash) {\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/group' + domHash.split('#')[1] + '\"],[href$=\"' + hash + '\"]';\r\n\t\t\t\t} else if (hash) {\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/group' + hash.split('#')[1] + '\"],[href$=\"' + hash + '\"]';\r\n\t\t\t\t} else if (decodedUrl && decodedUrl.indexOf('/feed/group') > -1) {\r\n\t\t\t\t\t// returnurl with group feed link\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/group/' + decodedUrl.split(\"/feed/group/\")[1] + '\"]';\r\n\t\t\t\t} else if (groupUniquName) {\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/group/' + groupUniquName + '\"]';\r\n\t\t\t\t} else if (pathname === '/feed/local') {\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/local\"]';\r\n\t\t\t\t} else if (pathname === '/feed/myposts') {\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/myposts\"]';\r\n\t\t\t\t} else if (pathname === '/feed/connections') {\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/connections\"]';\r\n\t\t\t\t} else if (pathname === '/feed/global') {\r\n\t\t\t\t\tresult.secondary = '[href$=\"/feed/global\"]';\r\n\t\t\t\t} else if (!hash && !search) {\r\n\t\t\t\t\tif (RESAAS.Environment.DefaultGroupUniqueName) {\r\n\t\t\t\t\t\tcurrentReblastTab = RESAAS.Environment.DefaultGroupUniqueName;\r\n\t\t\t\t\t\tresult.secondary = '[href$=\"/feed/group/' + currentReblastTab + '\"]';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresult.secondary = '[href$=\"/feed/global\"]';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'activity-feed':\r\n\t\t\t\tif (window.isO === 'False') {\r\n\t\t\t\t\tresult.primary = '[data-id=\"agents\"]';\r\n\t\t\t\t\tresult.secondary = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (window.isO === 'True') {\r\n\t\t\t\t\tresult.primary = '[data-id=\"settings\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"' + domainUrl + '/profile\"]';\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'send-message':\r\n\t\t\t\tresult.primary = '[data-id=\"agents\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'public-question':\r\n\t\t\t\tif (window.RESAAS.User2.IsProfessional) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"learn\"]';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.primary = '[data-id=\"questions\"]';\r\n\t\t\t\t}\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'hashtag':\r\n\t\t\t\tresult.primary = '[data-id=\"activity\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'group':\r\n\t\t\t\tresult.primary = '[data-id=\"activity\"]';\r\n\t\t\t\tregexResult = pathname.match(\r\n\t\t\t\t\t/(\\/groups\\/)([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/i\r\n\t\t\t\t);\r\n\t\t\t\tresult.secondary = regexResult ? '[data-id=\"' + regexResult[2] + '\"]' : null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'dashboard':\r\n\t\t\t\tresult.primary = '[data-id=\"settings\"]';\r\n\t\t\t\tresult.secondary = dashboard;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'manageSubscriptions':\r\n\t\t\t\tresult.primary = '[data-id=\"settings\"]';\r\n\t\t\t\tresult.secondary = dashboard;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'listing-discovery':\r\n\t\t\t\tresult.primary = '[data-id=\"listings\"]';\r\n\t\t\t\tresult.secondary = '[href^=\"/listings\"]';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'user-discovery':\r\n\t\t\t\tif (pathname.indexOf('brokeros') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"brokeros\"]';\r\n\t\t\t\t\tresult.secondary = null;\r\n\t\t\t\t} else if (search.indexOf('RelationshipSearch=2') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"agents\"]';\r\n\t\t\t\t\tresult.secondary = '[href^=\"/agents?RelationshipSearch=2\"]';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.primary = '[data-id=\"agents\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"/agents\"]';\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'my-referrals':\r\n\t\t\t\tresult.primary = '[data-id=\"referrals\"]';\r\n\t\t\t\t// result.secondary = will be found by exact match (my leads)\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'one-to-one-referral-form':\r\n\t\t\t\tresult.primary = '[data-id=\"referrals\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'lead-create':\r\n\t\t\t\tif (search.indexOf('referral') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"referrals\"]';\r\n\t\t\t\t\tresult.secondary = '[href^=\"/ReferralCreate\"]';\r\n\t\t\t\t} else if (search.indexOf('buyerneed') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"buyerNeeds\"]';\r\n\t\t\t\t\tresult.secondary = '[href^=\"/BuyerNeedCreate\"]';\r\n\t\t\t\t} else if (search.indexOf('instant') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"instantLeads\"]';\r\n\t\t\t\t\tresult.secondary = '[href^=\"/InstantLeadCreate\"]';\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'DiscoverLeadsPage':\r\n\t\t\t\tif (search.indexOf('2') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"referrals\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"/leads?leadTypeFilter=2\"]';\r\n\t\t\t\t} else if (search.indexOf('3') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"buyerNeeds\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"/leads?leadTypeFilter=3\"]';\r\n\t\t\t\t} else if (search.indexOf('4') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"instantLeads\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"/leads?leadTypeFilter=4\"]';\r\n\t\t\t\t} \r\n\t\t\t\tbreak;\r\n\t\t\tcase 'listing-edit':\r\n\t\t\t\tresult.primary = '[data-id=\"listings\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'referral-response':\r\n\t\t\t\tif (window.RESAAS.ReferralDetails.ReferralType === 3) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"buyerNeeds\"]';\r\n\t\t\t\t}\r\n\t\t\t\tif (window.RESAAS.ReferralDetails.ReferralType === 2) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"referrals\"]';\r\n\t\t\t\t}\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'instant-referral-response':\r\n\t\t\t\tresult.primary = '[data-id=\"instantLeads\"]';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'referral-app':\r\n\t\t\t\tresult.primary = '[data-id=\"referrals\"]';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'buyerneeds-app':\r\n\t\t\t\tresult.primary = '[data-id=\"buyerNeeds\"]';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'listing-detail':\r\n\t\t\t\tresult.primary = '[data-id=\"listings\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'reblast-detail':\r\n\t\t\t\tresult.primary = '[data-id=\"activity\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'question-detail':\r\n\t\t\t\tresult.primary = '[data-id=\"learn\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'brokeros':\r\n\t\t\t\tresult.primary = '[data-id=\"brokeros\"]';\r\n\t\t\t\tresult.secondary = '[href^=\"/brokeros\"]';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'brokeros-clients':\r\n\t\t\t\tresult.primary = '[data-id=\"brokeros\"]';\r\n\t\t\t\tresult.secondary = null;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'dashboardAnalytics':\r\n\t\t\t\tif (search.indexOf('type=1') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"analytics\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"/analytics?type=1\"]';\r\n\t\t\t\t} else if (search.indexOf('type=7') >= 0) {\r\n\t\t\t\t\tresult.primary = '[data-id=\"analytics\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"/analytics?type=7\"]';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.primary = '[data-id=\"analytics\"]';\r\n\t\t\t\t\tresult.secondary = '[href=\"/analytics?type=1\"]';\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\r\n\t/**\r\n\t * Highlight the corresponding nav item in the nav according to the current page\r\n\t */\r\n\tmodule.private.setCurrentPage = function setCurrentPage() {\r\n\r\n\t\tvar activeClasses, domainUrl, currentSelectors, $selected;\r\n\r\n\t\t$selected = $();\r\n\r\n\t\t// add back once groups are removed from experience switcher\r\n\t\t// highlightClasses = values.activeClass + ' ' + values.highlightClass + ' ' + values.openClass;\r\n\r\n\t\t// remove once groups are removed from experience switcher\r\n\t\tactiveClasses = values.highlightClass + ' ' + values.openClass;\r\n\r\n\t\t// cleanup any existing highlighting\r\n\t\telements.allLinks.removeClass(values.activeClass);\r\n\r\n\t\t// get nav selectors\r\n\t\tdomainUrl = generalUtilities.prop(RESAAS, 'User2.DomainUrl');\r\n\t\tcurrentSelectors = module.private.urlToNavSelectors(\r\n\t\t\tdomainUrl,\r\n\t\t\twindow.location.pathname,\r\n\t\t\twindow.location.hash,\r\n\t\t\twindow.location.search\r\n\t\t);\r\n\r\n\t\t// find secondary nav item\r\n\t\tif (currentSelectors.secondary) {\r\n\t\t\t$selected = $selected.add(elements.allLinks.filter(currentSelectors.secondary));\r\n\t\t}\r\n\r\n\t\t// add primary nav item\r\n\t\tif ($selected.length) {\r\n\t\t\t$selected = $selected.add($selected.closest(selectors.primaryNavListItem).children(selectors.navItem));\r\n\t\t} else {\r\n\t\t\t$selected = $selected.add(elements.allLinks.filter(currentSelectors.primary));\r\n\t\t}\r\n\r\n\t\t// highlight nav\r\n\t\t// add back once groups are removed from experience switcher\r\n\t\t// $selected.addClass(highlightClasses);\r\n\r\n\t\t// remove once groups are removed from experience switcher\r\n\t\t$selected\r\n\t\t\t.addClass(values.activeClass)\r\n\t\t\t.not('.js-has-flyoutmenu')\r\n\t\t\t.addClass(activeClasses)\r\n\t\t\t.siblings('.js-nav-secondary')\r\n\t\t\t.removeAttr('aria-hidden')\r\n\t\t\t.slideDown('fast')\r\n\t\t\t.parent()\r\n\t\t\t.addClass('re-nav-open');\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\t\t// module config\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n\t\telements.window = $(window);\r\n\t\telements.html = $(selectors.html);\r\n\t\telements.nav = $(selectors.nav);\r\n\t\telements.footer = $(selectors.footer);\r\n\t\telements.allLinks = elements.nav.find(selectors.navItem);\r\n\r\n\t\tmodule.private.publishState(true);\r\n\t\tmodule.private.setCurrentPage();\r\n\r\n\t\twindow.addEventListener('reactNavigate', module.private.setCurrentPage);\r\n\r\n\t\t// dom event binding\r\n\t\telements.window\r\n\t\t\t.off('resize.NavigationStateControl')\r\n\t\t\t.on('resize.NavigationStateControl', generalUtilities.debounce(module.private.publishState, 100));\r\n\t\telements.window\r\n\t\t\t.off('popstate.NavigationStateControl hashchange.NavigationStateControl')\r\n\t\t\t.on(\r\n\t\t\t\t'popstate.NavigationStateControl hashchange.NavigationStateControl',\r\n\t\t\t\tgeneralUtilities.debounce(module.private.setCurrentPage, 100)\r\n\t\t\t);\r\n\t};\r\n\r\n\t//#region external event bindings\r\n\tpubsub.subscribe('uiAction.NavigationStateControlInit', module.private.init);\r\n\r\n\t//#endregion\r\n\r\n\t//expose API\r\n\treturn module;\r\n});\r\n","define(['jquery', 'pubsub', 'moduleUtilities', 'generalUtilities'], function navigationTreeControl(\r\n\t$,\r\n\tpubsub,\r\n\tmoduleUtilities,\r\n\tgeneralUtilities\r\n) {\r\n\t/**\r\n\t * re_navigation_tree_control\r\n\t * @exports navigationTreeControl\r\n\t * @author Elina Goldin\r\n\t */\r\n\t//#region set up\r\n\t'use strict';\r\n\r\n\tvar module, selectors, elements, values;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\tselectors = {\r\n\t\tnavContainer: '.js-nav-container',\r\n\t\tnavSecondary: '.re-nav-secondary',\r\n\t\texperienceSwitcher: '.js-experience-switcher',\r\n\t\tnotificationItem: '.js-notification',\r\n\t\tnavItemOpen: '.re-nav-item-open',\r\n\t\tflyOutMenu: '.js-has-flyoutmenu'\r\n\t};\r\n\telements = {};\r\n\tvalues = {};\r\n\r\n\tvalues.highlightClass = 're-nav-highlight';\r\n\r\n\t//#endregion\r\n\r\n\t//#region pubsub event handlers\r\n\r\n\tmodule.private.openSecondaryNavigation = function openSecondaryNavigation(target, animate) {\r\n\t\tif (animate) {\r\n\t\t\ttarget\r\n\t\t\t\t.addClass('re-nav-item-open')\r\n\t\t\t\t.siblings(selectors.navSecondary)\r\n\t\t\t\t.removeAttr('aria-hidden')\r\n\t\t\t\t.slideDown('fast')\r\n\t\t\t\t.parent()\r\n\t\t\t\t.addClass('re-nav-open');\r\n\t\t} else {\r\n\t\t\ttarget\r\n\t\t\t\t.addClass('re-nav-item-open')\r\n\t\t\t\t.siblings(selectors.navSecondary)\r\n\t\t\t\t.removeAttr('aria-hidden')\r\n\t\t\t\t.show()\r\n\t\t\t\t.parent()\r\n\t\t\t\t.addClass('re-nav-open');\r\n\t\t}\r\n\t};\r\n\r\n\tmodule.private.closeExperienceSwitcher = function closeExperienceSwitcher(e) {\r\n\t\tif (e) {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\telements.experienceSwitcher\r\n\t\t\t.removeClass('re-nav-item-open')\r\n\t\t\t.siblings(selectors.navSecondary)\r\n\t\t\t.attr('aria-hidden', true)\r\n\t\t\t.hide()\r\n\t\t\t.parent()\r\n\t\t\t.removeClass('re-nav-open');\r\n\t\telements.navContainer.removeClass('re-experienceswitcher-open');\r\n\t};\r\n\r\n\tmodule.private.closeSecondaryNavigation = function closeSecondaryNavigation(target, animate) {\r\n\t\tif (animate) {\r\n\t\t\ttarget\r\n\t\t\t\t.removeClass('re-nav-item-open')\r\n\t\t\t\t.siblings(selectors.navSecondary)\r\n\t\t\t\t.attr('aria-hidden', true)\r\n\t\t\t\t.slideUp('fast')\r\n\t\t\t\t.parent()\r\n\t\t\t\t.removeClass('re-nav-open');\r\n\t\t} else {\r\n\t\t\ttarget\r\n\t\t\t\t.removeClass('re-nav-item-open')\r\n\t\t\t\t.siblings(selectors.navSecondary)\r\n\t\t\t\t.attr('aria-hidden', true)\r\n\t\t\t\t.hide()\r\n\t\t\t\t.parent()\r\n\t\t\t\t.removeClass('re-nav-open');\r\n\t\t}\r\n\t\tmodule.private.closeExperienceSwitcher();\r\n\t};\r\n\r\n\t/**\r\n\t * Handles toggling of secondary navigation.\r\n\t * @param {object} [e] Click event\r\n\t * @param {object} [data] Data passed in by uiAction.NavigationStateChanged event.\r\n\t */\r\n\tmodule.private.handleSecondaryNavigation = function handleSecondaryNavigation(e) {\r\n\t\tvar $this;\r\n\r\n\t\t$this = $(this);\r\n\t\t// if item has subnav, prevent default on top level link\r\n\t\tif ($this.next(selectors.navSecondary).length > 0) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\t// handling flyout menus and dropdowns\r\n\t\tif ($this.hasClass('js-has-flyoutmenu')) {\r\n\t\t\tif ($this.hasClass('re-nav-item-open')) {\r\n\t\t\t\tmodule.private.closeSecondaryNavigation($this, true);\r\n\t\t\t} else {\r\n\t\t\t\tmodule.private.closeSecondaryNavigation($(selectors.flyOutMenu), false);\r\n\t\t\t\tmodule.private.openSecondaryNavigation($this, false);\r\n\t\t\t\tif ($this.hasClass('js-experience-switcher')) {\r\n\t\t\t\t\telements.navContainer.addClass('re-experienceswitcher-open');\r\n\t\t\t\t\tpubsub.publish('mixpanel.Intent', { type: 'open dialpad' });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// handling regular left nav subnavs\r\n\t\t} else if ($this.hasClass('re-nav-item-open')) {\r\n\t\t\tif (!generalUtilities.getNavigationState().isCompact) {\r\n\t\t\t\tmodule.private.handleNavigationClose();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmodule.private.closeSecondaryNavigation($(selectors.navItemOpen), true);\r\n\t\t\tmodule.private.openSecondaryNavigation($this, true);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t/**\r\n\t * Closes all secondary navs.\r\n\t */\r\n\tmodule.private.handleNavigationClose = function handleNavigationClose() {\r\n\t\tmodule.private.closeSecondaryNavigation($(selectors.navItemOpen), false);\r\n\t};\r\n\r\n\t/**\r\n\t * Handle click on , creates service object and publish pubsub event uiNeeds.FeatureBrowse.\r\n\t * @param {object} e Click event\r\n\t */\r\n\tmodule.private.handleGenericNavClick = function handleGenericNavClick(e) {\r\n\t\te.stopPropagation();\r\n\t};\r\n\t//#endregion\r\n\r\n\tmodule.private.handleHtmlClick = function handleHtmlClick() {\r\n\t\tmodule.private.closeSecondaryNavigation($('.js-has-flyoutmenu.re-nav-item-open'), false);\r\n\t};\r\n\r\n\tmodule.private.handleDownloadAppClick = function handleDownloadAppClick(e) {\r\n\t\tRESAAS.MixPanel.trackEvent('Intent', { type: 'Download App Link', from: 'Top Nav Dropdown' });\r\n\t};\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\t\t// module config\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n\t\telements.document = $(document);\r\n\t\telements.html = $('html');\r\n\t\telements.window = $(window);\r\n\t\telements.navItemPrimary = $('.js-nav-item-primary');\r\n\t\telements.navContainer = $(selectors.navContainer);\r\n\t\telements.navMobileToggle = $('.js-nav-mobile-toggle');\r\n\t\telements.navSecondaryExperiences = $('.js-nav-secondary-experiences');\r\n\t\telements.navDialpad = $('.re-nav-dialpad');\r\n\t\telements.experienceSwitcher = $(selectors.experienceSwitcher);\r\n\t\telements.downloadApp = $('.js-nav-item-downloadapp');\r\n\r\n\t\t// dom event binding\r\n\t\telements.html.off('click.NavigationTreeControl');\r\n\t\telements.navContainer.off('click.NavigationTreeControl');\r\n\t\telements.navItemPrimary.off('click.NavigationTreeControl');\r\n\t\telements.document.off('keydown.NavigationTreeControl');\r\n\t\telements.downloadApp.off('click.NavigationTreeControl');\r\n\r\n\t\telements.navItemPrimary.on('click.NavigationTreeControl', module.private.handleSecondaryNavigation);\r\n\t\telements.html.on('click.NavigationTreeControl', module.private.handleHtmlClick);\r\n\t\telements.navContainer.on('click.NavigationTreeControl', module.private.handleGenericNavClick);\r\n\t\telements.downloadApp.on('click.NavigationTreeControl', module.private.handleDownloadAppClick);\r\n\r\n\t\t// this binding now only applies to the experience switcher close button (no others exist)\r\n\t\telements.navContainer.on(\r\n\t\t\t'click.NavigationTreeControl',\r\n\t\t\t'.js-close-nav, .js-nav-back-btn',\r\n\t\t\tmodule.private.closeExperienceSwitcher\r\n\t\t);\r\n\r\n\t\telements.document.on('keydown.NavigationTreeControl', function documentOnKeyDown(ev) {\r\n\t\t\tif (ev.keyCode === 27) {\r\n\t\t\t\tmodule.private.closeExperienceSwitcher();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t//#region external event bindings\r\n\r\n\tmodule.private.init();\r\n\r\n\t//#endregion\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","define([\r\n\t'jquery', 'pubsub', 'moduleUtilities', 'generalUtilities', 'notificationService'],\r\n\r\n\tfunction ($, pubsub, moduleUtilities, generalUtilities) {\r\n\t\t'use strict';\r\n\t\t/**\r\n\t\t* re_navigation_unseen_notifications_control\r\n\t\t* @exports navigationUnseenNotificationControl\r\n\t\t* @author May Montazer\r\n\t\t*/\r\n\t\t//#region set up\r\n\r\n\t\tvar module, selectors, elements;\r\n\r\n\t\tmodule = {};\r\n\t\t/** @module */\r\n\t\tmodule.private = {};\r\n\t\tmodule.properties = {};\r\n\t\tselectors = {};\r\n\t\telements = {};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region utilities\r\n\r\n\t\t/**\r\n\t\t* ask for the unseen notication\r\n\t\t*/\r\n\t\tmodule.private.notificationUnseenBrowse = function notificationUnseenBrowse() {\r\n\t\t\tvar request, serviceObject;\r\n\r\n\t\t\trequest = {};\r\n\t\t\tserviceObject = moduleUtilities.createServiceObject(request, module.properties);\r\n\r\n\t\t\t// service needs to be using publish2\r\n\t\t\tpubsub.publish('uiNeeds.NotificationUnseen', serviceObject);\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t/**\r\n\t\t* Handle data event returned from uiNeeds.NotificationUnseen, determines success of fail and calls the corresponding function.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationUnseen = function (e, data) {\r\n\t\t\tvar r = data && data.response;\r\n\r\n\t\t\tif (moduleUtilities.isOwnEvent(data, module.properties) && r) {\r\n\t\t\t\tif (r.Connections) {\r\n\t\t\t\t\tvar connectionIcon= document.querySelector('.js-notificationcount-connection');\r\n\t\t\t\t\tif (connectionIcon) {\r\n\t\t\t\t\t\tconnectionIcon.innerText = r.Connections;\r\n\t\t\t\t\t\tdocument.querySelector('.js-nav-connectioncount').classList.add('re-nav-hasactivity');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpubsub.publish('loggly.error', {\r\n\t\t\t\t\t\t\tmessage: generalUtilities.stringFormat('There is {0} connections to show but the connection icon is not rendered in {1}', r.Connections, document.querySelector('.re-page-navigation, .re-page-navigation-anonymous').innerHTML)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (r.Notifications) {\r\n\t\t\t\t\tvar notificationIcon = document.querySelector('.js-notificationcount-notification');\r\n\t\t\t\t\tif (notificationIcon){\r\n\t\t\t\t\t\tnotificationIcon.innerText = r.Notifications;\r\n\t\t\t\t\t\tdocument.querySelector('.js-nav-notificationcount').classList.add('re-nav-hasactivity');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpubsub.publish('loggly.error', {\r\n\t\t\t\t\t\t\tmessage: generalUtilities.stringFormat('There is {0} notifications but the notification icon is not rendered in {1}', r.Connections, document.querySelector('.re-page-navigation, .re-page-navigation-anonymous').innerHTML)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tif (r.HasNewInstantMessage) {\r\n\t\t\t\t\tdocument.querySelector('.js-nav-instantmessage-count').classList.add('re-nav-hasactivity');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tpubsub.publish('loggly.error', {\r\n\t\t\t\t\tmessage: generalUtilities.stringFormat('showing unseen notifications is failed {0}', JSON.stringify(data))\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\r\n\t\t/**\r\n\t\t* Initiates the module, creates a guid and binds dom events. Tracks notification visits.\r\n\t\t* @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t* @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t*/\r\n\t\tmodule.private.init = function (e, data) {\r\n\r\n\t\t\tif (!generalUtilities.prop(window, 'RESAAS.User2.IsProfessional')) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t//module config\r\n\t\t\tmodule.properties.guid = (data && data.guid) ? data.guid : generalUtilities.uuid();\r\n\t\t\tmodule.private.notificationUnseenBrowse();\r\n\t\t};\r\n\r\n\t\t//#region external event bindings\r\n\t\tpubsub.subscribe('data.NotificationUnseen', module.private.handleDataNotificationUnseen);\r\n\r\n\t\tmodule.private.init();\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//expose API\r\n\t\treturn module;\r\n\t}\r\n);\r\n","define([\r\n\t'jquery', 'pubsub', 'moduleUtilities', 'generalUtilities', 'notificationsEnumData', 'notificationService', 'messageControl2'],\r\n\r\n\tfunction ($, pubsub, moduleUtilities, generalUtilities, notificationsEnumData) {\r\n\t\t/**\r\n\t\t* re_notification_delete_control\r\n\t\t* @exports notificationDeleteControl\r\n\t\t* @author Eugene Katsov\r\n\t\t*/\r\n\r\n\t\t//#region set up\r\n\r\n\t\t'use strict';\r\n\r\n\t\tvar module, selectors, elements, values;\r\n\r\n\t\tmodule = {};\r\n\t\tmodule.private = {};\r\n\t\tmodule.properties = {};\r\n\t\tselectors = {\r\n\t\t\tnotificationListWrapper: '.re-notifications-list',\r\n\t\t\tnotificationDelete: '.js-generic-delete'\r\n\t\t};\r\n\t\telements = {};\r\n\t\tvalues = {};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region utilities\r\n\r\n\t\t/**\r\n\t\t* Delete method\r\n\t\t* @param {object} e event\r\n\t\t* @param {object} data response data\r\n\t\t*/\r\n\t\tmodule.private.notificationDelete = function (e, data) {\r\n\t\t\tvar requestOptions, request, serviceObject;\r\n\r\n\t\t\trequestOptions = {};\r\n\r\n\t\t\trequest = { NotificationId: data.notificationId };\r\n\r\n\t\t\tserviceObject = moduleUtilities.createServiceObject(request, module.properties, requestOptions);\r\n\r\n\t\t\tpubsub.publish('uiHas.NotificationDelete', serviceObject);\r\n\t\t};\r\n\t\t//#endregion\r\n\r\n\t\t//#region pubsub event handlers\r\n\r\n\t\t/**\r\n\t\t* Delete response error handler\r\n\t\t* @param {object} e event\r\n\t\t* @param {object} data response data\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationDeleteError = function (e, data) {\r\n\t\t\tpubsub.publish('loggly.error', { message: JSON.stringify(data) });\r\n\r\n\t\t\tpubsub.publish('uiAction.MessageAdd', {\r\n\t\t\t\t'message': RESAAS.Localization.Global.GENERIC_WEBSERVICE_ERROR_MESSAGE,\r\n\t\t\t\t'type': 'error'\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Delete response success handler\r\n\t\t* @param {object} e event\r\n\t\t* @param {object} data response data\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationDeleteSuccess = function (e, data) {\r\n\t\t\tvar $nItem;\r\n\r\n\t\t\t$nItem = elements.notificationListWrapper.find('[data-notificationid=\"' + data.request.NotificationId + '\"]');\r\n\r\n\t\t\t$nItem.fadeOut(\"slow\", function () {\r\n\t\t\t\t$nItem.remove();\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationDelete = function (e, data) {\r\n\t\t\tvar success;\r\n\r\n\t\t\tsuccess = generalUtilities.prop(data, 'response.HideNotificationForUserResult.Success');\r\n\r\n\t\t\tif (!success) {\r\n\t\t\t\tmodule.private.handleDataNotificationDeleteError(e, data);\r\n\t\t\t} else {\r\n\t\t\t\tmodule.private.handleDataNotificationDeleteSuccess(e, data);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region dom event handlers\r\n\r\n\t\t/**\r\n\t\t* Handle click on the delete, hides notification list\r\n\t\t* @param {object} e Click event\r\n\t\t*/\r\n\t\tmodule.private.handleNotificationDeleteClick = function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tmodule.private.notificationDelete('', { notificationId: e.currentTarget.dataset.notificationid });\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t/**\r\n\t\t* Initiates the module, creates a guid and binds dom events.\r\n\t\t* @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t* @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t*/\r\n\t\tmodule.private.init = function (e, data) {\r\n\t\t\tvar html;\r\n\r\n\t\t\t//module config\r\n\t\t\tmodule.properties.guid = (data && data.guid) ? data.guid : generalUtilities.uuid();\r\n\r\n\t\t\t//elements\r\n\t\t\telements.body = $('body');\r\n\t\t\telements.notificationListWrapper = $(selectors.notificationListWrapper);\r\n\r\n\t\t\t//dom event binding\r\n\t\t\telements.notificationListWrapper.on('click', selectors.notificationDelete, module.private.handleNotificationDeleteClick);\r\n\r\n\t\t};\r\n\r\n\t\t//#region external event bindings\r\n\r\n\t\tpubsub.subscribe('data.NotificationDelete', module.private.handleDataNotificationDelete);\r\n\t\tpubsub.subscribe('uiAction.NotificationDelete', module.private.notificationDelete);\r\n\r\n\t\tmodule.private.init();\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//expose API\r\n\t\treturn module;\r\n\t}\r\n);","define([\r\n\t'jquery', 'pubsub', 'moduleUtilities', 'generalUtilities', 'notificationService'],\r\n\r\n\tfunction ($, pubsub, moduleUtilities, generalUtilities) {\r\n\t\t'use strict';\r\n\t\t/**\r\n\t\t* re_notification_visit_control\r\n\t\t* @exports notificationVisitControl\r\n\t\t* @author John Allan\r\n\t\t*/\r\n\t\t//#region set up\r\n\r\n\t\tvar module, selectors, elements, values;\r\n\r\n\t\tmodule = {};\r\n\t\t/** @module */\r\n\t\tmodule.private = {};\r\n\t\tmodule.properties = {};\r\n\t\tselectors = {};\r\n\t\telements = {};\r\n\t\tvalues = {};\r\n\r\n\t\tselectors.notificationListWrappers = '.js-notificationhistory-list, .js-notifications-list';\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region utilities\r\n\r\n\t\t/**\r\n\t\t* Called on init to mark a notification as visted.\r\n\t\t*/\r\n\t\tmodule.private.markNotificationAsVisited = function () {\r\n\t\t\tvar authenticated, notificationId, request, serviceObject;\r\n\r\n\t\t\tauthenticated = !!generalUtilities.prop(RESAAS, 'User2.UserId');\r\n\t\t\tnotificationId = generalUtilities.queryStringToObject().notificationId;\r\n\t\t\t\r\n\t\t\tif (authenticated && notificationId) {\r\n\t\t\t\trequest = {\r\n\t\t\t\t\tnotificationId: notificationId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tserviceObject = moduleUtilities.createServiceObject(request, module.properties);\r\n\r\n\t\t\t\tpubsub.publish('uiHas.NotificationVisit', serviceObject);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region pubsub event handlers\r\n\r\n\t\t/**\r\n\t\t* Handles error for the data.NotificationVisit event.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationVisitError = function (e, data) {\r\n\t\t\tpubsub.publish('loggly.error', { message: 'Setting notification to visited failed: ' + JSON.stringify(data) });\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle data event returned from uiHas.NotificationVisit, determines success of fail and calls the corresponding function.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationVisit = function (e, data) {\r\n\t\t\tif (moduleUtilities.isOwnEvent(data, module.properties)) {\r\n\t\t\t\tif (data.response.status !== 200) {\r\n\t\t\t\t\tmodule.private.handleDataNotificationVisitError(e, data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region dom event handlers\r\n\t\t/**\r\n\t\t* Handle click on notification list wrappers, adds the notificationId to the url before redirecting.\r\n\t\t* @param {object} e Click event\r\n\t\t*/\r\n\t\tmodule.private.handleClick = function (e) {\r\n\t\t\tvar href, url, $notification, notificationId, visited, queryObject;\r\n\r\n\t\t\t$notification = $(e.target).closest('[data-notificationid]');\r\n\t\t\tvisited = $notification.hasClass('js-notification-visited');\r\n\t\t\tnotificationId = $notification.attr('data-notificationid');\r\n\r\n\t\t\tif (notificationId) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\thref = $(e.target).attr('href');\r\n\t\t\t\tqueryObject = {\r\n\t\t\t\t\tmp_from: 'notification'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (!visited) {\r\n\t\t\t\t\tqueryObject.notificationId = notificationId;\r\n\t\t\t\t}\r\n\r\n\t\t\t\turl = generalUtilities.addParamsToUrlQueryString(href, queryObject);\r\n\t\t\t\tgeneralUtilities.redirect(url);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t/**\r\n\t\t* Initiates the module, creates a guid and binds dom events. Tracks notification visits.\r\n\t\t* @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t* @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t*/\r\n\t\tmodule.private.init = function (e, data) {\r\n\r\n\t\t\t//module config\r\n\t\t\tmodule.properties.guid = (data && data.guid) ? data.guid : generalUtilities.uuid();\r\n\t\t\telements.notificationListWrappers = $(selectors.notificationListWrappers);\r\n\r\n\t\t\t//dom event binding\r\n\t\t\telements.notificationListWrappers.off('click.notificationVisit').on('click.notificationVisit', 'a', module.private.handleClick);\r\n\r\n\t\t\t//mark notification as visited\r\n\t\t\tmodule.private.markNotificationAsVisited();\r\n\t\t};\r\n\r\n\t\t//#region external event bindings\r\n\t\tpubsub.subscribe('data.NotificationVisit', module.private.handleDataNotificationVisit);\r\n\r\n\t\tmodule.private.init();\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//expose API\r\n\t\treturn module;\r\n\t}\r\n);","define([\r\n\t'jquery', 'pubsub', 'moduleUtilities', 'generalUtilities', 'notificationToolbarListCompiled', 'smoke', 'notificationsEnumData', 'relationshiptypesData', 'moment', 'notificationService', 'connectionService', 'messageControl2', 'notificationDeleteControl'],\r\n\r\n\tfunction ($, pubsub, moduleUtilities, generalUtilities, notificationToolbarListCompiled, smoke, notificationsEnumData, relationshiptypesData, moment) {\r\n\t\t/**\r\n\t\t* re_notification_connection_control\r\n\t\t* @exports notificationConnectionListControl\r\n\t\t* @author Eugene Katsov\r\n\t\t*/\r\n\r\n\t\t//#region set up\r\n\r\n\t\t'use strict';\r\n\r\n\t\tvar module, selectors, elements, values, overLayModule;\r\n\r\n\t\tmodule = {};\r\n\t\tmodule.private = {};\r\n\t\tmodule.properties = {};\r\n\t\tselectors = {\r\n\t\t\tnotificationListWrapper: '.re-notifications-list',\r\n\t\t\tconnectionWrapper: '.re-nav-notifications',\r\n\t\t\tnotificationConnect: '.js-notification-connection',\r\n\t\t\tnotificationConnectDismiss: '.js-connection-delete',\r\n\t\t\tconnectionIcon: '.js-connection',\r\n\t\t\tconnectionList: '.js-connection-list',\r\n\t\t\tnotificationCount: '.js-notificationcount'\r\n\t\t};\r\n\t\telements = {};\r\n\t\tvalues = {\r\n\t\t\trequesterRegexObj: /title=\"(.[^\"]+)\"/g,\r\n\t\t\tpositionScroll: 0\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//#region utilities\r\n\r\n\t\t/**\r\n\t\t* get notificaiton count count from dom\r\n\t\t* @returns {number} \r\n\t\t*/\r\n\t\tmodule.private.getNotificationCountFromDom = function () {\r\n\t\t\tvalues.notificationCount = parseInt(elements.connectionList.closest(selectors.connectionWrapper).find(selectors.notificationCount).html(), 10);\r\n\r\n\t\t\treturn values.notificationCount;\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* massage data in irder to prettify date and format count message\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.massageData = function (data) {\r\n\t\t\tvar regexArr;\r\n\t\t\tif (Array.isArray(data.Data)) {\r\n\r\n\t\t\t\tdata.Data.map(function (item) {\r\n\t\t\t\t\t//prettify/relativize dates\r\n\t\t\t\t\tif (item.hasOwnProperty('DateCreated')) {\r\n\t\t\t\t\t\tif (generalUtilities.prop(item, 'DateCreated')) {\r\n\t\t\t\t\t\t\titem.RelativeDate = moment(item.DateCreated + '+00:00').fromNow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (item.hasOwnProperty('NotificationType')) {\r\n\r\n\t\t\t\t\t\titem.ActionLink = RESAAS.Localization.Global.ACCEPT;\r\n\t\t\t\t\t\titem.NotificationTypeName = \"connection\";\r\n\t\t\t\t\t\tif (item.hasOwnProperty('Message')) {\r\n\t\t\t\t\t\t\tregexArr = values.requesterRegexObj.exec(item.Message);\r\n\t\t\t\t\t\t\titem.RequesterName = regexArr === null ? \"\" : regexArr[1];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//format count message\r\n\t\t\t\tdata.notificationCountMessage = (data.Data.length === 1) ? RESAAS.Localization.Global.NOTIFICATIONS_COUNT_MESSAGE_SINGULAR : generalUtilities.stringFormat(RESAAS.Localization.Global.NOTIFCATINOS_COUNT_MESSAGE_PLURAL, data.Data.length);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* show and hide activity indicator\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.showHideActivityIndicator = function (data) {\r\n\t\t\tvar action, notifications;\r\n\t\t\tnotifications = generalUtilities.prop(data, 'response.Data');\r\n\t\t\tvalues.notificationCount = generalUtilities.prop(data, 'response.Count');\r\n\t\t\taction = (notifications && notifications.length) ? 'addClass' : 'removeClass';\r\n\t\t\telements.connectionList.parent()[action]('re-nav-hasactivity');\r\n\t\t\telements.connectionList.parent().find('.js-notificationcount').html(values.notificationCount);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* decrease notification count\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.decrementActivityIndicator = function () {\r\n\t\t\tvalues.notificationCount--;\r\n\t\t\telements.connectionList.parent().find('.js-notificationcount').html(values.notificationCount);\r\n\r\n\t\t\tif (values.notificationCount <= 0) {\r\n\t\t\t\telements.connectionList.parent().removeClass('re-nav-hasactivity');\r\n\t\t\t}\r\n\t\t};\r\n\t\t//#endregion\r\n\r\n\t\t//#region pubsub event handlers\r\n\r\n\t\t/**\r\n\t\t* Connection response error handler\r\n\t\t* @param {object} e event\r\n\t\t* @param {object} data response data\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationConnectionError = function (e, data) {\r\n\t\t\tif (moduleUtilities.isOwnEvent(data, module.properties)) {\r\n\t\t\t\tpubsub.publish('loggly.error', { message: JSON.stringify(data) });\r\n\r\n\t\t\t\tpubsub.publish('uiAction.MessageAdd', {\r\n\t\t\t\t\t'message': RESAAS.Localization.Global.GENERIC_WEBSERVICE_ERROR_MESSAGE,\r\n\t\t\t\t\t'type': 'error'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Connection response success handler\r\n\t\t* @param {object} e event\r\n\t\t* @param {object} data response data\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationConnectionSuccess = function (e, data) {\r\n\t\t\tvar successMsg, res, $nItem;\r\n\r\n\t\t\t//decrease count\r\n\t\t\tmodule.private.decrementActivityIndicator();\r\n\r\n\t\t\t//if not own event exit\r\n\t\t\tif (!moduleUtilities.isOwnEvent(data, module.properties)) {\r\n\t\t\t\treturn false; \r\n\t\t\t}\r\n\r\n\t\t\t//hide notification\r\n\t\t\tres = data.response.SaveResult.Data;\r\n\r\n successMsg = generalUtilities.stringFormat('You’re Connected! Click here to start a conversation and explore new opportunities together!', res.KnownContactUserId);\r\n\r\n\t\t\t$nItem = elements.notificationListWrapper.find('[data-notificationid=\"' + data.notificationId + '\"]');\r\n\r\n\t\t\t$nItem.fadeOut(\"slow\", function () {\r\n\t\t\t\t$nItem.remove();\r\n\t\t\t});\r\n\r\n\t\t\tpubsub.publish('uiAction.MessageAdd', {\r\n\t\t\t\t'message': successMsg,\r\n\t\t\t});\r\n\r\n\t\t\tpubsub.publish('relationship.accepted', {\r\n\t\t\t\ttype: 'connection accepted',\r\n\t\t\t\trequester: data.requester,\r\n\t\t\t\treceiver: data.reciever,\r\n\t\t\t\telement: 'notifications',\r\n\t\t\t\tcontent: 'relationship accepted'\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationConnection = function (e, data) {\r\n\t\t\tvar success;\r\n\r\n\t\t\tsuccess = generalUtilities.prop(data, 'response.SaveResult.Success');\r\n\r\n\t\t\tif (!success) {\r\n\t\t\t\tmodule.private.handleDataNotificationConnectionError(e, data);\r\n\t\t\t} else {\r\n\t\t\t\tmodule.private.handleDataNotificationConnectionSuccess(e, data);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataConnectionNotificationBrowse = function (e, data) {\r\n\t\t\tif (moduleUtilities.isOwnEvent(data, module.properties)) {\r\n\t\t\t\tif (generalUtilities.prop(data, 'response.Data')) {\r\n\t\t\t\t\tmodule.private.handleDataConnectionNotificationBrowseSuccess(e, data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodule.private.handleDataConnectionNotificationBrowseError(e, data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataNotificationDelete = function (e, data) {\r\n\t\t\tif (generalUtilities.prop(data, 'response.HideNotificationForUserResult.Success')) {\r\n\t\t\t\tmodule.private.decrementActivityIndicator();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataConnectionNotificationBrowseSuccess = function (e, data) {\r\n\t\t\tvar response;\r\n\t\t\tresponse = generalUtilities.prop(data, 'response');\r\n\t\t\tresponse.Success = true;\r\n\r\n\t\t\tif (generalUtilities.prop(data, 'response.Count')) {\r\n\t\t\t\tmodule.private.massageData(response);\r\n\t\t\t}\r\n\r\n\t\t\tresponse.historyLink = 'connectionrequests';\r\n\t\t\tresponse.historyLinkText = RESAAS.Localization.Navigation.VIEW_CONNECTION_HISTORY;\r\n\t\t\tresponse.dismissAllowed = true;\r\n\t\t\tresponse.NoNotificationMessage = RESAAS.Localization.Navigation.TOOLBAR_NO_NEW_CONNECTION_REQUEST;\r\n response.showExpandNetworkMessage = true;\r\n\r\n if (response.Data.length > 0) {\r\n response.Data.forEach(function (notification) {\r\n if (generalUtilities.prop(notification, 'ContentMetadata.InvitationMessage')) {\r\n var message = notification.ContentMetadata.InvitationMessage;\r\n var isLongMessage = message.length > 200;\r\n notification.ContentMetadata.truncatedMessage = isLongMessage ? message.substring(0, 200) + '... ' : null;\r\n }\r\n });\r\n }\r\n\r\n\t\t\t//show/hide the activity indicator (red dot)\r\n\t\t\tmodule.private.showHideActivityIndicator(data);\r\n\r\n\t\t\t//inject the notification list\r\n elements.connectionList.html(notificationToolbarListCompiled(response));\r\n\r\n\r\n var seeMoreButtons = document.querySelectorAll('.js-invitation-message-see-more');\r\n if (seeMoreButtons.length > 0) {\r\n seeMoreButtons.forEach(function (button) {\r\n button.addEventListener('click', function () {\r\n var parent = this.closest('.re-notification-invitation-message');\r\n var fullMessage = parent.querySelector('.js-invitation-message-full');\r\n var truncatedMessage = parent.querySelector('.js-invitation-message-truncated');\r\n fullMessage.style.display = 'block';\r\n truncatedMessage.style.display = 'none';\r\n });\r\n });\r\n }\r\n\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handles error types and publishes to loggly.\r\n\t\t* @param {object} e The pubsub event.\r\n\t\t* @param {object} data Data object from service.\r\n\t\t*/\r\n\t\tmodule.private.handleDataConnectionNotificationBrowseError = function (e, data) {\r\n\t\t\tvar status, errMsg;\r\n\r\n\t\t\tstatus = generalUtilities.prop(data, 'response.status');\r\n\t\t\tswitch (status) {\r\n\t\t\t\tcase '401':\r\n\t\t\t\t\terrMsg = RESAAS.Localization.Global.UNAUTHORIZED_USER_ERROR_MESSAGE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '500':\r\n\t\t\t\t\terrMsg = RESAAS.Localization.Global.GENERIC_WEBSERVICE_ERROR_MESSAGE\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\terrMsg = RESAAS.Localization.Global.GENERIC_WEBSERVICE_ERROR_MESSAGE\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tpubsub.publish('loggly.error', { 'message': 'connection browse failed to retrieve results: ' + JSON.stringify(data.response) });\r\n\r\n\t\t\tpubsub.publishSync('uiAction.MessageAdd', {\r\n\t\t\t\t'message': errMsg,\r\n\t\t\t\t'type': 'error'\r\n\t\t\t});\r\n\t\t};\r\n\t\t//#endregion\r\n\r\n\t\t//#region dom event handlers\r\n\r\n\t\t/**\r\n\t\t* Connection delete click handler\r\n\t\t* @param {object} e event\r\n\t\t* \r\n\t\t*/\r\n\t\tmodule.private.handleNotificationConnectionDeleteClick = function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar requester, reciever, event;\r\n\t\t\treciever = [window.RESAAS.User2.FirstName, window.RESAAS.User2.LastName].join(\" \");\r\n\t\t\trequester = e.currentTarget.dataset.requestername;\r\n\t\t\tevent = e;\r\n\r\n\t\t\tsmoke.confirm(RESAAS.Localization.Global.SMOKE_HIDE_NOTIFICATION, function (e) {\r\n\t\t\t\tif (e) {\r\n\t\t\t\t\tpubsub.publish('relationship.dismissed', {\r\n\t\t\t\t\t\ttype: 'connection dismissed',\r\n\t\t\t\t\t\trequester: requester,\r\n\t\t\t\t\t\treceiver: reciever,\r\n\t\t\t\t\t\telement: 'notifications',\r\n\t\t\t\t\t\tcontent: 'relationship dismissed'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tpubsub.publish('uiAction.NotificationDelete', { notificationId: event.target.dataset.notificationid });\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}, { ok: RESAAS.Localization.Global.HIDE, cancel: RESAAS.Localization.Global.CANCEL_TEXT });\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle click on the action, connects the users\r\n\t\t* @param {object} e Click event\r\n\t\t*/\r\n\t\tmodule.private.handleNotificationConnectionClick = function (e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar requestOptions, request, serviceObject, nId, requester, reciever, cuId;\r\n\r\n\t\t\treciever = [window.RESAAS.User2.FirstName, window.RESAAS.User2.LastName].join(\" \");\r\n\t\t\trequester = e.currentTarget.dataset.requestername;\r\n\t\t\tnId = e.currentTarget.dataset.notificationid;\r\n\t\t\tcuId = e.currentTarget.dataset.creatoruserid;\r\n\r\n\t\t\trequestOptions = {\r\n\t\t\t\trequester: requester,\r\n\t\t\t\treciever: reciever,\r\n\t\t\t\tnotificationId: nId \r\n\t\t\t};\r\n\r\n\t\t\trequest = {\r\n\t\t\t\tcontact: {\r\n\t\t\t\t\tKnownContactUserId: cuId,\r\n\t\t\t\t\tRelationships: [{\r\n\t\t\t\t\t\tType: relationshiptypesData.browse().Connection,\r\n\t\t\t\t\t\tAction: 0\r\n\t\t\t\t\t}]\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tserviceObject = moduleUtilities.createServiceObject(request, module.properties, requestOptions);\r\n\r\n\t\t\tpubsub.publish('uiHas.ConnectionAdd', serviceObject);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Publish a notification browse request\r\n\t\t*/\r\n\t\tmodule.private.notificationConnectionBrowse = function () {\r\n\t\t\tvar request, requestOptions, serviceObject, notificationTypes;\r\n\t\t\t//seen in the request/response but not passed to the webservice (same as module.properties)\r\n\t\t\trequestOptions = {};\r\n\t\t\tnotificationTypes = notificationsEnumData.browse();\r\n\t\t\t//sent to webservice\r\n\t\t\trequest = {\r\n\t\t\t\tIncludeNotificationTypes: [notificationTypes.InviteToConnectNotification],\r\n\t\t\t\tRecordCount: 10\r\n\t\t\t};\r\n\r\n\t\t\tserviceObject = moduleUtilities.createServiceObject(request, module.properties, requestOptions);\r\n\r\n\t\t\t//service needs to be using publish2\r\n\t\t\tpubsub.publish('uiNeeds.NotificationBrowse2', serviceObject);\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t* Handle click on the connection icon, hide/shows notification list\r\n\t\t* @param {object} e Click event\r\n\t\t*/\r\n\t\tmodule.private.handleConnectionIconClick = function (e) {\r\n\r\n\r\n\t\t\tpubsub.publish('mixpanel.Intent', {\r\n\t\t\t\ttype: 'open connection notifications dropdown'\r\n\t\t\t});\r\n\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif ($(e.currentTarget).next(selectors.notificationList).is(':visible')) {\r\n\t\t\t\t\tmodule.private.notificationConnectionBrowse();\r\n\t\t\t\t}\r\n\t\t\t}, 0);\r\n\t\t};\r\n\r\n\t\tmodule.private.handleFindAgentClick = function handleUpsellClick(e) {\r\n\t\t\tif (generalUtilities.prop(window, 'RESAAS.MixPanel.trackEvent')) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tRESAAS.MixPanel.trackEvent(\r\n\t\t\t\t\t'Intent',\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: e.target.getAttribute('data-mixpanel-type'),\r\n\t\t\t\t\t\tfrom: e.target.getAttribute('data-mixpanel-from')\r\n\t\t\t\t\t},\r\n\t\t\t\t\te.target.getAttribute('href')\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//#endregion\r\n\r\n\t\t/**\r\n\t\t* Initiates the module, creates a guid and binds dom events.\r\n\t\t* @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t* @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t\t*/\r\n\t\tmodule.private.init = function (e, data) {\r\n\t\t\tvar html;\r\n\r\n\t\t\t//module config\r\n\t\t\tmodule.properties.guid = (data && data.guid) ? data.guid : generalUtilities.uuid();\r\n\r\n\t\t\t//elements\r\n\t\t\telements.body = $('body');\r\n\t\t\telements.notificationListWrapper = $(selectors.notificationListWrapper);\r\n\t\t\telements.connectionWrapper = $(selectors.connectionWrapper);\r\n\t\t\telements.connectionList = $(selectors.connectionList);\r\n\r\n\t\t\t//moment\r\n\t\t\tgeneralUtilities.configureMoment(moment);\r\n\r\n\t\t\t//inject pending message\r\n\t\t\telements.connectionList.html(notificationToolbarListCompiled({ pendingMessage: true }));\r\n\r\n\t\t\t//get count from dom\r\n\t\t\tmodule.private.getNotificationCountFromDom();\r\n\r\n\t\t\t//dom event binding\r\n\t\t\telements.notificationListWrapper.on('click', selectors.notificationConnect, module.private.handleNotificationConnectionClick);\r\n\t\t\telements.notificationListWrapper.on('click', selectors.notificationConnectDismiss, module.private.handleNotificationConnectionDeleteClick);\r\n\t\t\telements.connectionWrapper.on('click', selectors.connectionIcon, module.private.handleConnectionIconClick);\r\n\t\t\telements.notificationListWrapper.on('click', '.re-notification-expand-network .re-btn', module.private.handleFindAgentClick);\r\n\t\t};\r\n\r\n\t\t//#region external event bindings\r\n\r\n\t\tpubsub.subscribe('data.ConnectionAdd', module.private.handleDataNotificationConnection);\r\n\t\tpubsub.subscribe('data.NotificationBrowse2', module.private.handleDataConnectionNotificationBrowse);\r\n\t\tpubsub.subscribe('data.NotificationDelete', module.private.handleDataNotificationDelete);\r\n\r\n\t\tmodule.private.init();\r\n\r\n\t\t//#endregion\r\n\r\n\t\t//expose API\r\n\t\treturn module;\r\n\t}\r\n);\r\n","define([\r\n\t'jquery',\r\n\t'pubsub',\r\n\t'moduleUtilities',\r\n\t'generalUtilities',\r\n\t'notificationToolbarListCompiled',\r\n\t'moment',\r\n\t'notificationsEnumData',\r\n\t'notificationService'\r\n], function notificationToolbarGenericListControl(\r\n\t$,\r\n\tpubsub,\r\n\tmoduleUtilities,\r\n\tgeneralUtilities,\r\n\tnotificationToolbarListCompiled,\r\n\tmoment,\r\n\tnotificationsEnumData\r\n) {\r\n\t/**\r\n\t * re_notification_list_control\r\n\t * @exports notificationToolbarGenericListControl\r\n\t * @author John Allan\r\n\t */\r\n\r\n\t'use strict';\r\n\r\n\tvar module, selectors, elements, values;\r\n\r\n\tmodule = {};\r\n\tmodule.private = {};\r\n\tmodule.properties = {};\r\n\tselectors = {\r\n\t\tnotificationListWrapper: '.re-nav-notifications',\r\n\t\tnotificationList: '.js-notifications-list',\r\n\t\tnotificationIcon: '.js-notification'\r\n\t};\r\n\telements = {};\r\n\tvalues = {\r\n\t\trequesterRegexObj: /title=\"(.[^\"]+)\"/g,\r\n\t\tpositionScroll: 0\r\n\t};\r\n\r\n\t/**\r\n\t * Publish a notification browse request\r\n\t */\r\n\tmodule.private.notificationGenericBrowse = function notificationGenericBrowse() {\r\n\t\tvar request, requestOptions, serviceObject, notificationTypes;\r\n\t\t// seen in the request/response but not passed to the webservice (same as module.properties)\r\n\t\trequestOptions = {};\r\n\t\tnotificationTypes = notificationsEnumData.browse();\r\n\r\n\t\t// sent to webservice\r\n\t\trequest = {\r\n\t\t\tRecordCount: 10,\r\n\t\t\tIncludeDismissed: true,\r\n\t\t\tExcludeNotificationTypes: [\r\n\t\t\t\tnotificationTypes.InviteToConnectNotification,\r\n\t\t\t\tnotificationTypes.InviteToSellingCommunityNotification\r\n\t\t\t]\r\n\t\t};\r\n\t\tserviceObject = moduleUtilities.createServiceObject(request, module.properties, requestOptions);\r\n\r\n\t\t// service needs to be using publish2\r\n\t\tpubsub.publish('uiNeeds.NotificationBrowse2', serviceObject);\r\n\t};\r\n\r\n\t/**\r\n\t * massage data in irder to prettify date and format count message\r\n\t * @param {object} data Data object from service.\r\n\t */\r\n\tmodule.private.massageData = function massageData(data) {\r\n\t\tvar banner;\r\n\t\tif (Array.isArray(data.Data)) {\r\n\t\t\tdata.Data.forEach(function dataDataForEach(item) {\r\n\t\t\t\t// prettify/relativize dates\r\n\t\t\t\tif (item.hasOwnProperty('DateCreated')) {\r\n\t\t\t\t\tif (generalUtilities.prop(item, 'DateCreated')) {\r\n\t\t\t\t\t\titem.RelativeDate = moment(item.DateCreated + '+00:00').fromNow();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (item.hasOwnProperty('NotificationType')) {\r\n\t\t\t\t\titem.NotificationTypeName = 'generic';\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// format count message\r\n\t\t\tdata.notificationCountMessage =\r\n\t\t\t\tdata.Data.length === 1\r\n\t\t\t\t\t? RESAAS.Localization.Global.NOTIFICATIONS_COUNT_MESSAGE_SINGULAR\r\n\t\t\t\t\t: generalUtilities.stringFormat(\r\n\t\t\t\t\t\t\tRESAAS.Localization.Global.NOTIFCATINOS_COUNT_MESSAGE_PLURAL,\r\n\t\t\t\t\t\t\tdata.Data.length\r\n\t\t\t\t\t );\r\n\r\n\t\t\t// inject premium banner\r\n\t\t\tif (data.Data.length && generalUtilities.prop(window, 'RESAAS.Environment.Experience') !== \"commercial\") {\r\n\t\t\t\tbanner = { banner: true };\r\n\r\n\t\t\t\tif (!generalUtilities.prop(window, 'RESAAS.User2.ReferralPro') && !generalUtilities.prop(window, 'RESAAS.User2.PremiumPlusBadge')) {\r\n\t\t\t\t\tbanner.upsell = true;\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\telse if (generalUtilities.prop(window, 'RESAAS.User2.PremiumPlusBadge')){\r\n\t\t\t\t\tbanner.premiumplus = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdata.Data.splice(3, 0, banner);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t * @param {object} e The pubsub event.\r\n\t * @param {object} data Data object from service.\r\n\t */\r\n\tmodule.private.handleDataGenericNotificationBrowse = function handleDataGenericNotificationBrowse(e, data) {\r\n\t\tif (generalUtilities.prop(data, 'response.Data')) {\r\n\t\t\tmodule.private.handleDataGenericNotificationBrowseSuccess(e, data);\r\n\t\t} else {\r\n\t\t\tmodule.private.handleDataGenericNotificationBrowseError(e, data);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n\t * @param {object} e The pubsub event.\r\n\t * @param {object} data Data object from service.\r\n\t */\r\n\tmodule.private.handleDataGenericNotificationBrowseSuccess = function handleDataGenericNotificationBrowseSuccess(\r\n\t\te,\r\n\t\tdata\r\n\t) {\r\n\t\tvar response, notificationTypes, includedNotificationTypes;\r\n\r\n\t\tnotificationTypes = notificationsEnumData.browse();\r\n\t\tincludedNotificationTypes = generalUtilities.prop(data, 'request.IncludeNotificationTypes');\r\n\r\n\t\t// if connection requests are NOT the only notifications retrieved hide the unread indicator (red dot)\r\n\t\tif (\r\n\t\t\t!(\r\n\t\t\t\tincludedNotificationTypes &&\r\n\t\t\t\tincludedNotificationTypes.length === 1 &&\r\n\t\t\t\tincludedNotificationTypes.indexOf(notificationTypes.InviteToConnectNotification) === 0\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\telements.notificationList.parent().removeClass('re-nav-hasactivity');\r\n\t\t}\r\n\r\n\t\t// if not own event exit\r\n\t\tif (!moduleUtilities.isOwnEvent(data, module.properties)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// show notification list\r\n\t\tresponse = generalUtilities.prop(data, 'response');\r\n\t\tresponse.Success = true;\r\n\r\n\t\tif (generalUtilities.prop(data, 'response.Count')) {\r\n\t\t\tmodule.private.massageData(response);\r\n\t\t}\r\n\r\n\t\tresponse.historyLink = 'notifications';\r\n\t\tresponse.historyLinkText = RESAAS.Localization.Navigation.VIEW_NOTIFICATIONS_HISTORY;\r\n\t\tresponse.dismissAllowed = false;\r\n\t\tresponse.NoNotificationMessage = RESAAS.Localization.Global.TOOLBAR_NO_NEW_NOTIFICATIONS;\r\n\r\n\t\t// inject the notification list\r\n\t\telements.notificationList.html(notificationToolbarListCompiled(response));\r\n\t};\r\n\r\n\t/**\r\n\t * Handles error types and publishes to loggly.\r\n\t * @param {object} e The pubsub event.\r\n\t * @param {object} data Data object from service.\r\n\t */\r\n\tmodule.private.handleDataGenericNotificationBrowseError = function handleDataGenericNotificationBrowseError(e, data) {\r\n\t\tvar status, errMsg;\r\n\r\n\t\tif (moduleUtilities.isOwnEvent(data, module.properties)) {\r\n\t\t\tstatus = generalUtilities.prop(data, 'response.status');\r\n\t\t\tswitch (status) {\r\n\t\t\t\tcase '401':\r\n\t\t\t\t\terrMsg = RESAAS.Localization.Global.Unauthorized_USER_ERROR_MESSAGE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase '500':\r\n\t\t\t\t\terrMsg = RESAAS.Localization.Global.GENERIC_WEBSERVICE_ERROR_MESSAGE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\terrMsg = RESAAS.Localization.Global.GENERIC_WEBSERVICE_ERROR_MESSAGE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tpubsub.publish('loggly.error', {\r\n\t\t\t\tmessage: generalUtilities.stringFormat(\r\n\t\t\t\t\t'connection browse failed to retrieve results: {0}',\r\n\t\t\t\t\tJSON.stringify(data.response)\r\n\t\t\t\t)\r\n\t\t\t});\r\n\r\n\t\t\tpubsub.publish('uiAction.MessageAdd', {\r\n\t\t\t\tmessage: errMsg,\r\n\t\t\t\ttype: 'error'\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Handle click on the notification icon, hide/shows notification list\r\n\t * @param {object} e Click event\r\n\t */\r\n\tmodule.private.handleNotificationIconClick = function handleNotificationIconClick(e) {\r\n\t\t// Preventing scrolling mobile notification menu is open\r\n\t\tif (\r\n\t\t\t$(e.currentTarget)\r\n\t\t\t\t.parent()\r\n\t\t\t\t.hasClass('re-nav-open')\r\n\t\t) {\r\n\t\t\tvalues.positionScroll = elements.window.scrollTop();\r\n\t\t\telements.body.css({ top: '-' + values.positionScroll + 'px' });\r\n\t\t\telements.html.addClass('re-compact-overflow-y-hidden');\r\n\t\t} else {\r\n\t\t\telements.html.removeClass('re-compact-overflow-y-hidden');\r\n\t\t\telements.window.scrollTop(values.positionScroll);\r\n\t\t}\r\n\r\n\t\tpubsub.publish('mixpanel.Intent', {\r\n\t\t\ttype: 'open notifications dropdown'\r\n\t\t});\r\n\r\n\t\t// the timeout is here to ensure it happens at the bottom of the event stack\r\n\t\t// the tree control does the reveal before this check takes place which is why\r\n\t\t// we call the service if the list is visible and not the other way around\r\n\t\t// @john.allan\r\n\t\tsetTimeout(function iconClickTimeout() {\r\n\t\t\tif (\r\n\t\t\t\t$(e.currentTarget)\r\n\t\t\t\t\t.next(selectors.notificationList)\r\n\t\t\t\t\t.is(':visible')\r\n\t\t\t) {\r\n\t\t\t\tmodule.private.notificationGenericBrowse();\r\n\t\t\t}\r\n\t\t}, 0);\r\n\t};\r\n\r\n\tmodule.private.handleUpsellClick = function handleUpsellClick(e) {\r\n\t\tif (generalUtilities.prop(window, 'RESAAS.MixPanel.trackEvent')) {\r\n\t\t\te.preventDefault();\r\n\t\t\tRESAAS.MixPanel.trackEvent(\r\n\t\t\t\t'Intent',\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: e.target.getAttribute('data-mixpanel-type'),\r\n\t\t\t\t\tfrom: e.target.getAttribute('data-mixpanel-from')\r\n\t\t\t\t},\r\n\t\t\t\te.target.getAttribute('href')\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Initiates the module, creates a guid and binds dom events.\r\n\t * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n\t * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n\t */\r\n\tmodule.private.init = function init(e, data) {\r\n\t\t// module config\r\n\t\tmodule.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n\t\t// elements\r\n\t\telements.html = $('html');\r\n\t\telements.window = $(window);\r\n\t\telements.body = $('body');\r\n\t\telements.notificationListWrapper = $(selectors.notificationListWrapper);\r\n\t\telements.notificationList = $(selectors.notificationList);\r\n\r\n\t\t// moment\r\n\t\tgeneralUtilities.configureMoment(moment);\r\n\r\n\t\t// dom event binding\r\n\t\telements.notificationListWrapper.on(\r\n\t\t\t'click',\r\n\t\t\tselectors.notificationIcon,\r\n\t\t\tmodule.private.handleNotificationIconClick\r\n\t\t);\r\n\r\n\t\telements.notificationListWrapper.on('click', '.re-notification-upsell .re-btn', module.private.handleUpsellClick);\r\n\r\n\t\t// inject pending message\r\n\t\telements.notificationList.html(notificationToolbarListCompiled({ pendingMessage: true }));\r\n\t};\r\n\r\n\tpubsub.subscribe('data.NotificationBrowse2', module.private.handleDataGenericNotificationBrowse);\r\n\tpubsub.subscribe('uiAction.NotificationBrowse', module.private.notificationGenericBrowse);\r\n\r\n\tmodule.private.init();\r\n\r\n\t// expose API\r\n\treturn module;\r\n});\r\n","define([\n\t'pubsub', 'generalUtilities', 'stickySidebar'],\n\n\tfunction profileScrollControl(pubsub, generalUtilities) {\n\t\t'use strict';\n\t\t/**\n\t\t* re_profile_scroll_control\n\t\t* @exports profileScrollControl\n\t\t* @author John Allan\n\t\t*/\n\t\t// #region set up\n\n\t\tvar module, selectors, elements, values;\n\n\t\tmodule = {};\n\t\t/** @module */\n\t\tmodule.private = {};\n\t\tmodule.properties = {};\n\n\t\tselectors = {\n\t\t\tpageContent: '.component-tabs',\n\t\t\tpageContentUserView: '.col_main',\n\t\t\tcolumnContainer: '.js-column-container',\n\t\t\tstickySidebar: '.js-profile-stickysidebar',\n\t\t\tstickySidebarInner: '.js-profile-stickysidebar-inner',\n\t\t\tanonymousNavigation: '.re-page-navigation-anonymous',\n\t\t\tleftSideBar: '.col_left',\n\t\t\trightSideBar: '.col_right'\n\t\t};\n\n\t\telements = {};\n\t\tvalues = {};\n\n\t\t// #endregion\n\n\t\t// #region utilities\n\n\t\t/**\n\t\t* Sticks the ProfileSideBar.\n\t\t* @example\n\t\t* module.private.stickProfileSideBar();\n\t\t*/\n\t\tmodule.private.stickProfileSideBar = function stickProfileSideBar() {\n\t\t\tvar topSpacingAmount;\n\n\t\t\tif (values.profileSideBar) {\n\t\t\t\tmodule.private.unStickProfileSideBar();\n\t\t\t}\n\n\t\t\ttopSpacingAmount = document.querySelector(selectors.anonymousNavigation) ? 20 : 70;\n\t\t\t\n\t\t\t// setup sticky nav\n\t\t\tvalues.profileSideBar = new StickySidebar(selectors.stickySidebar, {\n\t\t\t\tcontainerSelector: selectors.columnContainer,\n\t\t\t\tinnerWrapperSelector: selectors.stickySidebarInner,\n\t\t\t\ttopSpacing: topSpacingAmount,\n\t\t\t\tbottomSpacing: 20,\n\t\t\t\t//based below on _variables.scss\r\n\t\t\t\t//$mediaquery-nav-compact-max: \"only screen and (max-width: 60em)\"; which is 960px\n\t\t\t\tminWidth: 960\n\t\t\t});\n\n\t\t\t// watch the ProfileSideBar and page for size changes\n\t\t\tif (elements.pageContent) {\n\t\t\t\tvalues.ro.observe(elements.pageContent);\n\t\t\t}\n\t\t\tvalues.ro.observe(elements.navContainerInnerInner);\n\t\t};\n\n\t\t/**\n\t\t* Updates the ProfileSideBar posiiton.\n\t\t* @example\n\t\t* module.private.updateProfileSideBar();\n\t\t*/\n\t\tmodule.private.updateProfileSideBar = function updateProfileSideBar() {\n\t\t\tif (values.profileSideBar) {\n\t\t\t\tvalues.profileSideBar.updateSticky();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t* Unsticks the ProfileSideBar removing all styles and event bindings.\n\t\t* @example\n\t\t* module.private.unStickProfileSideBar();\n\t\t*/\n\t\tmodule.private.unStickProfileSideBar = function unStickProfileSideBar() {\n\t\t\tif (values.profileSideBar) {\n\t\t\t\tvalues.profileSideBar.destroy();\n\t\t\t\tdelete values.profileSideBar;\n\t\t\t}\n\n\t\t\tif (elements.pageContent) {\n\t\t\t\tvalues.ro.unobserve(elements.pageContent);\n\t\t\t}\n\t\t\tvalues.ro.unobserve(elements.navContainerInnerInner);\n\t\t};\n\n\t\t// #endregion\n\n\t\t// #region pubsub event handlers\n\n\t\t/**\n\t\t* Handle layout mode based on window resize event\n\t\t*/\n\t\tmodule.private.updateProfileLayout = function updateProfileLayout(force) {\n\t\t\tvar isProTablet;\n\t\t\tisProTablet = false;\n\t\t\tif (Modernizr) {\r\n\t\t\t\tisProTablet = Modernizr.mq('only screen and (min-width: 960px) and (max-width:1200px)');\r\n\t\t\t}\n\n\t\t\t// append right side bar to sticky based on screen width\n\t\t\tif (elements.rightBar) {\n\t\t\t\tif (force === true || values.previousIsProTablet !== isProTablet) {\n\t\t\t\t\tvalues.previousIsProTablet = isProTablet;\n\t\t\t\t\tif (isProTablet) {\n\t\t\t\t\t\telements.stickyInner.insertAdjacentElement('beforeend', elements.rightBar);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\telements.leftBar.insertAdjacentElement('afterend', elements.rightBar);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// #endregion\n\n\t\t/**\n\t\t* Initiates the module, creates a guid and binds dom events.\n\t\t* @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\n\t\t* @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\n\t\t*/\n\t\tmodule.private.init = function init(e, data) {\n\t\t\tvar navigationState;\n\n\t\t\tif (!window.requestAnimationFrame || !Function.prototype.bind) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\telements.window = $(window);\n\t\t\telements.rightBar = document.querySelector(selectors.rightSideBar);\n\t\t\telements.leftBar = document.querySelector(selectors.leftSideBar);\n\t\t\telements.stickyInner = document.querySelector(selectors.stickySidebarInner);\n\n\t\t\t// module config\n\t\t\tmodule.properties.guid = (data && data.guid) ? data.guid : generalUtilities.uuid();\n\n\t\t\t// get current page state\n\t\t\telements.stickySidebar = document.querySelector(selectors.stickySidebar);\n\t\t\tnavigationState = generalUtilities.getNavigationState();\n\n\t\t\t// if sticky sideBar exists\n\t\t\tif (elements.stickySidebar) {\n\t\t\t\t// create resize observer\n\t\t\t\tvalues.ro = new ResizeObserver(function (entries, observer) {\n\t\t\t\t\tmodule.private.updateProfileSideBar();\n\t\t\t\t});\n\n\t\t\t\t// find DOM elements\n\t\t\t\tif (window.pageType === \"activity-feed\") {\n\t\t\t\t\telements.pageContent = document.querySelector(selectors.pageContent);\n\t\t\t\t} else {\n\t\t\t\t\telements.pageContent = document.querySelector(selectors.pageContentUserView);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\telements.navContainerInnerInner = document.querySelector(selectors.stickySidebarInner);\n\t\t\t\tmodule.private.stickProfileSideBar();\n\t\t\t}\n\n\t\t\tmodule.private.updateProfileLayout(true);\n\t\t\telements.window.off('resize.ProfileScrollControl')\n\t\t\t\t.on('resize.ProfileScrollControl', generalUtilities.debounce(module.private.updateProfileLayout,100));\n\t\t};\n\n\t\t// #region external event bindings\n\n\t\tmodule.private.init();\n\n\t\t// #endregion\n\n\t\t// expose API\n\t\treturn module;\n\t}\n);\n","/**\r\n * @fileOverview re_publicuserlistings_initialiser.js\r\n *\r\n * @author May Montazer\r\n *\r\n */\r\n\r\ndefine([\r\n 'generalUtilities',\r\n 'navigationControl',\r\n 'notificationsDrawerControl',\r\n 'mixpanelControl',\r\n 'languageControl',\r\n 'profileScrollControl',\r\n 'shareWidgetControl',\r\n 'trackPhoneNumberUtilities'\r\n], function publicUserListingsInitialiser(generalUtilities) {\r\n 'use strict';\r\n\r\n var module;\r\n\r\n module = {};\r\n module.private = {};\r\n\r\n module.CONTROL_ID = generalUtilities.uuid();\r\n\r\n return module;\r\n});\r\n","define(['pubsub', 'ajaxUtility'],\n\n\tfunction (pubsub, ajaxUtility) {\n\t\t'use strict';\n\n\t\tfunction uiHasConnectionAdd(e, data) {\n\t\t\tvar config;\n\n\t\t\tconfig = {\n\t\t\t\t'method': 'POST',\n\t\t\t\t'url': '/Services/ContactService.svc/json/Save'\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\n\t\t}\n\n\t\tfunction uiNeedsConnectionBrowse(e, data) {\r\n\t\t\tvar config;\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'GET',\n\t\t\t\t'url': '/Services/api/contacts/relationships'\r\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\r\n\t\t}\n\n\t\tpubsub.subscribe('uiHas.ConnectionAdd', uiHasConnectionAdd);\n\t\tpubsub.subscribe('uiNeeds.ConnectionBrowse', uiNeedsConnectionBrowse);\n\t}\n\n);","define(['jquery', 'pubsub', 'ajaxUtility', 'mixpanelControl'],\r\n\r\n\tfunction ($, pubsub, ajaxUtility) {\r\n\t\t'use strict';\r\n\r\n\r\n\t\tfunction updateUserLastActiveDate(e, data) {\r\n\t\t\tvar config;\r\n\r\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'GET',\r\n\t\t\t\t'url': '/services/api/contentreach/ping'\r\n\t\t\t};\r\n\r\n\t\t\tajaxUtility.publish2(e, data, config);\r\n\t\t}\r\n\r\n\t\tpubsub.subscribe('uiHas.UserLastActiveDate', updateUserLastActiveDate);\r\n\t}\r\n\r\n);","define(['pubsub', 'ajaxUtility'],\r\n\r\n\tfunction (pubsub, ajaxUtility) {\r\n\t\t'use strict';\r\n\r\n\t\tfunction uiNeedsMissedReblasts(e, data) {\r\n\t\t\tvar config;\r\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'GET',\r\n\t\t\t\t'url': '/Services/Api/MissedReblasts',\r\n\t\t\t};\r\n\r\n\t\t\tajaxUtility.publish2(e, data, config);\r\n\t\t}\r\n\r\n\t\tpubsub.subscribe('uiNeeds.MissedReblastsBrowse', uiNeedsMissedReblasts);\r\n\r\n\t}\r\n\r\n);","define(['pubsub', 'ajaxUtility', 'generalUtilities'],\n\n\tfunction notificationService(pubsub, ajaxUtility, generalUtilities) {\n\n\t\tfunction uiNeedsNotificationBrowse(e, data) {\r\n\t\t\tvar config;\n\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'GET',\n\t\t\t\t'url': '/Services/MainService.svc/json/GetNotificationsForUser'\r\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\r\n\t\t}\n\n\n\t\tfunction uiNeedsNotificationBrowse2(e, data) {\r\n\t\t\tvar config;\n\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'GET',\n\t\t\t\t'url': '/Services/api/notifications'\r\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\r\n\t\t}\n\n\t\tfunction uiHasNotificationDelete(e, data) {\r\n\t\t\tvar config;\n\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'POST',\n\t\t\t\t'url': '/Services/MainService.svc/json/HideNotificationForUser'\r\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\n\n\t\t}\n\n\t\tfunction uiHasNotificationVisit(e, data) {\r\n\t\t\tvar config;\n\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'POST',\n\t\t\t\t'url': '/Services/api/notifications/visit'\r\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\n\n\t\t}\n\n\t\tfunction uiNeedsNotificationUnseen(e, data) {\r\n\t\t\tvar config;\n\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'GET',\n\t\t\t\t'url': '/Services/api/notifications/unseen'\r\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\n\n\t\t}\n\n\t\tfunction uiHasNotificationWebForm(e, data) {\r\n\t\t\tvar config, reason;\n\t\t\t\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'POST',\n\t\t\t\t'url': '/Services/api/notifications/webformcomplete?type=1'\r\n\t\t\t};\n\t\t\treason = generalUtilities.prop(data, 'request.reason');\n\n\t\t\tif (reason === 'instantref_success') {\n\t\t\t\tconfig.url = '/Services/api/notifications/webformcomplete?type=2';\n\t\t\t}\n\t\t\telse if (reason === 'instantref_cancel') {\n\t\t\t\tconfig.url = '/Services/api/notifications/webformcomplete?type=3';\n\t\t\t}\n\n\n\t\t\tajaxUtility.publish2(e, data, config);\n\t\t}\n\n\t\tfunction uiHasNotificationPhoneView(e, data) {\r\n\t\t\tvar config;\n\n\t\t\tconfig = {\r\n\t\t\t\t'method': 'POST',\n\t\t\t\t'url': '/Services/api/notifications/phoneview'\r\n\t\t\t};\n\n\t\t\tajaxUtility.publish2(e, data, config);\n\n\t\t}\n\n\t\tpubsub.subscribe('uiNeeds.NotificationBrowse', uiNeedsNotificationBrowse);\n\t\tpubsub.subscribe('uiNeeds.NotificationBrowse2', uiNeedsNotificationBrowse2);\n\t\tpubsub.subscribe('uiHas.NotificationDelete', uiHasNotificationDelete);\r\n\t\tpubsub.subscribe('uiHas.NotificationVisit', uiHasNotificationVisit);\r\n\t\tpubsub.subscribe('uiHas.NotificationWebForm', uiHasNotificationWebForm);\r\n\t\tpubsub.subscribe('uiNeeds.NotificationUnseen', uiNeedsNotificationUnseen);\n\t\tpubsub.subscribe('uiNeeds.NotificationPhoneView', uiHasNotificationPhoneView);\n\t}\n\n);\n","define(['Handlebars', 'text!shareWidgetTemplate'],\r\n\r\n\tfunction (Handlebars, shareWidgetTemplate) {\r\n\t\t'use strict';\r\n\r\n\t\treturn Handlebars.compile(shareWidgetTemplate);\r\n\t}\r\n\r\n);","define(['Handlebars', 'text!genericMessageDrawerTemplate'],\r\n\r\n\tfunction (Handlebars, genericMessageDrawerTemplate) {\r\n\t\t'use strict';\r\n\r\n\t\treturn Handlebars.compile(genericMessageDrawerTemplate);\r\n\t}\r\n\r\n);","define(['Handlebars', 'text!notificationToolbarListTemplate'],\r\n\r\n\tfunction (Handlebars, notificationToolbarListTemplate) {\r\n\t\t'use strict';\r\n\r\n\t\tvar h = Handlebars.compile(notificationToolbarListTemplate);\r\n\r\n\t\treturn h; \r\n\t}\r\n\r\n);","/**\r\n * @fileOverview re_userlastactivedate_control.js\r\n *\r\n * @author May Montazer\r\n *\r\n * @events\r\n * Subscribe\r\n * 'uiHas.UserLastActiveDate\r\n */\r\n\r\ndefine(['jquery', 'pubsub', 'generalUtilities', 'updateUserLastActiveDateService'], function(\r\n $,\r\n pubsub,\r\n generalUtilities\r\n) {\r\n 'use strict';\r\n\r\n var module;\r\n\r\n module = {};\r\n module.private = {};\r\n module.properties = {};\r\n\r\n //#endregion\r\n\r\n //#region utilities\r\n\r\n /**\r\n * set the UserLastActiveTime session storage .\r\n * @param {object} data The success status data.\r\n */\r\n module.private.handleUserLastActiveDateSuccess = function() {\r\n if (window.Modernizr && window.Modernizr.sessionstorage) {\r\n sessionStorage.setItem('UserLastActiveTime', new Date().getTime());\r\n }\r\n };\r\n\r\n /**\r\n * Handle error\r\n * @param {object} e The pubsub event.\r\n * @param {object} data The UserrrLastActiveDate data.\r\n */\r\n module.private.handleUserLastActiveDateError = function(e, data) {\r\n pubsub.publish('loggly.error', {\r\n message: generalUtilities.stringFormat('User Last Active Date update is failed {0}', JSON.stringify(data))\r\n });\r\n };\r\n\r\n /**\r\n * handle data from contentreach service\r\n * @param {object} data The UserLastActiveTime data.\r\n */\r\n module.private.handleUserLastActiveDate = function(e, data) {\r\n if (generalUtilities.prop(data, 'response.status') && data.response.status === 200) {\r\n module.private.handleUserLastActiveDateSuccess();\r\n } else {\r\n module.private.handleUserLastActiveDateError(e, data);\r\n }\r\n };\r\n\r\n /**\r\n * update the user last active date.\r\n */\r\n module.private.updateUserLastActiveDate = function() {\r\n var fiveMinCheck;\r\n\r\n if (window.Modernizr && window.Modernizr.sessionstorage && sessionStorage.getItem('UserLastActiveTime')) {\r\n fiveMinCheck = new Date().getTime() - sessionStorage.getItem('UserLastActiveTime');\r\n\r\n // checking 5 min is over\r\n if (fiveMinCheck > 300000) {\r\n pubsub.publish('uiHas.UserLastActiveDate', {});\r\n }\r\n } else {\r\n pubsub.publish('uiHas.UserLastActiveDate', {});\r\n }\r\n };\r\n\r\n //#endregion\r\n\r\n /**\r\n * Initiates the module, creates a guid and binds dom events.\r\n * @param {object} [e] The pubsub event, optional depending module is self init or by pubsub event.\r\n * @param {object} [data] Data passed in by pubsub event, optional depending module is self init or by pubsub event.\r\n */\r\n module.private.init = function() {\r\n if (generalUtilities.prop(window, 'RESAAS.User2.UserId')) {\r\n module.private.updateUserLastActiveDate();\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n //#region external event bindings\r\n\r\n module.private.init();\r\n\r\n pubsub.subscribe('data.UserLastActiveDate', module.private.handleUserLastActiveDate);\r\n\r\n //#endregion\r\n\r\n //expose API\r\n return module;\r\n});\r\n","/**\r\n * re_track_phonenumber.js\r\n * @author May Montazer\r\n */\r\ndefine(['jquery', 'pubsub', 'generalUtilities', 'moduleUtilities'], function(\r\n $,\r\n pubsub,\r\n generalUtilities,\r\n moduleUtilities\r\n) {\r\n //set up\r\n //-------------------------------------------\r\n\r\n 'use strict';\r\n\r\n var module, selectors, values, elements;\r\n\r\n module = {};\r\n module.private = {};\r\n module.properties = {};\r\n\r\n selectors = {};\r\n elements = {};\r\n values = {};\r\n\r\n selectors.phoneNumberBtn = '.js-phone-track';\r\n\r\n //event handlers\r\n //-------------------------------------------\r\n\r\n /**\r\n * handleTrackPhone\r\n * @param {object} e event\r\n * @param {object} data response data\r\n */\r\n module.private.handleTrackPhone = function(userId) {\r\n var requestOptions, request, serviceObject;\r\n\r\n requestOptions = {};\r\n\r\n request = { targetUserId: userId };\r\n\r\n serviceObject = moduleUtilities.createServiceObject(request, module.properties, requestOptions);\r\n\r\n pubsub.publish('uiNeeds.NotificationPhoneView', serviceObject);\r\n };\r\n\r\n /**\r\n * Handle data event returned from service, determines success of fail and calls the corresponding function.\r\n * @param {object} e The pubsub event.\r\n * @param {object} data Data object from service.\r\n */\r\n module.private.handleDataTrackPhone = function(e, data) {\r\n var status;\r\n status = generalUtilities.prop(data, 'response.status');\r\n if (status !== 200) {\r\n pubsub.publish('loggly.error', {\r\n message: 'send notification phone view is failed - pageType: ' + window.pageType + JSON.stringify(data)\r\n });\r\n }\r\n };\r\n\r\n module.private.trackPhoneNumber = function revealPhoneNumber(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (\r\n $(e.currentTarget)\r\n .find('span')\r\n .hasClass('js-btn-reveal-phone')\r\n ) {\r\n var dataContext = e.currentTarget.dataset.context;\r\n var dataPhoneNumber = e.currentTarget.dataset.phonenumber;\r\n e.currentTarget.innerText = dataPhoneNumber;\r\n e.currentTarget.href = generalUtilities.stringFormat('tel:{0}', dataPhoneNumber);\r\n $(e.currentTarget)\r\n .find('span')\r\n .removeClass('js-btn-reveal-phone');\r\n\r\n // send a notfication\r\n module.private.handleTrackPhone(e.currentTarget.dataset.userid);\r\n\r\n // mixpanel\r\n var mixData = {\r\n type: 'reveal phone'\r\n };\r\n\r\n if (dataContext) {\r\n mixData.context = dataContext;\r\n }\r\n\r\n pubsub.publish('mixpanel.Intent', mixData);\r\n }\r\n };\r\n\r\n module.private.init = function(e, data) {\r\n var dateCreated;\r\n\r\n dateCreated = generalUtilities.prop(window, 'RESAAS.User2.CreatedDate');\r\n\r\n //set values\r\n module.properties.guid = data && data.guid ? data.guid : generalUtilities.uuid();\r\n\r\n elements.body = $('.re-page-outer-wrapper');\r\n\r\n //set internal event bindings\r\n elements.body.on('click', selectors.phoneNumberBtn, module.private.trackPhoneNumber);\r\n };\r\n\r\n //external event bindings\r\n //-------------------------------------------\r\n\r\n pubsub.subscribe('data.NotificationPhoneView', module.private.handleDataTrackPhone);\r\n\r\n module.private.init();\r\n\r\n //expose API\r\n //-------------------------------------------\r\n return module;\r\n});\r\n","/**\r\n * sticky-sidebar - A JavaScript plugin for making smart and high performance.\r\n * @version v3.3.1\r\n * @link https://github.com/abouolia/sticky-sidebar\r\n * @author Ahmed Bouhuolia\r\n * @license The MIT License (MIT)\r\n**/\r\n!function (t, e) { \"object\" == typeof exports && \"undefined\" != typeof module ? e(exports) : \"function\" == typeof define && define.amd ? define([\"exports\"], e) : e(t.StickySidebar = {}) }(this, function (t) { \"use strict\"; \"undefined\" != typeof window ? window : \"undefined\" != typeof global ? global : \"undefined\" != typeof self && self; var e, i, n = (function (t, e) { (function (t) { Object.defineProperty(t, \"__esModule\", { value: !0 }); var l, n, e = function () { function n(t, e) { for (var i = 0; i < e.length; i++) { var n = e[i]; n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n) } } return function (t, e, i) { return e && n(t.prototype, e), i && n(t, i), t } }(), i = (l = \".stickySidebar\", n = { topSpacing: 0, bottomSpacing: 0, containerSelector: !1, innerWrapperSelector: \".inner-wrapper-sticky\", stickyClass: \"is-affixed\", resizeSensor: !0, minWidth: !1 }, function () { function c(t) { var e = this, i = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}; if (function (t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") }(this, c), this.options = c.extend(n, i), this.sidebar = \"string\" == typeof t ? document.querySelector(t) : t, void 0 === this.sidebar) throw new Error(\"There is no specific sidebar element.\"); this.sidebarInner = !1, this.container = this.sidebar.parentElement, this.affixedType = \"STATIC\", this.direction = \"down\", this.support = { transform: !1, transform3d: !1 }, this._initialized = !1, this._reStyle = !1, this._breakpoint = !1, this.dimensions = { translateY: 0, maxTranslateY: 0, topSpacing: 0, lastTopSpacing: 0, bottomSpacing: 0, lastBottomSpacing: 0, sidebarHeight: 0, sidebarWidth: 0, containerTop: 0, containerHeight: 0, viewportHeight: 0, viewportTop: 0, lastViewportTop: 0 }, [\"handleEvent\"].forEach(function (t) { e[t] = e[t].bind(e) }), this.initialize() } return e(c, [{ key: \"initialize\", value: function () { var i = this; if (this._setSupportFeatures(), this.options.innerWrapperSelector && (this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector), null === this.sidebarInner && (this.sidebarInner = !1)), !this.sidebarInner) { var t = document.createElement(\"div\"); for (t.setAttribute(\"class\", \"inner-wrapper-sticky\"), this.sidebar.appendChild(t); this.sidebar.firstChild != t;)t.appendChild(this.sidebar.firstChild); this.sidebarInner = this.sidebar.querySelector(\".inner-wrapper-sticky\") } if (this.options.containerSelector) { var e = document.querySelectorAll(this.options.containerSelector); if ((e = Array.prototype.slice.call(e)).forEach(function (t, e) { t.contains(i.sidebar) && (i.container = t) }), !e.length) throw new Error(\"The container does not contains on the sidebar.\") } \"function\" != typeof this.options.topSpacing && (this.options.topSpacing = parseInt(this.options.topSpacing) || 0), \"function\" != typeof this.options.bottomSpacing && (this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0), this._widthBreakpoint(), this.calcDimensions(), this.stickyPosition(), this.bindEvents(), this._initialized = !0 } }, { key: \"bindEvents\", value: function () { window.addEventListener(\"resize\", this, { passive: !0, capture: !1 }), window.addEventListener(\"scroll\", this, { passive: !0, capture: !1 }), this.sidebar.addEventListener(\"update\" + l, this), this.options.resizeSensor && \"undefined\" != typeof ResizeSensor && (new ResizeSensor(this.sidebarInner, this.handleEvent), new ResizeSensor(this.container, this.handleEvent)) } }, { key: \"handleEvent\", value: function (t) { this.updateSticky(t) } }, { key: \"calcDimensions\", value: function () { if (!this._breakpoint) { var t = this.dimensions; t.containerTop = c.offsetRelative(this.container).top, t.containerHeight = this.container.clientHeight, t.containerBottom = t.containerTop + t.containerHeight, t.sidebarHeight = this.sidebarInner.offsetHeight, t.sidebarWidth = this.sidebarInner.offsetWidth, t.viewportHeight = window.innerHeight, t.maxTranslateY = t.containerHeight - t.sidebarHeight, this._calcDimensionsWithScroll() } } }, { key: \"_calcDimensionsWithScroll\", value: function () { var t = this.dimensions; t.sidebarLeft = c.offsetRelative(this.sidebar).left, t.viewportTop = document.documentElement.scrollTop || document.body.scrollTop, t.viewportBottom = t.viewportTop + t.viewportHeight, t.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft, t.topSpacing = this.options.topSpacing, t.bottomSpacing = this.options.bottomSpacing, \"function\" == typeof t.topSpacing && (t.topSpacing = parseInt(t.topSpacing(this.sidebar)) || 0), \"function\" == typeof t.bottomSpacing && (t.bottomSpacing = parseInt(t.bottomSpacing(this.sidebar)) || 0), \"VIEWPORT-TOP\" === this.affixedType ? t.topSpacing < t.lastTopSpacing && (t.translateY += t.lastTopSpacing - t.topSpacing, this._reStyle = !0) : \"VIEWPORT-BOTTOM\" === this.affixedType && t.bottomSpacing < t.lastBottomSpacing && (t.translateY += t.lastBottomSpacing - t.bottomSpacing, this._reStyle = !0), t.lastTopSpacing = t.topSpacing, t.lastBottomSpacing = t.bottomSpacing } }, { key: \"isSidebarFitsViewport\", value: function () { var t = this.dimensions, e = \"down\" === this.scrollDirection ? t.lastBottomSpacing : t.lastTopSpacing; return this.dimensions.sidebarHeight + e < this.dimensions.viewportHeight } }, { key: \"observeScrollDir\", value: function () { var t = this.dimensions; if (t.lastViewportTop !== t.viewportTop) { var e = \"down\" === this.direction ? Math.min : Math.max; t.viewportTop === e(t.viewportTop, t.lastViewportTop) && (this.direction = \"down\" === this.direction ? \"up\" : \"down\") } } }, { key: \"getAffixType\", value: function () { this._calcDimensionsWithScroll(); var t = this.dimensions, e = t.viewportTop + t.topSpacing, i = this.affixedType; return e <= t.containerTop || t.containerHeight <= t.sidebarHeight ? (t.translateY = 0, i = \"STATIC\") : i = \"up\" === this.direction ? this._getAffixTypeScrollingUp() : this._getAffixTypeScrollingDown(), t.translateY = Math.max(0, t.translateY), t.translateY = Math.min(t.containerHeight, t.translateY), t.translateY = Math.round(t.translateY), t.lastViewportTop = t.viewportTop, i } }, { key: \"_getAffixTypeScrollingDown\", value: function () { var t = this.dimensions, e = t.sidebarHeight + t.containerTop, i = t.viewportTop + t.topSpacing, n = t.viewportBottom - t.bottomSpacing, o = this.affixedType; return this.isSidebarFitsViewport() ? t.sidebarHeight + i >= t.containerBottom ? (t.translateY = t.containerBottom - e, o = \"CONTAINER-BOTTOM\") : i >= t.containerTop && (t.translateY = i - t.containerTop, o = \"VIEWPORT-TOP\") : t.containerBottom <= n ? (t.translateY = t.containerBottom - e, o = \"CONTAINER-BOTTOM\") : e + t.translateY <= n ? (t.translateY = n - e, o = \"VIEWPORT-BOTTOM\") : t.containerTop + t.translateY <= i && 0 !== t.translateY && t.maxTranslateY !== t.translateY && (o = \"VIEWPORT-UNBOTTOM\"), o } }, { key: \"_getAffixTypeScrollingUp\", value: function () { var t = this.dimensions, e = t.sidebarHeight + t.containerTop, i = t.viewportTop + t.topSpacing, n = t.viewportBottom - t.bottomSpacing, o = this.affixedType; return i <= t.translateY + t.containerTop ? (t.translateY = i - t.containerTop, o = \"VIEWPORT-TOP\") : t.containerBottom <= n ? (t.translateY = t.containerBottom - e, o = \"CONTAINER-BOTTOM\") : this.isSidebarFitsViewport() || t.containerTop <= i && 0 !== t.translateY && t.maxTranslateY !== t.translateY && (o = \"VIEWPORT-UNBOTTOM\"), o } }, { key: \"_getStyle\", value: function (t) { if (void 0 !== t) { var e = { inner: {}, outer: {} }, i = this.dimensions; switch (t) { case \"VIEWPORT-TOP\": e.inner = { position: \"fixed\", top: i.topSpacing, left: i.sidebarLeft - i.viewportLeft, width: i.sidebarWidth }; break; case \"VIEWPORT-BOTTOM\": e.inner = { position: \"fixed\", top: \"auto\", left: i.sidebarLeft, bottom: i.bottomSpacing, width: i.sidebarWidth }; break; case \"CONTAINER-BOTTOM\": case \"VIEWPORT-UNBOTTOM\": var n = this._getTranslate(0, i.translateY + \"px\"); e.inner = n ? { transform: n } : { position: \"absolute\", top: i.translateY, width: i.sidebarWidth } }switch (t) { case \"VIEWPORT-TOP\": case \"VIEWPORT-BOTTOM\": case \"VIEWPORT-UNBOTTOM\": case \"CONTAINER-BOTTOM\": e.outer = { height: i.sidebarHeight, position: \"relative\" } }return e.outer = c.extend({ height: \"\", position: \"\" }, e.outer), e.inner = c.extend({ position: \"relative\", top: \"\", left: \"\", bottom: \"\", width: \"\", transform: \"\" }, e.inner), e } } }, { key: \"stickyPosition\", value: function (t) { if (!this._breakpoint) { t = this._reStyle || t || !1, this.options.topSpacing, this.options.bottomSpacing; var e = this.getAffixType(), i = this._getStyle(e); if ((this.affixedType != e || t) && e) { var n = \"affix.\" + e.toLowerCase().replace(\"viewport-\", \"\") + l; for (var o in c.eventTrigger(this.sidebar, n), \"STATIC\" === e ? c.removeClass(this.sidebar, this.options.stickyClass) : c.addClass(this.sidebar, this.options.stickyClass), i.outer) { var s = \"number\" == typeof i.outer[o] ? \"px\" : \"\"; this.sidebar.style[o] = i.outer[o] + s } for (var r in i.inner) { var a = \"number\" == typeof i.inner[r] ? \"px\" : \"\"; this.sidebarInner.style[r] = i.inner[r] + a } var p = \"affixed.\" + e.toLowerCase().replace(\"viewport-\", \"\") + l; c.eventTrigger(this.sidebar, p) } else this._initialized && (this.sidebarInner.style.left = i.inner.left); this.affixedType = e } } }, { key: \"_widthBreakpoint\", value: function () { window.innerWidth <= this.options.minWidth ? (this._breakpoint = !0, this.affixedType = \"STATIC\", this.sidebar.removeAttribute(\"style\"), c.removeClass(this.sidebar, this.options.stickyClass), this.sidebarInner.removeAttribute(\"style\")) : this._breakpoint = !1 } }, { key: \"updateSticky\", value: function () { var t, e = this, i = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; this._running || (this._running = !0, t = i.type, requestAnimationFrame(function () { switch (t) { case \"scroll\": e._calcDimensionsWithScroll(), e.observeScrollDir(), e.stickyPosition(); break; case \"resize\": default: e._widthBreakpoint(), e.calcDimensions(), e.stickyPosition(!0) }e._running = !1 })) } }, { key: \"_setSupportFeatures\", value: function () { var t = this.support; t.transform = c.supportTransform(), t.transform3d = c.supportTransform(!0) } }, { key: \"_getTranslate\", value: function () { var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0, e = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 0, i = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0; return this.support.transform3d ? \"translate3d(\" + t + \", \" + e + \", \" + i + \")\" : !!this.support.translate && \"translate(\" + t + \", \" + e + \")\" } }, { key: \"destroy\", value: function () { window.removeEventListener(\"resize\", this, { capture: !1 }), window.removeEventListener(\"scroll\", this, { capture: !1 }), this.sidebar.classList.remove(this.options.stickyClass), this.sidebar.style.minHeight = \"\", this.sidebar.removeEventListener(\"update\" + l, this); var t = { inner: {}, outer: {} }; for (var e in t.inner = { position: \"\", top: \"\", left: \"\", bottom: \"\", width: \"\", transform: \"\" }, t.outer = { height: \"\", position: \"\" }, t.outer) this.sidebar.style[e] = t.outer[e]; for (var i in t.inner) this.sidebarInner.style[i] = t.inner[i]; this.options.resizeSensor && \"undefined\" != typeof ResizeSensor && (ResizeSensor.detach(this.sidebarInner, this.handleEvent), ResizeSensor.detach(this.container, this.handleEvent)) } }], [{ key: \"supportTransform\", value: function (t) { var i = !1, e = t ? \"perspective\" : \"transform\", n = e.charAt(0).toUpperCase() + e.slice(1), o = document.createElement(\"support\").style; return (e + \" \" + [\"Webkit\", \"Moz\", \"O\", \"ms\"].join(n + \" \") + n).split(\" \").forEach(function (t, e) { if (void 0 !== o[t]) return i = t, !1 }), i } }, { key: \"eventTrigger\", value: function (t, e, i) { try { var n = new CustomEvent(e, { detail: i }) } catch (t) { (n = document.createEvent(\"CustomEvent\")).initCustomEvent(e, !0, !0, i) } t.dispatchEvent(n) } }, { key: \"extend\", value: function (t, e) { var i = {}; for (var n in t) void 0 !== e[n] ? i[n] = e[n] : i[n] = t[n]; return i } }, { key: \"offsetRelative\", value: function (t) { var e = { left: 0, top: 0 }; do { var i = t.offsetTop, n = t.offsetLeft; isNaN(i) || (e.top += i), isNaN(n) || (e.left += n), t = \"BODY\" === t.tagName ? t.parentElement : t.offsetParent } while (t); return e } }, { key: \"addClass\", value: function (t, e) { c.hasClass(t, e) || (t.classList ? t.classList.add(e) : t.className += \" \" + e) } }, { key: \"removeClass\", value: function (t, e) { c.hasClass(t, e) && (t.classList ? t.classList.remove(e) : t.className = t.className.replace(new RegExp(\"(^|\\\\b)\" + e.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"), \" \")) } }, { key: \"hasClass\", value: function (t, e) { return t.classList ? t.classList.contains(e) : new RegExp(\"(^| )\" + e + \"( |$)\", \"gi\").test(t.className) } }, { key: \"defaults\", get: function () { return n } }]), c }()); t.default = i, window.StickySidebar = i })(e) }(e = { exports: {} }, e.exports), e.exports), o = (i = n) && i.__esModule && Object.prototype.hasOwnProperty.call(i, \"default\") ? i.default : i; t.default = o, t.__moduleExports = n, Object.defineProperty(t, \"__esModule\", { value: !0 }) });","module.exports = \"
\\r\\n\\t
\\r\\n\\t\\t
\\r\\n\\t\\t\\t{{#if facebook}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{LocalizeResource 'Global.SHAREWIDGET_ON_FACEBOOK'}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t\\t{{#if twitter}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{LocalizeResource 'Global.SHAREWIDGET_ON_TWITTER'}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t\\t{{#if linkedin}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{LocalizeResource 'Global.SHAREWIDGET_ON_LINKEDIN'}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t\\t{{#if pinterest}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{LocalizeResource 'Global.SHAREWIDGET_ON_PINTEREST'}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t\\t{{#if email}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{LocalizeResource 'Global.SHAREWIDGET_ON_EMAIL'}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t\\t{{#if inbox}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\t{{LocalizeResource 'Global.SHAREWIDGET_ON_INBOX'}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t\\t{{#unless sharePage}}\\r\\n\\t\\t\\t{{#if permalink}}\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t\\t{{/unless}}\\r\\n\\r\\n\\t\\t\\t{{#if sharePage}}\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t
\\r\\n\\t\\t\\t{{/if}}\\r\\n\\t\\t
\\r\\n\\t
\\r\\n
\"","module.exports = \"
  • \\r\\n\\t
    \\r\\n\\t\\r\\n\\t\\t
    \\r\\n\\t\\t\\t\\r\\n\\t\\t
    \\r\\n\\t\\t
    \\r\\n\\t\\t\\t

    {{Title}}

    \\r\\n\\t\\t\\t

    {{Body}}

    \\r\\n\\t\\t
    \\r\\n\\t
    \\r\\n
  • \"","module.exports = \"\\r\\n\\r\\n{{historyLinkText}}\"","module.exports = Pusher;","module.exports = jQuery;"],"names":["$","pubsub","generalUtilities","module","selectors","private","properties","navInboxContainer","inboxRedDot","animateRedDot","hasClass","addClass","setTimeout","removeClass","init","e","data","window","pageType","guid","uuid","prop","publish","channel","RESAAS","User2","UserPusherChannel","subscribe","Handlebars","genericMessageDrawerCompiled","elements","values","notificationsContainer","notificationsList","notificationItem","notificationClose","notificationDrawer","config","drawerContainer","join","handleDataPusher","ShowDrawerMessage","getNavigationState","isCompact","Event","createNotification","getIndexByMsgId","obj","i","index","length","NotificationId","Title","SenderFirstName","SenderLastName","Body","Message","NotificationDeepLink","ConversationDeepLink","addParamsToUrlQueryString","notificationId","MixpanelType","stringFormat","unshift","injectNotification","deleteNotification","drawerSize","autoDelete","prepend","ConversationId","fadeOut","this","remove","splice","timeToLive","handleNotificationClick","preventDefault","redirect","currentTarget","href","handleNotificationDismiss","dataset","notificationid","container","body","append","on","moduleUtilities","shareWidgetCompiled","shareButton","shareButtonEtAl","shareWidget","shareWidgetPosition","shareWidgetContent","shareAllListingsCheckbox","offset","isURL","url","test","getContentData","el","getAttribute","type","subType","sharePage","sharePageOverride","showpermalink","facebookAppId","applicationUrl","location","getViewModel","d","shareAllText","username","extend","sharePageInput","encodedHref","encodeURIComponent","facebook","twitter","linkedin","pinterest","email","inbox","permalink","external","indexOf","content","document","querySelector","Localization","Listings","USER_SHARE_ALL_LISTINGS_TEXT","innerHTML","SHARE_ALL_MY_LISTINGS_TEXT","shareAllUsersListingsText","getIdealPosition","origin","viewport","originRect","elRect","w","top","bottom","left","right","getBoundingClientRect","height","innerHeight","width","innerWidth","handleBodyClick","contentData","anchor","target","matches","closest","renderShareWidget","html","viewModel","idealPositionClass","widgetParent","widgetPosition","widgetContent","insertAdjacentHTML","parentElement","nextElementSibling","classList","add","addEventListener","event","handleSharePageCheckboxClick","Object","assign","checked","Element","prototype","msMatchesSelector","browse","activityListWrapper","activityPanel","activityLink","activityItems","newReblastsBtn","listenPusher","Environment","PusherNewReblastChannel","handleDataRealTimeNewReblast","$parent","newReblast","FeedId","filter","parent","find","each","$self","$text","text","parseInt","missedReblastsBrowse","request","requestOptions","serviceObject","createServiceObject","filterMissedReblastData","dataFilter","Array","isArray","response","forEach","item","MissedReblastCount","push","handleDataMissedReblasts","success","isOwnEvent","handleDataMissedReblastsSuccess","handleDataMissedReblastsError","filteredData","message","JSON","stringify","hideFeedsIndicator","dataId","attr","CONTROL_ID","navContainer","feedApp","groupCreate","handleGroupCreateClick","Modernizr","localstorage","localStorage","setItem","accordionOpen","accordion","toggleAccordion","experienceNav","handleToggleAccordionClick","$this","stopPropagation","not","siblings","slideUp","toggleClass","slideToggle","off","experiencesSubnav","experienceItem","experienceNotification","handleExperienceClick","arr","reblastUrl","isInternalLink","link","domainUrl","isActivityLink","targetExperience","currentExperience","redirectPageCB","split","targetexperience","hostname","setCookie","scrollTo","history","pushState","reload","validator","inviteIcon","inputHref","copyButton","inviteForm","inviteOption","inviteBtn","errorMessage","inviteWithEmailForm","constraints","InviteEmail","Navigation","INVITE_WITH_EMAIL_VALIDATION","presence","inviteClicked","context","copyInviteClicked","focus","select","setSelectionRange","execCommand","inviteOptionClicked","mixpaneltype","inviteBtnClicked","invalid","val","validate","showErrors","contact","Name","Email","Invite","disableAndWaitFor","handleDataInviteError","Global","GENERIC_WEBSERVICE_ERROR_MESSAGE","handleDataInviteSuccess","INVITE_AGENT_SUCCEEDED","handleDataInvite","returnUrl","value","hash","click","navMobile","navPrimary","navSecondary","mobileNavToggle","activityItem","positionScroll","navOpenClass","navItemOpenClass","closeMobileMenu","skipScrollReset","scrollTop","openMobileMenu","css","removeAttr","handleMobileToggleClick","opening","handleClickActivityItem","navMobileToggle","leftNavigation","pageContent","pageWrapper","stickySidebar","stickySidebarInner","stickNavigation","navigation","unStickNavigation","StickySidebar","containerSelector","innerWrapperSelector","topSpacing","bottomSpacing","ro","observe","navContainerInnerInner","updateNavigation","updateSticky","destroy","unobserve","handleUiActionNavigationStateChanged","navigationState","requestAnimationFrame","Function","bind","ResizeObserver","entries","observer","nav","navItem","primaryNavListItem","footer","activeClass","highlightClass","openClass","publishState","force","currentState","currentStateString","previousStateString","urlToNavSelectors","pathname","search","result","dashboard","domHash","activeTab","regexResult","currentReblastTab","urlQuery","groupUniquName","decodedUrl","secondary","replace","primary","queryStringToObject","ReturnUrl","decodeURIComponent","DefaultGroupUniqueName","isO","IsProfessional","match","ReferralDetails","ReferralType","setCurrentPage","activeClasses","currentSelectors","$selected","allLinks","children","slideDown","debounce","experienceSwitcher","navItemOpen","flyOutMenu","openSecondaryNavigation","animate","show","closeExperienceSwitcher","hide","closeSecondaryNavigation","handleSecondaryNavigation","next","handleNavigationClose","handleGenericNavClick","handleHtmlClick","handleDownloadAppClick","MixPanel","trackEvent","from","navItemPrimary","navSecondaryExperiences","navDialpad","downloadApp","ev","keyCode","notificationUnseenBrowse","handleDataNotificationUnseen","r","Connections","connectionIcon","innerText","Notifications","notificationIcon","HasNewInstantMessage","notificationsEnumData","notificationListWrapper","notificationDelete","handleDataNotificationDeleteError","handleDataNotificationDeleteSuccess","$nItem","handleDataNotificationDelete","handleNotificationDeleteClick","notificationListWrappers","markNotificationAsVisited","authenticated","handleDataNotificationVisitError","handleDataNotificationVisit","status","handleClick","$notification","visited","queryObject","mp_from","notificationToolbarListCompiled","smoke","relationshiptypesData","moment","connectionWrapper","notificationConnect","notificationConnectDismiss","connectionList","notificationCount","requesterRegexObj","getNotificationCountFromDom","massageData","regexArr","Data","map","hasOwnProperty","RelativeDate","DateCreated","fromNow","ActionLink","ACCEPT","NotificationTypeName","exec","RequesterName","notificationCountMessage","NOTIFICATIONS_COUNT_MESSAGE_SINGULAR","NOTIFCATINOS_COUNT_MESSAGE_PLURAL","showHideActivityIndicator","action","notifications","decrementActivityIndicator","handleDataNotificationConnectionError","handleDataNotificationConnectionSuccess","successMsg","res","SaveResult","KnownContactUserId","requester","receiver","reciever","element","handleDataNotificationConnection","handleDataConnectionNotificationBrowse","handleDataConnectionNotificationBrowseSuccess","handleDataConnectionNotificationBrowseError","Success","historyLink","historyLinkText","VIEW_CONNECTION_HISTORY","dismissAllowed","NoNotificationMessage","TOOLBAR_NO_NEW_CONNECTION_REQUEST","showExpandNetworkMessage","notification","ContentMetadata","InvitationMessage","isLongMessage","truncatedMessage","substring","seeMoreButtons","querySelectorAll","button","fullMessage","style","display","errMsg","UNAUTHORIZED_USER_ERROR_MESSAGE","publishSync","handleNotificationConnectionDeleteClick","FirstName","LastName","requestername","confirm","SMOKE_HIDE_NOTIFICATION","ok","HIDE","cancel","CANCEL_TEXT","handleNotificationConnectionClick","creatoruserid","Relationships","Type","Connection","Action","notificationConnectionBrowse","IncludeNotificationTypes","InviteToConnectNotification","RecordCount","handleConnectionIconClick","notificationList","is","handleFindAgentClick","configureMoment","pendingMessage","notificationGenericBrowse","notificationTypes","IncludeDismissed","ExcludeNotificationTypes","InviteToSellingCommunityNotification","banner","premiumplus","upsell","handleDataGenericNotificationBrowse","handleDataGenericNotificationBrowseSuccess","handleDataGenericNotificationBrowseError","includedNotificationTypes","VIEW_NOTIFICATIONS_HISTORY","TOOLBAR_NO_NEW_NOTIFICATIONS","Unauthorized_USER_ERROR_MESSAGE","handleNotificationIconClick","handleUpsellClick","pageContentUserView","columnContainer","anonymousNavigation","leftSideBar","rightSideBar","stickProfileSideBar","topSpacingAmount","profileSideBar","unStickProfileSideBar","minWidth","updateProfileSideBar","updateProfileLayout","isProTablet","mq","rightBar","previousIsProTablet","stickyInner","insertAdjacentElement","leftBar","ajaxUtility","publish2","reason","shareWidgetTemplate","compile","genericMessageDrawerTemplate","notificationToolbarListTemplate","handleUserLastActiveDateSuccess","sessionstorage","sessionStorage","Date","getTime","handleUserLastActiveDateError","handleUserLastActiveDate","updateUserLastActiveDate","getItem","phoneNumberBtn","handleTrackPhone","userId","targetUserId","handleDataTrackPhone","trackPhoneNumber","dataContext","dataPhoneNumber","phonenumber","userid","mixData","t","g","self","n","defineProperty","l","enumerable","configurable","writable","key","stickyClass","resizeSensor","c","arguments","TypeError","options","sidebar","Error","sidebarInner","affixedType","direction","support","transform","transform3d","_initialized","_reStyle","_breakpoint","dimensions","translateY","maxTranslateY","lastTopSpacing","lastBottomSpacing","sidebarHeight","sidebarWidth","containerTop","containerHeight","viewportHeight","viewportTop","lastViewportTop","initialize","_setSupportFeatures","createElement","setAttribute","appendChild","firstChild","slice","call","contains","_widthBreakpoint","calcDimensions","stickyPosition","bindEvents","passive","capture","ResizeSensor","handleEvent","offsetRelative","clientHeight","containerBottom","offsetHeight","offsetWidth","_calcDimensionsWithScroll","sidebarLeft","documentElement","viewportBottom","viewportLeft","scrollLeft","scrollDirection","Math","min","max","_getAffixTypeScrollingUp","_getAffixTypeScrollingDown","round","o","isSidebarFitsViewport","inner","outer","position","_getTranslate","getAffixType","_getStyle","toLowerCase","eventTrigger","s","a","p","removeAttribute","_running","observeScrollDir","supportTransform","translate","removeEventListener","minHeight","detach","charAt","toUpperCase","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","offsetTop","offsetLeft","isNaN","tagName","offsetParent","className","RegExp","get","default","exports","__esModule","__moduleExports","Pusher","jQuery"],"sourceRoot":""}