{"version":3,"file":"../../desktop/peoplemedia.js","sources":["desktop/peoplemedia.js"],"sourcesContent":["// has dependencies on jQuery and moment.js\r\nvar PeopleMedia = (function ($jq, moment) {\r\n \"use strict\";\r\n\r\n var Oid = \"PeopleMedia\";\r\n\r\n var _adReloadTimeout = null;\r\n var _resizeTimeout = null;\r\n var _listeningOnResize = false;\r\n var _adjustMainMarginTimeout = null;\r\n var _deviceTypeCookieName = \"DEVICEVIEWTYPE\";\r\n var _mobileDeviceType = \"mobile320x480\";\r\n var _desktopDeviceType = \"fullsite960w\";\r\n\r\n var _adjustMainMargin = function () {\r\n try {\r\n var $main = $jq(\"div.main\");\r\n var mainHeight = $main.outerHeight(true);\r\n var rightColumnHeight = $jq(\"div.right-column\").outerHeight(true);\r\n if (rightColumnHeight > 0 && mainHeight > 0) {\r\n var diff = rightColumnHeight - mainHeight;\r\n if (diff > 0) {\r\n // adjust div.main bottom margin to prevent right-column from overlapping the area below div.main\r\n var newMargin = diff + 10;\r\n var currentMargin = +($main.css(\"margin-bottom\").replace(\"px\", \"\"));\r\n if (newMargin > currentMargin) {\r\n $main.css(\"margin-bottom\", newMargin);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n }\r\n };\r\n\r\n var adjustMainMargin = function () {\r\n clearTimeout(_adjustMainMarginTimeout);\r\n _adjustMainMarginTimeout = setTimeout(_adjustMainMargin, 500);\r\n };\r\n\r\n var adSlotRenderEnded = function (event) {\r\n try {\r\n if (event && !event.isEmpty) {\r\n // var tile = event.slot.getTargeting(\"tile\");\r\n adjustMainMargin();\r\n }\r\n } catch (e) {\r\n }\r\n };\r\n\r\n var amazonAdCallback = function () {\r\n if (typeof (amznads) !== \"undefined\") {\r\n try {\r\n amznads.setTargetingForGPTAsync(PeopleMedia.AmazonAdKey);\r\n } catch (e) {\r\n /* ignore */\r\n }\r\n googletag.pubads().refresh();\r\n }\r\n };\r\n\r\n var _reloadAds = function () {\r\n _adReloadTimeout = null;\r\n try {\r\n if (typeof (googletag) !== \"undefined\") {\r\n googletag.pubads().updateCorrelator();\r\n googletag.pubads().setTargeting(\"ord\", getRandomNumericString(10));\r\n if (typeof (amznads) !== \"undefined\" && PeopleMedia.AmazonAdSourceId && PeopleMedia.AmazonAdKey) {\r\n try {\r\n amznads.getAdsCallback(PeopleMedia.AmazonAdSourceId, PeopleMedia.AmazonAdCallback);\r\n googletag.pubads().clearTargeting(PeopleMedia.AmazonAdKey);\r\n } catch (e) {\r\n /* ignore */\r\n }\r\n } else {\r\n // Clear targeting for DFP slots\r\n var slots = googletag.pubads().getSlots();\r\n if (typeof (slots) !== \"undefined\" && slots !== null) {\r\n slots.forEach(function (slot) {\r\n slot.clearTargeting('amznsz');\r\n slot.clearTargeting('hb_size_appnexus');\r\n slot.clearTargeting('hb_pb_appnexus');\r\n slot.clearTargeting('hb_adid_appnexus');\r\n slot.clearTargeting('hb_bidder_appnexus');\r\n slot.clearTargeting('hb_size');\r\n slot.clearTargeting('hb_pb');\r\n slot.clearTargeting('hb_adid');\r\n slot.clearTargeting('hb_bidder');\r\n slot.clearTargeting('hb_size_aol');\r\n slot.clearTargeting('hb_pb_aol');\r\n slot.clearTargeting('hb_adid_aol');\r\n slot.clearTargeting('hb_bidder_aol');\r\n slot.clearTargeting('hb_size_openx');\r\n slot.clearTargeting('hb_pb_openx');\r\n slot.clearTargeting('hb_adid_openx');\r\n slot.clearTargeting('hb_bidder_openx');\r\n slot.clearTargeting('hb_size_sovrn');\r\n slot.clearTargeting('hb_pb_sovrn');\r\n slot.clearTargeting('hb_adid_sovrn');\r\n slot.clearTargeting('hb_bidder_sovrn');\r\n slot.clearTargeting('hb_size_indexExchang');\r\n slot.clearTargeting('hb_pb_indexExchange');\r\n slot.clearTargeting('hb_adid_indexExchang');\r\n slot.clearTargeting('hb_bidder_indexExcha');\r\n });\r\n }\r\n googletag.pubads().refresh();\r\n }\r\n }\r\n setTimeout(PeopleMedia.RefreshSession, 600);\r\n } catch (e) {\r\n }\r\n };\r\n\r\n var reloadAds = function () {\r\n if (_adReloadTimeout == null) {\r\n _adReloadTimeout = setTimeout(_reloadAds, 400);\r\n }\r\n };\r\n\r\n var _resizeComplete = function () {\r\n _reloadAds();\r\n };\r\n\r\n var resizeHandler = function () {\r\n clearTimeout(_resizeTimeout);\r\n _resizeTimeout = setTimeout(_resizeComplete, 500);\r\n };\r\n\r\n var initializeResizeHandler = function () {\r\n $jq(window).on(\"resize\", resizeHandler);\r\n _listeningOnResize = true;\r\n };\r\n\r\n var initializeOrientationHandler = function () {\r\n $jq(window).on(\"orientationchange\", resizeHandler);\r\n if (_listeningOnResize) {\r\n $jq(window).off(\"orientationchange\", resizeHandler);\r\n _listeningOnResize = false;\r\n }\r\n };\r\n\r\n var getRandomNumericString = function (numberOfDigits) {\r\n var result = \"\";\r\n try {\r\n for (var i = 0; i < +numberOfDigits; i++) {\r\n result += getRandomInt(0, 9);\r\n }\r\n } catch (e) {\r\n }\r\n return result;\r\n };\r\n\r\n var getRandomInt = function (min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n };\r\n\r\n var refreshSession = function () {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/ajax/RefreshSession\";\r\n var timeoutValue = 60000;\r\n $jq.ajax({\r\n type: \"GET\",\r\n url: url,\r\n data: {},\r\n dataType: \"json\",\r\n success: function (response) {\r\n if (response.redirect) {\r\n location.href = response.redirect;\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n if (errorThrown === \"timeout\" || (jqXHR.readyState !== 0 && jqXHR.status !== 0)) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n // PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid:Oid, method: \"refreshSession\", duration: duration }, jqXHR, textStatus, errorThrown, function () {\r\n });\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n PeopleMedia.Timer.StartCountdownTimer();\r\n }\r\n };\r\n\r\n var resolveSessionToken = function () {\r\n if (typeof (PMChat) !== \"undefined\" &&\r\n PMChat !== null &&\r\n typeof (PMChat.Config) !== \"undefined\" &&\r\n PMChat.Config != null &&\r\n typeof (PMChat.Config.DefaultSessionToken) !== \"undefined\" &&\r\n PMChat.Config.DefaultSessionToken) {\r\n return PMChat.Config.DefaultSessionToken;\r\n }\r\n return null;\r\n };\r\n\r\n var initializeChat = function () {\r\n if (typeof (PMChat) !== \"undefined\" && PMChat !== null) {\r\n try {\r\n PMChat.On(\"ready\", function () {\r\n PMChat.On(\"error\", function (e) {\r\n if (!e.Error.Handled) {\r\n var pmError = {\r\n message: e.Error.getMessage(),\r\n name: e.Error.getTitle()\r\n };\r\n if (typeof (PMChat.ChatLoggingEnabled) !== \"undefined\" && PMChat.ChatLoggingEnabled) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(pmError, { method: \"PMChat.OnError\" });\r\n }\r\n }\r\n });\r\n\r\n PMChat.UI.Init({\r\n SiteHostName: PeopleMediaConfig.Configuration.siteHostName,\r\n SiteImagePath: PeopleMediaConfig.Configuration.siteImagePath,\r\n ThemeImagePath: PeopleMediaConfig.Configuration.themeImagePath,\r\n CommonImagePath: PeopleMediaConfig.Configuration.commonImagePath\r\n });\r\n });\r\n\r\n PMChat.On(\"stateloaded\", function (e) {\r\n PMChat.GetNewChats();\r\n });\r\n\r\n PMChat.UI.On(\"togglefavorite\", function (e, data) {\r\n var isFavorite = data.IsFavorite;\r\n var favoriteAction = (isFavorite === true) ? PeopleMedia.Favorite.removeFavorite : PeopleMedia.Favorite.addFavorite;\r\n\r\n favoriteAction({\r\n encodedMemberId: data.MemberId,\r\n suppressErrors: true,\r\n onComplete: function (err, response, data) {\r\n if (err && response === null) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n var favoriteText = $jq(\".chatTab[data-with=\\\"\" + data.MemberId + \"\\\"] > .chatTabSettingsMenu > div > div:first-child\");\r\n if (typeof (favoriteText) === \"undefined\" || favoriteText.length === 0)\r\n favoriteText = $jq(\".chatTabSettingsMenu > div > div:first-child\");\r\n\r\n var miniProfileFavDiv = $jq(\"div.chatTab[data-with=\" + data.MemberId + \"] div.chatTabUser .favorite\");\r\n if (typeof (miniProfileFavDiv) === \"undefined\" || miniProfileFavDiv.length === 0) {\r\n miniProfileFavDiv = $jq(\"div.chatTab[data-with=\" + data.MemberId + \"] div.chatTabUser .favorited\");\r\n }\r\n\r\n if (isFavorite === true) {\r\n favoriteText.html(\"Done!\");\r\n miniProfileFavDiv.addClass(\"favorite\").removeClass(\"favorited\").text(\"Save\");\r\n }\r\n else {\r\n favoriteText.html(\"Done!\");\r\n miniProfileFavDiv.addClass(\"favorited\").removeClass(\"favorite\").text(\"Saved\");\r\n }\r\n\r\n PMChat._Clients[data.MemberId].WithMember.IsFavorite = !isFavorite;\r\n\r\n setTimeout(function () {\r\n if (isFavorite === true) {\r\n favoriteText.html(\"Save\");\r\n }\r\n else {\r\n favoriteText.html(\"Saved\");\r\n }\r\n }, 2000);\r\n }\r\n }\r\n });\r\n \r\n });\r\n\r\n PMChat.UI.On(\"blockmember\", function (e, data) {\r\n PeopleMedia.Popups.BlockUser({\r\n encodedMemberId: data.MemberId,\r\n username: data.NickName\r\n });\r\n });\r\n\r\n PMChat.UI.On(\"reportaconcern\", function (e, data) {\r\n PeopleMedia.Popups.ReportConcern({\r\n encodedMemberId: data.MemberId,\r\n username: data.NickName\r\n });\r\n });\r\n\r\n PMChat.Init({\r\n SiteID: PeopleMediaConfig.Configuration.currentUserSiteId,\r\n MemberID: PeopleMediaConfig.Configuration.profile,\r\n NickName: PeopleMediaConfig.Configuration.username,\r\n ChatLoggingEnabled: PeopleMediaConfig.Configuration.chatLoggingEnabled,\r\n ChatEnabled: (PMChat.ChatEnabled === true),\r\n DefaultSessionToken: PeopleMediaConfig.Configuration.defaultSessionToken,\r\n SessionToken: PeopleMedia.resolveSessionToken,\r\n State: new PMChat.WebStorageState(),\r\n Channel: new PMChat.WebSyncChannel({\r\n Client: function () {\r\n PeopleMedia.WebSyncServer.Init();\r\n return PeopleMedia.WebSyncServer.Client;\r\n },\r\n Channel: PeopleMediaConfig.Configuration.channel\r\n }),\r\n BaseUrl: PeopleMediaConfig.Configuration.chatBasePath,\r\n API: {\r\n BaseUrl: PeopleMediaConfig.Configuration.chatApi\r\n }\r\n });\r\n\r\n PMChat.UI.SetToggleText();\r\n }\r\n catch (ex) {\r\n if (typeof (PMChat) !== \"undefined\" && PMChat !== null && typeof (PMChat.ChatLoggingEnabled) !== \"undefined\" && PMChat.ChatLoggingEnabled) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid:Oid, method: \"PMChat.On\" });\r\n }\r\n }\r\n }\r\n };\r\n\r\n var handleError = function (response) {\r\n if (response) {\r\n if (response.redirect) {\r\n location.href = response.redirect;\r\n } else if (response.message) {\r\n PeopleMedia.Popups.ShowGenericMessage(response.message);\r\n }\r\n }\r\n };\r\n\r\n // needed to offset the scrolling when there is a fixed header\r\n var scrollToItem = function($elem) {\r\n try {\r\n var headerPosition;\r\n var headerAdjustment;\r\n var elemPosition;\r\n var scrollTop;\r\n if ($elem && $elem.length > 0) {\r\n elemPosition = $elem.offset();\r\n if (elemPosition) {\r\n headerPosition = $jq(\".layout-container-fixed .layout-container-header\").css(\"position\");\r\n headerAdjustment = (headerPosition === \"fixed\") ? ($jq(\"div.header\").height() || 0) : 0;\r\n scrollTop = elemPosition.top - headerAdjustment;\r\n $jq(\"html, body\").animate({\r\n scrollTop: scrollTop,\r\n scrollLeft: 0\r\n });\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n };\r\n\r\n var useScrollingForRelativeLinks = function ($container) {\r\n try {\r\n if ($container && $container.length > 0) {\r\n $container.find(\"a[href^='#']\").on(\"click\", function (event) {\r\n var $this = $jq(this);\r\n var href = $this.attr(\"href\");\r\n var $link = $container.find(href);\r\n if ($link && $link.length > 0) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n PeopleMedia.scrollToItem($link);\r\n }\r\n });\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n };\r\n\r\n var sitePostbackHeader = function () {\r\n var header = {};\r\n try {\r\n var tokenName = \"__RequestVerificationToken\";\r\n var $af = $jq(\"#sitervt\");\r\n if ($af.length > 0) {\r\n var $token = $af.find(\"input[name='\" + tokenName + \"']\");\r\n if ($token.length > 0) {\r\n header[tokenName] = $token.val();\r\n }\r\n }\r\n } catch (ex) {\r\n }\r\n return header;\r\n };\r\n\r\n var sitePostback = function ($form) {\r\n try {\r\n var tokenName = \"__RequestVerificationToken\";\r\n if ($form && $form.length > 0) {\r\n var $token = $form.find(\"input[type='hidden'][name='\" + tokenName + \"']\");\r\n if ($token.length === 0) {\r\n var header = PeopleMedia.sitePostbackHeader();\r\n if (header && header[tokenName]) {\r\n $form.prepend($jq(\"\"));\r\n }\r\n }\r\n }\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"sitePostback\" });\r\n }\r\n };\r\n\r\n var createErrorObject = function (prop) {\r\n var errObj;\r\n try {\r\n var errProp = prop || {};\r\n errObj = $jq.extend({}, { reason: \"error\" }, errProp);\r\n } catch (ex) {\r\n errObj = { reason: \"error\" };\r\n }\r\n return errObj;\r\n };\r\n\r\n var createAjaxErrorObject = function (prop) {\r\n var errObj;\r\n try {\r\n var errProp = prop || {};\r\n var generalError = createErrorObject(errProp);\r\n var errorThrown = (typeof (errProp.errorThrown) !== \"undefined\") ? errProp.errorThrown : null;\r\n var isCancelled = false;\r\n var reason = (typeof (errProp.reason) !== \"undefined\" && errProp.reason) ? errProp.reason : null;\r\n var responseText = null;\r\n var statusCode = null;\r\n if (typeof (errProp.jqXHR) !== \"undefined\" && errProp.jqXHR !== null) {\r\n isCancelled = (errorThrown !== 'timeout' && (errProp.jqXHR.readyState === 0 || errProp.jqXHR.status === 0));\r\n reason = reason || errorThrown;\r\n responseText = (!isCancelled && errProp.jqXHR.responseText) ? errProp.jqXHR.responseText : null;\r\n statusCode = errProp.jqXHR.status;\r\n }\r\n errObj = $jq.extend({}, generalError, {\r\n reason: reason || \"error\",\r\n isAjaxError: true,\r\n isCancelled: isCancelled,\r\n responseText: responseText,\r\n statusCode: statusCode\r\n });\r\n } catch (ex) {\r\n errObj = { reason: \"error\", isAjaxError: true };\r\n }\r\n return errObj;\r\n };\r\n\r\n var convertToPositiveInteger = function(input) {\r\n var result = 0;\r\n if (typeof (input) === \"number\") {\r\n result = Math.trunc(input);\r\n } else if (typeof (input) === \"string\") {\r\n result = parseInt(input, 10);\r\n if (isNaN(result)) {\r\n result = 0;\r\n }\r\n }\r\n return (result >= 0) ? result : 0;\r\n };\r\n\r\n // HTML escape\r\n var htmlEscape = function (str) {\r\n return String(str)\r\n .replace(/&/g, '&')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''')\r\n .replace(//g, '>');\r\n };\r\n\r\n var transitionEndEventName = function () {\r\n var i;\r\n var el = document.createElement('div');\r\n var transitions = {\r\n 'transition': 'transitionend',\r\n 'OTransition': 'otransitionend', // oTransitionEnd in very old Opera\r\n 'MozTransition': 'transitionend',\r\n 'WebkitTransition': 'webkitTransitionEnd'\r\n };\r\n\r\n for (i in transitions) {\r\n if (transitions.hasOwnProperty(i) && typeof (el.style[i]) !== \"undefined\") {\r\n return transitions[i];\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n var getCovidHomeSessionStorageKey = function () {\r\n var CurrentPublicMemberId = null;\r\n if (typeof (PeopleMediaConfig) !== \"undefined\" &&\r\n PeopleMediaConfig !== null &&\r\n typeof (PeopleMediaConfig.Configuration) !== \"undefined\" &&\r\n PeopleMediaConfig.Configuration !== null) {\r\n CurrentPublicMemberId = PeopleMediaConfig.Configuration.publicMemberId;\r\n }\r\n return \"CovidHome_\" + (CurrentPublicMemberId || \"\");\r\n };\r\n\r\n var getMatchstackEventsAdNoThanksClickedStorageKey = function () {\r\n var CurrentPublicMemberId = null;\r\n if (typeof (PeopleMediaConfig) !== \"undefined\" &&\r\n PeopleMediaConfig !== null &&\r\n typeof (PeopleMediaConfig.Configuration) !== \"undefined\" &&\r\n PeopleMediaConfig.Configuration !== null) {\r\n CurrentPublicMemberId = PeopleMediaConfig.Configuration.publicMemberId;\r\n }\r\n return \"Matchstack_EventsAdNoThanksClicked_\" + (CurrentPublicMemberId || \"\");\r\n };\r\n\r\n var getMatchStackSessionStorageKey = function() {\r\n // include current member id as part of key in case someone logs in with a different user in the same session\r\n var CurrentPublicMemberId = null;\r\n if (typeof (PeopleMediaConfig) !== \"undefined\" &&\r\n PeopleMediaConfig !== null &&\r\n typeof (PeopleMediaConfig.Configuration) !== \"undefined\" &&\r\n PeopleMediaConfig.Configuration !== null) {\r\n CurrentPublicMemberId = PeopleMediaConfig.Configuration.publicMemberId;\r\n }\r\n return \"MatchStack_\" + (CurrentPublicMemberId || \"\");\r\n };\r\n\r\n var getSettingsNotificationStorageKey = function () {\r\n // include current member id as part of key in case someone logs in with a different user in the same session\r\n var CurrentPublicMemberId = null;\r\n if (typeof (PeopleMediaConfig) !== \"undefined\" &&\r\n PeopleMediaConfig !== null &&\r\n typeof (PeopleMediaConfig.Configuration) !== \"undefined\" &&\r\n PeopleMediaConfig.Configuration !== null) {\r\n CurrentPublicMemberId = PeopleMediaConfig.Configuration.publicMemberId;\r\n }\r\n return \"NewSettingsNotification_ClearNotification_\" + (CurrentPublicMemberId || \"\");\r\n };\r\n\r\n var findLatestExpiresAt = function (arr) {\r\n var latest = null;\r\n try {\r\n var latestMoment = moment(\"0000-01-01\");\r\n if (Array.isArray(arr) && arr.length > 0) {\r\n for (var i = arr.length - 1; i >= 0; i--) {\r\n if (arr[i] && arr[i].hasOwnProperty(\"expiresAt\") && arr[i].expiresAt) {\r\n var expiresAt = moment(arr[i].expiresAt);\r\n if (!latestMoment.isAfter(expiresAt)) {\r\n latestMoment = expiresAt;\r\n latest = arr[i];\r\n }\r\n }\r\n }\r\n // use last item if no expiresAt values\r\n if (latest === null) {\r\n latest = arr[arr.length - 1];\r\n }\r\n }\r\n } catch (e) {\r\n }\r\n return latest;\r\n };\r\n\r\n // returns array of querystring results as objects with \"key\" and \"value\" properties\r\n // parseQueryStringToArray(\"a=123&b=456&a=789\") \r\n // returns [0] = { key: \"a\", value: \"123\" }\r\n // [1] = { key: \"b\", value: \"456\" }\r\n // [2] = { key: \"a\", value: \"789\" }\r\n var parseQueryStringToArray = function (queryString) {\r\n var result = [];\r\n var qs = (typeof (queryString) === \"undefined\" || queryString === null) ? window.location.search : queryString;\r\n var searchParams = new URLSearchParams(qs); // jshint ignore:line\r\n searchParams.forEach(function (value, key) {\r\n if (key) {\r\n result.push({ key: key, value: value });\r\n }\r\n });\r\n return result;\r\n };\r\n\r\n // finds matching querystring items returned from parseQueryStringToArray\r\n // key comparison is case-insensitive\r\n // allows converting the value to a specific type (boolean, number, int, string)\r\n // getQueryStringItem([{ key: \"A\", value: \"123\" }], \"a\", \"int\")\r\n // returns [0] = 123\r\n var getQueryStringItem = function (qsArray, key, type) {\r\n if (qsArray && Array.isArray(qsArray) && key) {\r\n var keyLower = key.toLowerCase();\r\n var num;\r\n return qsArray.filter(function (item) {\r\n return item && item.key && item.key.toLowerCase() === keyLower;\r\n }).map(function (item) {\r\n if (typeof (item) === \"undefined\" || item === null || typeof (item.value) === \"undefined\" || item.value === null) {\r\n return null;\r\n }\r\n switch (type) {\r\n case \"boolean\":\r\n return !!(item.value);\r\n case \"number\":\r\n num = parseFloat(item.value);\r\n return (!isNaN(num)) ? num : null;\r\n case \"int\":\r\n num = parseInt(item.value, 10);\r\n return (!isNaN(num)) ? num : null;\r\n case \"string\":\r\n return item.value.toString();\r\n default:\r\n return item.value;\r\n }\r\n });\r\n }\r\n return [];\r\n };\r\n\r\n var arrayFirstOrDefault = function(arr) {\r\n return (arr.length > 0) ? arr[0] : null;\r\n };\r\n\r\n var isRushHour = function (date) {\r\n var dateCheck = (date && Object.prototype.toString.call(date) === '[object Date]') ? date : new Date();\r\n var hour = dateCheck.getHours();\r\n if (isNaN(hour)) {\r\n return false;\r\n }\r\n // boost rush hour is 9AM-12PM and 3PM-10PM (PMWEB-6618)\r\n return ((hour >= 9 && hour < 12) || (hour >= 15 && hour < 22));\r\n };\r\n\r\n var rushHourEndsAt = function (date) {\r\n var dateCheck = (date && Object.prototype.toString.call(date) === '[object Date]') ? date : new Date();\r\n var hour = dateCheck.getHours();\r\n if (isNaN(hour) || !isRushHour(dateCheck)) {\r\n return null;\r\n }\r\n var hourEnd = 0;\r\n if (hour >= 9 && hour < 12) {\r\n hourEnd = 12;\r\n } else if (hour >= 15 && hour < 22) {\r\n hourEnd = 22;\r\n }\r\n dateCheck.setHours(hourEnd);\r\n dateCheck.setMinutes(0);\r\n dateCheck.setSeconds(0);\r\n dateCheck.setMilliseconds(0);\r\n return dateCheck;\r\n };\r\n\r\n var isCommandKey = function (key) {\r\n // movement or special keys\r\n // backspace, caps lock, shift, ctrl, alt, end, home, left, right, up, down, pgup, pgdn, ins, del\r\n return (key === 8 || key === 20 || (key >= 16 && key <= 18) || (key >= 33 && key <= 40) || key === 45 || key === 46);\r\n };\r\n\r\n var getDeviceViewTypeCookie = function () {\r\n return PeopleMedia.Cookies.getCookie(_deviceTypeCookieName);\r\n };\r\n\r\n var setDeviceViewTypeCookie = function (value) {\r\n if (value === _desktopDeviceType || value === _mobileDeviceType) {\r\n PeopleMedia.Cookies.setCookie(_deviceTypeCookieName, value, 30, true);\r\n } else {\r\n PeopleMedia.Cookies.removeCookie(_deviceTypeCookieName);\r\n }\r\n };\r\n\r\n var detectIOS = function () {\r\n // IE11 or Android\r\n if (window.MSStream || navigator.userAgent.match(/Android/i)) {\r\n return false;\r\n }\r\n // include Macintosh for iPad after iOS 13\r\n return (navigator.userAgent.match(/iPhone/i)\r\n || navigator.userAgent.match(/iPad/i)\r\n || navigator.userAgent.match(/iPod/i)\r\n || navigator.userAgent.match(/Macintosh/i)\r\n );\r\n };\r\n\r\n var detectAndroid = function () {\r\n return navigator.userAgent.match(/Android/i);\r\n };\r\n\r\n var switchToMobileView = function() {\r\n var current = getDeviceViewTypeCookie();\r\n if (current !== _mobileDeviceType) {\r\n setDeviceViewTypeCookie(_mobileDeviceType);\r\n PeopleMedia.Tracking.trackSwitchDeviceType({\r\n eventName: \"SwitchToMobileView\",\r\n previousValue: current,\r\n onComplete: function () {\r\n window.location.reload();\r\n }\r\n });\r\n }\r\n };\r\n\r\n // removes keys from object while keeping same reference (unlike obj = {} which creates a new reference)\r\n // obj = object to update\r\n // except = array of any property names that should not be removed (optional)\r\n var clearObjectProperties = function (obj, except) {\r\n var keys = Object.keys(obj);\r\n if (Array.isArray(except) && except.length > 0) {\r\n keys = keys.filter(function (key) {\r\n return key && except.indexOf(key) === -1;\r\n });\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n delete obj[keys[i]];\r\n }\r\n };\r\n\r\n return {\r\n SiteId: PeopleMediaConfig.Configuration.siteId,\r\n Domain: PeopleMediaConfig.Configuration.domain,\r\n BaseDomain: PeopleMediaConfig.Configuration.baseDomain,\r\n SiteImagePath: PeopleMediaConfig.Configuration.siteImagePath,\r\n SiteRootEnabled: true,\r\n PersistentLoginEnabled: PeopleMediaConfig.Configuration.persistentLoginEnabled,\r\n IsLoggedIn: (PeopleMediaConfig.Configuration.isLoggedIn),\r\n PopupPath: PeopleMediaConfig.Configuration.popupPath,\r\n WebSyncUrl: PeopleMediaConfig.Configuration.webSyncUrl,\r\n ImagePath: PeopleMediaConfig.Configuration.imagePath,\r\n ThemeImagePath: PeopleMediaConfig.Configuration.themeImagePath,\r\n CommonImagePath: PeopleMediaConfig.Configuration.commonImagePath,\r\n BaseImagePath: PeopleMediaConfig.Configuration.baseImagePath || \"https://pmi.peoplemedia.com/pmicontent\",\r\n PageDefinitionId: PeopleMediaConfig.Configuration.pageDefinitionId,\r\n EncodedMemberId: PeopleMediaConfig.Configuration.encodedMemberId,\r\n CombineFlirtsAndLikes: PeopleMediaConfig.Configuration.combineFlirtsAndLikes,\r\n DisableLegacyChat: PeopleMediaConfig.Configuration.disableLegacyChat,\r\n ShowMatchMutualConnections: PeopleMediaConfig.Configuration.showMatchMutualConnections,\r\n ApiSendEnabled: PeopleMediaConfig.Configuration.apiSendEnabled,\r\n AdjustMainMargin: adjustMainMargin,\r\n AdSlotRenderEnded: adSlotRenderEnded,\r\n AmazonAdCallback: amazonAdCallback,\r\n ReloadAds: reloadAds,\r\n ResizeHandler: resizeHandler,\r\n InitializeResizeHandler: initializeResizeHandler,\r\n InitializeOrientationHandler: initializeOrientationHandler,\r\n RefreshSession: refreshSession,\r\n resolveSessionToken: resolveSessionToken,\r\n InitializeChat: initializeChat,\r\n handleError: handleError,\r\n scrollToItem: scrollToItem,\r\n useScrollingForRelativeLinks: useScrollingForRelativeLinks,\r\n sitePostbackHeader: sitePostbackHeader,\r\n sitePostback: sitePostback,\r\n createErrorObject: createErrorObject,\r\n createAjaxErrorObject: createAjaxErrorObject,\r\n convertToPositiveInteger: convertToPositiveInteger,\r\n htmlEscape: htmlEscape,\r\n transitionEndEventName: transitionEndEventName,\r\n getMatchStackSessionStorageKey: getMatchStackSessionStorageKey,\r\n getCovidHomeSessionStorageKey: getCovidHomeSessionStorageKey,\r\n getSettingsNotificationStorageKey: getSettingsNotificationStorageKey,\r\n findLatestExpiresAt: findLatestExpiresAt,\r\n parseQueryStringToArray: parseQueryStringToArray,\r\n getQueryStringItem: getQueryStringItem,\r\n arrayFirstOrDefault: arrayFirstOrDefault,\r\n isRushHour: isRushHour,\r\n rushHourEndsAt: rushHourEndsAt,\r\n getMatchstackEventsAdNoThanksClickedStorageKey: getMatchstackEventsAdNoThanksClickedStorageKey,\r\n isCommandKey: isCommandKey,\r\n detectIOS: detectIOS,\r\n detectAndroid: detectAndroid,\r\n switchToMobileView: switchToMobileView,\r\n clearObjectProperties: clearObjectProperties\r\n };\r\n})(jQuery, moment);\r\n\r\nPeopleMedia.Storage = (function () {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Storage\";\r\n\r\n var storageAvailable = function(type) {\r\n try {\r\n var storage = window[type];\r\n var x = '__storage_test__';\r\n storage.setItem(x, x);\r\n storage.removeItem(x);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n var localOrSessionStorage = storageAvailable(\"localStorage\") ? window.localStorage : (storageAvailable(\"sessionStorage\") ? window.sessionStorage : null);\r\n\r\n var isQuotaError = function(err) {\r\n return (err instanceof DOMException && (\r\n // everything except Firefox\r\n err.code === 22 ||\r\n // Firefox\r\n err.code === 1014 ||\r\n // test name field too, because code might not be present\r\n // everything except Firefox\r\n err.name === 'QuotaExceededError' ||\r\n // Firefox\r\n err.name === 'NS_ERROR_DOM_QUOTA_REACHED'));\r\n };\r\n\r\n var _loadFromStorage = function (storage, key) {\r\n var result = null;\r\n try {\r\n if (typeof (Storage) !== \"undefined\" && storage) {\r\n var value = storage.getItem(key);\r\n if (typeof (value) !== \"undefined\" && value !== null) {\r\n result = JSON.parse(value);\r\n }\r\n }\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { oid: Oid, method: \"_loadFromStorage\", key: key });\r\n throw ex;\r\n }\r\n return result;\r\n };\r\n\r\n var _saveToStorage = function (storage, key, value) {\r\n try {\r\n if (typeof (Storage) !== \"undefined\" && storage) {\r\n storage.setItem(key, JSON.stringify(value));\r\n }\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { oid: Oid, method: \"_saveToStorage\", key: key, value: value });\r\n if (isQuotaError(ex)) {\r\n throw ex;\r\n }\r\n }\r\n };\r\n\r\n var _clearStorage = function (storage, keyPrefix, exceptPrefix) {\r\n try {\r\n if (typeof (Storage) !== \"undefined\" && storage) {\r\n var removeKeys = [];\r\n for (var i = 0; i < storage.length; i++) {\r\n if (storage.key(i) &&\r\n (!keyPrefix || storage.key(i).substring(0, keyPrefix.length) === keyPrefix) &&\r\n (!exceptPrefix || storage.key(i).substring(0, exceptPrefix.length) !== exceptPrefix)) {\r\n removeKeys.push(storage.key(i));\r\n }\r\n }\r\n for (var k = 0; k < removeKeys.length; k++) {\r\n storage.removeItem(removeKeys[k]);\r\n }\r\n }\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { oid: Oid, method: \"_clearStorage\", keyPrefix: keyPrefix, exceptPrefix: exceptPrefix });\r\n }\r\n };\r\n\r\n var loadFromSessionStorage = function (key) {\r\n return _loadFromStorage(window.sessionStorage, key);\r\n };\r\n\r\n var saveToSessionStorage = function (key, value) {\r\n return _saveToStorage(window.sessionStorage, key, value);\r\n };\r\n\r\n var clearSessionStorage = function (keyPrefix, exceptPrefix) {\r\n return _clearStorage(window.sessionStorage, keyPrefix, exceptPrefix);\r\n };\r\n\r\n var loadFromStorage = function (key) {\r\n return _loadFromStorage(localOrSessionStorage, key);\r\n };\r\n\r\n var saveToStorage = function (key, value) {\r\n return _saveToStorage(localOrSessionStorage, key, value);\r\n };\r\n\r\n var clearStorage = function (keyPrefix, exceptPrefix) {\r\n return _clearStorage(localOrSessionStorage, keyPrefix, exceptPrefix);\r\n };\r\n\r\n return {\r\n loadFromSessionStorage: loadFromSessionStorage,\r\n saveToSessionStorage: saveToSessionStorage,\r\n clearSessionStorage: clearSessionStorage,\r\n loadFromStorage: loadFromStorage,\r\n saveToStorage: saveToStorage,\r\n clearStorage: clearStorage,\r\n isQuotaError: isQuotaError\r\n };\r\n})();\r\n\r\nPeopleMedia.Tracking = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Tracking\";\r\n\r\n var AdTracking = function (eventName, featureName, onComplete) {\r\n try {\r\n var encodedMemberId = typeof (PeopleMedia.EncodedMemberId) !== \"undefined\" ? PeopleMedia.EncodedMemberId : null;\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var url = '/v3/ajax/TrackMobileSearchAd';\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"EventType\": eventName ? eventName : \"\",\r\n \"FeatureName\": featureName ? featureName : \"\",\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null\r\n };\r\n $jq.ajax({\r\n type: 'POST',\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"AdTracking\", duration: duration }, jqXHR, textStatus, errorThrown, function () {\r\n });\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n }).always(function () {\r\n if (onComplete && typeof (onComplete) === \"function\") {\r\n onComplete();\r\n }\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { oid: Oid, method: \"AdTracking\" });\r\n }\r\n };\r\n\r\n var trackCustomMemberEventsComplete = function (err, response, params) {\r\n if (err || !response || response.status !== \"Success\") {\r\n // there was an error\r\n // console.log(\"trackCustomMemberEvents: error\", err);\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete(err, response, params);\r\n }\r\n return;\r\n }\r\n\r\n // console.log(\"trackMemberShown: success\", response);\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete(err, response, params);\r\n }\r\n };\r\n \r\n var trackCustomMemberEvents = function (params) {\r\n try {\r\n var validEvents = null;\r\n if (params && params.events) {\r\n validEvents = params.events.filter(function (ev) {\r\n return ev !== null && typeof (ev) !== \"undefined\";\r\n });\r\n }\r\n if (!validEvents || validEvents.length === 0) {\r\n // do nothing if no events\r\n trackCustomMemberEventsComplete(null, { status: \"Success\" }, params);\r\n return;\r\n }\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/TrackCustomMemberEvents\";\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"events\": validEvents\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n trackCustomMemberEventsComplete(null, response, params);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"trackCustomMemberEvents\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n trackCustomMemberEventsComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"trackCustomMemberEvents\" });\r\n trackCustomMemberEventsComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n };\r\n \r\n // Track single event with callback\r\n var trackMemberEvent = function (eventName, callback) {\r\n var PageDefinitionId = null;\r\n if (typeof (PeopleMedia.PageDefinitionId) !== \"undefined\") {\r\n PageDefinitionId = PeopleMedia.PageDefinitionId;\r\n }\r\n\r\n trackCustomMemberEvents({\r\n events: [\r\n {\r\n otherMemberProfileId: null,\r\n eventName: eventName,\r\n featureSource: \"Match\",\r\n pageId: PageDefinitionId\r\n }\r\n ],\r\n onComplete: callback\r\n });\r\n };\r\n\r\n var trackComplete = function (err, response, params) {\r\n if (err || !response || response.status !== \"Success\") {\r\n // there was an error\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete(err, response, params);\r\n }\r\n return;\r\n }\r\n\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete(err, response, params);\r\n }\r\n };\r\n\r\n // Call as member is being rendered into view\r\n var trackMemberShown = function (params) {\r\n try {\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/TrackMemberShown\";\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"otherMemberPublicGuid\": params.otherMemberPublicGuid,\r\n \"otherMemberProfileId\": params.otherMemberProfileId,\r\n \"eventActionPrefix\": params.eventActionPrefix,\r\n \"viewLocation\": params.viewLocation,\r\n \"featureSource\": params.featureSource,\r\n \"displayModule\": params.displayModule,\r\n \"matchedUserType\": params.matchedUserType,\r\n \"presentationId\": params.presentationId,\r\n \"searchGuid\": params.searchGuid,\r\n \"recordGuid\": params.recordGuid,\r\n \"PageId\": PeopleMedia.PageDefinitionId\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n trackComplete(null, response, params);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"trackMemberShown\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n trackComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"trackMemberShown\" });\r\n trackComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n };\r\n\r\n var trackSwitchDeviceType = function (params) {\r\n try {\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/TrackSwitchDeviceType\";\r\n var timeoutValue = 2000;\r\n var ajaxData = {\r\n \"eventName\": params.eventName,\r\n \"previousValue\": params.previousValue,\r\n \"featureSource\": params.featureSource,\r\n \"PageId\": PeopleMedia.PageDefinitionId\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n trackComplete(null, response, params);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"trackSwitchDeviceType\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n trackComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"trackSwitchDeviceType\" });\r\n trackComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n };\r\n\r\n var updateClickThroughFlow = function (params) {\r\n try {\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/UpdateClickThroughFlow\";\r\n var timeoutValue = 5000;\r\n var path = params && params.path ? params.path : \"\";\r\n var page = params && typeof (params.page) === \"number\" ? params.page : null;\r\n var pageId = params && typeof (params.pageId) === \"number\" ? params.pageId : PeopleMedia.PageDefinitionId;\r\n var ajaxData = {\r\n \"Path\": path,\r\n \"Page\": page,\r\n \"PageId\": pageId\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n trackComplete(null, response, params);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"trackSwitchDeviceType\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n trackComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"updateClickThroughFlow\" });\r\n trackComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n };\r\n\r\n return {\r\n trackMemberShown: trackMemberShown,\r\n trackCustomMemberEvents: trackCustomMemberEvents,\r\n AdTracking: AdTracking,\r\n trackMemberEvent: trackMemberEvent,\r\n trackSwitchDeviceType: trackSwitchDeviceType,\r\n updateClickThroughFlow: updateClickThroughFlow\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.LogAjaxError = function (event, jqXHR, ajaxSettings, thrownError) {\r\n \"use strict\";\r\n if (thrownError !== \"timeout\" && (jqXHR.readyState == 0 || jqXHR.status == 0)) {\r\n $jq(document).one(\"ajaxError\", PeopleMedia.LogAjaxError);\r\n return;\r\n }\r\n\r\n if (ajaxSettings && ajaxSettings.url) {\r\n if (ajaxSettings.url.indexOf(\"/v3/log/logexception\") >= 0 ||\r\n ajaxSettings.url.indexOf(\"/v3/ajax/RefreshSession\") >= 0 ||\r\n ajaxSettings.url.indexOf(\"/keepalive.cfm\") >= 0) {\r\n $jq(document).one(\"ajaxError\", PeopleMedia.LogAjaxError);\r\n return;\r\n }\r\n }\r\n\r\n if (ajaxSettings && ajaxSettings.suppressErrors) {\r\n $jq(document).one(\"ajaxError\", PeopleMedia.LogAjaxError);\r\n return;\r\n }\r\n\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", ajaxSettings.url, { settings: ajaxSettings }, jqXHR, null, thrownError, function() {\r\n $jq(document).one(\"ajaxError\", PeopleMedia.LogAjaxError);\r\n });\r\n};\r\n(function () {\r\n \"use strict\";\r\n $jq.ajaxSetup({ timeout: 60000 });\r\n //$jq(document).one(\"ajaxError\", PeopleMedia.LogAjaxError);\r\n})();\r\n\r\nPeopleMedia.Utility = (function ($jq) {\r\n \"use strict\";\r\n // Returns a function, that, as long as it continues to be invoked, will not\r\n // be triggered. The function will be called after it stops being called for\r\n // N milliseconds. If `immediate` is passed, trigger the function on the\r\n // leading edge, instead of the trailing.\r\n var debounce = function (func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n };\r\n\r\n // detect if passive events are supported by the browser\r\n var passiveSupported = false;\r\n var isPassiveEventListenerOptionSupported = function () {\r\n try {\r\n const options = {\r\n get passive() { // This function will be called when the browser\r\n // attempts to access the passive property.\r\n passiveSupported = true;\r\n return false;\r\n }\r\n };\r\n\r\n window.addEventListener(\"test\", null, options);\r\n window.removeEventListener(\"test\", null, options);\r\n } catch (err) {\r\n passiveSupported = false;\r\n }\r\n\r\n return passiveSupported;\r\n };\r\n\r\n // used by enable/disable scrolling functions to maintain y position on page\r\n var scrollPosition = 0;\r\n\r\n var enableBodyScrolling = function () {\r\n $jq(\"body\").removeClass(\"no-scroll\").removeClass(\"no-scroll-fixed-position\").css(\"top\", \"auto\");\r\n window.scrollTo(0, scrollPosition);\r\n };\r\n\r\n var disableBodyScrolling = function (useFixedPositioning) {\r\n scrollPosition = window.pageYOffset;\r\n if (useFixedPositioning) {\r\n $jq(\"body\").addClass(\"no-scroll-fixed-position\").css(\"top\", \"-\" + scrollPosition + \"px\");\r\n } else {\r\n $jq(\"body\").addClass(\"no-scroll\").css(\"top\", \"-\" + scrollPosition + \"px\");\r\n }\r\n \r\n };\r\n\r\n // use this to determine if an element is fully in view\r\n var isElementInViewport = function (el) {\r\n // Special bonus for those using jQuery\r\n if (typeof jQuery === \"function\" && el instanceof jQuery) {\r\n el = el[0];\r\n }\r\n\r\n var rect = el.getBoundingClientRect();\r\n\r\n return (\r\n (rect.top >= 0 || rect.height > window.innerHeight) &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\r\n );\r\n };\r\n\r\n // scrolls the page down to bring the bottom of the element into the visible part of the page\r\n var scrollDownElementIntoView = function(element) {\r\n var pageTop = $jq(window).scrollTop();\r\n var pageBottom = pageTop + $jq(window).height();\r\n var elementTop = $jq(element).offset().top;\r\n var elementBottom = elementTop + $jq(element).height();\r\n\r\n // only scroll if element is currently not in view\r\n if (pageBottom < elementBottom) {\r\n var amountToScroll = Math.abs(pageBottom - elementBottom);\r\n $jq(\"html, body\").animate({ scrollTop: pageTop + amountToScroll }, 600);\r\n }\r\n };\r\n\r\n return {\r\n debounce: debounce,\r\n enableBodyScrolling: enableBodyScrolling,\r\n disableBodyScrolling: disableBodyScrolling,\r\n scrollDownElementIntoView: scrollDownElementIntoView,\r\n isElementInViewport: isElementInViewport,\r\n isPassiveEventListenerOptionSupported: isPassiveEventListenerOptionSupported\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Cookies = (function () {\r\n \"use strict\";\r\n\r\n var setCookie = function(name, value, days, useDomain) {\r\n var expires = \"\";\r\n var domain = \"\";\r\n if (useDomain && PeopleMedia.Domain) {\r\n domain = \"; domain=.\" + PeopleMedia.Domain.toLowerCase();\r\n }\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = \"; expires=\" + date.toUTCString();\r\n }\r\n document.cookie = name + \"=\" + (value || \"\") + domain + expires + \"; path=/; secure\";\r\n };\r\n\r\n var getCookie = function(name) {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === ' ')\r\n c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) === 0)\r\n return c.substring(nameEQ.length, c.length);\r\n }\r\n return null;\r\n };\r\n\r\n var eraseCookie = function (name) {\r\n document.cookie = name + '=; Max-Age=-99999999;';\r\n };\r\n\r\n var parseKeyValueString = function (val) {\r\n var hash = [];\r\n try {\r\n var pieces = val.split('&');\r\n for (var i = 0; i < pieces.length; i++) {\r\n var pair = pieces[i].split('=');\r\n if (pair.length > 0) {\r\n var key = decodeURIComponent(pair[0]);\r\n var str = decodeURIComponent(pair[1]);\r\n hash[key] = str;\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n return hash;\r\n };\r\n\r\n return {\r\n setCookie: setCookie,\r\n getCookie: getCookie,\r\n eraseCookie: eraseCookie,\r\n parseKeyValueString: parseKeyValueString\r\n };\r\n})();\r\n\r\nPeopleMedia.Timer = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Timer\";\r\n var logoutWarningMinutes = 15;\r\n var logoutWarningTimer = null;\r\n var StartCountdownTimer = function (minutes) {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n if (minutes) {\r\n logoutWarningMinutes = minutes;\r\n }\r\n if (logoutWarningTimer) {\r\n clearTimeout(logoutWarningTimer);\r\n }\r\n\r\n logoutWarningTimer = setTimeout(ShowLogoutWarning, logoutWarningMinutes * 60000 - 10000);\r\n }\r\n };\r\n\r\n var autoLogoutInterval = null;\r\n var finalCountdown = 0;\r\n var ShowLogoutWarning = function () {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"

Keep it up, there are more great connections waiting for you! You’ve been inactive and will be logged out in 5:00.

\" +\r\n \"
Stay Logged InLogout
\" +\r\n \"
\" +\r\n \"
\";\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n $jq(\"#autoLogoutStayLoggedInButton\").on(\"click\", function () {\r\n ExtendSession();\r\n ClosePopup();\r\n });\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n autoLogoutInterval = setInterval(UpdateFinalCountdown, 1000);\r\n finalCountdown = 300;\r\n }\r\n };\r\n\r\n var AbortLogoutTimer = function () {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n if (logoutWarningTimer) {\r\n clearTimeout(logoutWarningTimer);\r\n logoutWarningTimer = null;\r\n } else {\r\n setTimeout(AbortLogoutTimer, 5000);\r\n }\r\n }\r\n };\r\n\r\n var UpdateFinalCountdown = function () {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n finalCountdown--;\r\n if (finalCountdown < 0) {\r\n clearInterval(autoLogoutInterval);\r\n Logout();\r\n return;\r\n }\r\n var totalSeconds = finalCountdown;\r\n var minutes = Math.floor(totalSeconds / 60);\r\n var seconds = totalSeconds % 60;\r\n var padding = \"\";\r\n if (seconds < 10) {\r\n padding = \"0\";\r\n }\r\n $jq(\"#timeBeforeLogoutSpan\").html(minutes + \":\" + padding + seconds);\r\n }\r\n };\r\n\r\n var Logout = function () {\r\n location.href = \"/v3/logout/\";\r\n };\r\n\r\n var ClosePopup = function () {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n clearInterval(autoLogoutInterval);\r\n $jq(\"#PopupDisplayAreaDiv\").hide();\r\n PeopleMedia.RefreshSession();\r\n StartCountdownTimer();\r\n } else {\r\n $jq(\"#PopupDisplayAreaDiv\").hide();\r\n }\r\n };\r\n\r\n var Init = function () {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n StartCountdownTimer(15);\r\n }\r\n };\r\n\r\n var sessionMinutesRemaining = 20;\r\n var sessionInterval = null;\r\n var minutesSinceLastActivity = 0;\r\n var ExtendSession = function (totalMinutes) {\r\n if (!PeopleMedia.PersistentLoginEnabled && PeopleMedia.IsLoggedIn) {\r\n if (totalMinutes) {\r\n sessionMinutesRemaining = totalMinutes;\r\n StartCountdownTimer(totalMinutes - 5);\r\n }\r\n if (sessionInterval == null) {\r\n sessionInterval = setInterval(ExtendSession, 60000);\r\n } else {\r\n sessionMinutesRemaining--;\r\n minutesSinceLastActivity++;\r\n if (minutesSinceLastActivity + sessionMinutesRemaining > 20 && minutesSinceLastActivity > 16) {\r\n PeopleMedia.RefreshSession();\r\n }\r\n }\r\n }\r\n };\r\n return {\r\n Init: Init,\r\n StartCountdownTimer: StartCountdownTimer,\r\n AbortLogoutTimer: AbortLogoutTimer\r\n };\r\n})(jQuery);\r\n\r\n// has dependencies on jQuery\r\nPeopleMedia.ReportConcern = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.ReportConcern\";\r\n\r\n var racParams = null;\r\n var maximumCommentLength = 255;\r\n var shouldRefreshPage = false;\r\n var usesInputEvent = false;\r\n\r\n var $popupDisplayAreaDiv = $jq();\r\n var $reportConcernMain = $jq();\r\n var $reportConcernPanel = $jq();\r\n var $reportConcernPanelConcern = $jq();\r\n var $reportConcernPanelComment = $jq();\r\n var $reportConcernPanelThanks = $jq();\r\n var $concernType = $jq();\r\n var $blockedCheckbox = $jq();\r\n var $blockedCheckboxContainer = $jq();\r\n var $concernButton = $jq();\r\n var $commentsButton = $jq();\r\n var $comments = $jq();\r\n var $optionalComments = $jq();\r\n var $charactersRemainingValue = $jq();\r\n var $userBlocked = $jq();\r\n\r\n var _isBlocked = false;\r\n\r\n // underage requires blocking\r\n var requiresBlock = function (concern) {\r\n return concern === 9;\r\n };\r\n\r\n // underage skips over comments\r\n var allowsComments = function (concern) {\r\n return concern !== 9;\r\n };\r\n\r\n // need additional info for inappropriate messages, offline behavior, someone is in danger\r\n var requiresComments = function (concern) {\r\n return concern === 1 || concern === 7 || concern === 10;\r\n };\r\n\r\n var updateBlockedUserSelection = function (concern) {\r\n if (requiresBlock(concern)) {\r\n var isChecked = $blockedCheckbox.prop(\"checked\");\r\n if (!isChecked) {\r\n $blockedCheckbox.prop(\"checked\", true);\r\n }\r\n $blockedCheckbox.prop(\"disabled\", true);\r\n $blockedCheckboxContainer.addClass(\"disabled\");\r\n } else {\r\n $blockedCheckbox.prop(\"disabled\", false);\r\n $blockedCheckboxContainer.removeClass(\"disabled\");\r\n }\r\n };\r\n\r\n var getBlockedUserSelection = function () {\r\n return $blockedCheckbox.prop(\"checked\");\r\n };\r\n\r\n var getSelectedConcern = function () {\r\n var concern = null;\r\n var $selected = $concernType.filter(\".selected\");\r\n if ($selected.length > 0) {\r\n var data = parseInt($selected.first().data(\"concern\"), 10);\r\n if (!isNaN(data)) {\r\n concern = data;\r\n }\r\n }\r\n return concern;\r\n };\r\n\r\n var getComments = function () {\r\n return ($comments.val() || \"\").trim();\r\n };\r\n\r\n var closePopups = function () {\r\n PeopleMedia.Popups.ClosePopups();\r\n if (shouldRefreshPage) {\r\n setTimeout(function () {\r\n location.reload();\r\n }, 0);\r\n return;\r\n }\r\n\r\n if (typeof (racParams.onComplete) === \"function\") {\r\n racParams.onComplete({\r\n blocked: _isBlocked\r\n });\r\n }\r\n };\r\n\r\n var doneClick = function (event) {\r\n var $this = $jq(this);\r\n // invert button colors temporarily\r\n $this.addClass(\"clicked\");\r\n setTimeout(function () {\r\n $this.removeClass(\"clicked\");\r\n closePopups();\r\n if (shouldRefreshPage) {\r\n setTimeout(function () {\r\n location.reload();\r\n }, 0);\r\n return;\r\n }\r\n\r\n if (typeof (racParams.onComplete) === \"function\") {\r\n racParams.onComplete({\r\n blocked: _isBlocked\r\n });\r\n }\r\n }, 150);\r\n };\r\n\r\n var showPanelConcern = function () {\r\n $popupDisplayAreaDiv.show();\r\n $reportConcernPanel.not($reportConcernPanelConcern).addClass(\"hidden\");\r\n $reportConcernPanelConcern.removeClass(\"hidden\");\r\n };\r\n\r\n var showPanelComment = function () {\r\n var concern = getSelectedConcern();\r\n var commentsRequired = requiresComments(concern);\r\n if (!commentsRequired) {\r\n $optionalComments.removeClass(\"hidden\");\r\n $commentsButton.removeClass(\"disabled\");\r\n } else {\r\n $optionalComments.addClass(\"hidden\");\r\n $commentsButton.addClass(\"disabled\");\r\n }\r\n\r\n $popupDisplayAreaDiv.show();\r\n $reportConcernPanel.not($reportConcernPanelComment).addClass(\"hidden\");\r\n $reportConcernPanelComment.removeClass(\"hidden\");\r\n };\r\n\r\n var showPanelThanks = function () {\r\n $popupDisplayAreaDiv.show();\r\n $reportConcernPanel.not($reportConcernPanelThanks).addClass(\"hidden\");\r\n $reportConcernPanelThanks.removeClass(\"hidden\");\r\n };\r\n\r\n var submitReportConcern = PeopleMedia.Utility.debounce(function (params) {\r\n try {\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/ReportConcern\";\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"EncodedMemberId\": params.encodedMemberId,\r\n \"PublicMemberId\": params.publicMemberId,\r\n \"Message\": params.comments,\r\n \"SkipCSSVerif\": \"HTMLEditor\",\r\n \"BlockUser\": params.blockUser,\r\n \"ConcernId\": params.concernType,\r\n \"Username\": params.username,\r\n \"QueryString\": window.location.search,\r\n \"MediaId\": params.mediaId,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n submitReportConcernComplete(null, response, params);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"submitReportConcern\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n submitReportConcernComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"submitReportConcern\" });\r\n submitReportConcernComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }, 1000, true);\r\n\r\n var submitReportConcernComplete = function (err, response, params) {\r\n var success = (!err && response && response.status === \"Success\");\r\n\r\n if (response && response.blocked) {\r\n if (success) {\r\n $userBlocked.removeClass(\"hidden\");\r\n _isBlocked = true;\r\n }\r\n // record blocked member to match stack if present\r\n PeopleMedia.Popups.RecordBlockedMemberToMatchStack(params.encodedMemberId, params.publicMemberId);\r\n shouldRefreshPage = params.refreshPage === true;\r\n }\r\n\r\n // session expired might redirect\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n return;\r\n }\r\n\r\n showPanelThanks();\r\n };\r\n\r\n var selectConcernClick = function (event) {\r\n var $this = $jq(this);\r\n if (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n $this.addClass(\"selected\");\r\n $concernType.not($this).removeClass(\"selected\");\r\n $concernButton.removeClass(\"disabled\");\r\n\r\n var concern = getSelectedConcern();\r\n var $buttonText = $concernButton.find(\".button-text\");\r\n if ($buttonText.length > 0) {\r\n $buttonText.text(allowsComments(concern) ? \"Next\" : \"Send\");\r\n }\r\n updateBlockedUserSelection(concern);\r\n };\r\n\r\n var reportConcernNextClick = function(event) {\r\n var $this = $jq(this);\r\n if (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n var concern = getSelectedConcern();\r\n var blockUser = requiresBlock(concern) || getBlockedUserSelection();\r\n var isCommentsPanel = $this.closest(\".report-a-concern-panel\").hasClass(\"panel-comment\");\r\n var comments = getComments();\r\n\r\n if (!$this.hasClass(\"disabled\") && concern > 0) {\r\n // invert button colors temporarily\r\n $this.addClass(\"clicked\");\r\n setTimeout(function() {\r\n $this.removeClass(\"clicked\");\r\n if (!isCommentsPanel && allowsComments(concern)) {\r\n showPanelComment();\r\n return;\r\n }\r\n if (isCommentsPanel && requiresComments(concern) && comments.length === 0) {\r\n return;\r\n }\r\n\r\n submitReportConcern({\r\n encodedMemberId: racParams.encodedMemberId,\r\n username: racParams.username,\r\n publicMemberId: racParams.publicMemberId,\r\n concernType: concern,\r\n blockUser: blockUser,\r\n comments: comments,\r\n mediaId: racParams.mediaId,\r\n isTodaysMatches: racParams.isTodaysMatches,\r\n refreshPage: racParams.refreshPage\r\n });\r\n }, 150);\r\n }\r\n };\r\n\r\n var updateTextCounter = function($target) {\r\n var newText;\r\n var text = $target.val() || \"\";\r\n var chars = text.length;\r\n if (chars > maximumCommentLength) {\r\n newText = text.substr(0, maximumCommentLength);\r\n $target.val(newText);\r\n }\r\n var remain = maximumCommentLength - chars;\r\n if (remain < 0) {\r\n remain = 0;\r\n }\r\n $charactersRemainingValue.text(remain);\r\n var trimmedText = getComments();\r\n if (!trimmedText && requiresComments(getSelectedConcern())) {\r\n $commentsButton.addClass(\"disabled\");\r\n } else {\r\n $commentsButton.removeClass(\"disabled\");\r\n }\r\n };\r\n\r\n var commentOnKeyUp = function (event) {\r\n var $target = $jq(event.currentTarget);\r\n var key = event.which;\r\n if (!PeopleMedia.isCommandKey(key)) {\r\n updateTextCounter($target);\r\n }\r\n };\r\n\r\n var commentOnPaste = function (event) {\r\n var $target = $jq(this);\r\n setTimeout(function () {\r\n updateTextCounter($target);\r\n }, 0);\r\n };\r\n\r\n var commentOnChange = function (event) {\r\n var $target = $jq(this);\r\n updateTextCounter($target);\r\n };\r\n\r\n var commentOnInput = function (event) {\r\n var $target = $jq(this);\r\n usesInputEvent = true;\r\n // don't use keyup if the browser supports input event\r\n $comments.off(\"keyup.pm\");\r\n updateTextCounter($target);\r\n };\r\n\r\n var touchMove = function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n\r\n var init = function (params) {\r\n // params.encodedMemberId\r\n // params.username\r\n // params.publicMemberId\r\n // params.mediaId\r\n // params.isTodaysMatches\r\n // params.refreshPage\r\n shouldRefreshPage = false;\r\n racParams = params;\r\n _isBlocked = false;\r\n\r\n if (typeof (params) !== \"object\" || (!params.encodedMemberId && !params.publicMemberId)) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n return;\r\n }\r\n\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\" +\r\n \"

Report

\" +\r\n \"

Please select the reason:

\" +\r\n \"
\" +\r\n \"
Fake profile/spam
\" +\r\n \"
Inappropriate messages
\" +\r\n \"
Inappropriate photos
\" +\r\n \"
Inappropriate bio
\" +\r\n \"
Underage user
\" +\r\n \"
Offline behavior
\" +\r\n \"
Someone is in danger
\" +\r\n \"
\" +\r\n \"
Block this user
\" +\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"Next\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\" +\r\n \"

Report

\" +\r\n \"

Please provide comments (optional).

\" +\r\n \"
\" +\r\n \"\" +\r\n \"
\" +\r\n \"
Characters Remaining: \" + maximumCommentLength + \"\" +\r\n \"
\" +\r\n \"\" +\r\n \"Send\" +\r\n \"\" +\r\n \"\" +\r\n \"Cancel\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\" +\r\n \"

Thank You

\" +\r\n \"

Your concern is taken very seriously and may require a few days to fully investigate.

\" +\r\n \"

This user has been blocked.

\" +\r\n \"\" +\r\n \"Done\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\";\r\n\r\n $popupDisplayAreaDiv = $jq(\"#PopupDisplayAreaDiv\");\r\n $popupDisplayAreaDiv.empty().html(html);\r\n\r\n $reportConcernMain = $jq(\".report-a-concern\");\r\n $reportConcernPanel = $jq(\".report-a-concern-panel\");\r\n $reportConcernPanelConcern = $reportConcernPanel.filter(\".panel-concern\");\r\n $reportConcernPanelComment = $reportConcernPanel.filter(\".panel-comment\");\r\n $reportConcernPanelThanks = $reportConcernPanel.filter(\".panel-thanks\");\r\n\r\n // all panels\r\n $reportConcernMain.find(\".report-a-concern-close-modal-btn\").on(\"click\", closePopups);\r\n $reportConcernMain.on(\"touchmove\", touchMove);\r\n\r\n // report concern panel\r\n $concernType = $reportConcernPanelConcern.find(\".concern-type\");\r\n $blockedCheckboxContainer = $reportConcernPanelConcern.find(\".rac-checkbox-container\");\r\n $blockedCheckbox = $blockedCheckboxContainer.find(\"input[type='checkbox']\");\r\n $concernButton = $reportConcernPanelConcern.find(\".report-a-concern-button\");\r\n\r\n $reportConcernPanelConcern.on(\"click\", \".concern-type\", selectConcernClick);\r\n $concernButton.on(\"click\", reportConcernNextClick);\r\n\r\n // comments panel\r\n $comments = $reportConcernPanelComment.find(\".comments-container textarea\");\r\n $charactersRemainingValue = $reportConcernPanelComment.find(\".characters-remaining-value\");\r\n $commentsButton = $reportConcernPanelComment.find(\".report-a-concern-button\");\r\n $optionalComments = $reportConcernPanelComment.find(\".optional-comments\");\r\n\r\n $comments.on(\"keyup.pm\", commentOnKeyUp)\r\n .on(\"paste.pm\", commentOnPaste)\r\n .on(\"change.pm\", commentOnChange)\r\n .on(\"input.pm\", commentOnInput);\r\n\r\n $commentsButton.on(\"click\", reportConcernNextClick);\r\n $reportConcernPanelComment.find(\".report-a-concern-link\").on(\"click\", closePopups);\r\n\r\n // thanks panel\r\n $userBlocked = $reportConcernPanelThanks.find(\".blockeduser\");\r\n $reportConcernPanelThanks.find(\".report-a-concern-button\").on(\"click\", doneClick);\r\n\r\n showPanelConcern();\r\n };\r\n\r\n return {\r\n init: init\r\n };\r\n})(jQuery);\r\n\r\n// has dependencies on jQuery and moment.js\r\nPeopleMedia.Popups = (function ($jq, moment) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Popups\";\r\n\r\n var _closeCallBack;\r\n var setOnCloseCallback = function(callBack) {\r\n _closeCallBack = callBack;\r\n };\r\n\r\n var CheckProfileBouncer = function (onComplete) {\r\n // check if in a/b test and if missing photos\r\n if (typeof (PeopleMediaConfig) !== \"undefined\" &&\r\n PeopleMediaConfig !== null &&\r\n typeof (PeopleMediaConfig.Configuration) !== \"undefined\" &&\r\n PeopleMediaConfig.Configuration !== null &&\r\n PeopleMediaConfig.Configuration.isProfileBouncerEnabled &&\r\n !PeopleMediaConfig.Configuration.hasPhotos\r\n ) {\r\n // user is missing photos - show them profile bouncer\r\n ShowProfileBouncer();\r\n } else {\r\n if (onComplete && typeof (onComplete) === \"function\") {\r\n onComplete();\r\n }\r\n }\r\n };\r\n\r\n var profileBouncerCloseClicked = function (e) {\r\n ClosePopups();\r\n PeopleMedia.Utility.enableBodyScrolling();\r\n };\r\n\r\n var profileBouncerCompleteProfileClicked = PeopleMedia.Utility.debounce(function (e) {\r\n $jq(\".profile-bouncer-container .complete-profile-btn\").addClass(\"clicked\");\r\n\r\n // navigate to edit profile page\r\n window.location = \"/v3/Profile/EditMyProfile/\";\r\n }, 800, true);\r\n\r\n var ShowProfileBouncer = function () {\r\n ClosePopups();\r\n PeopleMedia.Utility.disableBodyScrolling(false);\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \" \" +\r\n \" \" +\r\n \"
\" +\r\n \" Your profile does not adhere to our community guidelines possibly because you did not upload a clear photo or write a legitimate response.\" +\r\n \"
\" +\r\n \"
\" +\r\n \" You must complete your profile before you can reach out to our members.\" +\r\n \"
\" +\r\n \"
Complete Profile
\" +\r\n \"
\" +\r\n \"
\";\r\n $jq(\"#PopupDisplayAreaDiv\").html(html);\r\n $jq(\".profile-bouncer-container .close-btn\").on(\"click\", profileBouncerCloseClicked);\r\n $jq(\".profile-bouncer-container .complete-profile-btn\").on(\"click\", profileBouncerCompleteProfileClicked);\r\n\r\n // check if header is present (popup shouldn't overlap header bar)\r\n if (!PeopleMedia.Utility.isElementInViewport($jq(\".layout-container-header\"))) {\r\n $jq(\".profile-bouncer-popup\").addClass(\"full-screen\");\r\n }\r\n\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n $jq(\".profile-bouncer-container\").show();\r\n };\r\n\r\n var AjaxErrorMessage = function () {\r\n return \"Whoops... something's amiss. Please try your request again. If you see this error repeatedly, please refresh the page.\";\r\n };\r\n\r\n var ValidateResponse = function (response) {\r\n if (response) {\r\n if (response.redirect) {\r\n location.href = response.redirect;\r\n return false;\r\n }\r\n if (response.status === \"Success\") {\r\n return true;\r\n } else if (response.status !== \"Success\") {\r\n ShowGenericMessage(response.message);\r\n return false;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n var ShowGenericMessage = function (message, callback) {\r\n ClosePopups();\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"\" +\r\n \"

\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\";\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n if (message) {\r\n $jq(\".generic-message h3\").html(message);\r\n } else {\r\n $jq(\".generic-message h3\").html(\"There was an unexpected error. Please try again.\");\r\n }\r\n $jq(\".generic-message .x\").on(\"click\", function () {\r\n ClosePopups();\r\n });\r\n $jq(\".generic-message > div > a\").on(\"click\", function () {\r\n ClosePopups();\r\n if (callback)\r\n callback();\r\n });\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n };\r\n\r\n var LongMessage = function () {\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"

Oops...

\" +\r\n \"
You’ve reach the maximum allowed length for your message. Click Continue to wrap up your message and send.
\" +\r\n \"
Continue
\" +\r\n \"
\" +\r\n \"
\";\r\n setTimeout(ClosePopups, 5000);\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n $jq(\".long-message .x\").on(\"click\", ClosePopups);\r\n $jq(\".long-message .button\").on(\"click\", ClosePopups);\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n };\r\n\r\n var LearnMore = function (sitepath) {\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"

Extended Network and Public Availability of User Profile Information

\" +\r\n \"
Opted-in members can appear on external search results for \" + sitepath + \" as well as on \" + sitepath + \" partner channels for up to two weeks at a time (this can be anywhere on the \" + sitepath + \" website or in any section of our partners\\\" websites, including the homepage).
\" +\r\n \"
\" +\r\n \"
\";\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n $jq(\".learn-more-search .x\").on(\"click\", ClosePopups);\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n };\r\n\r\n var ShareProfile = function (params) {\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"\" +\r\n \"

\" +\r\n \"

Do you know someone who might be interested in this member’s profile?

\" +\r\n \"
Your friend’s email:
\" +\r\n \"
Message to friend (or type your own):
\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\";\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n $jq(\".share-profile .x\").on(\"click\", ClosePopups);\r\n $jq(\".share-profile > div:last-child > a:first-child\").on(\"click\", ClosePopups);\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n PeopleMedia.AccessibilityHelper.removeOutlineOnClick($jq(\".share-profile\"));\r\n $jq(\"#ShareProfileSendButton\").on(\"click\", function () {\r\n ShareProfileComplete(params);\r\n });\r\n };\r\n\r\n var ShareProfileComplete = function (params) {\r\n var encodedMemberId = params.encodedMemberId;\r\n var username = params.username;\r\n var publicMemberId = params.publicMemberId;\r\n\r\n $jq(\"#ShareProfileSendButton\").off();\r\n $jq(\"#share_profile_error\").hide();\r\n $jq(\".share-profile\").removeClass(\"share-profile-invalid-email\");\r\n\r\n var email = $jq(\"#ShareProfileEmailTextbox\").val();\r\n var message = $jq(\"#ShareProfileTextArea\").val();\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/ShareProfile\";\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"Username\": username,\r\n \"PublicMemberId\": publicMemberId,\r\n \"Message\": message,\r\n \"EmailAddress\": email,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response.message == \"Invalid Email address.\") {\r\n $jq(\".share-profile\").addClass(\"share-profile-invalid-email\");\r\n $jq(\"#share_profile_error\").show();\r\n $jq(\"#share_profile_error\").html(response.message);\r\n\r\n $jq(\"#ShareProfileSendButton\").on(\"click\", function () {\r\n ShareProfileComplete({\r\n encodedMemberId: encodedMemberId,\r\n username: username,\r\n publicMemberId: publicMemberId\r\n });\r\n });\r\n } else if (ValidateResponse(response)) {\r\n ClosePopups();\r\n ShowGenericMessage(response.message);\r\n setTimeout(ClosePopups, 5000);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n if (errorThrown === \"timeout\" || (jqXHR.readyState !== 0 && jqXHR.status !== 0)) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n // ShowGenericMessage(AjaxErrorMessage());\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"ShareProfileComplete\", duration: duration }, jqXHR, textStatus, errorThrown, function () {\r\n });\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n };\r\n\r\n var BlockUser = function (params) {\r\n var username = params.username;\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"\" +\r\n \"

Are you sure you want to block this user?

\" +\r\n \"
If you block this user, they will NOT be able to contact you.
\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"\" +\r\n \"

This user has been blocked.

\" +\r\n \"Done\" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\";\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n $jq(\".block-user h3 span\").html(username);\r\n $jq(\".block-user .x\").on(\"click\", function () {\r\n ClosePopups();\r\n if (typeof (params.onComplete) === \"function\") {\r\n params.onComplete({ blocked: false });\r\n }\r\n });\r\n $jq(\".block-user > div > a:first-child\").on(\"click\", function () {\r\n ClosePopups();\r\n if (typeof (params.onComplete) === \"function\") {\r\n params.onComplete({ blocked: false });\r\n }\r\n });\r\n $jq(\".block-user .button\").on(\"click\", function () {\r\n ConfirmBlock(params);\r\n });\r\n $jq(\".block-user-confirm h3 .span\").html(username);\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n };\r\n\r\n var ConfirmBlock = function (params) {\r\n var encodedMemberId = params.encodedMemberId;\r\n var username = params.username;\r\n var isTodaysMatches = params.isTodaysMatches;\r\n var publicMemberId = params.publicMemberId;\r\n $jq(\".block-user .button\").off();\r\n $jq(\".block-user-confirm .x\").on(\"click\", function () {\r\n ClosePopups();\r\n if (typeof (params.onComplete) === \"function\") {\r\n params.onComplete({ blocked: true });\r\n }\r\n });\r\n $jq(\".pop-up\").hide();\r\n $jq(\".pop-up.confirm\").show();\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/BlockUser\";\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"BlockUser\": true,\r\n \"QueryString\": window.location.search,\r\n \"Username\": username,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null,\r\n \"PublicMemberId\": publicMemberId\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n // record blocked member to match stack if present\r\n RecordBlockedMemberToMatchStack(encodedMemberId, publicMemberId);\r\n\r\n if (ValidateResponse(response)) {\r\n var todaysMatches = isTodaysMatches === \"True\";\r\n if (!todaysMatches) {\r\n if (response.backTo) {\r\n if (response.backTo === \":back\") {\r\n setTimeout(function () {\r\n history.back();\r\n }, 5000);\r\n } else {\r\n setTimeout(function () {\r\n location.href = response.backTo;\r\n }, 5000);\r\n }\r\n }\r\n } else {\r\n setTimeout(function () {\r\n location.reload();\r\n }, 2000);\r\n }\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n if (errorThrown === \"timeout\" || (jqXHR.readyState !== 0 && jqXHR.status !== 0)) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n // ShowGenericMessage(AjaxErrorMessage());\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"ConfirmBlock\", duration: duration }, jqXHR, textStatus, errorThrown, function () {\r\n });\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n };\r\n\r\n // needs to be provided either encoded id or public id to work\r\n var RecordBlockedMemberToMatchStack = function (blockedEncodedMemberId, blockedPublicMemberId) {\r\n try {\r\n // find blocked member in match stack session storage\r\n var sessionData = PeopleMedia.Storage.loadFromStorage(PeopleMedia.getMatchStackSessionStorageKey());\r\n if (sessionData && sessionData.displayMembers && sessionData.displayMembers.length) {\r\n // first try encodedMemberId\r\n var position = sessionData.displayMembers.map(function (e) { return e.ProfileId; })\r\n .indexOf(blockedEncodedMemberId);\r\n\r\n // then try publicMemberId\r\n if (position === -1) {\r\n position = sessionData.displayMembers.map(function (e) { return e.PublicMemberId; })\r\n .indexOf(blockedPublicMemberId);\r\n }\r\n\r\n if (position > -1) {\r\n var now = moment();\r\n var expiresAt = now.add(\"minutes\", 30);\r\n var latestStackInfo = PeopleMedia.findLatestExpiresAt(sessionData.stackInfo);\r\n var stackExpiresAt = (latestStackInfo && latestStackInfo.expiresAt) ? moment(latestStackInfo.expiresAt) : now.add(\"minutes\", 30);\r\n if (expiresAt.isAfter(stackExpiresAt)) {\r\n expiresAt = stackExpiresAt;\r\n }\r\n\r\n sessionData.displayMembers[position].Blocked = true;\r\n if (!blockedEncodedMemberId) {\r\n blockedEncodedMemberId = sessionData.displayMembers[position].ProfileId;\r\n }\r\n sessionData.blockedProfiles[blockedEncodedMemberId] = {\r\n blockedAt: now.format(),\r\n expiresAt: expiresAt.format()\r\n };\r\n\r\n // save data back to session\r\n PeopleMedia.Storage.saveToStorage(PeopleMedia.getMatchStackSessionStorageKey(), sessionData);\r\n\r\n // if matchStack.js available, remove the blocked members\r\n if (typeof (PeopleMedia.MatchStack) !== \"undefined\" &&\r\n PeopleMedia.MatchStack !== null &&\r\n typeof (PeopleMedia.MatchStack.removeBlockedMembers) === \"function\") {\r\n PeopleMedia.MatchStack.removeBlockedMembers({\r\n forceRefreshSession: true\r\n });\r\n }\r\n }\r\n }\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"RecordBlockedMemberToMatchStack\", blockedEncodedMemberId: blockedEncodedMemberId, blockedPublicMemberId: blockedPublicMemberId });\r\n }\r\n };\r\n\r\n var Init = function () {\r\n };\r\n \r\n var FlirtSent = function (encodedMemberId, username, gender, hasPhoto, fromPage, featureName, upn, isBdayFlirt, isDelighful) {\r\n var quickTip = \"\";\r\n var quickTipNumber = 0;\r\n var genderObjective = (gender === 1) ? \"Him\" : \"Her\";\r\n var flirtOrLikeText = (PeopleMedia.CombineFlirtsAndLikes) ? \"like\" : \"flirt\";\r\n var defaultTitle = (PeopleMedia.CombineFlirtsAndLikes) ? \"Like Sent!\" : \"Flirt Sent!\";\r\n var defaultText = \"Hello, you caught my attention with...\";\r\n\r\n var tipsMaleProfile = [\r\n \"Quick Tip: Just say \\\"hi\\\" and introduce yourself. Yes. It really is that simple to stand out.\",\r\n \"Did you know the guys on the site prefer messages to \"+flirtOrLikeText+\"s? Yes! And they are 5x times more likely to respond to your message than your \"+flirtOrLikeText+\".\",\r\n \"Quick Tip: Stand out from the \"+flirtOrLikeText+\"s and tell him one thing that you liked about his profile.\",\r\n \"Quick Tip: Make him feel like a million bucks by mentioning what you like about his profile.\",\r\n \"Quick Tip: Increase your odds of getting a reply - ask about his interests.\"\r\n ];\r\n var tipsFemaleProfile = [\r\n \"Quick Tip: Just say \\\"hi\\\" and introduce yourself. Yes. It really is that simple to stand out.\",\r\n \"Did you know...
Women greatly prefer getting a personalized message over a \"+flirtOrLikeText+\". So send a quick note to increase your chance of a reply by 5X!\",\r\n \"Quick Tip: Tell her one thing that you liked about her profile.\",\r\n \"Quick Tip: Increase your odds of getting a reply - ask about her interests.\",\r\n \"Quick Tip: Don't be shy, say Hi and let her know you're interested.\"\r\n ];\r\n\r\n var buttonCTA = \"Tell \" + genderObjective;\r\n\r\n if (isBdayFlirt != null && isBdayFlirt == true) {\r\n defaultTitle = \"Birthday Wish Sent\";\r\n defaultText = \"Happy Birthday! I hope you...\";\r\n quickTip = \"Personalize Your Birthday Wish with a Message!\";\r\n buttonCTA = \"Send Message\";\r\n } else if (hasPhoto) {\r\n quickTip = \"Quick Tip: Compliment \" + genderObjective.toLowerCase() + \" on your favorite photo. What stands out to you?\";\r\n } else {\r\n quickTipNumber = Math.floor(Math.random() * tipsMaleProfile.length);\r\n quickTip = (gender === 1) ? tipsMaleProfile[quickTipNumber] : tipsFemaleProfile[quickTipNumber];\r\n }\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"

\" + defaultTitle + \"

\" +\r\n \"
\" + quickTip + \"
\" +\r\n \"
\" +\r\n \"
Cancel\" + buttonCTA + \"
\" +\r\n \"
\" +\r\n \"
\";\r\n if (isDelighful != null && isDelighful == true) {\r\n html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"

\" + defaultTitle + \"

\" +\r\n \"
Compliment \" + genderObjective.toLowerCase() + \" on your
favorite photo. What
stands out to you?
\" +\r\n \"
\" +\r\n \"
cancel\" + buttonCTA + \"
\" +\r\n \"
\" +\r\n \"
\";\r\n }\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n $jq(\"#PopupSendMessageConfirmButton\").on(\"click\", function () {\r\n ConfirmSendMessage(encodedMemberId, username, gender, hasPhoto, fromPage, featureName, upn, isBdayFlirt);\r\n });\r\n $jq(\".profile-flirt-sent .x\").on(\"click\", ClosePopups);\r\n $jq(\".profile-flirt-sent > div:last-child > a:first-child\").on(\"click\", ClosePopups);\r\n $jq(\"#PopupSendMessageTextArea\").on(\"focus\", function () {\r\n if ($jq(this).val() === defaultText) {\r\n var defaultText2 = defaultText.substring(0, defaultText.length - 3) + \" \";\r\n setCursorPosition(\"PopupSendMessageTextArea\", defaultText2.length);\r\n $jq(this).val(defaultText2);\r\n // Work around Chrome problem not allowing cursor position change from focus event\r\n window.setTimeout(function () {\r\n setCursorPosition(\"PopupSendMessageTextArea\", defaultText2.length);\r\n }, 500);\r\n }\r\n });\r\n $jq(\"#PopupSendMessageTextArea\").on(\"keyup\", function () {\r\n var limit = 3000;\r\n var text = $jq(this).val();\r\n var chars = text.length;\r\n if (chars > limit) {\r\n var new_text = text.substr(0, limit);\r\n $jq(this).val(new_text);\r\n }\r\n });\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n };\r\n\r\n var ConfirmSendMessage = function (encodedMemberId, username, gender, hasPhoto, fromPage, featureName, upn, isBdayFlirt) {\r\n $jq(\"#PopupSendMessageConfirmButton\").off();\r\n $jq(\"#PopupSendMessageCancelButton\").on(\"click\", ClosePopups);\r\n $jq(\".popupshowflirtsent\").hide();\r\n var message = $jq(\"#PopupSendMessageTextArea\").val().replace(/^\\s+|\\s+$/g, \"\");\r\n if (message && message !== \"\" && message !== \"Hello, you caught my attention with...\" && message !== \"Hello, you caught my attention with\" && message !== \"Happy Birthday! I hope you...\" && message !== \"Happy Birthday! I hope you\") {\r\n\r\n var todaysMatchCurrent = typeof (PeopleMedia.Profile) !== \"undefined\" && PeopleMedia.Profile.IsTodaysMatch ? PeopleMedia.Profile.TodaysMatchCurrent : 0;\r\n\r\n PeopleMedia.Messaging.sendMessage({\r\n encodedMemberId: encodedMemberId,\r\n featureName: featureName,\r\n message: message,\r\n upn: upn,\r\n fromPage: fromPage,\r\n todaysMatchCurrent: todaysMatchCurrent,\r\n suppressErrors: true,\r\n onComplete: function (err, response, data) {\r\n if (response && response.status !== \"Success\") {\r\n if (response.redirect) {\r\n // upgrade\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response.message) {\r\n ShowGenericMessage(response.message, function () {\r\n FlirtSent(encodedMemberId, username, gender, hasPhoto, fromPage, featureName, upn, isBdayFlirt);\r\n });\r\n }\r\n return;\r\n } else if (response && response.status === \"Success\") {\r\n if (response.messageSentUrl) {\r\n location.href = response.messageSentUrl;\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n ShowGenericMessage(\"Please enter a message!\", function () {\r\n FlirtSent(encodedMemberId, username, gender, hasPhoto, fromPage, featureName, upn, isBdayFlirt);\r\n });\r\n return;\r\n }\r\n };\r\n\r\n var ShowPrivacyPolicyUpdate = function (options) {\r\n if (typeof (options) === \"undefined\" || options === null) {\r\n return;\r\n }\r\n var html =\r\n \"
\" +\r\n \"
\" +\r\n \"\" +\r\n \"

Privacy Policy Update

\" +\r\n \"
On \" + options.formattedEffectiveDate + \", \" + ((options.isBeforeEffectiveDate === true) ? \"we'll update\" : \"we updated\") +\r\n \" our Privacy Policy to make them clearer and to address new privacy laws. Learn more here.\" +\r\n \"
\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\";\r\n $jq(\"#PopupDisplayAreaDiv\").empty().html(html);\r\n $jq(\"#PopupDisplayAreaDiv\").show();\r\n\r\n // treat closing the popup the same as clicking on the button\r\n $jq(\".privacy-policy-update .x\").on(\"click\", options, ShowPrivacyPolicyUpdateComplete);\r\n $jq(\".privacy-policy-update .privacy-policy-confirm\").on(\"click\", options, ShowPrivacyPolicyUpdateComplete);\r\n $jq(\".privacy-policy-update a.privacy-policy-link\").on(\"click\", options, TrackPrivacyPolicyAndRedirect);\r\n };\r\n\r\n var ShowPrivacyPolicyUpdateComplete = function(event) {\r\n TrackUserAgreement(event, function () {\r\n // do nothing\r\n });\r\n };\r\n\r\n var TrackUserAgreement = function (event, onComplete) {\r\n if (!event || !event.data) {\r\n if (typeof (onComplete) === \"function\") {\r\n return onComplete();\r\n }\r\n return false;\r\n }\r\n var options = event.data;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/TrackUserAgreement\";\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"UserAgreementVersionId\": options.userAgreementVersionId,\r\n \"PendingUserAgreementVersionId\": options.pendingUserAgreementVersionId,\r\n \"UserAgreementName\": options.userAgreementName,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n }\r\n ClosePopups();\r\n if (typeof (onComplete) === \"function\") {\r\n return onComplete();\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n ClosePopups();\r\n if (errorThrown === \"timeout\" || (jqXHR.readyState !== 0 && jqXHR.status !== 0)) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n // ShowGenericMessage(AjaxErrorMessage());\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"TrackUserAgreement\", duration: duration }, jqXHR, textStatus, errorThrown);\r\n }\r\n if (typeof (onComplete) === \"function\") {\r\n return onComplete();\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n };\r\n\r\n var TrackPrivacyPolicyAndRedirect = function (event) {\r\n // redirect after tracking is completed\r\n return TrackUserAgreement(event, function () {\r\n location.href = \"/v3/features/privacypolicy\";\r\n });\r\n };\r\n\r\n var setCursorPosition = function (inputId, pos) {\r\n var input = document.getElementById(inputId);\r\n if (input && input.value) {\r\n setSelectionRange(input, pos, pos);\r\n }\r\n };\r\n\r\n var setSelectionRange = function (input, selectionStart, selectionEnd) {\r\n if (input.setSelectionRange) {\r\n input.focus();\r\n input.setSelectionRange(selectionStart, selectionEnd);\r\n } else if (input.createTextRange) {\r\n var range = input.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd(\"character\", selectionEnd);\r\n range.moveStart(\"character\", selectionStart);\r\n range.select();\r\n }\r\n };\r\n\r\n var ClosePopups = function () {\r\n // Specify zero on hide duration so we avoid timing issues with callback and future manipulation to element being hidden\r\n $jq(\"#PopupDisplayAreaDiv\").hide(0, _closeCallBack);\r\n };\r\n\r\n return {\r\n setOnCloseCallback: setOnCloseCallback,\r\n AjaxErrorMessage: AjaxErrorMessage,\r\n ShowGenericMessage: ShowGenericMessage,\r\n LongMessage: LongMessage,\r\n LearnMore: LearnMore,\r\n ShareProfile: ShareProfile,\r\n BlockUser: BlockUser,\r\n RecordBlockedMemberToMatchStack: RecordBlockedMemberToMatchStack,\r\n Init: Init,\r\n ReportConcern: PeopleMedia.ReportConcern.init,\r\n FlirtSent: FlirtSent,\r\n ShowPrivacyPolicyUpdate: ShowPrivacyPolicyUpdate,\r\n ClosePopups: ClosePopups,\r\n CheckProfileBouncer: CheckProfileBouncer\r\n };\r\n})(jQuery, moment);\r\n\r\nPeopleMedia.ChatPane = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.ChatPane\";\r\n\r\n var chatPane = null;\r\n var columnLeft = null;\r\n var pub = [];\r\n var wired = false;\r\n var win = null;\r\n pub.IsEnabled = false;\r\n var isShowing = false;\r\n var lastToggle = null;\r\n var shouldToggle = function () {\r\n if (lastToggle == null) {\r\n lastToggle = new Date();\r\n return true;\r\n } else {\r\n var newToggle = new Date();\r\n if ((newToggle - lastToggle) > 600) {\r\n lastToggle = newToggle;\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n pub.ShowChat = function (forceEnabled) {\r\n if (forceEnabled == true || forceEnabled == false) {\r\n pub.IsEnabled = forceEnabled;\r\n }\r\n if (wired == false) {\r\n win = $jq(window);\r\n chatPane = $jq(\"div.chatPane\");\r\n columnLeft = $jq(\"div#columnleft\");\r\n\r\n wired = true;\r\n }\r\n if (chatPane == null || chatPane.length == 0 || pub.IsEnabled == false || !shouldToggle()) {\r\n return;\r\n }\r\n isShowing = true;\r\n win.off(\"scroll.chatPane\").on(\"scroll.chatPane\", scrolled);\r\n win.off(\"resize.chatPane\").on(\"resize.chatPane\", resized);\r\n chatPane.animate({ \"right\": \"0px\" }, 400);\r\n resized();\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var url = \"/v3/chat/getavailablemembers\";\r\n $jq.ajax({\r\n url: url,\r\n type: \"GET\",\r\n data: {},\r\n success: populateMembers,\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n // PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"pub.ShowChat\", duration: duration }, jqXHR, textStatus, errorThrown, function () {\r\n });\r\n\r\n var h1 = chatPane.find(\">h1\").clone();\r\n h1.off(\"click\").on(\"click\", pub.HideChat);\r\n chatPane.children().remove();\r\n chatPane.append(h1);\r\n var h2 = $jq(\"

Sorry, we are unable to load chat list at this time...

\");\r\n chatPane.append(h2);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n\r\n startTime = new Date().getTime();\r\n timeoutValue = 60000;\r\n url = \"/v3/chat/UpdateShowHideChatPanel\";\r\n var ajaxData = {\r\n \"show\": true\r\n };\r\n $jq.ajax({\r\n url: url,\r\n type: \"POST\",\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n };\r\n pub.ToggleChat = function () {\r\n if (isShowing == true) {\r\n pub.HideChat();\r\n } else {\r\n pub.ShowChat();\r\n }\r\n };\r\n var populateMembers = function (result) {\r\n var h1 = chatPane.find(\">h1\").clone();\r\n h1.off(\"click\").on(\"click\", pub.HideChat);\r\n chatPane.children().remove();\r\n chatPane.append(h1);\r\n if (result.success == true) {\r\n if (result.Members && result.Members.length > 0) {\r\n $jq.each(result.Members, function (fx) {\r\n var member = result.Members[fx];\r\n var div = $jq(\"
\");\r\n var img = $jq(\"\");\r\n img.prop(\"src\", member.PhotoUrl);\r\n div.append(img);\r\n div.prop(\"title\", \"Click to Chat with \" + member.Username + \" Now!\");\r\n div.append(\"

\" + member.Username + \"

\");\r\n if (member.IsFavorite == true) {\r\n div.addClass(\"fav\");\r\n if (member.Gender == 1) {\r\n div.append(\"

He's a Favorite!

\");\r\n } else {\r\n div.append(\"

She's a Favorite!\");\r\n }\r\n } else {\r\n div.append(\"

\" + member.Age + \" | \" + member.Location + \"

\");\r\n }\r\n if (result.IsPaid || result.upgradeOnSend) {\r\n member.UpgradeUrl = (!result.IsPaid) ? result.UpgradeUrl + \"&profile=\" + member.EncryptedMemberId : null;\r\n div.on(\"click\", function () { initiateChat(member); });\r\n } else {\r\n div.on(\"click\", function () {\r\n location.href = result.UpgradeUrl + \"&profile=\" + member.EncryptedMemberId;\r\n });\r\n }\r\n chatPane.append(div);\r\n });\r\n chatPane.append($jq(\"
\").addClass(\"last\"));\r\n } else {\r\n var h2 = $jq(\"

No members online at this time

\");\r\n chatPane.append(h2);\r\n }\r\n } else {\r\n var h2 = $jq(\"

Sorry, we are unable to load chat list at this time...

\");\r\n chatPane.append(h2);\r\n }\r\n };\r\n var initiateChat = function (member) {\r\n if (PMChat.ChatEnabled == false) {\r\n alert(\"You must enable chat to send and receive messages!\");\r\n return;\r\n }\r\n PMChat.Client({\r\n SiteID: member.SiteId,\r\n MemberID: member.EncryptedMemberId,\r\n NickName: member.Username,\r\n PhotoUrl: member.PhotoUrl,\r\n UpgradeUrl: member.UpgradeUrl,\r\n Age: member.Age,\r\n Location: member.Location,\r\n City: member.City,\r\n StateCode: member.StateCode,\r\n CountryCode: member.CountryCode,\r\n Gender: member.Gender\r\n });\r\n PMChat.UI.ChatTabFocus({ WithMember: { MemberID: member.EncryptedMemberId } }, true);\r\n };\r\n\r\n pub.HideChat = function () {\r\n if (chatPane == null || chatPane.length == 0 || pub.IsEnabled == false || !shouldToggle()) {\r\n return;\r\n }\r\n isShowing = false;\r\n win.off(\"scroll.chatPane\");\r\n win.off(\"resize.chatPane\");\r\n\r\n columnLeft.animate({ \"margin-left\": \"0px\" }, 400);\r\n chatPane.animate({ \"right\": \"-200px\" }, 400, function () {\r\n var h1 = chatPane.find(\">h1\").clone();\r\n chatPane.children().remove();\r\n chatPane.append(h1);\r\n chatPane.append(\"

Loading Members...

\");\r\n });\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var url = \"/v3/chat/UpdateShowHideChatPanel\";\r\n var ajaxData = {\r\n \"show\": false\r\n };\r\n $jq.ajax({\r\n url: url,\r\n type: \"POST\",\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n };\r\n var resized = function () {\r\n var win = $jq(window);\r\n var leftColMargin = columnLeft.css(\"margin-left\");\r\n var width = win.width();\r\n if (width > 1330) {\r\n if (leftColMargin != \"-95px\") {\r\n columnLeft.animate({ \"margin-left\": \"-95px\" }, 400);\r\n }\r\n } else if (width > 1280) {\r\n if (leftColMargin != \"-55px\") {\r\n columnLeft.animate({ \"margin-left\": \"-55px\" }, 400);\r\n }\r\n } else {\r\n if (leftColMargin != \"-45px\") {\r\n columnLeft.animate({ \"margin-left\": \"-45px\" }, 400);\r\n }\r\n }\r\n\r\n scrolled();\r\n };\r\n var scrolled = function () {\r\n var win = $jq(window);\r\n var scrollTop = win.scrollTop();\r\n\r\n if (scrollTop > 80) {\r\n if (chatPane.css(\"top\") == \"0\") return;\r\n chatPane.css(\"top\", \"0px\");\r\n } else if (scrollTop >= 0) {\r\n chatPane.css(\"top\", 80 - scrollTop + \"px\");\r\n }\r\n };\r\n\r\n return pub;\r\n})(jQuery);\r\n\r\nPeopleMedia.WebSyncServer = (function () {\r\n \"use strict\";\r\n\r\n var Oid = \"PeopleMedia.WebSyncServer\";\r\n\r\n var _client = null;\r\n\r\n var Init = function () {\r\n if (_client == null &&\r\n !PeopleMediaConfig.Configuration.isUpgradePage &&\r\n typeof (fm) !== \"undefined\") {\r\n if (typeof (fm.websync.client) == \"object\") {\r\n // WSv3\r\n _client = fm.websync.client;\r\n } else {\r\n //WSv4+\r\n _client = new fm.websync.client(PeopleMediaConfig.Configuration.webSyncUrl);\r\n }\r\n\r\n if (_client.initialize)\r\n _client.initialize();\r\n\r\n _client.connect();\r\n }\r\n };\r\n\r\n return {\r\n get Client() { return _client; },\r\n get WebSyncUrl() { return PeopleMediaConfig.Configuration.webSyncUrl; },\r\n get Enabled() { return !PeopleMediaConfig.Configuration.isUpgradePage; },\r\n Init: Init\r\n };\r\n})();\r\n\r\nPeopleMedia.LikeMedia = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.LikeMedia\";\r\n\r\n var likeMedia = function (params) {\r\n params = params || {};\r\n var encodedMemberId = params.encodedMemberId || null;\r\n var publicMemberId = params.publicMemberId || null;\r\n var featureName = params.featureName || null;\r\n var mediaId = params.mediaId || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n var suppressErrors = params.suppressErrors === true;\r\n\r\n try {\r\n var apiSendEnabled = !!PeopleMedia.ApiSendEnabled;\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var url = (apiSendEnabled) ? \"/v3/Ajax/SendApiPhotoLike\" : \"/v3/Ajax/LikePhoto\";\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"PublicMemberId\": publicMemberId,\r\n \"ObjectId\": mediaId,\r\n \"FeatureName\": featureName,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null\r\n };\r\n if (params.pageNumber) {\r\n ajaxData.PageNumber = params.pageNumber;\r\n }\r\n if (params.pageDefinitionView) {\r\n ajaxData.PageDefinitionView = params.pageDefinitionView;\r\n }\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n var errorMessage = (response && response.message) ? response.message : null;\r\n var isDuplicate = (response && response.isDuplicate);\r\n if (!suppressErrors && !isDuplicate) {\r\n PeopleMedia.Popups.ShowGenericMessage(errorMessage);\r\n }\r\n if (hasOnComplete) {\r\n var errProp = {};\r\n if (response && response.isDuplicate) {\r\n errProp.isDuplicate = true;\r\n }\r\n onComplete(PeopleMedia.createErrorObject(errProp), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n }\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"likeMedia\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"likeMedia\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var commentMedia = function (params) {\r\n params = params || {};\r\n var encodedMemberId = params.encodedMemberId || null;\r\n var publicMemberId = params.publicMemberId || null;\r\n var featureName = params.featureName || null;\r\n var mediaId = params.mediaId || null;\r\n var message = params.message || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n var suppressErrors = params.suppressErrors === true;\r\n\r\n try {\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var url = \"/v3/Ajax/CommentPhoto\";\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"PublicMemberId\": publicMemberId,\r\n \"ObjectId\": mediaId,\r\n \"Message\": message,\r\n \"FeatureName\": featureName,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null,\r\n \"SkipCSSVerif\": \"HTMLEditor\"\r\n };\r\n if (params.pageNumber) {\r\n ajaxData.PageNumber = params.pageNumber;\r\n }\r\n if (params.pageDefinitionView) {\r\n ajaxData.PageDefinitionView = params.pageDefinitionView;\r\n }\r\n if (params.upn) {\r\n ajaxData.UPN = params.upn;\r\n }\r\n if (params.fromPage) {\r\n ajaxData.FromPage = params.fromPage;\r\n }\r\n if (params.includeQueryString === true) {\r\n url += window.location.search;\r\n }\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n var errorMessage = (response && response.message) ? response.message : null;\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(errorMessage);\r\n }\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n }\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"commentMedia\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"commentMedia\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n likeMedia: likeMedia,\r\n commentMedia: commentMedia\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Messaging = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Messaging\";\r\n var _messagePromptInProgress = false;\r\n var _messagePrompts = [];\r\n var _messagePromptsLegacy = [];\r\n var _messagePromptsAll = [];\r\n var _messagePromptsLegacyAll = [];\r\n var isSendingMessage = false;\r\n var _months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n var _days = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n\r\n var sendMessage = function (params) {\r\n params = params || {};\r\n var encodedMemberId = params.encodedMemberId || null;\r\n var publicMemberId = params.publicMemberId || null;\r\n var featureName = params.featureName || null;\r\n var fromPage = params.fromPage || null;\r\n var pageDefinitionId = params.pageDefinitionId || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n var suppressErrors = params.suppressErrors === true;\r\n try {\r\n if (isSendingMessage === true) return;\r\n isSendingMessage = true;\r\n\r\n if (!pageDefinitionId && typeof (PeopleMedia.PageDefinitionId) !== \"undefined\") {\r\n pageDefinitionId = PeopleMedia.PageDefinitionId;\r\n }\r\n var apiSendEnabled = !!PeopleMedia.ApiSendEnabled;\t\r\n var url = (apiSendEnabled) ? \"/v3/Ajax/SendApiMessage\" : \"/v3/Ajax/SendMessage\";\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"PublicMemberId\": publicMemberId,\r\n \"FeatureName\": featureName,\r\n \"FromPage\": fromPage,\r\n \"SkipCSSVerif\": \"HTMLEditor\",\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null\r\n };\r\n if (params.pageNumber) {\r\n ajaxData.PageNumber = params.pageNumber;\r\n }\r\n if (params.pageDefinitionView) {\r\n ajaxData.PageDefinitionView = params.pageDefinitionView;\r\n }\r\n if (params.actionType) {\r\n ajaxData.ActionType = params.actionType;\r\n }\r\n if (params.objectId) {\r\n ajaxData.ObjectId = params.objectId;\r\n }\r\n if (params.todaysMatchCurrent) {\r\n ajaxData.TodaysMatchCurrent = params.todaysMatchCurrent;\r\n }\r\n if (params.searchId) {\r\n ajaxData.SearchId = params.searchId;\r\n }\r\n if (params.subject) {\r\n ajaxData.Subject = params.subject;\r\n }\r\n if (params.message) {\r\n ajaxData.Message = params.message;\r\n }\r\n if (params.upn) {\r\n ajaxData.UPN = params.upn;\r\n }\r\n if (params.fromPage) {\r\n ajaxData.FromPage = params.fromPage;\r\n }\r\n if (params.isCannedMessage) {\r\n ajaxData.IsCannedMessage = params.isCannedMessage;\r\n }\r\n if (params.prepopulatedMessageId) {\r\n ajaxData.PrepopulatedMessageId = params.prepopulatedMessageId;\r\n }\r\n if (params.trackingModule) {\r\n ajaxData.TrackingModule = params.trackingModule;\r\n }\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n isSendingMessage = false;\r\n if (response && response.status !== \"Success\" && response.redirect) {\r\n // upgrade\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n var errorMessage = (response && response.message) ? response.message : null;\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(errorMessage);\r\n }\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n isSendingMessage = false;\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n }\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"sendFlirt\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n isSendingMessage = false;\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"sendMessage\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var getMessagePromptsForSite = function (params) {\r\n params = params || {};\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n try {\r\n // skip if already loaded\r\n if (!params.forceRefresh && _messagePrompts && _messagePrompts.length > 0) {\r\n if (hasOnComplete) {\r\n onComplete(null, { status: \"Success\", data: { messagePrompts: _messagePrompts }}, params);\r\n }\r\n return;\r\n }\r\n\r\n // handle case when call is already in progress\r\n if (_messagePromptInProgress) {\r\n // wait .5s and retry once\r\n setTimeout(function() {\r\n if (params.isRetry) {\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), null, params);\r\n }\r\n return;\r\n } else {\r\n params.isRetry = true;\r\n getMessagePromptsForSite(params);\r\n }\r\n }, 500);\r\n return;\r\n }\r\n\r\n _messagePromptInProgress = true;\r\n\r\n var url = \"/v3/Ajax/GetMessagePromptsForSite\";\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 10000;\r\n var ajaxData = {};\r\n $jq.ajax({\r\n type: \"GET\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n _messagePromptInProgress = false;\r\n if (response && response.status === \"Success\" && response.data && response.data.messagePrompts) {\r\n _messagePrompts.length = 0;\r\n _messagePromptsLegacy.length = 0;\r\n _messagePromptsAll.length = 0;\r\n _messagePromptsLegacyAll.length = 0;\r\n Array.prototype.push.apply(_messagePromptsAll, response.data.messagePrompts\r\n .filter(function (obj) {\r\n return obj && obj.text;\r\n }));\r\n Array.prototype.push.apply(_messagePromptsLegacyAll, response.data.messagePrompts\r\n .filter(function (obj) {\r\n return obj && obj.text && obj.isLegacy === true;\r\n }));\r\n Array.prototype.push.apply(_messagePrompts, _messagePromptsAll);\r\n Array.prototype.push.apply(_messagePromptsLegacy, _messagePromptsLegacyAll);\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n _messagePrompts.length = 0;\r\n _messagePromptsLegacy.length = 0;\r\n _messagePromptsAll.length = 0;\r\n _messagePromptsLegacyAll.length = 0;\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n _messagePromptInProgress = false;\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"getMessagePromptsForSite\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n _messagePrompts.length = 0;\r\n _messagePromptsLegacy.length = 0;\r\n _messagePromptsAll.length = 0;\r\n _messagePromptsLegacyAll.length = 0;\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n _messagePromptInProgress = false;\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"getMessagePromptsForSite\" });\r\n _messagePrompts.length = 0;\r\n _messagePromptsLegacy.length = 0;\r\n _messagePromptsAll.length = 0;\r\n _messagePromptsLegacyAll.length = 0;\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var getRandomMessagePrompt = function (params) {\r\n try {\r\n var useLegacy = (params && params.isLegacy === true);\r\n var removeAfterUse = (params && params.removeAfterUse === true);\r\n var values = useLegacy ? _messagePromptsLegacy : _messagePrompts;\r\n var randomNumber = Math.floor(Math.random() * values.length);\r\n var response = values[randomNumber];\r\n if (removeAfterUse) {\r\n // remove message prompt which has been displayed\r\n values.splice(randomNumber, 1);\r\n\r\n // repopulate with all message prompts once they have all been displayed\r\n if (values.length === 0) {\r\n if (useLegacy) {\r\n Array.prototype.push.apply(_messagePromptsLegacy, _messagePromptsLegacyAll);\r\n } else {\r\n Array.prototype.push.apply(_messagePrompts, _messagePromptsAll);\r\n }\r\n }\r\n }\r\n return response;\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { oid: Oid, method: \"getRandomMessagePrompt\" });\r\n }\r\n };\r\n\r\n // returns time in format HH:mm AM/PM\r\n var getFormattedTimeFromTimestamp = function (timestamp) {\r\n var formattedTime = \"\";\r\n\r\n if (timestamp && typeof (timestamp) === \"number\") {\r\n var msgDate = new Date(timestamp);\r\n\r\n var hr = msgDate.getHours();\r\n var min = msgDate.getMinutes();\r\n if (min < 10) {\r\n min = \"0\" + min;\r\n }\r\n var ampm = \"AM\";\r\n if (hr === 12) {\r\n ampm = \"PM\";\r\n } else if (hr > 12) {\r\n hr -= 12;\r\n ampm = \"PM\";\r\n } else if (hr === 0) {\r\n hr = 12;\r\n }\r\n formattedTime = hr + \":\" + min + \" \" + ampm;\r\n }\r\n\r\n return formattedTime;\r\n };\r\n\r\n var formatMessageTimestamp = function (params) {\r\n var timestamp = params.timestamp;\r\n var mrc = params.mrc === true;\r\n var formattedDate = \"\";\r\n var today = new Date();\r\n var yesterday = new Date(today);\r\n yesterday.setDate(today.getDate() - 1);\r\n var lastWeek = new Date(today);\r\n lastWeek.setDate(today.getDate() - 6);\r\n lastWeek.setHours(0, 0, 0, 0);\r\n var lastYear = new Date(today);\r\n lastYear.setFullYear(today.getFullYear() - 1);\r\n lastYear.setHours(23, 59, 59, 999);\r\n\r\n if (timestamp && typeof (timestamp) === \"number\") {\r\n var msgDate = new Date(timestamp);\r\n\r\n // Sent today => Time is displayed (ex. 10:00 AM)\r\n if (msgDate.getFullYear() === today.getFullYear()\r\n && msgDate.getMonth() === today.getMonth()\r\n && msgDate.getDate() === today.getDate()) {\r\n formattedDate = getFormattedTimeFromTimestamp(timestamp);\r\n }\r\n // Sent previous calendar day => Yesterday + time is displayed\r\n else if (msgDate.getFullYear() === yesterday.getFullYear()\r\n && msgDate.getMonth() === yesterday.getMonth()\r\n && msgDate.getDate() === yesterday.getDate()) {\r\n formattedDate = \"Yesterday\";\r\n if (!mrc) {\r\n formattedDate += \", \" + getFormattedTimeFromTimestamp(timestamp);\r\n }\r\n }\r\n // Sent 2 to 7 calendar days ago => Day of the week + time is displayed (ex. Tuesday, 10:00 AM)\r\n else if (msgDate.getTime() >= lastWeek.getTime()) {\r\n formattedDate = _days[msgDate.getDay()];\r\n if (!mrc) {\r\n formattedDate += \", \" + getFormattedTimeFromTimestamp(timestamp);\r\n }\r\n }\r\n // Sent 7+ calendar days to 1 calendar year ago => Month abbreviation and day + time are displayed (ex. Aug 7, 10:00 AM)\r\n else if (msgDate.getTime() > lastYear.getTime()) {\r\n formattedDate = _months[msgDate.getMonth()] + \" \" + msgDate.getDate();\r\n if (!mrc) {\r\n formattedDate += \", \" + getFormattedTimeFromTimestamp(timestamp);\r\n }\r\n }\r\n // Sent more than 1 calendar year ago => MM/DD/YY + time is displayed (ex. 12/24/20, 10:00AM)\r\n else {\r\n var month = msgDate.getMonth();\r\n var day = msgDate.getDay();\r\n var year = msgDate.getFullYear().toString().slice(-2);\r\n formattedDate = month + \"/\" + day + \"/\" + year;\r\n if (!mrc) {\r\n formattedDate += \", \" + getFormattedTimeFromTimestamp(timestamp);\r\n }\r\n }\r\n }\r\n\r\n return formattedDate;\r\n };\r\n\r\n // get time formatted like \"Minutes Ago\", \"Days Ago\", etc.\r\n var formatRelativeTimeFromTimestamp = function(timestamp) {\r\n var text = \"\";\r\n if (timestamp && typeof (timestamp) === \"number\") {\r\n var timeElapsedMins = (Date.now() - timestamp) / 1000 / 60;\r\n var timeElapsedHours = timeElapsedMins > 0 ? timeElapsedMins / 60 : 0;\r\n var timeElapsedDays = timeElapsedHours > 0 ? timeElapsedHours / 24 : 0;\r\n var timeElapsedYears = timeElapsedDays > 0 ? timeElapsedDays / 365 : 0;\r\n if (timeElapsedMins < 60) {\r\n var displayMins = Math.floor(timeElapsedMins);\r\n if (displayMins === 0) {\r\n displayMins = 1; // don't show '0 Minutes'\r\n }\r\n text = displayMins + \" Minute\" + (displayMins === 1 ? \"\" : \"s\") + \" Ago\";\r\n } else if (timeElapsedHours < 24) {\r\n var displayHours = Math.floor(timeElapsedHours);\r\n text = displayHours + \" Hour\" + (displayHours === 1 ? \"\" : \"s\") + \" Ago\";\r\n } else if (timeElapsedDays < 365) {\r\n var displayDays = Math.floor(timeElapsedDays);\r\n text = displayDays + \" Day\" + (displayDays === 1 ? \"\" : \"s\") + \" Ago\";\r\n } else if (timeElapsedYears > 0) {\r\n var displayYears = Math.floor(timeElapsedYears);\r\n text = displayYears + \" Year\" + (displayYears === 1 ? \"\" : \"s\") + \" Ago\";\r\n }\r\n }\r\n\r\n return text;\r\n };\r\n\r\n var getConnectionType = function (params) {\r\n params = params || {};\r\n var publicMemberId = params.publicMemberId || null;\r\n var pageDefinitionId = params.pageDefinitionId || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n try {\r\n if (!pageDefinitionId && typeof (PeopleMedia.PageDefinitionId) !== \"undefined\") {\r\n pageDefinitionId = PeopleMedia.PageDefinitionId;\r\n }\r\n var url = \"/v3/Ajax/GetConnectionType\";\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 5000;\r\n var ajaxData = {\r\n \"PublicMemberId\": publicMemberId,\r\n \"PageDefinitionId\": pageDefinitionId\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response && response.status !== \"Success\" && response.redirect) {\r\n // upgrade\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"getConnectionType\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"getConnectionType\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var checkForNewMutualMatch = function (params) {\r\n params = params || {};\r\n var publicMemberId = params.publicMemberId || null;\r\n var previousConnectionType = params.connectionType || null;\r\n var previousThreadType = params.threadType || null;\r\n var refresh = params.refresh === true;\r\n var pageDefinitionId = params.pageDefinitionId || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n\r\n var showMatchMutuals = !!PeopleMedia.ShowMatchMutualConnections;\r\n var isMutualMessageThread = (previousConnectionType === PeopleMedia.Constants.ConnectionType.Mutual &&\r\n previousThreadType === PeopleMedia.Constants.ThreadType.Message);\r\n\r\n // skip calls if Match Mutuals disabled, other member is missing or this is already a mutual message thread\r\n if (!showMatchMutuals || !publicMemberId || !hasOnComplete || (isMutualMessageThread && !refresh)) {\r\n onComplete(null, {\r\n publicMemberId: publicMemberId,\r\n connectionType: previousConnectionType,\r\n threadType: previousThreadType,\r\n newMutualMatch: false\r\n }, params);\r\n return;\r\n }\r\n\r\n getConnectionType({\r\n publicMemberId: publicMemberId,\r\n pageDefinitionId: pageDefinitionId,\r\n onComplete: function (err, response) {\r\n if (!err && response && response.status === \"Success\") {\r\n response.newMutualMatch = response.connectionType === PeopleMedia.Constants.ConnectionType.Mutual &&\r\n response.connectionType !== previousConnectionType;\r\n }\r\n onComplete(err, response, params);\r\n }\r\n });\r\n };\r\n\r\n return {\r\n get MessagePrompts() { return _messagePrompts; },\r\n get MessagePromptsLegacy() { return _messagePromptsLegacy; },\r\n sendMessage: sendMessage,\r\n getMessagePromptsForSite: getMessagePromptsForSite,\r\n getRandomMessagePrompt: getRandomMessagePrompt,\r\n formatMessageTimestamp: formatMessageTimestamp,\r\n formatRelativeTimeFromTimestamp: formatRelativeTimeFromTimestamp,\r\n getConnectionType: getConnectionType,\r\n checkForNewMutualMatch: checkForNewMutualMatch\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Flirt = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Flirt\";\r\n\r\n var sendFlirt = function(params) {\r\n params = params || {};\r\n var encodedMemberId = params.encodedMemberId || null;\r\n var publicMemberId = params.publicMemberId || null;\r\n var featureName = params.featureName || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof(onComplete) === \"function\";\r\n var suppressErrors = params.suppressErrors === true;\r\n try {\r\n var apiSendEnabled = !!PeopleMedia.ApiSendEnabled;\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\"\r\n ? PeopleMedia.PageDefinitionId\r\n : null;\r\n var url = (apiSendEnabled) ? \"/v3/Ajax/SendApiProfileLike\" : \"/v3/Ajax/SendFlirt\";\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"FeatureName\": featureName,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null,\r\n \"PublicMemberId\": publicMemberId\r\n };\r\n if (params.pageNumber) {\r\n ajaxData.PageNumber = params.pageNumber;\r\n }\r\n if (params.pageDefinitionView) {\r\n ajaxData.PageDefinitionView = params.pageDefinitionView;\r\n }\r\n if (params.replyToMessageId) {\r\n ajaxData.ReplyToMessageId = params.replyToMessageId;\r\n }\r\n if (params.actionType) {\r\n ajaxData.ActionType = params.actionType;\r\n }\r\n if (params.objectId) {\r\n ajaxData.ObjectId = params.objectId;\r\n }\r\n if (params.todaysMatchCurrent) {\r\n ajaxData.TodaysMatchCurrent = params.todaysMatchCurrent;\r\n }\r\n if (params.searchId) {\r\n ajaxData.SearchId = params.searchId;\r\n }\r\n if (params.flirtId) {\r\n ajaxData.FlirtId = params.flirtId;\r\n }\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function(response) {\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n var errorMessage = (response && response.message) ? response.message : null;\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(errorMessage);\r\n }\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n }\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"sendFlirt\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"sendFlirt\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var sendBirthdayFlirt = function (params) {\r\n params = params || {};\r\n var encodedMemberId = params.encodedMemberId || null;\r\n var publicMemberId = params.publicMemberId || null;\r\n var featureName = params.featureName || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n var suppressErrors = params.suppressErrors === true;\r\n try {\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\"\r\n ? PeopleMedia.PageDefinitionId\r\n : null;\r\n var url = \"/v3/Ajax/SendBirthdayFlirt\";\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 60000;\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"FeatureName\": featureName,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null,\r\n \"PublicMemberId\": publicMemberId\r\n };\r\n if (params.pageNumber) {\r\n ajaxData.PageNumber = params.pageNumber;\r\n }\r\n if (params.pageDefinitionView) {\r\n ajaxData.PageDefinitionView = params.pageDefinitionView;\r\n }\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n var errorMessage = (response && response.message) ? response.message : null;\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(errorMessage);\r\n }\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n }\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"sendBirthdayFlirt\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"sendBirthdayFlirt\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var sendMissingPhotoFlirt = function (params) {\r\n try {\r\n var missingPhotoParams = $jq.extend({}, params, { flirtId: 7 });\r\n sendFlirt(missingPhotoParams);\r\n\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"sendMissingPhotoFlirt\" });\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var sendImInterestedFlirt = function (params) {\r\n try {\r\n var imInterestedParams = $jq.extend({}, params, { flirtId: 8 });\r\n sendFlirt(imInterestedParams);\r\n\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"sendImInterestedFlirt\" });\r\n if (typeof (params.onComplete) === \"function\") {\r\n params.onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n sendFlirt: sendFlirt,\r\n sendBirthdayFlirt: sendBirthdayFlirt,\r\n sendMissingPhotoFlirt: sendMissingPhotoFlirt,\r\n sendImInterestedFlirt: sendImInterestedFlirt\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Favorite = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Favorite\";\r\n\r\n var favoriteAction = function (params) {\r\n params = params || {};\r\n var encodedMemberId = params.encodedMemberId || null;\r\n var featureName = params.featureName || null;\r\n var isAddFavorite = typeof (params.action) !== \"undefined\" && params.action === \"add\";\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n var suppressErrors = params.suppressErrors === true;\r\n\r\n try {\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 30000;\r\n var url = (isAddFavorite) ? \"/v3/Ajax/SaveToFavorites\" : \"/v3/Ajax/UnFavorite\";\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"FeatureName\": featureName,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null\r\n };\r\n if (params.pageNumber) {\r\n ajaxData.PageNumber = params.pageNumber;\r\n }\r\n if (params.pageDefinitionView) {\r\n ajaxData.PageDefinitionView = params.pageDefinitionView;\r\n }\r\n if (params.searchId) {\r\n ajaxData.SearchId = params.searchId;\r\n }\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n var errorMessage = (response && response.message) ? response.message : null;\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(errorMessage);\r\n }\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n }\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"favoriteAction\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"favoriteAction\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var addFavorite = function (params) {\r\n var favParams = $jq.extend({}, params, { action: \"add\" });\r\n favoriteAction(favParams);\r\n };\r\n\r\n var removeFavorite = function (params) {\r\n var removeParams = $jq.extend({}, params, { action: \"remove\" });\r\n favoriteAction(removeParams);\r\n };\r\n\r\n return {\r\n addFavorite: addFavorite,\r\n removeFavorite: removeFavorite\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Media = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Media\";\r\n\r\n var getProfilePhotos = function (params) {\r\n params = params || {};\r\n var encodedMemberId = params.encodedMemberId || null;\r\n var publicMemberId = params.publicMemberId || null;\r\n var featureName = params.featureName || null;\r\n var onComplete = params.onComplete || null;\r\n var hasOnComplete = typeof (onComplete) === \"function\";\r\n var suppressErrors = params.suppressErrors === true;\r\n\r\n try {\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 30000;\r\n var url = \"/v3/Ajax/ProfilePhotos\";\r\n var ajaxData = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"FeatureName\": featureName,\r\n \"MediaId\": null,\r\n \"MaxResults\": null,\r\n \"ImageSize\": null,\r\n \"PageDefinitionId\": pageDefinitionId,\r\n \"PageDefinitionSubId\": null,\r\n \"PageNumber\": null,\r\n \"PageDefinitionView\": null,\r\n \"PublicMemberId\": publicMemberId\r\n };\r\n if (params.mediaId) {\r\n ajaxData.MediaId = params.mediaId;\r\n }\r\n if (params.maxResults) {\r\n ajaxData.MaxResults = params.maxResults;\r\n }\r\n if (params.imageSize) {\r\n ajaxData.ImageSize = params.imageSize;\r\n }\r\n if (params.pageNumber) {\r\n ajaxData.PageNumber = params.pageNumber;\r\n }\r\n if (params.pageDefinitionView) {\r\n ajaxData.PageDefinitionView = params.pageDefinitionView;\r\n }\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n if (response && response.redirect) {\r\n location.href = response.redirect;\r\n return;\r\n }\r\n if (response && response.status === \"Success\") {\r\n if (hasOnComplete) {\r\n onComplete(null, response, params);\r\n }\r\n return;\r\n }\r\n var errorMessage = (response && response.message) ? response.message : null;\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(errorMessage);\r\n }\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({}), response, params);\r\n }\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n if (!suppressErrors) {\r\n PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n }\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"getProfilePhotos\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n }\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"getProfilePhotos\" });\r\n if (hasOnComplete) {\r\n onComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n }\r\n };\r\n\r\n var getSilhouetteUrl = function (gender, useSquareUrl) {\r\n var intGender = (gender === 1 || gender === \"1\" || gender === \"Male\" || gender === \"male\") ? 1 : 2;\r\n var suffix = (useSquareUrl) ? \"q\" : \"\";\r\n return \"https://pmi.peoplemedia.com/pmicontent/common/stock/noPhoto-\" + intGender.toString() + suffix + \".png\";\r\n };\r\n\r\n var getPhotoInfo = function (apiPhotoData) {\r\n var photoInfo = {\r\n photoId: null,\r\n photoUrl: \"\",\r\n silhouette: false,\r\n photoCount: 0,\r\n errorUrl: \"\"\r\n };\r\n if (apiPhotoData.Photo &&\r\n typeof (apiPhotoData.Photo) === \"object\" &&\r\n apiPhotoData.Photo.SquareUrl &&\r\n typeof (apiPhotoData.Photo.SquareUrl) === \"string\") {\r\n photoInfo.photoUrl = apiPhotoData.Photo.SquareUrl;\r\n photoInfo.photoId = apiPhotoData.Photo.PhotoId;\r\n } else {\r\n // use silhouette photo\r\n photoInfo.silhouette = true;\r\n photoInfo.photoUrl = getSilhouetteUrl(apiPhotoData.Gender, true);\r\n }\r\n photoInfo.errorUrl = getSilhouetteUrl(apiPhotoData.Gender, true);\r\n\r\n // populate photo count (note: primary photo can be a silhouette (unapproved) and still have photos > 0)\r\n if (apiPhotoData.PhotoCount && typeof (apiPhotoData.PhotoCount) === \"number\" && apiPhotoData.PhotoCount > 0) {\r\n photoInfo.photoCount = apiPhotoData.PhotoCount;\r\n }\r\n return photoInfo;\r\n };\r\n\r\n return {\r\n getProfilePhotos: getProfilePhotos,\r\n getSilhouetteUrl: getSilhouetteUrl,\r\n getPhotoInfo: getPhotoInfo\r\n };\r\n})(jQuery);\r\n\r\n// jQuery plugin used by PeopleMedia.ImpressionTracking\r\n(function ($jq) {\r\n \"use strict\";\r\n $jq.fn.onImpression = function (options) {\r\n\r\n var settings = $jq.extend({\r\n offset: 0,\r\n callback: null,\r\n attribute: \"\",\r\n alwayscallback: false,\r\n scrollable: \"\"\r\n },\r\n options);\r\n\r\n var $window = $jq(window),\r\n $scrollable = $jq(settings.scrollable),\r\n onImpressionElements = this,\r\n loaded;\r\n\r\n this.one(\"onImpression\", function () {\r\n if (typeof settings.callback === \"function\") settings.callback.call(this, this.getAttribute(settings.attribute));\r\n });\r\n\r\n this.on(\"alwaysOnImpression\", function () {\r\n if (typeof settings.callback === \"function\") settings.callback.call(this, this.getAttribute(settings.attribute));\r\n });\r\n\r\n function onImpression() {\r\n var inview = onImpressionElements.filter(function () {\r\n var $e = $jq(this);\r\n if ($e.is(\":hidden\")) return;\r\n var wt = $window.scrollTop(),\r\n wb = wt + $window.height(),\r\n et = $e.offset().top,\r\n eb = et + $e.height();\r\n var inScrollable = false;\r\n if ($scrollable.length) {\r\n var scrollTop = $scrollable.scrollTop(),\r\n scrollBottom = scrollTop + $scrollable.height();\r\n inScrollable = (eb >= scrollTop - settings.offset && et <= scrollBottom + settings.offset);\r\n }\r\n return (eb >= wt - settings.offset && et <= wb + settings.offset) || inScrollable;\r\n });\r\n\r\n if (settings.alwayscallback) {\r\n loaded = inview.trigger(\"alwaysOnImpression\");\r\n }\r\n else {\r\n loaded = inview.trigger(\"onImpression\");\r\n onImpressionElements = onImpressionElements.not(loaded);\r\n }\r\n }\r\n\r\n // Only run code if the callback is available, else there is no point\r\n if (typeof settings.callback === \"function\") {\r\n $window.on(\"scroll.onImpression resize.onImpression lookup.onImpression\", onImpression);\r\n if ($scrollable.length) {\r\n $scrollable.on(\"scroll.onImpression resize.onImpression lookup.onImpression\", onImpression);\r\n }\r\n onImpression();\r\n }\r\n\r\n return this;\r\n };\r\n\r\n})(window.jQuery);\r\n\r\n// SetCaptureImpression is looking for items that have data attributes \"data-encodedmemberid\" \"data-pagenumber\" \"data-ordinalposition\"\r\nPeopleMedia.ImpressionTracking = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.ImpressionTracking\";\r\n\r\n var _timeoutTime = 850;\r\n var _captureImpressionTimeout = null;\r\n var _captureImpressionArray = [];\r\n var _searchType = 0;\r\n\r\n var RunCaptureImpression = function () {\r\n if (_captureImpressionArray && _captureImpressionArray.length > 0) {\r\n var startTime = new Date().getTime();\r\n var timeoutValue = 20000;\r\n var url = \"/v3/Ajax/CaptureProfileImpression\";\r\n var ajaxData = {\r\n 'impressionData': _captureImpressionArray,\r\n 'searchType': _searchType\r\n };\r\n // save the impressions!\r\n $jq.ajax({\r\n contentType: 'application/json; charset=utf-8',\r\n url: url,\r\n type: \"post\",\r\n dataType: \"json\",\r\n data: JSON.stringify(ajaxData),\r\n success: function (response) {\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n // PeopleMedia.Popups.ShowGenericMessage(PeopleMedia.Popups.AjaxErrorMessage());\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"RunCaptureImpression\", duration: duration }, jqXHR, textStatus, errorThrown);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n _captureImpressionArray = [];\r\n }\r\n };\r\n\r\n var SetCaptureImpression = function (impressionClass, searchType) {\r\n _searchType = searchType;\r\n\r\n $jq(impressionClass).onImpression({\r\n offset: -5,\r\n callback: function () {\r\n var $this = $jq(this);\r\n var encodedMemberId = $this.attr(\"data-encodedmemberid\");\r\n var pageNumber = $this.attr(\"data-pagenumber\");\r\n var ordinalPosition = $this.attr(\"data-ordinalposition\");\r\n if (encodedMemberId) {\r\n\r\n // Reset CaptureImpressionTimeout and add the new value before submitting again\r\n clearTimeout(_captureImpressionTimeout);\r\n\r\n var details = {\r\n \"EncodedMemberId\": encodedMemberId,\r\n \"PageNumber\": pageNumber,\r\n \"OrdinalPosition\": ordinalPosition\r\n };\r\n\r\n // add new details to the overall array\r\n _captureImpressionArray.push(details);\r\n\r\n // apply a timeout so we can gather extra Impressions if possible\r\n _captureImpressionTimeout = setTimeout(function () {\r\n RunCaptureImpression();\r\n }, _timeoutTime);\r\n\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n RunCaptureImpression: RunCaptureImpression,\r\n SetCaptureImpression: SetCaptureImpression\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Pagination = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Pagination\";\r\n\r\n var calculatePageCount = function (totalRecords, perPage) {\r\n var pageCount = 0;\r\n if (!isNaN(totalRecords) && !isNaN(perPage) && totalRecords > 0 && perPage > 0) {\r\n pageCount = Math.ceil(totalRecords / perPage);\r\n if (pageCount < 1) {\r\n pageCount = 1;\r\n }\r\n }\r\n return pageCount;\r\n };\r\n\r\n var getPaginationContainerInnerHtml = function (currentPage) {\r\n var prevPage = currentPage - 1;\r\n var nextPage = currentPage + 1;\r\n return \" Prev\" + \r\n \"
\" +\r\n \"Next \";\r\n };\r\n\r\n var getPageNumberItems = function (params) {\r\n var currentPage = params.currentPage;\r\n var totalPages = params.totalPages;\r\n var pageNum;\r\n var result = [];\r\n\r\n // Logic assumes 7 PageNumberItem slots to fill (where a slot is either a page link or an ellipse)\r\n // since that is the minimum for the format: 1 ... 4 5 6 ... 9\r\n // We want to always show links for first, last, previous and next pages.\r\n if (totalPages <= 7) {\r\n // no ellipsis format: 1 2 3 4 5 6 7\r\n for (pageNum = 1; pageNum <= totalPages; pageNum++) {\r\n result.push({\r\n pageNumber: pageNum,\r\n isCurrentPage: (pageNum === currentPage),\r\n isEllipsis: false\r\n });\r\n }\r\n } else {\r\n // There are more than 7 items with at least one ellipsis\r\n if (currentPage <= 4) {\r\n // Ellipsis at end format: 1 2 3 4 5 ... 9\r\n // Fill first five slots sequentially from 1 to 5\r\n for (pageNum = 1; pageNum <= 5; pageNum++) {\r\n result.push({\r\n pageNumber: pageNum,\r\n isCurrentPage: (pageNum === currentPage),\r\n isEllipsis: false\r\n });\r\n }\r\n\r\n result.push({\r\n isEllipsis: true\r\n });\r\n\r\n // Show single link to last page\r\n result.push({\r\n pageNumber: totalPages,\r\n isCurrentPage: (currentPage === totalPages),\r\n isEllipsis: false\r\n });\r\n } else if (totalPages - currentPage <= 3) {\r\n // Ellipsis at start format: 1 ... 5 6 7 8 9\r\n // Show single link to first page\r\n result.push({\r\n pageNumber: 1,\r\n isCurrentPage: (currentPage === 1),\r\n isEllipsis: false\r\n });\r\n\r\n result.push({\r\n isEllipsis: true\r\n });\r\n\r\n // Fill last 5 slots sequentially starting with last page - 4\r\n for (pageNum = totalPages - 4; pageNum <= totalPages; pageNum++) {\r\n result.push({\r\n pageNumber: pageNum,\r\n isCurrentPage: (pageNum === currentPage),\r\n isEllipsis: false\r\n });\r\n }\r\n } else {\r\n // Two ellipsis format: 1 ... 4 5 6 ... 9\r\n // This format won't be shown if the total pages is 8\r\n // Show single link to first page\r\n result.push({\r\n pageNumber: 1,\r\n isCurrentPage: (currentPage === 1),\r\n isEllipsis: false\r\n });\r\n\r\n // first ellipsis\r\n result.push({\r\n isEllipsis: true\r\n });\r\n\r\n // add three middle links for previous, current and next page\r\n for (pageNum = currentPage - 1; pageNum <= currentPage + 1; pageNum++) {\r\n result.push({\r\n pageNumber: pageNum,\r\n isCurrentPage: (pageNum === currentPage),\r\n isEllipsis: false\r\n });\r\n }\r\n\r\n // second ellipsis\r\n result.push({\r\n isEllipsis: true\r\n });\r\n\r\n // Show single link to last page\r\n result.push({\r\n pageNumber: totalPages,\r\n isCurrentPage: (currentPage === totalPages),\r\n isEllipsis: false\r\n });\r\n }\r\n }\r\n return result;\r\n\r\n };\r\n\r\n var convertPageNumberItemsToHtml = function (pageNumberItems) {\r\n var result = \"\";\r\n if (pageNumberItems && pageNumberItems.length > 0) {\r\n for (var i = 0; i < pageNumberItems.length; i++) {\r\n if (pageNumberItems[i].isEllipsis) {\r\n result += \"...\";\r\n } else if (pageNumberItems[i].isCurrentPage) {\r\n result += \"\" + pageNumberItems[i].pageNumber + \"\";\r\n } else {\r\n result += \"\" + pageNumberItems[i].pageNumber + \"\";\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n var getPaginationNamespace = function (namespace) {\r\n var result = namespace || \".pmpagination\";\r\n if (namespace && namespace.substring(0, 1) !== \".\") {\r\n result = \".\" + namespace;\r\n }\r\n return result;\r\n };\r\n\r\n var updatePrevNextButton = function ($button, pageNumber, isActive) {\r\n if (isActive) {\r\n $button.removeClass(\"inactive\");\r\n } else {\r\n $button.addClass(\"inactive\");\r\n }\r\n $button.attr(\"data-pagenumber\", pageNumber);\r\n };\r\n\r\n var updatePageNumbers = function ($pageNumbers, currentPage, totalPages) {\r\n var pageNumberItems = getPageNumberItems({\r\n currentPage: currentPage,\r\n totalPages: totalPages\r\n });\r\n var pageNumberHtml = convertPageNumberItemsToHtml(pageNumberItems);\r\n $pageNumbers.empty().html(pageNumberHtml);\r\n };\r\n\r\n var convertPageNumber = function (pageString) {\r\n var pageNumber = parseInt(pageString, 10);\r\n if (!isNaN(pageNumber)) {\r\n return pageNumber;\r\n }\r\n return null;\r\n };\r\n\r\n var updatePaginationContainer = function (params) {\r\n var $container = params.$container || $jq(\"
\");\r\n if (!$container.hasClass(\"pagination-container\")) {\r\n $container.addClass(\"pagination-container\");\r\n }\r\n\r\n var namespace = getPaginationNamespace(params.namespace);\r\n var totalRecords = params.totalRecords;\r\n var perPage = params.perPage;\r\n var currentPage = params.currentPage;\r\n\r\n var totalPages = calculatePageCount(totalRecords, perPage);\r\n if (currentPage < 1) {\r\n currentPage = 1;\r\n }\r\n\r\n if (currentPage > totalPages && totalPages > 0) {\r\n // set to last page if we go over the total number of pages\r\n currentPage = totalPages;\r\n }\r\n\r\n var hasPreviousPage = (currentPage > 1);\r\n var hasNextPage = (currentPage < totalPages);\r\n\r\n $container.empty();\r\n if (totalPages === 0) {\r\n $container.addClass(\"pagination-empty\").html(\"
 
\");\r\n } else {\r\n var paginationHtml = getPaginationContainerInnerHtml(currentPage);\r\n $container.removeClass(\"pagination-empty\").html(paginationHtml);\r\n }\r\n\r\n var $pageNumbers = $container.find(\".page-numbers\");\r\n var $prev = $container.find(\".page.prev\");\r\n var $next = $container.find(\".page.next\");\r\n\r\n updatePageNumbers($pageNumbers, currentPage, totalPages);\r\n updatePrevNextButton($prev, (currentPage - 1), hasPreviousPage);\r\n updatePrevNextButton($next, (currentPage + 1), hasNextPage);\r\n\r\n $prev.off(\"click\").on(\"click\", function (event) {\r\n var $this = $jq(this);\r\n var isActive = !($this.hasClass(\"inactive\"));\r\n var pageNumber = convertPageNumber($this.attr(\"data-pagenumber\"));\r\n $container.trigger(\"clickprev\" + namespace, { originalEvent: event, isActive: isActive, pageNumber: pageNumber });\r\n });\r\n $next.off(\"click\").on(\"click\", function (event) {\r\n var $this = $jq(this);\r\n var isActive = !($this.hasClass(\"inactive\"));\r\n var pageNumber = convertPageNumber($this.attr(\"data-pagenumber\"));\r\n $container.trigger(\"clicknext\" + namespace, { originalEvent: event, isActive: isActive, pageNumber: pageNumber });\r\n });\r\n $pageNumbers.off(\"click\").on(\"click\", \"a[data-pagenumber]\", function (event) {\r\n var $this = $jq(this);\r\n var isCurrentPage = $this.hasClass(\"active\");\r\n var pageNumber = convertPageNumber($this.attr(\"data-pagenumber\"));\r\n $container.trigger(\"clickpage\" + namespace, { originalEvent: event, pageNumber: pageNumber, isCurrentPage: isCurrentPage });\r\n });\r\n\r\n return $container;\r\n };\r\n\r\n return {\r\n updatePaginationContainer: updatePaginationContainer\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Badges = (function($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.Badges\";\r\n\r\n var fixBadgeBorders = function ($badges) {\r\n $badges.each(function () {\r\n var $this = $jq(this);\r\n var badgeAttr = ($this.attr(\"data-badge\") || \"\").trim();\r\n if (badgeAttr.length > 0) {\r\n $this.addClass(\"badge-border\");\r\n } else {\r\n $this.removeClass(\"badge-border\").removeAttr(\"data-badge\");\r\n }\r\n });\r\n };\r\n\r\n var getUserCounts = function (params) {\r\n try {\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/Ajax/GetUserCounts\";\r\n var timeoutValue = 5000;\r\n var pageDefinitionId = typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null;\r\n var ajaxData = {\r\n \"PageId\": pageDefinitionId\r\n };\r\n $jq.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n getUserCountsComplete(null, response, params);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"getUserCounts\", duration: duration, params: params },\r\n jqXHR,\r\n textStatus,\r\n errorThrown);\r\n getUserCountsComplete(\r\n PeopleMedia.createAjaxErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }),\r\n null,\r\n params);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"getUserCounts\" });\r\n getUserCountsComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n };\r\n\r\n var getUserCountsComplete = function (err, response, params) {\r\n if (err || !response || response.status !== \"Success\" || !response.data) {\r\n // there was an error\r\n // console.log(\"getUserCountsComplete: error\", err);\r\n if (!err) {\r\n // 204 No Content\r\n err = PeopleMedia.createErrorObject({ reason: \"Missing data\" });\r\n }\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete(err, response, params);\r\n }\r\n return;\r\n }\r\n\r\n if (response.redirect) {\r\n location.href = response.redirect;\r\n }\r\n\r\n $jq(window).trigger(\"badgecountchange\", response.data);\r\n\r\n // console.log(\"getUserCountsComplete: success\", response.data);\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete(err, response, params);\r\n }\r\n };\r\n\r\n return {\r\n getUserCounts: getUserCounts,\r\n fixBadgeBorders: fixBadgeBorders\r\n };\r\n})(jQuery);\r\n\r\n// has dependencies on jQuery and moment.js\r\nPeopleMedia.BoostTimer = (function ($jq, moment) {\r\n \"use strict\";\r\n var timer = null;\r\n var secondsRemaining = 0;\r\n\r\n var getFormattedTime = function (seconds) {\r\n return moment.utc(seconds * 1000).format('HH:mm:ss');\r\n };\r\n\r\n var getTimerData = function () {\r\n return {\r\n secondsRemaining: secondsRemaining,\r\n formattedTime: getFormattedTime(secondsRemaining)\r\n };\r\n };\r\n\r\n var stopCountdown = function () {\r\n if (timer !== null) {\r\n clearInterval(timer);\r\n }\r\n timer = null;\r\n var timerData = getTimerData();\r\n $jq(window).trigger(\"boosttimerend\", timerData);\r\n };\r\n\r\n var timerUpdate = function () {\r\n secondsRemaining--;\r\n\r\n if (secondsRemaining <= 0) {\r\n stopCountdown();\r\n } else {\r\n var timerData = getTimerData();\r\n $jq(window).trigger(\"boosttimerchange\", timerData);\r\n }\r\n };\r\n\r\n var startCountdown = function (options) {\r\n if (typeof (secondsRemaining) === \"undefined\" || secondsRemaining === null || secondsRemaining < 0) {\r\n secondsRemaining = 0;\r\n }\r\n var alreadyRunning = (secondsRemaining > 0);\r\n if (options) {\r\n if (!alreadyRunning && typeof (options.secondsRemaining) === \"number\" && options.secondsRemaining > 0) {\r\n secondsRemaining = options.secondsRemaining;\r\n }\r\n }\r\n if (!alreadyRunning && secondsRemaining > 0) {\r\n var timerData = getTimerData();\r\n $jq(window).trigger(\"boosttimerchange\", timerData);\r\n if (timer !== null) {\r\n clearInterval(timer);\r\n }\r\n timer = setInterval(timerUpdate, 1000);\r\n }\r\n };\r\n\r\n return {\r\n startCountdown: startCountdown,\r\n stopCountdown: stopCountdown\r\n };\r\n})(jQuery, moment);\r\n\r\nPeopleMedia.AccessibilityHelper = (function ($jq) {\r\n \"use strict\";\r\n\r\n var checkForEnterOrSpaceKeypress = function (e) {\r\n // proceed with callback if enter key or space key was pressed\r\n // (Note: enter key = 13, space key = 32)\r\n if (e && typeof (e) === \"object\" && (e.which === 13 || e.which === 32)) {\r\n // prevent scrolling the page down if space bar was pressed\r\n if (e.which === 32) {\r\n e.preventDefault();\r\n }\r\n if (e.data.callback && typeof (e.data.callback) === \"function\") {\r\n e.data.callback(e);\r\n }\r\n }\r\n };\r\n\r\n var removeOutlineOnClick = function ($parent) {\r\n $parent.on(\"mousedown\", function () {\r\n $parent.addClass(\"no-outline\");\r\n });\r\n $parent.on('keydown', function () {\r\n $parent.removeClass(\"no-outline\");\r\n });\r\n };\r\n\r\n return {\r\n checkForEnterOrSpaceKeypress: checkForEnterOrSpaceKeypress,\r\n removeOutlineOnClick: removeOutlineOnClick\r\n };\r\n})(jQuery);\r\n\r\n// has dependencies on jQuery and moment.js\r\nPeopleMedia.EventsTimer = (function ($jq, moment) {\r\n \"use strict\";\r\n var timer = null;\r\n var secondsRemaining = 0;\r\n\r\n var getFormattedTime = function (seconds) {\r\n // show days if time left is more than 24hrs\r\n if (typeof(seconds) === \"number\" && seconds >= 86400) {\r\n var daysLeft = Math.floor(seconds / 86400);\r\n return daysLeft + \" day\" + (daysLeft > 1 ? \"s\" : \"\");\r\n }\r\n return moment.utc(seconds * 1000).format('HH:mm:ss');\r\n };\r\n\r\n var getTimerData = function () {\r\n return {\r\n secondsRemaining: secondsRemaining,\r\n formattedTime: getFormattedTime(secondsRemaining)\r\n };\r\n };\r\n\r\n var stopCountdown = function () {\r\n if (timer !== null) {\r\n clearInterval(timer);\r\n }\r\n timer = null;\r\n var timerData = getTimerData();\r\n $jq(window).trigger(\"eventstimerend\", timerData);\r\n };\r\n\r\n var timerUpdate = function () {\r\n secondsRemaining--;\r\n\r\n if (secondsRemaining <= 10800) {\r\n stopCountdown();\r\n } else {\r\n var timerData = getTimerData();\r\n $jq(window).trigger(\"eventstimerchange\", timerData);\r\n }\r\n };\r\n\r\n var startCountdown = function (options) {\r\n if (typeof (secondsRemaining) === \"undefined\" || secondsRemaining === null || secondsRemaining < 0) {\r\n secondsRemaining = 0;\r\n }\r\n var alreadyRunning = (secondsRemaining > 0);\r\n if (options) {\r\n if (!alreadyRunning && typeof (options.secondsRemaining) === \"number\" && options.secondsRemaining > 0) {\r\n secondsRemaining = options.secondsRemaining;\r\n }\r\n }\r\n if (!alreadyRunning && secondsRemaining > 0) {\r\n var timerData = getTimerData();\r\n $jq(window).trigger(\"eventstimerchange\", timerData);\r\n if (timer !== null) {\r\n clearInterval(timer);\r\n }\r\n timer = setInterval(timerUpdate, 1000);\r\n }\r\n };\r\n\r\n return {\r\n startCountdown: startCountdown,\r\n stopCountdown: stopCountdown\r\n };\r\n})(jQuery, moment);\r\n\r\nPeopleMedia.ArkoseCaptcha = (function ($jq) {\r\n \"use strict\";\r\n var Oid = \"PeopleMedia.ArkoseCaptcha\";\r\n var _arkoseTimeout = 15000;\r\n var _captchaToken = null;\r\n var _captchaLocation = null;\r\n var _pageDefinitionId = null;\r\n var _onValidateComplete = null;\r\n var _$form = $jq();\r\n var _selector = null;\r\n\r\n var _isScriptLoaded = false;\r\n var _scriptsReady = false;\r\n var _scriptsFailed = false;\r\n var _enforceTimer = null;\r\n var _arkose = null;\r\n\r\n var updateCaptchaTokenInForm = function () {\r\n if (_$form && _$form.length > 0 && _captchaToken) {\r\n var $inputToken = _$form.find(\"input[name='CaptchaToken']\");\r\n if ($inputToken.length > 0) {\r\n $inputToken.val(_captchaToken);\r\n }\r\n }\r\n };\r\n\r\n var includeCaptchaFieldsInForm = function (params) {\r\n var captchaToken = params && params.captchaToken ? params.captchaToken : \"\";\r\n var captchaLocation = params && params.captchaLocation ? params.captchaLocation : \"\";\r\n var pageDefinitionId = params && params.pageDefinitionId ? params.pageDefinitionId : (typeof (PeopleMedia.PageDefinitionId) !== \"undefined\" ? PeopleMedia.PageDefinitionId : null);\r\n var $form = params && params.$form ? params.$form : $jq();\r\n if ($form && $form.length > 0) {\r\n var $inputToken = $form.find(\"input[name='CaptchaToken']\");\r\n var $inputAction = $form.find(\"input[name='CaptchaLocation']\");\r\n var $inputPageDefinitionId = $form.find(\"input[name='PageDefinitionId']\");\r\n\r\n if ($inputToken.length === 0) {\r\n $form.append(\"\");\r\n } else {\r\n $inputToken.val(captchaToken);\r\n }\r\n\r\n if ($inputAction.length === 0) {\r\n $form.append(\"\");\r\n } else {\r\n $inputAction.val(captchaLocation);\r\n }\r\n\r\n if ($inputPageDefinitionId.length === 0) {\r\n $form.append(\"\");\r\n } else {\r\n $inputPageDefinitionId.val(pageDefinitionId);\r\n }\r\n }\r\n };\r\n\r\n var onArkoseEnforcementComplete = function (response) {\r\n var token = (response && response.token) ? response.token.toString() : \"\";\r\n _captchaToken = token;\r\n updateCaptchaTokenInForm();\r\n if (typeof (_onValidateComplete) === \"function\") {\r\n _onValidateComplete(null, response);\r\n }\r\n };\r\n\r\n var timerExpired = function() {\r\n clearTimeout(_enforceTimer);\r\n if (!_isScriptLoaded) {\r\n _scriptsReady = false;\r\n _isScriptLoaded = false;\r\n _scriptsFailed = true;\r\n }\r\n };\r\n\r\n var setArkose = function(enforcement) {\r\n _arkose = enforcement;\r\n };\r\n\r\n var setupEnforcement = function(enforcement) {\r\n enforcement.setConfig({\r\n onReady: function() {\r\n _scriptsReady = true;\r\n },\r\n });\r\n setArkose(enforcement);\r\n _isScriptLoaded = true;\r\n };\r\n\r\n var loadScripts = function () {\r\n try {\r\n _scriptsReady = false;\r\n var arkoseScript = document.createElement(\"script\");\r\n arkoseScript.id = \"arkosescript\";\r\n arkoseScript.type = \"text/javascript\";\r\n var attrib = document.createAttribute(\"data-callback\");\r\n attrib.value = \"setupEnforcement\";\r\n arkoseScript.setAttributeNode(attrib);\r\n arkoseScript.src = \"https://client-api.arkoselabs.com/v2/\" + PeopleMediaConfig.Configuration.arkoseSiteKey + \"/api.js\";\r\n document.head.appendChild(arkoseScript);\r\n }\r\n catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"loadArkose\" });\r\n _scriptsReady = false;\r\n _isScriptLoaded = false;\r\n _scriptsFailed = true;\r\n }\r\n };\r\n\r\n var execute = function () {\r\n if (!!_arkose && _scriptsReady) {\r\n _arkose.setConfig({\r\n selector: _selector,\r\n onCompleted: onArkoseEnforcementComplete,\r\n onReady: function () {\r\n _scriptsReady = true;\r\n },\r\n });\r\n _arkose.run();\r\n }\r\n };\r\n\r\n var initialize = function (options) {\r\n _captchaToken = null;\r\n _captchaLocation = null;\r\n _pageDefinitionId = null;\r\n _onValidateComplete = null;\r\n _$form = $jq();\r\n _selector = null;\r\n if (options) {\r\n if (options.captchaLocation) {\r\n _captchaLocation = options.captchaLocation;\r\n }\r\n if (options.pageDefinitionId) {\r\n _pageDefinitionId = options.pageDefinitionId;\r\n }\r\n if (options.$form && options.$form.length > 0) {\r\n _$form = options.$form;\r\n }\r\n if (options.selector) {\r\n _selector = options.selector;\r\n }\r\n if (typeof (options.onValidateComplete) === \"function\") {\r\n _onValidateComplete = options.onValidateComplete;\r\n }\r\n if (options.includeCaptchaFieldsInForm === true && _$form && _$form.length > 0) {\r\n includeCaptchaFieldsInForm({\r\n captchaToken: _captchaToken,\r\n captchaLocation: _captchaLocation,\r\n $form: _$form,\r\n pageDefinitionId: _pageDefinitionId\r\n });\r\n }\r\n }\r\n window.setupEnforcement = setupEnforcement;\r\n loadScripts();\r\n _enforceTimer = window.setTimeout(timerExpired, _arkoseTimeout);\r\n };\r\n\r\n return {\r\n get scriptsFailed() { return _scriptsFailed; },\r\n get scriptsReady() { return _scriptsReady; },\r\n get selector() { return _selector; },\r\n initialize: initialize,\r\n includeCaptchaFieldsInForm: includeCaptchaFieldsInForm,\r\n updateCaptchaTokenInForm: updateCaptchaTokenInForm,\r\n onArkoseEnforcementComplete: onArkoseEnforcementComplete,\r\n execute: execute\r\n };\r\n})(jQuery);\r\n\r\n// has dependencies on jQuery and lottie\r\nPeopleMedia.Animations = (function ($jq) {\r\n var Oid = \"PeopleMedia.Animations\";\r\n var animations = {};\r\n var _loaderTimeout = null;\r\n var _loaderDelay = 3000;\r\n\r\n var setupLottieAnimations = function () {\r\n try {\r\n // preload the animation files\r\n $jq.ajax({\r\n 'url': PeopleMediaConfig.Configuration.themeAnimationPath + \"/Loader.json\",\r\n 'dataType': \"json\",\r\n 'success': function (data) {\r\n document.querySelectorAll('.loader2 .spinner .lottie-container').forEach(\r\n function (item) {\r\n var animation = lottie.loadAnimation({\r\n container: item,\r\n animationData: data,\r\n renderer: 'svg',\r\n loop: true,\r\n autoplay: false,\r\n name: \"Loader\"\r\n });\r\n animations[\"loader\"] = animation;\r\n $jq(\".loader2\").addClass(\"lottie\");\r\n $jq(\".loader2 .spinner\").removeClass(\"default-image\");\r\n });\r\n }\r\n });\r\n $jq(window).trigger(\"lottieload\");\r\n }\r\n catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"setupLottieAnimations\" });\r\n }\r\n };\r\n\r\n var loadLottie = function () {\r\n try {\r\n if (typeof (lottie) === \"undefined\") {\r\n var lottieScript = document.createElement(\"script\");\r\n lottieScript.id = \"lottiescript\";\r\n lottieScript.type = \"text/javascript\";\r\n lottieScript.onload = setupLottieAnimations;\r\n lottieScript.src = PeopleMediaConfig.Configuration.baseImagePath + \"/scripts/lottie_5.7.12.min.js\";\r\n document.head.appendChild(lottieScript);\r\n } else {\r\n setupLottieAnimations();\r\n }\r\n }\r\n catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"loadLottie\" });\r\n }\r\n };\r\n\r\n var showLoader = function (options) {\r\n var $loader = $jq(\".loader2\");\r\n var useLegacy = options && options.legacy === true;\r\n if (useLegacy) {\r\n // use animated gif instead of lottie\r\n $loader.find(\".lottie-container\").addClass(\"hidden\");\r\n $loader.removeClass(\"hidden\").find(\".spinner\").addClass(\"default-image\");\r\n return;\r\n }\r\n var anim = animations[\"loader\"];\r\n $loader.removeClass(\"hidden\");\r\n if (typeof (lottie) === \"object\" && typeof (anim) === \"object\") {\r\n anim.play();\r\n }\r\n };\r\n\r\n var hideLoader = function (options) {\r\n var $loader = $jq(\".loader2\");\r\n var useLegacy = options && options.legacy === true;\r\n if (useLegacy) {\r\n $loader.addClass(\"hidden\");\r\n if ($loader.hasClass(\"lottie\")) {\r\n // reset back to default behavior\r\n $loader.find(\".lottie-container\").removeClass(\"hidden\");\r\n $loader.find(\".spinner\").removeClass(\"default-image\");\r\n }\r\n return;\r\n }\r\n var anim = animations[\"loader\"];\r\n if (typeof (lottie) === \"object\" && typeof (anim) === \"object\") {\r\n anim.stop();\r\n }\r\n $loader.addClass(\"hidden\");\r\n };\r\n\r\n var loaderVisible = function () {\r\n var $loader = $jq(\".loader2\");\r\n return $loader.length > 0 && !($loader.hasClass(\"hidden\"));\r\n };\r\n\r\n var cancelDelayedLoader = function (options) {\r\n if (_loaderTimeout) {\r\n // console.log(\"Cancelling delayed spinner \" + spinnerTimeout + \" at \" + moment().format(\"YYYY-MM-DD HH:mm:ss.SSS\"));\r\n clearTimeout(_loaderTimeout);\r\n }\r\n _loaderTimeout = null;\r\n if (PeopleMedia.Animations.loaderVisible()) {\r\n hideLoader(options);\r\n }\r\n };\r\n\r\n var showDelayedLoader = function (options) {\r\n var delayMilliseconds = (options && typeof (options.delayMilliseconds) === \"number\" && options.delayMilliseconds >= 0) ? options.delayMilliseconds : _loaderDelay;\r\n if (_loaderTimeout) {\r\n // console.log(\"Duplicate delayed spinner \" + _loaderTimeout + \" detected at \" + new Date());\r\n clearTimeout(_loaderTimeout);\r\n }\r\n // wait before showing spinner\r\n _loaderTimeout = setTimeout(function () {\r\n if (_loaderTimeout) {\r\n // console.log(\"Showing delayed spinner \" + _loaderTimeout + \" at \" + new Date());\r\n clearTimeout(_loaderTimeout);\r\n _loaderTimeout = null;\r\n showLoader(options);\r\n }\r\n }, delayMilliseconds);\r\n // console.log(\"Starting delayed spinner \" + _loaderTimeout + \" at \" + new Date());\r\n };\r\n\r\n var showLoaderBeforeRedirect = function (options) {\r\n // ios doesn't like doing this...\r\n if (!PeopleMedia.detectIOS()) {\r\n PeopleMedia.Animations.showLoader(options);\r\n }\r\n };\r\n\r\n var init = function () {\r\n loadLottie();\r\n };\r\n\r\n return {\r\n init: init,\r\n showLoader: showLoader,\r\n hideLoader: hideLoader,\r\n loaderVisible: loaderVisible,\r\n showDelayedLoader: showDelayedLoader,\r\n cancelDelayedLoader: cancelDelayedLoader,\r\n showLoaderBeforeRedirect: showLoaderBeforeRedirect\r\n };\r\n})(jQuery);\r\n\r\nPeopleMedia.Geo = (function () {\r\n var Oid = \"PeopleMedia.Geo\";\r\n\r\n var getPostalCodeLocation = function (params) {\r\n try {\r\n var postalCode = (params.postalCode || \"\").trim();\r\n\r\n var startTime = new Date().getTime();\r\n var url = \"/v3/ajax/GetLocationByPostalCode\";\r\n var timeoutValue = 3000;\r\n var ajaxData = {\r\n \"PostalCode\": postalCode\r\n };\r\n jQuery.ajax({\r\n headers: PeopleMedia.sitePostbackHeader(),\r\n type: \"POST\",\r\n url: url,\r\n data: JSON.stringify(ajaxData),\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (response) {\r\n getPostalCodeLocationComplete(null, response, params);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n var endTime = new Date().getTime();\r\n var duration = (endTime - startTime);\r\n PeopleMedia.Logger.LogAjaxErrorXHR(\"Ajax request failure\", url, { Oid: Oid, method: \"trackCustomMemberEvents\", duration: duration, params: params }, jqXHR, textStatus, errorThrown);\r\n getPostalCodeLocationComplete(PeopleMedia.createErrorObject({ jqXHR: jqXHR, errorThrown: errorThrown }), null, params);\r\n },\r\n async: true,\r\n cache: false,\r\n timeout: timeoutValue,\r\n suppressErrors: true\r\n });\r\n\r\n } catch (ex) {\r\n PeopleMedia.Logger.LogExceptionWithDetail(ex, { Oid: Oid, method: \"getPostalCodeLocation\" });\r\n getPostalCodeLocationComplete(PeopleMedia.createErrorObject({ ex: ex }), null, params);\r\n }\r\n };\r\n\r\n var getPostalCodeLocationComplete = function (err, response, params) {\r\n if (err || !response || response.status !== \"Success\" || !response.Location) {\r\n console.log(\"error validating postal code\");\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete({\r\n Location: null\r\n });\r\n }\r\n return;\r\n }\r\n if (params && typeof (params.onComplete) === \"function\") {\r\n params.onComplete({\r\n Location: response.Location\r\n });\r\n }\r\n };\r\n\r\n var validatePostalCodeFormatIsUsa = function (input) {\r\n var checkPostalCode = /^[0-9]{5}$/;\r\n return checkPostalCode.test(input);\r\n };\r\n\r\n var validatePostalCodeFormatIsCanada = function (input) {\r\n var checkPostalCodeCanada = /^[ABCEGHJKLMNPRSTVXY][0-9][A-Z][\\s]*[0-9][A-Z][0-9]$/i;\r\n return checkPostalCodeCanada.test(input);\r\n };\r\n\r\n return {\r\n validatePostalCodeFormatIsUsa: validatePostalCodeFormatIsUsa,\r\n validatePostalCodeFormatIsCanada: validatePostalCodeFormatIsCanada,\r\n getPostalCodeLocation: getPostalCodeLocation\r\n };\r\n})();\r\n\r\nPeopleMedia.Constants = {\r\n Gender: {\r\n get Male() { return 1; },\r\n get Female() { return 2; }\r\n },\r\n ConnectionType: {\r\n get InboundNonMutual() { return 1; },\r\n get OutboundNonMutual() { return 2; },\r\n get Mutual() { return 3; }\r\n },\r\n ThreadType: {\r\n get Message() { return 1; },\r\n get Like() { return 2; }\r\n }\r\n};\r\n\r\n// jQuery 1.9 has removed the '$.browser' property, but jquery.ba-bbq relies on it, so patch it here if it's missing.\r\n// This has been copied from jQuery migrate 1.1.1.\r\nif (!jQuery.browser) {\r\n var uaMatch = function (ua) {\r\n ua = ua.toLowerCase();\r\n\r\n var match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\r\n /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\r\n /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\r\n /(msie) ([\\w.]+)/.exec(ua) ||\r\n ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) ||\r\n [];\r\n\r\n return {\r\n browser: match[1] || \"\",\r\n version: match[2] || \"0\"\r\n };\r\n };\r\n\r\n var matched = uaMatch(navigator.userAgent);\r\n var browser = {};\r\n\r\n if (matched.browser) {\r\n browser[matched.browser] = true;\r\n browser.version = matched.version;\r\n }\r\n\r\n // Chrome is Webkit, but Webkit is also Safari.\r\n if (browser.chrome) {\r\n browser.webkit = true;\r\n } else if (browser.webkit) {\r\n browser.safari = true;\r\n }\r\n\r\n jQuery.browser = browser;\r\n}\r\n\r\n$jq(PeopleMedia.Timer.Init);\r\n$jq(PeopleMedia.Popups.Init);\r\n$jq(PeopleMedia.Animations.init);\r\n\r\n"],"names":["uaMatch","matched","browser","PeopleMedia","$jq","moment","_adjustMainMargin","diff","newMargin","$main","mainHeight","outerHeight","rightColumnHeight","css","replace","e","adjustMainMargin","clearTimeout","_adjustMainMarginTimeout","setTimeout","_resizeComplete","_reloadAds","resizeHandler","_resizeTimeout","createErrorObject","prop","errProp","errObj","extend","reason","ex","isRushHour","date","hour","Object","prototype","toString","call","Date","getHours","isNaN","Oid","_adReloadTimeout","_listeningOnResize","_deviceTypeCookieName","_mobileDeviceType","_desktopDeviceType","googletag","pubads","updateCorrelator","setTargeting","getRandomNumericString","AmazonAdSourceId","AmazonAdKey","amznads","getAdsCallback","AmazonAdCallback","clearTargeting","slots","getSlots","forEach","slot","refresh","RefreshSession","numberOfDigits","min","max","result","i","Math","floor","random","SiteId","PeopleMediaConfig","Configuration","siteId","Domain","domain","BaseDomain","baseDomain","SiteImagePath","siteImagePath","SiteRootEnabled","PersistentLoginEnabled","persistentLoginEnabled","IsLoggedIn","PopupPath","popupPath","WebSyncUrl","webSyncUrl","ImagePath","imagePath","ThemeImagePath","themeImagePath","CommonImagePath","commonImagePath","BaseImagePath","baseImagePath","PageDefinitionId","pageDefinitionId","EncodedMemberId","encodedMemberId","CombineFlirtsAndLikes","combineFlirtsAndLikes","DisableLegacyChat","disableLegacyChat","ShowMatchMutualConnections","showMatchMutualConnections","ApiSendEnabled","apiSendEnabled","AdjustMainMargin","AdSlotRenderEnded","event","isEmpty","setTargetingForGPTAsync","ReloadAds","ResizeHandler","InitializeResizeHandler","window","on","InitializeOrientationHandler","off","startTime","url","getTime","ajax","type","data","dataType","success","response","redirect","location","href","error","jqXHR","textStatus","errorThrown","endTime","readyState","status","Logger","LogAjaxErrorXHR","method","duration","async","cache","timeout","suppressErrors","Timer","StartCountdownTimer","resolveSessionToken","PMChat","Config","DefaultSessionToken","InitializeChat","On","Error","Handled","pmError","message","getMessage","name","getTitle","ChatLoggingEnabled","LogExceptionWithDetail","UI","Init","SiteHostName","siteHostName","GetNewChats","isFavorite","IsFavorite","Favorite","removeFavorite","addFavorite","MemberId","onComplete","err","favoriteText","Popups","ShowGenericMessage","AjaxErrorMessage","length","miniProfileFavDiv","html","addClass","removeClass","text","_Clients","WithMember","BlockUser","username","NickName","ReportConcern","SiteID","currentUserSiteId","MemberID","profile","chatLoggingEnabled","ChatEnabled","defaultSessionToken","SessionToken","State","WebStorageState","Channel","WebSyncChannel","Client","WebSyncServer","channel","BaseUrl","chatBasePath","API","chatApi","SetToggleText","handleError","scrollToItem","$elem","headerAdjustment","elemPosition","scrollTop","offset","height","top","animate","scrollLeft","console","log","useScrollingForRelativeLinks","$container","find","this","attr","$link","preventDefault","stopPropagation","sitePostbackHeader","header","$token","tokenName","$af","val","sitePostback","$form","prepend","createAjaxErrorObject","generalError","isCancelled","responseText","statusCode","isAjaxError","convertToPositiveInteger","input","trunc","parseInt","htmlEscape","str","String","transitionEndEventName","el","document","createElement","transitions","transition","OTransition","MozTransition","WebkitTransition","hasOwnProperty","style","getMatchStackSessionStorageKey","CurrentPublicMemberId","publicMemberId","getCovidHomeSessionStorageKey","getSettingsNotificationStorageKey","findLatestExpiresAt","arr","latest","latestMoment","Array","isArray","expiresAt","isAfter","parseQueryStringToArray","queryString","qs","search","URLSearchParams","value","key","push","getQueryStringItem","qsArray","keyLower","num","toLowerCase","filter","item","map","parseFloat","arrayFirstOrDefault","rushHourEndsAt","hourEnd","dateCheck","setHours","setMinutes","setSeconds","setMilliseconds","getMatchstackEventsAdNoThanksClickedStorageKey","isCommandKey","detectIOS","MSStream","navigator","userAgent","match","detectAndroid","switchToMobileView","current","Cookies","getCookie","setCookie","removeCookie","Tracking","trackSwitchDeviceType","eventName","previousValue","reload","clearObjectProperties","obj","except","keys","indexOf","jQuery","Storage","storageAvailable","storage","x","setItem","removeItem","_loadFromStorage","getItem","JSON","parse","oid","_saveToStorage","stringify","isQuotaError","_clearStorage","keyPrefix","exceptPrefix","removeKeys","substring","k","localOrSessionStorage","localStorage","sessionStorage","DOMException","code","loadFromSessionStorage","saveToSessionStorage","clearSessionStorage","loadFromStorage","saveToStorage","clearStorage","trackCustomMemberEventsComplete","params","trackCustomMemberEvents","ajaxData","validEvents","events","ev","headers","contentType","trackComplete","trackMemberShown","otherMemberPublicGuid","otherMemberProfileId","eventActionPrefix","viewLocation","featureSource","displayModule","matchedUserType","presentationId","searchGuid","recordGuid","PageId","AdTracking","featureName","EventType","FeatureName","PageDefinitionSubId","PageNumber","PageDefinitionView","always","trackMemberEvent","callback","pageId","updateClickThroughFlow","Path","path","Page","page","LogAjaxError","ajaxSettings","thrownError","one","settings","ajaxSetup","Utility","passiveSupported","scrollPosition","debounce","func","wait","immediate","context","args","arguments","callNow","apply","enableBodyScrolling","scrollTo","disableBodyScrolling","useFixedPositioning","pageYOffset","scrollDownElementIntoView","element","pageTop","pageBottom","elementBottom","amountToScroll","abs","isElementInViewport","rect","getBoundingClientRect","innerHeight","left","bottom","documentElement","clientHeight","right","innerWidth","clientWidth","isPassiveEventListenerOptionSupported","options","passive","addEventListener","removeEventListener","days","useDomain","expires","setTime","toUTCString","cookie","nameEQ","ca","split","c","charAt","eraseCookie","parseKeyValueString","hash","pieces","pair","decodeURIComponent","AbortLogoutTimer","logoutWarningTimer","UpdateFinalCountdown","minutes","seconds","padding","finalCountdown","clearInterval","autoLogoutInterval","Logout","totalSeconds","logoutWarningMinutes","ShowLogoutWarning","empty","ExtendSession","hide","show","setInterval","sessionMinutesRemaining","sessionInterval","minutesSinceLastActivity","totalMinutes","doneClick","$this","closePopups","shouldRefreshPage","racParams","blocked","_isBlocked","selectConcernClick","concern","$concernType","not","$concernButton","getSelectedConcern","$buttonText","allowsComments","updateBlockedUserSelection","reportConcernNextClick","blockUser","requiresBlock","getBlockedUserSelection","isCommentsPanel","closest","hasClass","comments","getComments","showPanelComment","requiresComments","submitReportConcern","concernType","mediaId","isTodaysMatches","refreshPage","commentOnKeyUp","$target","currentTarget","which","updateTextCounter","commentOnPaste","commentOnChange","commentOnInput","$comments","touchMove","$popupDisplayAreaDiv","$reportConcernMain","$reportConcernPanel","$reportConcernPanelConcern","$reportConcernPanelComment","$reportConcernPanelThanks","$blockedCheckbox","$blockedCheckboxContainer","$commentsButton","$optionalComments","$charactersRemainingValue","$userBlocked","$selected","first","trim","ClosePopups","PublicMemberId","Message","SkipCSSVerif","ConcernId","Username","QueryString","MediaId","submitReportConcernComplete","RecordBlockedMemberToMatchStack","chars","remain","newText","substr","init","ShowPrivacyPolicyUpdateComplete","TrackUserAgreement","TrackPrivacyPolicyAndRedirect","setCursorPosition","inputId","pos","getElementById","setSelectionRange","_closeCallBack","profileBouncerCloseClicked","profileBouncerCompleteProfileClicked","ValidateResponse","ShareProfileComplete","email","EmailAddress","blockedEncodedMemberId","blockedPublicMemberId","position","now","latestStackInfo","stackExpiresAt","sessionData","displayMembers","ProfileId","add","stackInfo","Blocked","blockedProfiles","blockedAt","format","MatchStack","removeBlockedMembers","forceRefreshSession","FlirtSent","gender","hasPhoto","fromPage","upn","isBdayFlirt","isDelighful","quickTipNumber","quickTip","genderObjective","flirtOrLikeText","defaultTitle","defaultText","tipsMaleProfile","tipsFemaleProfile","buttonCTA","todaysMatchCurrent","Profile","IsTodaysMatch","TodaysMatchCurrent","Messaging","sendMessage","messageSentUrl","defaultText2","new_text","UserAgreementVersionId","userAgreementVersionId","PendingUserAgreementVersionId","pendingUserAgreementVersionId","UserAgreementName","userAgreementName","selectionStart","selectionEnd","focus","createTextRange","range","collapse","moveEnd","moveStart","select","setOnCloseCallback","callBack","LongMessage","LearnMore","sitepath","ShareProfile","AccessibilityHelper","removeOutlineOnClick","backTo","history","back","ShowPrivacyPolicyUpdate","formattedEffectiveDate","isBeforeEffectiveDate","CheckProfileBouncer","isProfileBouncerEnabled","hasPhotos","ChatPane","shouldToggle","newToggle","lastToggle","chatPane","columnLeft","pub","wired","win","isShowing","IsEnabled","populateMembers","ShowChat","forceEnabled","scrolled","resized","h1","clone","h2","HideChat","children","remove","append","ToggleChat","Members","each","fx","member","div","img","PhotoUrl","Gender","Age","Location","IsPaid","upgradeOnSend","UpgradeUrl","EncryptedMemberId","initiateChat","alert","City","StateCode","CountryCode","ChatTabFocus","margin-left","leftColMargin","width","_client","Enabled","isUpgradePage","fm","websync","client","initialize","connect","LikeMedia","likeMedia","hasOnComplete","ObjectId","pageNumber","pageDefinitionView","errorMessage","isDuplicate","commentMedia","UPN","FromPage","includeQueryString","getMessagePromptsForSite","forceRefresh","_messagePrompts","messagePrompts","_messagePromptInProgress","isRetry","_messagePromptsLegacy","_messagePromptsLegacyAll","_messagePromptsAll","isLegacy","getFormattedTimeFromTimestamp","timestamp","ampm","formattedTime","hr","msgDate","getMinutes","getConnectionType","isSendingMessage","_months","_days","MessagePrompts","MessagePromptsLegacy","actionType","ActionType","objectId","searchId","SearchId","subject","Subject","isCannedMessage","IsCannedMessage","prepopulatedMessageId","PrepopulatedMessageId","trackingModule","TrackingModule","getRandomMessagePrompt","useLegacy","removeAfterUse","values","randomNumber","splice","formatMessageTimestamp","mrc","formattedDate","today","yesterday","lastWeek","setDate","getDate","lastYear","setFullYear","getFullYear","getMonth","getDay","slice","formatRelativeTimeFromTimestamp","timeElapsedDays","timeElapsedYears","displayDays","timeElapsedHours","timeElapsedMins","displayMins","displayHours","displayYears","checkForNewMutualMatch","previousConnectionType","connectionType","previousThreadType","threadType","showMatchMutuals","isMutualMessageThread","Constants","ConnectionType","Mutual","ThreadType","newMutualMatch","Flirt","sendFlirt","replyToMessageId","ReplyToMessageId","flirtId","FlirtId","sendBirthdayFlirt","sendMissingPhotoFlirt","missingPhotoParams","sendImInterestedFlirt","imInterestedParams","favoriteAction","isAddFavorite","action","favParams","removeParams","Media","getSilhouetteUrl","useSquareUrl","suffix","getProfilePhotos","MaxResults","ImageSize","maxResults","imageSize","getPhotoInfo","apiPhotoData","photoInfo","photoId","photoUrl","silhouette","photoCount","errorUrl","Photo","SquareUrl","PhotoId","PhotoCount","fn","onImpression","loaded","attribute","alwayscallback","scrollable","$window","$scrollable","onImpressionElements","inview","wt","wb","et","scrollBottom","inScrollable","$e","is","eb","trigger","getAttribute","ImpressionTracking","RunCaptureImpression","_captureImpressionArray","impressionData","searchType","_searchType","_captureImpressionTimeout","SetCaptureImpression","impressionClass","ordinalPosition","OrdinalPosition","Pagination","updatePrevNextButton","$button","isActive","convertPageNumber","pageString","getPageNumberItems","pageNum","currentPage","totalPages","isCurrentPage","isEllipsis","convertPageNumberItemsToHtml","pageNumberItems","updatePaginationContainer","namespace","totalRecords","perPage","pageCount","ceil","hasPreviousPage","hasNextPage","$pageNumbers","paginationHtml","$prev","$next","pageNumberHtml","originalEvent","Badges","getUserCountsComplete","getUserCounts","fixBadgeBorders","$badges","removeAttr","BoostTimer","timerUpdate","timerData","secondsRemaining","stopCountdown","getTimerData","timer","getFormattedTime","utc","startCountdown","alreadyRunning","checkForEnterOrSpaceKeypress","$parent","EventsTimer","daysLeft","ArkoseCaptcha","updateCaptchaTokenInForm","$inputToken","_$form","_captchaToken","includeCaptchaFieldsInForm","$inputAction","$inputPageDefinitionId","captchaToken","captchaLocation","onArkoseEnforcementComplete","token","_onValidateComplete","timerExpired","_enforceTimer","_isScriptLoaded","_scriptsFailed","_scriptsReady","setupEnforcement","enforcement","setConfig","onReady","setArkose","_captchaLocation","_pageDefinitionId","_selector","_arkose","scriptsFailed","scriptsReady","selector","onValidateComplete","arkoseScript","attrib","id","createAttribute","setAttributeNode","src","arkoseSiteKey","head","appendChild","execute","onCompleted","run","Animations","showLoader","$loader","legacy","anim","animations","play","hideLoader","stop","_loaderTimeout","setupLottieAnimations","themeAnimationPath","querySelectorAll","animation","lottie","loadAnimation","container","animationData","renderer","loop","autoplay","lottieScript","onload","loaderVisible","showDelayedLoader","delayMilliseconds","cancelDelayedLoader","showLoaderBeforeRedirect","Geo","getPostalCodeLocationComplete","validatePostalCodeFormatIsUsa","test","validatePostalCodeFormatIsCanada","getPostalCodeLocation","postalCode","PostalCode","Male","Female","InboundNonMutual","OutboundNonMutual","Like","ua","exec","version","chrome","webkit","safari"],"mappings":"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"}