{"version":3,"sources":["wwwroot/scripts/youli.common.js","wwwroot/scripts/youli.common.currency.js","wwwroot/scripts/youli.common.ui.js","wwwroot/scripts/youli.common.utils.js","wwwroot/scripts/youli.copytoclipboard.js"],"names":["YouLi","Common","ajaxPromise","options","UI","ShowLoading","$","ajax","Error","settings","extend","url","params","datatype","contentType","processData","ajaxOptions","method","dataType","data","buildAjaxOptions","done","res","fail","xhr","status","error","Deferred","reject","always","HideLoading","PaymentGateway","Stripe","Square","CyberSource","AuthorizeNet","PayPal","SendPaymentReceipt","tripId","inviteeId","isPlannerTriggered","tripid","inviteeid","type","JSON","stringify","complete","response","ShowStandardDialog","undefined","responseJSON","success","title","successMessageTitle","message","OpenSupportTicket","userMessage","debugMessage","subject","cache","UpdateUrlParam","key","value","URL","window","location","encodeURIComponent","searchParams","set","history","pushState","unescape","UpdateUrlParams","values","urlParams","URLSearchParams","search","getAll","forEach","delete","append","replaceState","toString","ClearUrlParams","href","regex","RegExp","newUrl","replace","match","p1","document","GetGAData","eventName","event","planner_has_ecommerce","val","items","item_id","item_name","item_variant","affiliation","currency","item_brand","price","quantity","location_id","ecommerce","promotion_id","promotion_name","coupon","tax","transaction_id","firstItem","length","item_category","item_category2","item_category3","item_category4","item_category5","Get","successCallback","errorCallback","queryParams","each","hasOwnProperty","push","join","buildQueryParam","beforeSend","Post","Put","Delete","HandleFormValidation","form","errors","$form","container","find","removeClass","addClass","html","ErrorMessage","closest","summaryContainer","list","empty","this","appendTo","backDropElement","loadingCounter","div","IsAdvancedUpload","createElement","messageHTML","buttonText","buttonClickCallback","includeCancelButton","text","off","on","toggle","modal","HideStandardDialog","ShowStaticStandardDialogNoClose","remove","backdrop","keyboard","ShowButtonLoading","element","prop","ShowAvatarLoading","parent","ShowInputLoading","HideButtonLoading","HideAvatarLoading","HideInputLoading","ShowLoadingOnBlockElement","HideLoadingOnBlockElement","ScrollToTopModal","modalId","modalElement","getElementById","scrollTo","submitBtn","is","submitIpt","FocusText","input","setTimeout","selectionStart","selectionEnd","CompleteTrial","ClearClientSideErrors","FormatClientSideErrors","InitDropDownWithSearch","hasClass","wrap","btnSection","attr","insertAfter","select2","theme","InitCkeditor","target","removebuttons","s3BucketPath","isLimitedVersion","s3BucketHash","ckEditorInstance","CKEDITOR","instances","console","log","destroy","height","removeButtons","disableNativeSpellChecker","format_tags","embed_provider","useAutoToolbar","extraPlugins","apiKey","ui","Flmngr","accessKey","urlFileManager","urlFiles","apiKeyUnsplash","Init","copyToClipboard","e","Validation","confirmTitle","confirmMessage","UpgradeSubscription","GoToUpgradePage","tooltip","trigger","popover","animate","scrollTop","datetimepicker","format","extraFormats","Utils","GetDateFormatStrings","keepOpen","useCurrent","ignoreReadonly","widgetPositioning","horizontal","vertical","icons","time","fn","daterangepicker","localeConfig","applyLabel","cancelLabel","fromLabel","toLabel","customRangeLabel","daysOfWeek","monthNames","firstDay","autoUpdateInput","startDate","moment","endDate","ranges","Today","Yesterday","subtract","Last 7 Days","Last 30 Days","Last 60 Days","Last 90 Days","Last 6 Months","startOf","Last 12 Months","Last Week","endOf","Last Month","Last Quarter","Last Year","opens","separator","locale","add","Tomorrow","Next 7 Days","Next 30 Days","Next 60 Days","Next 90 Days","Next 6 Months","Next 12 Months","Next Week","Next Month","Next Quarter","Next Year","Next 5 Years","ClearableInputInit","Constructor","prototype","enforceFocus","$modalElement","$element","parentNode","has","parentsUntil","focus","ev","dialogName","name","dialogDefinition","definition","getContents","get","contents","elements","children","label","className","exception","alert","ApplyGangColors","color","css","background-color","sanitize","content","siblings","toggleClass","offsetWidth","clientX","getBoundingClientRect","left","preventDefault","change","index","GetClientWidth","Math","max","documentElement","clientWidth","innerWidth","LoadSvg","allSvg","idx","ready","ajaxSetup","zE","stopPropagation","$zopim","livechat","show","MimeType","extension","jpg","jpeg","png","ico","svg","pdf","doc","docx","csv","xls","xlsx","numbers","pages","txt","toLowerCase","IsMobile","navigator","userAgent","IsYouLiBundler","IsYouLiMobileApp","GetParameterFromURL","parameterName","AddParametersToURL","additionalParameters","indexOf","AddorUpdateParameterToURL","urlObject","lowercaseParams","language","TrimToSize","strInput","intTrimTo","boolIncDots","resultString","substring","StripHTML","GetFileExtension","filename","split","pop","Currency","Currencies","Code","DisplayPrefix","HasDecimal","DisplayPostfix","DisplayCost","cost","parseFloat","abs","toLocaleString","maximumFractionDigits","minimumFractionDigits","GetCurrency","currencyCode","obj","self","URLElementSelector","CopyStringToClipboard","str","el","body","appendChild","range","createRange","selectNodeContents","selection","getSelection","removeAllRanges","addRange","setSelectionRange","setAttribute","style","position","select","execCommand","err","removeChild","linkToCopy","inp","blur","jQuery"],"mappings":"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","file":"site-common.min.js","sourcesContent":["var YouLi = YouLi ? YouLi : {};\r\nYouLi.Common = YouLi.Common ? YouLi.Common : {};\r\n\r\n(function (YouLi) {\r\n (function (Common) {\r\n\r\n YouLi.Common.PaymentGateway = {\r\n Stripe: 0,\r\n Square: 1,\r\n CyberSource: 2,\r\n AuthorizeNet: 3,\r\n PayPal: 4,\r\n };\r\n\r\n YouLi.Common.SendPaymentReceipt = function (tripId, inviteeId, isPlannerTriggered) {\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n var data = {\r\n tripid: tripId,\r\n inviteeid: inviteeId,\r\n isPlannerTriggered: isPlannerTriggered ? isPlannerTriggered : false,\r\n };\r\n\r\n $.ajax({\r\n url: \"/trip/SendInviteeReceipt\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n data: JSON.stringify(data),\r\n complete: function (response) {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n if (response.status === 500) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when sending email.\");\r\n } else if (response.responseJSON != undefined && response.responseJSON.success == false) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when sending email.\");\r\n }\r\n else {\r\n let title = response.responseJSON.successMessageTitle;\r\n let message = response.responseJSON.message;\r\n\r\n YouLi.Common.UI.ShowStandardDialog(message, title, \"Okay\", \"success\");\r\n }\r\n }\r\n });\r\n };\r\n\r\n YouLi.Common.OpenSupportTicket = function (userMessage, debugMessage, subject) {\r\n\r\n $.ajax({\r\n url: `/trip/opensupportticket?userMessage=${userMessage}&debugMessage=${debugMessage}&subject=${subject}`,\r\n type: 'POST',\r\n cache: false,\r\n contentType: false,\r\n processData: false\r\n });\r\n\r\n // note: we don't do anything special on success or fail\r\n }\r\n\r\n YouLi.Common.UpdateUrlParam = function (key, value) {\r\n const url = new URL(window.location);\r\n value = encodeURIComponent(value);\r\n url.searchParams.set(key, value);\r\n window.history.pushState({}, '', window.unescape(url));\r\n }\r\n\r\n YouLi.Common.UpdateUrlParams = function (key, values) {\r\n let urlParams = new URLSearchParams(window.location.search);\r\n let existingValues = urlParams.getAll(key);\r\n\r\n existingValues.forEach(function (value) {\r\n urlParams.delete(key);\r\n });\r\n\r\n values.forEach(function (value) {\r\n urlParams.append(key, value);\r\n });\r\n\r\n window.history.replaceState({}, '', '?' + urlParams.toString());\r\n }\r\n\r\n YouLi.Common.ClearUrlParams = function (key) {\r\n const url = window.location.href;\r\n\r\n const regex = new RegExp('([?&])' + key + '=[^&]*');\r\n\r\n const newUrl = url.replace(regex, function (match, p1) {\r\n return p1 === '?' ? '?' : '';\r\n });\r\n\r\n window.history.replaceState({}, document.title, newUrl);\r\n }\r\n\r\n YouLi.Common.GetGAData = function (eventName) {\r\n var data = {\r\n event: eventName,\r\n planner_has_ecommerce: $(\"#ECommerceDataLayerEnabled\").val()\r\n\r\n };\r\n var items = [\r\n {\r\n item_id: $(\"#GA_Alias\").val(),\r\n item_name: $(\"#GA_TripName\").val(),\r\n item_variant: $(\"#GA_PackageName\").val(),\r\n affiliation: $(\"#GA_CurrentUserAffiliateCode\").val(),\r\n currency: $(\"#GA_CurrencyCode\").val(),\r\n item_brand: $(\"#GA_BusinessName\").val(),\r\n price: $(\"#GA_CostPerPerson\").val(),\r\n quantity: $(\"#GA_Quantity\").val(),\r\n location_id: $(\"#GA_PrimaryLocation\").val(),\r\n }\r\n ];\r\n\r\n if (eventName == \"view_item\") {\r\n data.ecommerce = {\r\n currency: $(\"#GA_CurrencyCode\").val(),\r\n value: $(\"#GA_CostPrepayTotalOutstanding\").val(),\r\n items: items\r\n }\r\n }\r\n\r\n if (eventName == \"select_promotion\") {\r\n data.ecommerce = {\r\n promotion_id: $(\"#SelectedCouponCode\").val(),\r\n promotion_name: $(\"#SelectedCouponCode\").val(),\r\n items: items\r\n }\r\n }\r\n\r\n if (eventName == \"generate_lead\" || eventName == \"add_to_cart\" || eventName == \"remove_from_cart\" || eventName == \"view_cart\") {\r\n data.ecommerce = {\r\n currency: $(\"#GA_CurrencyCode\").val(),\r\n value: $(\"#GA_CostPrepayTotalOutstanding\").val(),\r\n items: items\r\n }\r\n }\r\n\r\n if (eventName == \"begin_checkout\") {\r\n data.ecommerce = {\r\n currency: $(\"#GA_CurrencyCode\").val(),\r\n value: $(\"#GA_CostPrepayTotalOutstanding\").val(),\r\n coupon: $(\"#SelectedCouponCode\").val(),\r\n tax: $(\"#GA_Tax\").val(),\r\n items: items\r\n }\r\n }\r\n\r\n if (eventName == \"purchase\") {\r\n data.ecommerce = {\r\n transaction_id: $(\"#GA_TransactionId\").val(),\r\n currency: $(\"#GA_CurrencyCode\").val(),\r\n value: $(\"#GA_CostPrepayTotalOutstanding\").val(),\r\n coupon: $(\"#SelectedCouponCode\").val(),\r\n items: items\r\n }\r\n }\r\n\r\n var firstItem = data.ecommerce.items[0];\r\n if ($(\"#GA_Tag0\").length) {\r\n firstItem.item_category = $(\"#GA_Tag0\").val();\r\n }\r\n if ($(\"#GA_Tag1\").length) {\r\n firstItem.item_category2 = $(\"#GA_Tag1\").val();\r\n }\r\n if ($(\"#GA_Tag2\").length) {\r\n firstItem.item_category3 = $(\"#GA_Tag2\").val();\r\n }\r\n if ($(\"#GA_Tag3\").length) {\r\n firstItem.item_category4 = $(\"#GA_Tag3\").val();\r\n }\r\n if ($(\"#GA_Tag4\").length) {\r\n firstItem.item_category5 = $(\"#GA_Tag4\").val();\r\n }\r\n\r\n return data;\r\n }\r\n\r\n YouLi.Common.Get = function (url, params, successCallback, errorCallback, datatype = \"json\", cache = false) {\r\n $.ajax({\r\n url: buildQueryParam(url, params),\r\n method: 'GET',\r\n dataType: datatype,\r\n beforeSend: function () {\r\n YouLi.Common.UI.ShowLoading();\r\n },\r\n success: successCallback,\r\n error: errorCallback,\r\n //function (xhr, status, error)\r\n //{\r\n //console.error(xhr.responseText + ' ' + status + ' ' + error);\r\n //show oops someething went wrong modal\r\n //},\r\n complete: function () {\r\n YouLi.Common.UI.HideLoading();\r\n }\r\n });\r\n }\r\n\r\n YouLi.Common.Post = function (url, data, successCallback, errorCallback, datatype = \"json\", contentType = \"\", processData = true) {\r\n\r\n let ajaxOptions = {\r\n url: url,\r\n method: 'POST',\r\n dataType: datatype,\r\n data: data,\r\n beforeSend: function () {\r\n YouLi.Common.UI.ShowLoading();\r\n },\r\n success: successCallback,\r\n error: errorCallback,\r\n complete: function () {\r\n YouLi.Common.UI.HideLoading();\r\n }\r\n }\r\n\r\n if (contentType !== \"\") {\r\n ajaxOptions.contentType = contentType;\r\n ajaxOptions.processData = processData;\r\n }\r\n\r\n $.ajax(ajaxOptions);\r\n }\r\n\r\n YouLi.Common.Put = function (options) {\r\n options.method = \"PUT\";\r\n return ajaxPromise(options);\r\n }\r\n\r\n YouLi.Common.Delete = function (options) {\r\n options.method = \"DELETE\";\r\n return ajaxPromise(options);\r\n }\r\n\r\n YouLi.Common.HandleFormValidation = function (form, errors) {\r\n const $form = $(form);\r\n\r\n $.each(errors, function (key, val) {\r\n let container = $form.find('span[data-valmsg-for=\"' + key + '\"]');\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n container.html(val[val.length - 1].ErrorMessage);\r\n $(\".field-validation-error\").closest(\".form-group\").addClass(\"has-error\").removeClass(\"has-success\");\r\n });\r\n\r\n let summaryContainer = $form.find('div[data-valmsg-summary=true]'),\r\n list = summaryContainer.find(\"ul\");\r\n\r\n if (list && list.length && errors) {\r\n list.empty();\r\n summaryContainer.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(errors, function () {\r\n $(\"
  • \").html(this[this.length - 1].ErrorMessage).appendTo(list);\r\n });\r\n }\r\n }\r\n\r\n function ajaxPromise(options) {\r\n YouLi.Common.UI.ShowLoading();\r\n return $.ajax(buildAjaxOptions(options))\r\n .done(function (res) {\r\n return res;\r\n })\r\n .fail(function (xhr, status, error) {\r\n $.Deferred().reject(xhr, status, error);\r\n })\r\n .always(function () {\r\n YouLi.Common.UI.HideLoading();\r\n });\r\n }\r\n\r\n function buildAjaxOptions(options) {\r\n if (typeof options !== 'object' || options === null) {\r\n throw new Error('The argument must be an object.');\r\n }\r\n\r\n const defaults = {\r\n url: null,\r\n params: null,\r\n datatype: '',\r\n contentType: \"\",\r\n processData: true\r\n };\r\n\r\n const settings = $.extend({}, defaults, options);\r\n\r\n let ajaxOptions = {\r\n url: settings.url,\r\n method: settings.method,\r\n dataType: settings.datatype,\r\n data: settings.params\r\n }\r\n\r\n if (settings.contentType !== \"\") {\r\n ajaxOptions.contentType = settings.contentType;\r\n ajaxOptions.processData = settings.processData;\r\n }\r\n\r\n return ajaxOptions;\r\n }\r\n\r\n function buildQueryParam(url, params) {\r\n let queryParams = [];\r\n\r\n $.each(params, function (key, val) {\r\n if (params.hasOwnProperty(key)) {\r\n queryParams.push(encodeURIComponent(key) + '=' + encodeURIComponent(val));\r\n }\r\n });\r\n\r\n return url + '?' + queryParams.join('&');\r\n }\r\n\r\n\r\n }(YouLi.Common ? YouLi.Common : {}));\r\n}(YouLi ? YouLi : {}));","var YouLi = YouLi ? YouLi : {};\r\nYouLi.Common = YouLi.Common ? YouLi.Common : {};\r\nYouLi.Common.Currency = YouLi.Common.Currency ? YouLi.Common.Currency : {};\r\n\r\n(function (YouLi) {\r\n (function (Common) {\r\n (function (Currency) {\r\n\r\n YouLi.Common.Currency.Currencies = [\r\n { Code: \"AUD\", DisplayPrefix: \"A$\", HasDecimal: true },\r\n { Code: \"USD\", DisplayPrefix: \"US$\", HasDecimal: true },\r\n { Code: \"CAD\", DisplayPrefix: \"C$\", HasDecimal: true },\r\n { Code: \"EUR\", DisplayPrefix: \"€\", HasDecimal: true },\r\n { Code: \"GBP\", DisplayPrefix: \"£\", HasDecimal: true },\r\n { Code: \"NZD\", DisplayPrefix: \"NZ$\", HasDecimal: true },\r\n { Code: \"JPY\", DisplayPrefix: \"¥\", HasDecimal: false },\r\n { Code: \"DKK\", DisplayPostfix: \"kr\", HasDecimal: true },\r\n { Code: \"MXN\", DisplayPrefix: \"M$\", HasDecimal: true },\r\n { Code: \"INR\", DisplayPrefix: \"INR₹\", HasDecimal: true },\r\n { Code: \"SGD\", DisplayPrefix: \"S$\", HasDecimal: true },\r\n { Code: \"AED\", DisplayPrefix: \"Dhs\", HasDecimal: true },\r\n { Code: \"HKD\", DisplayPrefix: \"HK$\", HasDecimal: true }\r\n ];\r\n\r\n YouLi.Common.Currency.DisplayCost = function (currency, value) {\r\n var cost = \"\";\r\n\r\n // add a neagtive symbol for negative values. For positive values, we only show the positive symbol if we've set that option\r\n if (value < 0)\r\n cost += \"\\u2014\"; // em-dash\r\n\r\n if (currency.DisplayPrefix !== undefined && currency.DisplayPrefix !== null)\r\n cost += currency.DisplayPrefix;\r\n\r\n if (currency.HasDecimal)\r\n cost += parseFloat(Math.abs(value)).toLocaleString('en-US', { maximumFractionDigits: 2, minimumFractionDigits: 2 });\r\n else\r\n cost += Math.abs(value);\r\n\r\n if (currency.DisplayPostfix !== undefined && currency.DisplayPostfix !== null)\r\n cost += currency.DisplayPostfix;\r\n\r\n return cost;\r\n };\r\n\r\n YouLi.Common.Currency.GetCurrency = function (currencyCode) {\r\n return YouLi.Common.Currency.Currencies.find(function (obj) {\r\n return obj.Code === currencyCode;\r\n });\r\n };\r\n \r\n }(YouLi.Common.Currency ? YouLi.Common.Currency : {}));\r\n }(YouLi.Common ? YouLi.Common : {}));\r\n}(YouLi ? YouLi : {}));","var YouLi = YouLi ? YouLi : {};\r\nYouLi.Common = YouLi.Common ? YouLi.Common : {};\r\nYouLi.Common.UI = YouLi.Common.UI ? YouLi.Common.UI : {};\r\n\r\n(function (YouLi) {\r\n (function (Common) {\r\n (function (UI) {\r\n\r\n let loadingCounter = 0;\r\n let backDropElement;\r\n\r\n YouLi.Common.UI.IsAdvancedUpload = function () {\r\n var div = document.createElement('div');\r\n return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;\r\n }();\r\n\r\n YouLi.Common.UI.ShowStandardDialog = function (messageHTML, title, buttonText, status, buttonClickCallback, includeCancelButton = false) {\r\n\r\n $(\"#StandardDialog .modal-body .page-dialogue__message\").html(messageHTML);\r\n $(\"#StandardDialog .modal-body .page-dialogue__title\").text(title || \"Oops!\");\r\n $(\"#StandardDialog .modal-body .action-button\").text(buttonText || \"Okay\");\r\n\r\n $(\"#StandardDialog .modal-body .btn.action-button\").off('click');\r\n if (buttonClickCallback) {\r\n $(\"#StandardDialog .modal-body .btn.action-button\").on('click', function () {\r\n buttonClickCallback();\r\n });\r\n }\r\n\r\n $(\"#StandardDialog .modal-body .btn.cancel-button\").toggle(includeCancelButton);\r\n\r\n // clear any current style and add the required one for action button and header\r\n $(\"#StandardDialog .modal-body .action-button\").removeClass(\"btn-primary btn-action btn-invitee\");\r\n $(\"#StandardDialog .modal-header\").removeClass(\"warning success\")\r\n\r\n if (status === \"success\") {\r\n $(\"#StandardDialog .modal-body .action-button\").addClass(\"btn-invitee\");\r\n $(\"#StandardDialog .modal-header\").addClass(status);\r\n }\r\n else if (status === \"warning\") {\r\n $(\"#StandardDialog .modal-body .action-button\").addClass(\"btn-action\");\r\n $(\"#StandardDialog .modal-header\").addClass(status);\r\n }\r\n else {\r\n $(\"#StandardDialog .modal-body .action-button\").addClass(\"btn-primary\");\r\n $(\"#StandardDialog .modal-header\");\r\n }\r\n\r\n $(\"#StandardDialog\").modal();\r\n };\r\n\r\n YouLi.Common.UI.HideStandardDialog = function () {\r\n $(\"#standardDialog\").modal('hide');\r\n };\r\n\r\n YouLi.Common.UI.ShowStaticStandardDialogNoClose = function (messageHTML, title) {\r\n\r\n $(\"#StandardDialog .modal-body .page-dialogue__message\").html(messageHTML);\r\n $(\"#StandardDialog .modal-body .page-dialogue__title\").text(title || \"Oops!\");\r\n\r\n // always an error\r\n $(\"#StandardDialog .modal-header\").removeClass(\"warning success\");\r\n\r\n // remove the button, we don't allow closing this dialog\r\n $(\"#StandardDialog .modal-body .btn\").remove();\r\n\r\n $(\"#StandardDialog\").modal({ backdrop: 'static', keyboard: false });\r\n };\r\n\r\n YouLi.Common.UI.HideStandardDialog = function () {\r\n $(\"#standardDialog\").modal('hide');\r\n };\r\n\r\n\r\n\r\n // If ShowLoading gets called multiple times when one is already showing, it will create a new one, and when Hideloading is called, it will just remove the last created spinner.\r\n // This avoids issues with it getting confused with the Bootstrap modal overlay, which gets created by BS and handled completely by BS. Although they look the same, we don't want\r\n // to mix up our spinner overlays with the bootstrap modal ones.\r\n YouLi.Common.UI.ShowLoading = function () {\r\n\r\n if (loadingCounter === 0) {\r\n backDropElement = $(document.createElement('div'))\r\n .addClass('modal-backdrop fade spinner')\r\n .appendTo($('body'))\r\n .addClass(\"in\");\r\n }\r\n loadingCounter++;\r\n };\r\n\r\n YouLi.Common.UI.HideLoading = function () {\r\n loadingCounter = loadingCounter > 0 ? loadingCounter - 1 : 0;\r\n\r\n if (loadingCounter === 0 && backDropElement) {\r\n backDropElement.remove();\r\n }\r\n };\r\n\r\n YouLi.Common.UI.ShowButtonLoading = function (element) {\r\n $(element).prop(\"disabled\", true);\r\n $(element).addClass(\"spinner\");\r\n };\r\n\r\n YouLi.Common.UI.ShowAvatarLoading = function (element) {\r\n $(element).prop(\"disabled\", true);\r\n $(element).parent().addClass('spinner-avatar');\r\n };\r\n\r\n YouLi.Common.UI.ShowInputLoading = function (element) {\r\n $(element).prop(\"disabled\", true);\r\n $(element).addClass(\"input-spinner\");\r\n };\r\n\r\n YouLi.Common.UI.HideButtonLoading = function (element) {\r\n $(element).prop(\"disabled\", false);\r\n $(element).removeClass(\"spinner\");\r\n };\r\n\r\n YouLi.Common.UI.HideAvatarLoading = function (element) {\r\n $(element).prop(\"disabled\", false);\r\n $(element).parent().removeClass('spinner-avatar');\r\n };\r\n\r\n YouLi.Common.UI.HideInputLoading = function (element) {\r\n $(element).prop(\"disabled\", false);\r\n $(element).removeClass(\"input-spinner\");\r\n };\r\n\r\n YouLi.Common.UI.ShowLoadingOnBlockElement = function (element) {\r\n $(element).addClass(\"loading\").addClass(\"spinner\");\r\n }\r\n\r\n YouLi.Common.UI.HideLoadingOnBlockElement = function (element) {\r\n $(element).removeClass(\"loading\").removeClass(\"spinner\");\r\n }\r\n\r\n YouLi.Common.UI.ScrollToTopModal = function (modalId) {\r\n const modalElement = document.getElementById(modalId);\r\n if (modalElement)\r\n modalElement.scrollTo(0, 0);\r\n };\r\n\r\n $(document).on(\"submit\", \".submit-causes-load\", function () {\r\n\r\n var submitBtn = $(this).find(\"button[type='submit']\");\r\n if (submitBtn.is(\":disabled\")) {\r\n return false; // fail-safe to prevent multiple clicks from being processed\r\n }\r\n YouLi.Common.UI.ShowButtonLoading(submitBtn);\r\n\r\n // do the same for any input[submit] buttons\r\n var submitIpt = $(this).find(\"input[type='submit']\");\r\n if (submitIpt.is(\":disabled\")) {\r\n return false; // fail-safe to prevent multiple clicks from being processed\r\n }\r\n YouLi.Common.UI.ShowInputLoading(submitIpt);\r\n\r\n });\r\n\r\n YouLi.Common.UI.FocusText = function () {\r\n var input = this;\r\n setTimeout(function () {\r\n input.selectionStart = 0;\r\n input.selectionEnd = input.value.length;\r\n }, 100);\r\n };\r\n\r\n YouLi.Common.UI.CompleteTrial = function () {\r\n\r\n $.ajax({\r\n url: \"/manage/marktrialcompleted\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n // doing nothing\r\n }\r\n });\r\n };\r\n\r\n YouLi.Common.UI.ClearClientSideErrors = function (container) {\r\n if (!container)\r\n container = $(document);\r\n\r\n $(\".has-error\", container).removeClass(\"has-error\");\r\n\r\n $(\".field-validation-error\", container).removeClass(\"field-validation-error\").addClass(\"field-validation-valid\");\r\n\r\n $('div[data-valmsg-summary=true]', container).removeClass(\"validation-summary-errors\").addClass(\"validation-summary-valid\");\r\n\r\n };\r\n\r\n\r\n YouLi.Common.UI.FormatClientSideErrors = function (errors, xhr) {\r\n\r\n // update the summary as well\r\n var summaryContainer = $('div[data-valmsg-summary=true]'),\r\n list = summaryContainer.find(\"ul\");\r\n\r\n if (errors == \"\" || (xhr && xhr.status == 500)) {\r\n if (list)\r\n list.empty();\r\n summaryContainer.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n return;\r\n }\r\n\r\n $.each(errors, function (key, val) {\r\n var container = $('span[data-valmsg-for=\"' + key + '\"]');\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n container.html(val[val.length - 1].ErrorMessage);\r\n\r\n $(\".field-validation-error\").closest(\".form-group\").addClass(\"has-error\").removeClass(\"has-success\");\r\n });\r\n\r\n if (list && list.length && errors) {\r\n list.empty();\r\n summaryContainer.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(errors, function () {\r\n $(\"
  • \").html(this[this.length - 1].ErrorMessage).appendTo(list);\r\n });\r\n }\r\n };\r\n\r\n\r\n YouLi.Common.UI.InitDropDownWithSearch = function () {\r\n $('.searchable-dropdown').each(function () {\r\n let element = $(this);\r\n if (!element.parent().hasClass(\"input-group\")) {\r\n element.wrap(\"
    \");\r\n\r\n let btnSection = `\r\n \r\n `\r\n $(btnSection).insertAfter(element);\r\n element.select2({\r\n theme: \"bootstrap\"\r\n });\r\n }\r\n });\r\n\r\n $(\"button[data-select2-open]\").on('click', function () {\r\n $(\"#\" + $(this).data(\"select2-open\")).select2(\"open\");\r\n });\r\n }\r\n\r\n YouLi.Common.UI.InitCkeditor = function (target, removebuttons, s3BucketPath, isLimitedVersion, s3BucketHash) {\r\n\r\n let editor = null;\r\n let ckEditorInstance = CKEDITOR.instances[target];\r\n\r\n //Had to destroy CKEditor and attach it again if it has already been binded to the element to fix the issue for setting the value of text without error when trying to open the popup for more than once without page refresh\r\n if (ckEditorInstance) {\r\n console.log(\"Destroying a CKEditor instance\");\r\n ckEditorInstance.destroy();\r\n ckEditorInstance = undefined;\r\n }\r\n\r\n if (isLimitedVersion) {\r\n removebuttons += ',Image,ImgPen,Table,Smiley,SpecialChar,Maximize,Embed,YouTube,Anchor';\r\n\r\n CKEDITOR.replace(target, {\r\n height: 100,\r\n removeButtons: removebuttons,\r\n disableNativeSpellChecker: false,\r\n format_tags: 'p;h1;h2;h3',\r\n embed_provider: '//ckeditor.iframe.ly/api/oembed?url={url}&callback={callback}&api_key=9e0daab0bb19469133da69',\r\n useAutoToolbar: false,\r\n extraPlugins: \"N1ED-editor\",\r\n apiKey: 'ZRJDa7nT'\r\n });\r\n\r\n } else {\r\n CKEDITOR.replace(target, {\r\n height: 100,\r\n removeButtons: removebuttons,\r\n disableNativeSpellChecker: false,\r\n format_tags: 'p;h1;h2;h3',\r\n embed_provider: '//ckeditor.iframe.ly/api/oembed?url={url}&callback={callback}&api_key=9e0daab0bb19469133da69',\r\n extraPlugins: \"file-manager\",\r\n apiKey: 'ZRJDa7nT',\r\n ui: {\r\n useAutoToolbar: false\r\n },\r\n Flmngr: {\r\n accessKey: \"ZRJD231556E286DDB42A7F0C50BAD72B24CD\",\r\n urlFileManager: ` https://files.flmngr.com/flmngr-beta/?dir=${s3BucketPath}&hash=${s3BucketHash}`,\r\n urlFiles: `https://ylt-planner-editorimages.s3.us-east-1.amazonaws.com/${s3BucketPath}`,\r\n apiKeyUnsplash: '65f64eeaa6d3a0b53537d09fd977ac2bb484db2d8065e9c9c4ffa6617bc82e1b'\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n YouLi.Common.UI.Init = function () {\r\n\r\n $(\".copy-menu-link\").copyToClipboard();\r\n\r\n $('#AcceptPrivacyUpdate').off('click').on('click', function () {\r\n\r\n if ($('#IsPrivacyUpdateAccepted').length) {\r\n $('#IsPrivacyUpdateAccepted').val('true');\r\n $('.privacy-content').addClass('hidden');\r\n } else {\r\n $.ajax({\r\n url: \"/manage/acceptprivacyupdate\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n $('.privacy-content').addClass('hidden');\r\n }\r\n });\r\n }\r\n });\r\n\r\n\r\n //This code is for stopping the video playing on background when closing a popup with video playing on it\r\n $('.standardDialog').on('hidden.bs.modal', function (e) {\r\n if ($(\".standardDialog iframe\")) {\r\n $(\".standardDialog iframe\").attr(\"src\", $(\".standardDialog iframe\").attr(\"src\"));\r\n }\r\n });\r\n\r\n YouLi.Validation.Init();\r\n YouLi.Common.UI.InitDropDownWithSearch();\r\n\r\n $(document).off(\"click\", \".upgrade-subscription-button\").on(\"click\", \".upgrade-subscription-button\", function () {\r\n var title = $(this).data(\"upgrade-title\");\r\n var message = $(this).data(\"upgrade-message\");\r\n var confirmTitle = $(this).data(\"upgrade-confirm-title\");\r\n var confirmMessage = $(this).data(\"upgrade-confirm-message\");\r\n var tripId = $(this).data(\"upgrade-trip-id\");\r\n var target = $(this).attr(\"target\");\r\n YouLi.UpgradeSubscription.GoToUpgradePage(title, message, confirmTitle, confirmMessage, false, '', tripId, target);\r\n });\r\n\r\n // Developer note: the following two statements both initialise tooltip in a different way. We need to look at the impact to see if we should just do the second one, or if we should \r\n // be restricting the second one to be only for .helper elements.\r\n $('[data-toggle=\"tooltip\"]:not(\".helper\")').tooltip();\r\n\r\n $('[data-toggle=\"tooltip\"]').tooltip({\r\n trigger: \"hover focus\",\r\n container: \"body\"\r\n });\r\n\r\n $('body > .popover').remove();\r\n\r\n $('[data-toggle=\"popover\"]:not(\".custom\")').popover();\r\n\r\n //$('table [data-toggle=\"popover\"]').on(\"show.bs.popover\", function () {\r\n\r\n // $('.popover').css('left', $(\"this\")).offset().left + 5);\r\n //});\r\n\r\n $(\".scroll-to-top\").on(\"click\", function () {\r\n\r\n $('html, body').animate({ scrollTop: 0 }, 800);\r\n\r\n });\r\n\r\n // Datepicker\r\n $(\".datepicker\").datetimepicker({\r\n format: 'D MMM YYYY',\r\n extraFormats: YouLi.Common.Utils.GetDateFormatStrings(),\r\n keepOpen: false,\r\n useCurrent: false,\r\n ignoreReadonly: true,\r\n widgetPositioning: {\r\n horizontal: 'auto',\r\n vertical: 'bottom'\r\n }\r\n });\r\n\r\n $(\".datetimepicker\").datetimepicker({\r\n format: 'D MMM YYYY hh:mm A',\r\n extraFormats: YouLi.Common.Utils.GetDateFormatStrings(),\r\n keepOpen: false,\r\n useCurrent: false,\r\n ignoreReadonly: true,\r\n widgetPositioning: {\r\n horizontal: 'auto',\r\n vertical: 'bottom'\r\n },\r\n icons: {\r\n time: 'time-custom-icon'\r\n }\r\n });\r\n\r\n $(\".timepicker\").datetimepicker({\r\n format: 'hh:mm A',\r\n extraFormats: YouLi.Common.Utils.GetDateFormatStrings(),\r\n keepOpen: false,\r\n useCurrent: false,\r\n ignoreReadonly: true,\r\n widgetPositioning: {\r\n horizontal: 'right',\r\n vertical: 'bottom'\r\n }\r\n });\r\n\r\n if ($.fn.daterangepicker) {\r\n // Configure the date range picker - but ONLY if it's not already configured! Otherwise we lose defaults that have already been setup\r\n let localeConfig = {\r\n format: 'D MMM YYYY',\r\n applyLabel: 'Submit',\r\n cancelLabel: 'Clear',\r\n fromLabel: 'From',\r\n toLabel: 'To',\r\n customRangeLabel: 'Custom Date Range',\r\n daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\r\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n firstDay: 1\r\n }\r\n\r\n $('.daterangepicker-input').daterangepicker({\r\n autoUpdateInput: true,\r\n startDate: moment(),\r\n endDate: moment(),\r\n ranges: {\r\n 'Today': [moment(), moment()],\r\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\r\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()], // Today + last 6 days\r\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\r\n 'Last 60 Days': [moment().subtract(59, 'days'), moment()],\r\n 'Last 90 Days': [moment().subtract(89, 'days'), moment()],\r\n 'Last 6 Months': [moment().subtract(6, 'month').startOf('month'), moment()],\r\n 'Last 12 Months': [moment().subtract(12, 'month').startOf('month'), moment()],\r\n 'Last Week': [moment().subtract(1, 'week').startOf('isoweek'), moment().subtract(1, 'week').endOf('isoweek')],\r\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],\r\n 'Last Quarter': [moment().subtract(1, 'quarter').startOf('quarter'), moment().subtract(1, 'quarter').endOf('quarter')],\r\n 'Last Year': [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year').endOf('year')]\r\n },\r\n opens: 'left',\r\n separator: ' to ',\r\n locale: localeConfig\r\n });\r\n\r\n $('.daterangepicker-input-future').daterangepicker({\r\n autoUpdateInput: true,\r\n startDate: moment(),\r\n endDate: moment().add(1, 'year'),\r\n ranges: {\r\n 'Today': [moment(), moment()],\r\n 'Tomorrow': [moment().add(1, 'days'), moment().add(1, 'days')],\r\n 'Next 7 Days': [moment(), moment().add(6, 'days')],\r\n 'Next 30 Days': [moment(), moment().add(29, 'days')],\r\n 'Next 60 Days': [moment(), moment().add(59, 'days')],\r\n 'Next 90 Days': [moment(), moment().add(89, 'days')],\r\n 'Next 6 Months': [moment(), moment().add(6, 'month')],\r\n 'Next 12 Months': [moment(), moment().add(12, 'month')],\r\n 'Next Week': [moment().add(1, 'week').startOf('isoweek'), moment().add(1, 'week').endOf('isoweek')],\r\n 'Next Month': [moment().add(1, 'month').startOf('month'), moment().add(1, 'month').endOf('month')],\r\n 'Next Quarter': [moment().add(1, 'quarter').startOf('quarter'), moment().add(1, 'quarter').endOf('quarter')],\r\n 'Next Year': [moment().add(1, 'year').startOf('year'), moment().add(1, 'year').endOf('year')],\r\n 'Next 5 Years': [moment(), moment().add(5, 'year').endOf('year')]\r\n },\r\n opens: 'left',\r\n separator: ' to ',\r\n locale: localeConfig\r\n });\r\n }\r\n\r\n\r\n\r\n YouLi.Common.UI.ClearableInputInit();\r\n\r\n\r\n //Fix for issue with ckeditor in Bootstrap modal\r\n $.fn.modal.Constructor.prototype.enforceFocus = function () {\r\n var $modalElement = this.$element;\r\n $(document).on('focusin.modal', function (e) {\r\n var $parent = $(e.target.parentNode);\r\n if ($modalElement[0] !== e.target\r\n && !$modalElement.has(e.target).length\r\n && $(e.target).parentsUntil('*[role=\"dialog\"]').length === 0) {\r\n $modalElement.focus();\r\n }\r\n });\r\n };\r\n\r\n\r\n // force \"_blank\" for all links in CKEditor\r\n if (typeof CKEDITOR !== 'undefined') {\r\n CKEDITOR.on('dialogDefinition', function (ev) {\r\n try {\r\n /* this just gets the name of the dialog */\r\n var dialogName = ev.data.name;\r\n /* this just gets the contents of the opened dialog */\r\n var dialogDefinition = ev.data.definition;\r\n\r\n /* Make sure that the dialog opened is the link plugin ... otherwise do nothing */\r\n if (dialogName == 'link') {\r\n /* Getting the contents of the Target tab */\r\n var informationTab = dialogDefinition.getContents('target');\r\n /* Getting the contents of the dropdown field \"Target\" so we can set it */\r\n var targetField = informationTab.get('linkTargetType');\r\n /* Now that we have the field, we just set the default to _blank\r\n A good modification would be to check the value of the URL field\r\n and if the field does not start with \"mailto:\" or a relative path,\r\n then set the value to \"_blank\" */\r\n targetField['default'] = '_blank';\r\n }\r\n if (dialogName == 'image') {\r\n //Setting up the customized labels\r\n dialogDefinition.contents[0].elements[0].children[0].children[0].label = 'Image URL';\r\n dialogDefinition.contents[0].elements[0].children[0].children[1].label = 'Choose Image';\r\n dialogDefinition.contents[1].elements[1].className = 'hidden';\r\n dialogDefinition.contents[2].elements[0].label = 'CHOOSE IMAGE TO UPLOAD';\r\n dialogDefinition.contents[2].elements[1].label = 'UPLOAD FILE';\r\n }\r\n } catch (exception) {\r\n alert('Error ' + ev.message);\r\n }\r\n });\r\n }\r\n\r\n //// Detect ios 11_0_x affected \r\n //// NEED TO BE UPDATED if new versions are affected\r\n //var ua = navigator.userAgent,\r\n // iOS = /iPad|iPhone|iPod/.test(ua),\r\n // iOS11 = /OS 11_0_1|OS 11_0_2|OS 11_0_3|OS 11_1/.test(ua);\r\n\r\n //// ios 11 bug caret position\r\n //if (iOS && iOS11) {\r\n\r\n // // Add CSS class to body\r\n // $(\"body\").addClass(\"iosBugFixCaret\");\r\n\r\n //}\r\n\r\n };\r\n YouLi.Common.UI.ApplyGangColors = function () {\r\n //This code adds different color based on data value for each and every gang\r\n $('.colorize').each(function () {\r\n var color = $(this).data(\"color\");\r\n $(this).css({ \"background-color\": color });\r\n // $(this).siblings(\".gang-name\").css({ \"color\": color });\r\n $(this).removeClass(\"colorize\");\r\n });\r\n\r\n $(\".toolitip-gang\").popover({\r\n html: true,\r\n sanitize: false,\r\n trigger: \"hover\",\r\n content: function () {\r\n return $(this).siblings(\".tooltip-info\").html();\r\n },\r\n container: \"body\"\r\n });\r\n };\r\n /** * Clearable text inputs */\r\n YouLi.Common.UI.ClearableInputInit = function () {\r\n $(document).off('input', '.clearable').on('input', '.clearable', function () {\r\n $(this).toggleClass('x', this.value !== '');\r\n }).off('mousemove', '.x').on('mousemove', '.x', function (e) {\r\n $(this).toggleClass('onX', this.offsetWidth - 18 < e.clientX - this.getBoundingClientRect().left);\r\n }).off('touchstart click', '.onX').on('touchstart click', '.onX', function (ev) {\r\n ev.preventDefault();\r\n $(this).removeClass('x onX').val('').change();\r\n });\r\n\r\n $('.clearable').each(function (index) {\r\n if ($(this).val() !== '')\r\n $(this).addClass('x');\r\n });\r\n\r\n }\r\n\r\n YouLi.Common.UI.GetClientWidth = function () {\r\n return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\r\n }\r\n\r\n YouLi.Common.UI.LoadSvg = function (container) {\r\n let allSvg = $(container).find('.svg-icon:not(:has(svg))');\r\n\r\n $.each(allSvg, function (idx, val) {\r\n const url = $(val).data('svg-url');\r\n YouLi.Common.Get(url, null, function (response) {\r\n $(val).append($(response).find('svg'));\r\n }, null, 'xml', true);\r\n });\r\n }\r\n\r\n $(document).ready(function () {\r\n\r\n YouLi.Common.UI.Init();\r\n\r\n // bust the cache for all AJAX calls (especially IE)\r\n $.ajaxSetup({ cache: false });\r\n\r\n });\r\n\r\n $(document).on('click', '.helper-link', function (e) {\r\n if ($(this).data('suggestions-search') && (typeof zE !== \"undefined\")) {\r\n e.stopPropagation();\r\n zE('webWidget', 'helpCenter:setSuggestions',\r\n { search: $(this).data('suggestions-search') });\r\n $zopim.livechat.window.show();\r\n }\r\n });\r\n\r\n }(YouLi.Common.UI ? YouLi.Common.UI : {}));\r\n }(YouLi.Common ? YouLi.Common : {}));\r\n}(YouLi ? YouLi : {}));","var YouLi = YouLi ? YouLi : {};\r\nYouLi.Common = YouLi.Common ? YouLi.Common : {};\r\nYouLi.Common.Utils = YouLi.Common.Utils ? YouLi.Common.Utils : {};\r\n\r\n(function (YouLi) {\r\n (function (Common) {\r\n (function (Utils) {\r\n\r\n\r\n\r\n YouLi.Common.Utils.MimeType = function (extension) {\r\n var types = {\r\n \"jpg\": \"image/jpeg\",\r\n \"jpeg\": \"image/jpeg\",\r\n \"png\": \"image/png\",\r\n \"ico\": \"image/x-icon\",\r\n \"svg\": \"image/svg+xml\",\r\n \"pdf\": \"application/pdf\",\r\n \"doc\": \"application/msword\",\r\n \"docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\r\n \"csv\": \"text/csv\",\r\n \"xls\": \"application/vnd.ms-excel\",\r\n \"xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n \"numbers\": \"application/vnd.apple.numbers\",\r\n \"pages\": \"application/vnd.apple.pages\",\r\n \"txt\": \"text/plain\",\r\n };\r\n\r\n return types[extension.toLowerCase()];\r\n };\r\n\r\n YouLi.Common.Utils.IsMobile = function () {\r\n return navigator.userAgent.match(/(iPhone|iPod|iPad|Android|webOS|BlackBerry|IEMobile|Opera Mini)/i);\r\n }\r\n\r\n YouLi.Common.Utils.IsYouLiBundler = function () {\r\n return navigator.userAgent.match(/youlibundler/i);\r\n }\r\n\r\n YouLi.Common.Utils.IsYouLiMobileApp = function () {\r\n return navigator.userAgent.match(/(youli trip)/i);\r\n }\r\n\r\n YouLi.Common.Utils.GetParameterFromURL = function (parameterName) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n\r\n return urlParams.get(parameterName);\r\n }\r\n\r\n YouLi.Common.Utils.AddParametersToURL = function (url, additionalParameters) {\r\n return url + (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + additionalParameters;\r\n };\r\n\r\n YouLi.Common.Utils.AddorUpdateParameterToURL = function (url, key, value) {\r\n\r\n // Note: the URL in the JavaScript API is case-sensitive, because URLs are case sensitive, so\r\n // we convert all existing params to lower-case and then also use the lowercase of our new key.\r\n // Be aware of this when consuming this function! In our .NET world we are not so concerned because we can handle all cases\r\n const urlObject = new URL(url);\r\n const params = new URLSearchParams(urlObject.search);\r\n\r\n const lowercaseParams = new URLSearchParams();\r\n for (const [name, value] of params) {\r\n lowercaseParams.append(name.toLowerCase(), value);\r\n }\r\n \r\n lowercaseParams.set(key.toLowerCase(), value);\r\n\r\n urlObject.search = lowercaseParams.toString();\r\n\r\n return urlObject.href;\r\n };\r\n\r\n YouLi.Common.Utils.GetDateFormatStrings = function () {\r\n if (window.navigator.language === \"en-US\")\r\n return ['MM-DD-YYYY', 'MM/DD/YYYY', 'MM-DD-YY', 'MM/DD/YY'];\r\n\r\n return ['DD-MM-YYYY', 'DD/MM/YYYY', 'DD-MM-YY', 'DD/MM/YY'];\r\n }\r\n\r\n YouLi.Common.Utils.TrimToSize = function (strInput, intTrimTo, boolIncDots) {\r\n\r\n let resultString = strInput;\r\n\r\n if (resultString) {\r\n\r\n if (resultString.length > intTrimTo) {\r\n resultString = resultString.substring(0, intTrimTo - 1);\r\n if (boolIncDots) {\r\n resultString += \"…\";\r\n }\r\n }\r\n }\r\n return resultString;\r\n }\r\n\r\n YouLi.Common.Utils.StripHTML = function(input)\r\n {\r\n return input.replace(/<.*?>/g, \"\");\r\n }\r\n\r\n YouLi.Common.Utils.GetFileExtension = function (filename) {\r\n return filename.split('.').pop().toLowerCase();\r\n };\r\n\r\n }(YouLi.Common.Utils ? YouLi.Common.Utils : {}));\r\n }(YouLi.Common ? YouLi.Common : {}));\r\n}(YouLi ? YouLi : {}));","(function ($) {\r\n\r\n $.fn.copyToClipboard = function (options) {\r\n\r\n var self = $(this);\r\n\r\n var settings = $.extend({\r\n URLElementSelector: \".magicURL\",\r\n }, options);\r\n\r\n CopyStringToClipboard = function (str) {\r\n // Create new element\r\n var el = document.createElement('textarea');\r\n // Set value (string to be copied)\r\n el.value = str;\r\n document.body.appendChild(el);\r\n //cheching if device is iOS(iphone/ipad) then use this logic to copy the code in a range and then \r\n //select that range as it is not working as it supposed to for iOS devices \r\n var isiOS = navigator.userAgent.match(/ipad|iphone/i);\r\n if (isiOS) {\r\n range = document.createRange();\r\n range.selectNodeContents(el);\r\n selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n el.setSelectionRange(0, 999999);\r\n } else {\r\n // Set non-editable to avoid focus and move outside of view\r\n el.setAttribute('readonly', '');\r\n el.style = { position: 'absolute', left: '-9999px' };\r\n document.body.appendChild(el);\r\n // Select text inside element\r\n el.select();\r\n }\r\n // Copy text to clipboard\r\n try {\r\n document.execCommand('copy');\r\n }\r\n catch (err) {\r\n alert('please press Ctrl/Cmd+C to copy');\r\n }\r\n // Remove temporary element\r\n document.body.removeChild(el);\r\n };\r\n\r\n $(function () {\r\n\r\n // Nb: the following is very basic - we have a more complicated version that we could/should incorporate into this in YouLi.ShareTripDialog.CopyStringToClipboard which does special\r\n // things to allow Safari to work\r\n\r\n self.off(\"click\");\r\n self.on(\"click\", function (e) {\r\n\r\n e.preventDefault();\r\n\r\n // pure copy of a provided string using data-link-url\r\n if ($(this).data(\"link-id\")) {\r\n var linkToCopy = $($(this).data(\"link-id\")).attr(\"href\");\r\n CopyStringToClipboard(linkToCopy);\r\n return;\r\n }\r\n\r\n // find target element\r\n let inp = $(settings.URLElementSelector);\r\n\r\n // is element selectable?\r\n if (inp && inp.select) {\r\n\r\n // select text\r\n inp.select();\r\n\r\n try {\r\n // copy text\r\n document.execCommand('copy');\r\n inp.blur();\r\n }\r\n catch (err) {\r\n alert('please press Ctrl/Cmd+C to copy');\r\n }\r\n\r\n }\r\n });\r\n });\r\n\r\n return this;\r\n };\r\n\r\n}(jQuery));"]}