{"version":3,"sources":["wwwroot/scripts/youli.trip.program.js","wwwroot/scripts/youli.trip.itinerary.js","wwwroot/scripts/youli.trip.invitees.js","wwwroot/scripts/youli.trip.js","wwwroot/scripts/vendor/imagesloaded.pkgd.js","wwwroot/scripts/vendor/isotope.pkgd.min.js","wwwroot/scripts/vendor/bootstrap-editable.js","wwwroot/scripts/youli.editable-fullname.js","wwwroot/scripts/youli.trip.schedule.response.js","wwwroot/scripts/youli.trip.tasks.js","wwwroot/scripts/vendor/jquery.multistatecheck.js","wwwroot/scripts/youli.tripdates.js","wwwroot/scripts/youli.updateavatarinline.js","wwwroot/scripts/youli.s3resourceupload.js"],"names":["YouLi","Trip","Program","ProgramItems","ItemHeight","ProgramSelectedDate","ProgramFilteredIds","SaveDone","TargetElementForResponse","undefined","FilterItems","$","removeClass","find","addClass","itemsToShow","grep","n","i","startDateTime","moment","StartDateTime","endDateTime","EndDateTime","selectedDateMoment","isSame","isBetween","map","ScheduleItemId","$programGrid","isotope","filter","indexOf","this","attr","UpdateMenuNav","StyleName","length","CurrentSection","scrollerNavLeft","position","left","currentLeft","lastItem","lastItemRight","outerWidth","toggleClass","css","containerWidth","width","RefreshLayout","window","height","$cachedWindowWidth","RefreshItemExpandVisibility","data","element","each","toggle","ShowItemDetails","gridItemElement","clone","appendTo","empty","remove","$currentlySelectedItem","multiStateCheck","states","onAfterChangeState","e","Schedule","Response","MultiStateCheckUpdateAndTakeAction","target","val","programItemId","document","on","revert","ProgramItemDialogGoToNext","$nextItem","first","next","ProgramItemDialogGoToPrev","$prevItem","prev","last","popover","trigger","template","closest","hide","modal","is","keyCode","imagesLoaded","itemSelector","percentPosition","masonry","newLeft","Math","min","resize","ShowInviteesAllTab","Common","UI","ShowLoading","itemElement","inviteeId","ajax","url","type","dataType","contentType","complete","response","HideLoading","status","responseJSON","success","ShowStandardDialog","html","responseText","Itinerary","ItineraryItems","ScheduleItemsOnMap","ItinerarySelectedDate","OutstandingResponseItineraryItemId","GoToDate","selectedDate","IdentifyItem","itineraryItemId","fadeTo","HighlightFlag","idsToShow","elementsToShow","elementsToHide","show","children","isOffsetFromLeft","isCutoffOnRight","DoItemResponse","responseValue","targetElement","RequestedFrom","InviteeId","ResponseValue","ApplyToGang","JSON","stringify","location","href","errorMessage","openPanelIds","id","get","join","collapse","UpdateResponseFooter","runOnce","checkTripUpdates","AddItineraryItemToCalendar","calendarType","itineraryItemElement","item","itemDescription","Utils","StripHTML","Description","newLineConst","eventDescription","Location","CurrentInviteeMagicLink","event","title","Name","start","Date","StartDateTimeUTC","end","EndDateTimeUTC","address","description","AddToCalendar","currentDisplayedResponse","has","hasClass","text","parent","off","InviteeHasRespondedYes","Maps","InitialiseItinerary","Invitees","RefreshFiltersForCategory","category","tripId","previewMode","refreshFiltersURL","encodeURIComponent","fetch","then","ok","Error","json","inviteesListFiltersHtml","catch","error","console","SearchInvitees","inviteesListHtml","InitialDate","SkipToItinerary","ShowCompleted","InviteeHasResponded","IsTemplate","ShowImageErrorReport","PaymentStyle","PricingMode","CheckoutFlowPageURL","IsAnonymousAccess","RequireResponseLastName","RequireConsent","PreviousSection","StylesNameSalesPageDrSheri","RespondedRecently","CheckoutSuccessfulRecently","GangPlaceholdersDialogOnLoad","FooterUpdatesPaused","PaymentsListUpdateCount","DelaysForPaymentsListUpdate","FooterUpdateTimeout","TripHasMobileAppEnabled","IsCurrentUserTripPlanner","IsCurrentUserTripOwner","AffixTop","affixTop","doScroll","StripBlankLinkTargets","removeAttr","log","GoToSection","section","scrollOverride","updatePreviousSection","replace","select","gaData","GetGAData","dataLayer","push","ecommerce","selectedSectionMenuItem","hash","substr","selectedContent","scrollTarget","scrollOverrideTargetName","animate","scrollTop","offset","top","RoomingMap","ClearZoom","Payments","CheckForPaymentButtonUpdate","ExpressInterestFormSuccess","result","formSubmitBtn","errors","HideInputLoading","ClearClientSideErrors","FormatClientSideErrors","reload","ExpressInterestFormFailure","xhr","GoToInviteeSection","GoToResourceSection","UpdateCurrentInviteeName","name","UpdateCurrentInviteeMiniBio","minibio","TrimMiniBioDisplay","UpdateCurrentInviteeAvatar","avatarURL","SetupMapEvents","script","createElement","setAttribute","getElementById","append","AddTripToCalendar","AddToCalendarForSpeakeasy","startDateTimeUTC","endDateTimeUTC","calLink","getAddToCalendarURL","click","AdjustFooterForFloatingFooter","outerHeight","hasFocus","lastTripItemUpdateDate","updateUrl","setTimeout","SetupUpdatePaymentsListTimer","RefreshPaymentsList","costPaymentsListHtml","contentCostPaymentDetailsHtml","RefreshPaymentMethod","installmentsTableHtml","costPaymentMethodsHtml","savedPaymentDialogHtml","AffixWindowResizeInitialised","bio","bioLength","innerWidth","TrimToSize","SetupFixNavbarOnTop","FixNavbarOnTop","pageYOffset","ToggleMainMenu","SetupInviteeSectionMenu","UpdateDateTimeAnswer","container","datePicker","timePicker","date","format","ViewProfileForInvitee","tripid","preview","cache","ShowRequestMeetingBookingDialog","itemContainer","meetingBlockId","profileContainer","recipientInviteeId","slotBookingName","RequestMeetingBooking","$form","validator","unobtrusive","parse","validate","valid","customMessageElement","customMessageText","itineraryTabIsHidden","inviteesTabIsHidden","scheduleItemId","meetingBlockHtml","UpdateItineraryContent","contentItineraryHtml","UpdateInviteesContent","inviteesDetailsHtmlString","ShowDeclineMeetingRequestDialog","DeclineMeetingRequest","UndoDeclinedMeetingRequest","undoButton","ShowButtonLoading","HideButtonLoading","ShowScheduleMeetingBookingSlot","displayTime","slotId","meetingBlockSelectorElement","HideScheduleMeetingBookingSlot","ShowEditMeetingBookingSlot","slotDetailsElement","editActionsElement","ShowRescheduleMeetingBookingSlot","ShowCancelMeetingBookingSlotDialog","slotContainerElement","reschedulerElement","meetingBlockBookingId","meetingBlockReschedulerHtml","HideEditMeetingBookingSlot","cancelMeetingButtonElement","slotDisplayTime","CancelMeetingBookingSlot","viewedProfileId","SetMeetingBookingSlotAvailability","dataset","SlotId","Status","MeetingBlockBookingId","ScheduleMeetingBookingSlot","scheduleMeetingButtonElement","UpdateTaskContent","taskTabIsHidden","Tasks","FilterTasks","UpdateProgramContent","programTabIsHidden","inviteeTabIsHidden","UpdateMenuContent","RefreshMenuAffix","ResizeSalesPageMenuWithLogo","menuItemLinks","GetClientWidth","display","firstLi","UpdateSalesPageBannerPosition","parseInt","affix","bottom","options","IsYouLiMobileApp","IsYouLiBundler","IsMobile","UpgradeSubscription","GoToUpgradePage","pathname","search","userAffiliateCode","statusText","TripDates","Initialise","substring","viewInviteeId","URLSearchParams","SendPaymentReceipt","preventDefault","itemToList","itemStartDate","itemId","update","submit","inviteeid","switchToInviteeId","updateLink","assign","triggerElement","max","Cookies","set","expires","numberInGroup","inviteeFullName","gangDetailsHtmlString","gangMemberHtmlString","which","GetParameterFromURL","images","querySelectorAll","forEach","img","addEventListener","src","classList","brokenImageUrls","image","contains","hasAttribute","getAttribute","naturalWidth","naturalHeight","add","croppingNote","global","factory","define","amd","module","exports","EvEmitter","proto","prototype","eventName","listener","events","_events","listeners","once","onceEvents","_onceEvents","index","splice","emitEvent","args","onceListeners","isOnce","apply","allOff","removeAllListeners","require","jQuery","extend","a","b","prop","ImagesLoaded","elem","onAlways","elements","obj","ary","Array","isArray","makeArray","getImages","jqDeferred","Deferred","check","bind","Object","create","addElementImages","nodeName","addImage","background","addElementBackgroundImages","nodeType","elementNodeTypes","childImgs","child","1","9","11","LoadingImage","Background","Image","style","getComputedStyle","reURL","matches","exec","backgroundImage","addBackground","loadingImage","_this","onProgress","message","progress","progressedCount","hasAnyBroken","isLoaded","notify","debug","isComplete","jqMethod","getIsImageComplete","confirm","proxyImage","handleEvent","method","onload","unbindEvents","onerror","removeEventListener","makeJQueryPlugin","fn","callback","promise","t","jQueryBridget","s","option","isPlainObject","o","u","h","d","charAt","l","r","call","arguments","_init","bridget","slice","getSize","parseFloat","isNaN","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","isBoxSizeOuter","removeChild","querySelector","innerHeight","offsetWidth","offsetHeight","isBorderBox","f","c","m","p","paddingLeft","paddingRight","y","paddingTop","paddingBottom","g","marginLeft","marginRight","v","marginTop","marginBottom","_","borderLeftWidth","borderRightWidth","I","borderTopWidth","borderBottomWidth","z","x","S","matchesSelector","Element","fizzyUIUtils","modulo","removeFrom","getParent","parentNode","getQueryElement","filterFindElements","HTMLElement","debounceMethod","clearTimeout","docReady","readyState","toDashed","toLowerCase","htmlInit","concat","className","Outlayer","Item","layout","_create","transition","transform","WebkitTransition","transitionDuration","transitionProperty","transitionDelay","constructor","_transn","ingProperties","clean","onEnd","size","getPosition","_getOption","layoutPosition","getXValue","getYValue","_transitionTo","setPosition","isTransitioning","getTranslate","to","onTransitionEnd","isCleaning","goTo","moveTo","_nonTransition","_removeStyles","from","enableTransition","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","-webkit-transform","propertyName","disableTransition","removeTransitionStyles","stagger","removeElem","reveal","isHidden","getHideRevealTransitionEndProperty","onRevealTransitionEnd","hiddenStyle","visibleStyle","opacity","onHideTransitionEnd","destroy","right","$element","defaults","outlayerGUID","namespace","containerStyle","initLayout","originLeft","originTop","resizeContainer","compatOptions","horizontal","layoutInstant","reloadItems","stamps","stamp","bindResize","items","_itemize","_filterFindItemElements","getItemElements","_resetLayout","_manageStamps","_isLayoutInited","layoutItems","_getMeasurement","_getItemsForLayout","_layoutItems","_postLayout","isIgnored","_emitCompleteOnItems","_getItemLayoutPosition","isInstant","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","match","_getContainerSize","_setContainerMeasure","dispatchEvent","Event","ignore","getItem","unignore","_find","unstamp","_getBoundingRect","_manageStamp","getBoundingClientRect","_boundingRect","_getElementOffset","isResizeBound","unbindResize","onresize","needsResizeLayout","addItems","appended","prepended","revealItemElements","getItems","hideItemElements","removeData","ms","Isotope","itemGUID","sortData","updateSortData","random","getSortData","_sorters","LayoutMode","filteredItems","needsVerticalResizeLayout","getColumnWidth","getSegmentSize","getRowHeight","getFirstItemSize","modes","Masonry","fitWidth","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","gutter","horizontalOrder","col","_getTopColPosition","_getTopColGroup","_getColGroupY","_getHorizontalColPosition","floor","_getContainerFitWidth","isFitWidth","horizontalAlignment","String","trim","layoutMode","isJQueryFiltering","sortAscending","_getSorters","sortHistory","_initLayoutMode","_updateItemsSortData","arrange","_layout","_getIsInstant","_filter","_bindArrangeComplete","_isInstant","_noTransition","_hideReveal","_sort","needReveal","needHide","_getFilterTest","split","textContent","sortDataParsers","sortBy","_getIsSameSortBy","sort","_mode","_filterRevealAdded","insert","shuffle","getFilteredItemElements","EditableForm","div","editableform","$div","scope","initInput","input","value","str2value","prerender","initTemplate","initButtons","$btn","buttons","showbuttons","render","$loading","loading","showLoading","isSaving","triggerHandler","$tpl","when","proxy","autosubmit","cancel","$input","defaultValue","value2input","showForm","postrender","w","activate","msg","lines","$group","$block","errorGroupClass","errorBlockClass","stopPropagation","newValue","input2value","savenochange","value2str","submitValue","value2submit","save","done","res","hasOwnProperty","fail","pk","editableutils","tryParseJson","params","send","ajaxOptions","key","setValue","convertStr","$this","Constructor","engine","inherit","Child","Parent","F","superclass","setCursorPosition","pos","setSelectionRange","createTextRange","range","moveEnd","moveStart","safe","Function","sliceObj","keys","caseSensitive","keyLower","newObj","getConfigData","k","objectKeys","TypeError","escape","str","itemsByValue","sourceData","valueProp","idKey","isValArray","that","itemValue","createInput","TypeConstructor","mode","editabletypes","datefield","dateuifield","dateui","supportsTransitions","toUpperCase","Popup","init","Inline","containerName","containerDataName","innerCss","containerClass","editableContainer","splitOptions","formOptions","initContainer","delayedHide","$target","exclude_classes","parents","closeOthers","containerOptions","tip","$tip","renderForm","nochange","reason","rendering","rendered","closeAll","innerShow","innerHide","setContainerOption","innerDestroy","el","$el","ec","onblur","placement","autohide","anim","special","destroyed","handler","insertAfter","Editable","editable","selector","initLive","highlight","doAutotext","isValueByText","html2value","disabled","autotext","disable","enable","emptyclass","value2htmlFinal","value2html","handleEmpty","isEmpty","toggleDisabled","emptytext","unsavedclass","sent","$e","bgColor","eq","config","$elems","isEmptyObject","values","noop","AbstractInput","tpl","$clear","focus","clear","setClass","inputclass","setAttr","abstractinput","List","deferred","onSourceReady","renderList","resolve","sourceError","source","isFunction","sourceCache","cacheID","doPrepend","callbacks","err_callbacks","sourceOptions","prepend","prependData","","count","iterateItem","list","Text","renderClear","toggleClear","after","keyup","inArray","len","visible","placeholder","Textarea","keydown","ctrlKey","rows","textarea","Select","fillItems","label","Checklist","$label","separator","reg","RegExp","j","checked","checklist","Password","password","Email","email","Url","Tel","tel","NumberInput","step","number","Range","siblings","Time","time","select2","tags","term","query","results","convertSource","isMultiple","multiple","isRemote","idFunc","formatSelection","viewseparator","getSeparator","initSelection","customId","customText","isInitial","Combodate","combodate","day","month","year","hour","minute","second","ampm","$widget","getTemplate","initCombos","getValue","change","smartDays","fillCombo","token","$c","$combo","fillCommon","relTime","firstItem","header","relativeTime","langData","_relativeTime","reverse","fillDay","twoDigit","daysCount","$month","$year","daysInMonth","leadZero","fillMonth","longNames","shortNames","fillYear","maxYear","minYear","yearDescending","fillHour","h12","fillMinute","minuteStep","fillSecond","secondStep","fillAmpm","ampmL","dt","notSelected","def","$ampm","isValid","roundTime","getNearest","$select","delta","opt","distance","optValue","abs","errorClass","borderColor","shift","viewformat","pInitInput","emptyInputClass","stdtypes","classes","DEFAULTS","content","autoToken","autoPlace","test","actualWidth","actualHeight","$parent","orgPlacement","docScroll","parentWidth","parentHeight","parentLeft","calculatedOffset","getCalculatedOffset","applyPlacement","UTCDate","UTC","Datepicker","_process_options","isInline","isInput","component","hasInput","picker","DPGlobal","_buildEvents","_attachEvents","rtl","viewMode","startView","calendarWeeks","_allow_update","setStartDate","startDate","setEndDate","endDate","setDaysOfWeekDisabled","daysOfWeekDisabled","fillDow","fillMonths","showMode","opts","_o","lang","language","dates","minViewMode","weekStart","weekEnd","parseFormat","Infinity","parseDate","_secondaryEvents","_applyEvents","evs","ev","_unapplyEvents","place","mousedown","_detachEvents","_attachSecondaryEvents","_detachSecondaryEvents","_trigger","altdate","local_date","getTime","getTimezoneOffset","altformat","formatDate","detach","forceParse","datepicker","getDate","getUTCDate","setDate","setUTCDate","formatted","getFormattedDate","updateNavArrows","zIndex","fromArgs","viewDate","fill","dowCnt","cell","daysMin","monthsShort","setRange","valueOf","getClassNames","cls","getUTCFullYear","getUTCMonth","currentDate","today","todayHighlight","getFullYear","getMonth","getUTCDay","tooltip","startYear","startMonth","endYear","endMonth","months","todayBtn","clearBtn","prevMonth","getDaysInMonth","nextMonth","clsName","ws","th","yth","calWeek","before","beforeShowDay","enabled","unique","currentYear","yearCont","visibility","dir","navStep","moveMonth","moveYear","_setDate","autoclose","setUTCMonth","setUTCFullYear","new_month","new_date","mag","dateWithinRange","newDate","newViewDate","dateChanged","keyboardNavigation","shiftKey","DateRangePicker","inputs","jquery","dateUpdated","pickers","updateDates","updateRanges","old","internal_return","elopts","prefix","out","opts_from_el","locopts","locale_opts","opts_from_locale","ropts","toArray","en","days","daysShort","navFnc","isLeapYear","validParts","nonpunctuation","separators","parts","part_re","part","filtered","parsed","setters_order","setters_map","yyyy","yy","fparts","cnt","D","DD","M","MM","toString","dd","mm","seps","headTemplate","contTemplate","footTemplate","noConflict","bdatepicker","initPicker","dpg","parsedFormat","parsedViewFormat","currentTarget","DateField","DateTime","datetimepicker","formatType","toUTC","fromUTC","datetime","DateTimeField","datetimefield","Fullname","firstname","lastname","building","fullname","doItemResponse","applyToGang","onDoItemResponse","costsTabIsHiddeen","CurrentInviteeId","RespondingInviteeId","programItemElem","newParticipantsList","newContentItineraryHtml","InitialiseResponseChecks","newPaymentDetailsHtml","newCostSummaryHtml","newPaymentInfoHtml","InitialiseUI","checkElement","suppressApplyToGangPrompt","isGang","invoiceMode","TaskRespondFormSuccess","ErrorMessage","summaryContainer","contentTasksHtml","tripHeadingTitle","tripContentHeadingHtml","currentInviteeProfileHtml","RefreshInviteesTab","showInvitees","BillToEmail","currentInviteeEmail","fadeOut","TaskRespondFormFailure","tabHTML","showInviteeTab","taskItemId","load","textStatus","XMLHttpRequest","plugin","settings","currentState","indexCurrentState","nextState","UpdateEndDate","ToggleEstimatedDateFields","isInit","selectionMode","subtract","hasTime","startTime","endTime","updateAvatarInline","self","HiddenValueSelector","ImageFieldSelector","FileInputFieldSelector","SuccessHandler","S3RefreshURL","TargetImageFieldWidth","TargetImageFieldHeight","ValidFileTypes","UploadSuccess","newSrc","AddParametersToURL","S3FileUpload","NewFileKey","CropType","ModalImageFieldHeight","ModalImageFieldWidth","HideAvatarLoading","UploadError","thrownError","uploadAttemptsCount","KeyPrefix","newKeyPrefix","newUUID","Uuid","Policy","policy","PolicySignature","policySignature","SingleFileSelected","UploadComplete","alert","Init","files","ShowAvatarLoading","YouLiS3ResourceUpload","queueElement","resourceDisplayName","UploadUrl","SuccessURL","ACL","AccessKey","FileTypeDescription","FileTypeErrorText","MaxFileSize","progressHandler","lengthComputable","percentComplete","round","loaded","total","completeHandler","successHandler","errorHandler","selectedFile","overrideSuccessHandler","overrideErrorHandler","overrideCompleteHandler","overrideProgressHandler","Validation","IsValidFileType","UploadFile","redirect","FormData","dataString","MimeType","GetFileExtension","passedInElement","myXhr","ajaxSettings","upload","eval","processData"],"mappings":"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","file":"site-trip.min.js","sourcesContent":["var YouLi = YouLi ? YouLi : {};\r\nYouLi.Trip = YouLi.Trip ? YouLi.Trip : {};\r\nYouLi.Trip.Program = YouLi.Trip.Program ? YouLi.Trip.Program : {};\r\n\r\n(function (YouLi) {\r\n (function (Trip) {\r\n (function (Program) {\r\n\r\n var scrollerAdvanceAmount = 120;\r\n\r\n YouLi.Trip.Program.ProgramItems = null;\r\n YouLi.Trip.Program.ItemHeight = 530;\r\n YouLi.Trip.Program.ProgramSelectedDate = \"\";\r\n YouLi.Trip.Program.ProgramFilteredIds = [];\r\n YouLi.Trip.Program.SaveDone = false;\r\n YouLi.Trip.Program.TargetElementForResponse = undefined;\r\n\r\n YouLi.Trip.Program.FilterItems = function () {\r\n\r\n // Update the activated menu\r\n $(\"#content-trip-program .trip-dates-menu .nav li\").removeClass(\"active\");\r\n\r\n var element = $(\"#content-trip-program .trip-dates-menu .nav\").find(\"li[data-date='\" + YouLi.Trip.Program.ProgramSelectedDate + \"']\");\r\n element.addClass(\"active\");\r\n\r\n // find the IDs to show and hide\r\n var itemsToShow = $.grep(YouLi.Trip.Program.ProgramItems, function (n, i) {\r\n var startDateTime = moment(n.StartDateTime);\r\n var endDateTime = moment(n.EndDateTime);\r\n var selectedDateMoment = moment(YouLi.Trip.Program.ProgramSelectedDate);\r\n\r\n if (n.EndDateTime === null)\r\n return startDateTime.isSame(selectedDateMoment, 'date');\r\n\r\n return selectedDateMoment.isBetween(startDateTime, endDateTime, 'date', '[]');\r\n });\r\n\r\n YouLi.Trip.Program.ProgramFilteredIds = $.map(itemsToShow, function (n, i) {\r\n return n.ScheduleItemId;\r\n });\r\n\r\n $programGrid.isotope({\r\n filter: function () {\r\n // _this_ is the item element. Get text of element's .number\r\n if (YouLi.Trip.Program.ProgramSelectedDate === \"all\")\r\n return true;\r\n // return true to show, false to hide\r\n return YouLi.Trip.Program.ProgramFilteredIds.indexOf($(this).find(\".program-item-contents\").attr('data-id')) > -1;\r\n }\r\n });\r\n }\r\n\r\n YouLi.Trip.Program.UpdateMenuNav = function () {\r\n\r\n if (YouLi.Trip.StyleName) {\r\n return 0;\r\n }\r\n\r\n if ($(\"#content-trip-program .trip-dates-menu\").length > 0) {\r\n if (YouLi.Trip.CurrentSection == \"program\") {\r\n var scrollerNavLeft = $(\"#content-trip-program .scroller-nav\").position().left;\r\n var currentLeft = $(\"#content-trip-program .trip-dates-menu li\").position().left;\r\n var lastItem = $(\"#content-trip-program .trip-dates-menu li:last-child\");\r\n var lastItemRight = lastItem.position().left + lastItem.outerWidth();\r\n\r\n $(\"#content-trip-program .scroller-nav .left\").toggleClass(\"disabled\", currentLeft >= 0);\r\n $(\"#content-trip-program .scroller-nav .right\").toggleClass(\"disabled\", lastItemRight < scrollerNavLeft);\r\n\r\n // Fix the max width of program menu\r\n $(\"#content-trip-program .trip-dates-menu\").css(\"max-width\", \"0px\");\r\n var containerWidth = $(\".content-trip-details-main\").width();\r\n $(\"#content-trip-program .trip-dates-menu\").css(\"max-width\", containerWidth + \"px\");\r\n }\r\n }\r\n }\r\n\r\n YouLi.Trip.Program.RefreshLayout = function () {\r\n if (YouLi.Trip.StyleName) {\r\n return;\r\n }\r\n // Reset height of all items first\r\n if ($(window).width() > 767) {\r\n $(\".program-item\").height(YouLi.Trip.Program.ItemHeight).css(\"max-height\", YouLi.Trip.Program.ItemHeight);\r\n }\r\n else {\r\n $(\".program-item\").height(\"auto\").css(\"max-height\", YouLi.Trip.Program.ItemHeight)\r\n }\r\n\r\n $cachedWindowWidth = $(window).width();\r\n\r\n RefreshItemExpandVisibility();\r\n\r\n if ($programGrid.data('isotope')) {\r\n $programGrid.isotope('layout');\r\n }\r\n\r\n }\r\n\r\n RefreshItemExpandVisibility = function (element) {\r\n $(\".program-item\").each(function (element) {\r\n // update the visibility of the show more for this item\r\n $(this).find(\".show-more\").toggle($(this).height() < $(this).find(\".program-item-contents\").height());\r\n });\r\n }\r\n\r\n ShowItemDetails = function (gridItemElement) {\r\n $(gridItemElement).find(\".program-item-contents\").clone().appendTo($(\"#ProgramItemDialog .modal-body\").empty()).find(\".show-more\").remove();\r\n $currentlySelectedItem = $(gridItemElement);\r\n\r\n // (re-)init optional checkbox in popup\r\n $(\"#ProgramItemDialog .multistate-check-schedule-item-response\").multiStateCheck({\r\n states: [\"unchecked\", \"checked\"],\r\n onAfterChangeState: function (e) {\r\n\r\n const applyToGang = true;\r\n YouLi.Trip.Schedule.Response.MultiStateCheckUpdateAndTakeAction(e.target, applyToGang, function () {\r\n\r\n if ($(\"#PreviewMode\").val() != \"True\") {\r\n // update the grid version of this item's checkbox, too\r\n // update any other response checkboxes for the item (ie., if there are any showing in \r\n $(\".grid .program-item-contents[data-id=\" + programItemId + \"] .multistate-check-schedule-item-response\").attr(\"data-state\", $(e.target).attr(\"data-state\"));\r\n }\r\n\r\n });\r\n }\r\n });\r\n }\r\n\r\n $(document).on(\"shown.bs.modal\", \"#ResponseDialogYes\", function (e) {\r\n YouLi.Trip.Program.SaveDone = false;\r\n });\r\n\r\n $(document).on('hidden.bs.modal', \"#ResponseDialogYes\", function (e) {\r\n if (!YouLi.Trip.Program.SaveDone && YouLi.Trip.Program.TargetElementForResponse) {\r\n // reset the multistate check to the previous value\r\n $(YouLi.Trip.Program.TargetElementForResponse).data(\"multiStateCheck\").revert();\r\n YouLi.Trip.Program.TargetElementForResponse = undefined;\r\n }\r\n });\r\n\r\n var $programGrid = null;\r\n var $cachedWindowWidth = null;\r\n var $currentlySelectedItem = null;\r\n\r\n var ProgramItemDialogGoToNext = function () {\r\n var $nextItem = $currentlySelectedItem.first().next();\r\n if ($nextItem.length == 0) {\r\n $nextItem = $(\".grid .grid-item\").first();\r\n }\r\n ShowItemDetails($nextItem);\r\n };\r\n\r\n var ProgramItemDialogGoToPrev = function () {\r\n var $prevItem = $currentlySelectedItem.first().prev();\r\n if ($prevItem.length == 0) {\r\n $prevItem = $(\".grid .grid-item\").last();\r\n }\r\n ShowItemDetails($prevItem);\r\n };\r\n\r\n $(function () {\r\n\r\n RefreshItemExpandVisibility();\r\n\r\n $cachedWindowWidth = $(window).width();\r\n\r\n $('.action-done-popover').popover({\r\n trigger: \"manual\",\r\n template: '

'\r\n });\r\n\r\n $(\".open-full-link\").on(\"click\", function () {\r\n if ($(window).width() < 767) {\r\n $(this).closest(\".program-item\").height(\"auto\").css(\"max-height\", \"unset\");\r\n $(this).closest(\".program-item\").find(\".show-more\").hide();\r\n $programGrid.isotope('layout');\r\n }\r\n else {\r\n ShowItemDetails($(this).closest(\".grid-item\"));\r\n\r\n $(\"#ProgramItemDialog\").modal(\"show\");\r\n }\r\n });\r\n\r\n $(document).on(\"click\", \"#ProgramItemDialog .next\", function () {\r\n ProgramItemDialogGoToNext();\r\n });\r\n\r\n $(document).on(\"click\", \"#ProgramItemDialog .prev\", function () {\r\n ProgramItemDialogGoToPrev();\r\n });\r\n\r\n $(document).on(\"keydown\", function (e) {\r\n if ($(\"#ProgramItemDialog\").is(\":visible\")) {\r\n if (e.keyCode == 37) {\r\n ProgramItemDialogGoToPrev();\r\n }\r\n else if (e.keyCode == 39) {\r\n ProgramItemDialogGoToNext();\r\n }\r\n }\r\n });\r\n\r\n if (YouLi.Trip.StyleName === \"\") {\r\n $programGrid = $('.grid').imagesLoaded(function () {\r\n $programGrid.isotope({\r\n itemSelector: '.grid-item',\r\n percentPosition: true,\r\n masonry: {\r\n // use element for option\r\n //columnWidth: '.grid-sizer'\r\n }\r\n });\r\n });\r\n }\r\n\r\n $(document).on('click', '.program-item-date', function () {\r\n YouLi.Trip.Program.ProgramSelectedDate = $(this).data(\"date\");\r\n YouLi.Trip.Program.FilterItems();\r\n });\r\n\r\n $(document).on('click', '#content-trip-program .trip-dates-menu .nav li', function () {\r\n YouLi.Trip.Program.ProgramSelectedDate = $(this).data(\"date\");\r\n YouLi.Trip.Program.FilterItems();\r\n });\r\n\r\n $(document).on(\"click\", \"#content-trip-program .scroller-nav .right:not(.disabled)\", function () {\r\n var lastItem = $(\"#content-trip-program .trip-dates-menu li:last-child\");\r\n var lastItemRight = lastItem.position().left + lastItem.outerWidth();\r\n var currentLeft = $(\"#content-trip-program .trip-dates-menu li\").position().left;\r\n\r\n var newLeft = currentLeft;\r\n if (lastItemRight >= $(\"#content-trip-program .scroller-nav\").position().left) {\r\n newLeft = Math.min(newLeft - scrollerAdvanceAmount, 0);\r\n $(\"#content-trip-program .trip-dates-menu li\").css(\"left\", newLeft);\r\n }\r\n\r\n YouLi.Trip.Program.UpdateMenuNav();\r\n\r\n });\r\n $(document).on(\"click\", \"#content-trip-program .scroller-nav .left:not(.disabled)\", function () {\r\n var currentLeft = $(\"#content-trip-program .trip-dates-menu li\").position().left;\r\n var newLeft = currentLeft;\r\n if (currentLeft < 0) {\r\n newLeft = Math.min(newLeft + scrollerAdvanceAmount, 0);\r\n $(\"#content-trip-program .trip-dates-menu li\").css(\"left\", newLeft);\r\n }\r\n\r\n YouLi.Trip.Program.UpdateMenuNav();\r\n\r\n });\r\n\r\n $(window).resize(function () {\r\n YouLi.Trip.Program.UpdateMenuNav();\r\n\r\n if ($cachedWindowWidth != $(window).width()) {\r\n YouLi.Trip.Program.RefreshLayout();\r\n }\r\n });\r\n YouLi.Trip.Program.RefreshLayout();\r\n\r\n $(document).on(\"click\", \"#content-trip-program .invitees-avatars-list\", function () {\r\n\r\n // only allow this if the All Invitees tab is visible to this invitee\r\n if (YouLi.Trip.ShowInviteesAllTab) {\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n let itemElement = $(this).closest(\".program-item-contents\");\r\n let programItemId = $(itemElement).data(\"id\");\r\n let inviteeId = $(\"#InviteeId\").val();\r\n\r\n $.ajax({\r\n url: `/trip/itineraryparticipants/?id=${programItemId}&inviteeid=${inviteeId}`,\r\n type: \"GET\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n YouLi.Common.UI.HideLoading();\r\n if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when loading.\");\r\n }\r\n else {\r\n $(\"#invitees-dialog-content\").html(response.responseText);\r\n $('#invitees-dialog').modal('show');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n }(YouLi.Trip.Program ? YouLi.Trip.Program : {}));\r\n }(YouLi.Trip ? YouLi.Trip : {}));\r\n}(YouLi ? YouLi : {}));\r\n","var YouLi = YouLi ? YouLi : {};\r\nYouLi.Trip = YouLi.Trip ? YouLi.Trip : {};\r\nYouLi.Trip.Itinerary = YouLi.Trip.Itinerary ? YouLi.Trip.Itinerary : {};\r\n\r\n(function (YouLi) {\r\n (function (Trip) {\r\n (function (Itinerary) {\r\n\r\n var scrollerAdvanceAmount = 120;\r\n\r\n YouLi.Trip.Itinerary.ItineraryItems = null;\r\n YouLi.Trip.Itinerary.ScheduleItemsOnMap = null;\r\n YouLi.Trip.Itinerary.ItinerarySelectedDate = \"\";\r\n YouLi.Trip.Itinerary.OutstandingResponseItineraryItemId = undefined;\r\n\r\n YouLi.Trip.Itinerary.GoToDate = function (selectedDate) {\r\n YouLi.Trip.Itinerary.ItinerarySelectedDate = selectedDate;\r\n YouLi.Trip.Itinerary.FilterItems();\r\n }\r\n\r\n YouLi.Trip.Itinerary.IdentifyItem = function (itineraryItemId) {\r\n // $(\".panel[data-id='\" + itineraryItemId + \"']\").addClass(\"highlighted\");\r\n $(\".panel[data-id='\" + itineraryItemId + \"']\").fadeTo(500, 0.3, function () {\r\n $(\".panel[data-id='\" + itineraryItemId + \"']\").fadeTo(500, 1);\r\n });\r\n //setTimeout(function () {\r\n // $(\".panel[data-id='\" + itineraryItemId + \"']\").removeClass(\"highlighted\");\r\n //}, 2000);\r\n }\r\n\r\n YouLi.Trip.Itinerary.FilterItems = function () {\r\n\r\n // Update the activated menu\r\n $(\"#content-trip-itinerary .trip-dates-menu .nav li\").removeClass(\"active\");\r\n\r\n var element = $(\"#content-trip-itinerary .trip-dates-menu .nav\").find(\"li[data-date='\" + YouLi.Trip.Itinerary.ItinerarySelectedDate + \"']\");\r\n element.addClass(\"active\");\r\n\r\n // Update the itinerary list\r\n if (YouLi.Trip.Itinerary.ItinerarySelectedDate == \"highlights\") {\r\n // show only highlighted\r\n var itemsToShow = $.grep(YouLi.Trip.Itinerary.ItineraryItems, function (n, i) {\r\n return n.HighlightFlag;\r\n });\r\n\r\n var idsToShow = $.map(itemsToShow, function (n, i) {\r\n return n.ScheduleItemId;\r\n });\r\n\r\n var elementsToShow = $('.itinerary-accordion .itinerary-accordion-item').filter(function (i, e) {\r\n return idsToShow.indexOf($(this).attr('data-id')) > -1\r\n });\r\n\r\n var elementsToHide = $('.itinerary-accordion .itinerary-accordion-item').filter(function (i, e) {\r\n return idsToShow.indexOf($(this).attr('data-id')) == -1\r\n });\r\n\r\n $(elementsToShow).show();\r\n $(elementsToHide).hide();\r\n\r\n if (elementsToShow.length == 0) {\r\n $(\".nothing-scheduled-message\").show();\r\n } else {\r\n $(\".nothing-scheduled-message\").hide();\r\n }\r\n\r\n }\r\n else if (YouLi.Trip.Itinerary.ItinerarySelectedDate == \"all\") {\r\n $(\".nothing-scheduled-message\").hide();\r\n $('.itinerary-accordion .itinerary-accordion-item').show();\r\n }\r\n else {\r\n // find the IDs to show and hide\r\n var itemsToShow = $.grep(YouLi.Trip.Itinerary.ItineraryItems, function (n, i) {\r\n var startDateTime = moment(n.StartDateTime);\r\n var endDateTime = moment(n.EndDateTime);\r\n var selectedDateMoment = moment(YouLi.Trip.Itinerary.ItinerarySelectedDate);\r\n\r\n if (n.EndDateTime === null)\r\n return startDateTime.isSame(selectedDateMoment, 'date');\r\n\r\n return selectedDateMoment.isBetween(startDateTime, endDateTime, 'date', '[]');\r\n });\r\n\r\n var idsToShow = $.map(itemsToShow, function (n, i) {\r\n return n.ScheduleItemId;\r\n });\r\n\r\n var elementsToShow = $('.itinerary-accordion .itinerary-accordion-item').filter(function (i, e) {\r\n return idsToShow.indexOf($(this).attr('data-id')) > -1\r\n });\r\n\r\n var elementsToHide = $('.itinerary-accordion .itinerary-accordion-item').filter(function (i, e) {\r\n return idsToShow.indexOf($(this).attr('data-id')) == -1\r\n });\r\n\r\n $(elementsToShow).show();\r\n\r\n $(elementsToHide).hide();\r\n\r\n if (elementsToShow.length == 0) {\r\n $(\".nothing-scheduled-message\").show();\r\n } else {\r\n $(\".nothing-scheduled-message\").hide();\r\n }\r\n\r\n }\r\n\r\n // Show or hide some sections\r\n $('#content-trip-itinerary #cancelled-items').show();\r\n $('#content-trip-itinerary #cancelled-items').toggle($('#content-trip-itinerary #list-cancelled').children(':visible').length > 0)\r\n $('#content-trip-itinerary #no-items').show();\r\n $('#content-trip-itinerary #no-items').toggle($('#content-trip-itinerary #list-no').children(':visible').length > 0)\r\n }\r\n\r\n YouLi.Trip.Itinerary.UpdateMenuNav = function () {\r\n\r\n if ($(\"#content-trip-itinerary .trip-dates-menu\").length > 0) {\r\n if (YouLi.Trip.CurrentSection == \"itinerary\") {\r\n var scrollerNavLeft = $(\"#content-trip-itinerary .scroller-nav\").position().left;\r\n var currentLeft = $(\"#content-trip-itinerary .trip-dates-menu li\").position().left;\r\n var lastItem = $(\"#content-trip-itinerary .trip-dates-menu li:last-child\");\r\n var lastItemRight = lastItem.position().left + lastItem.outerWidth();\r\n\r\n var isOffsetFromLeft = currentLeft < 0;\r\n var isCutoffOnRight = lastItemRight >= scrollerNavLeft;\r\n\r\n $(\"#content-trip-itinerary .scroller-nav .left\").toggleClass(\"disabled\", !isOffsetFromLeft);\r\n $(\"#content-trip-itinerary .scroller-nav .right\").toggleClass(\"disabled\", !isCutoffOnRight);\r\n\r\n if (isOffsetFromLeft || isCutoffOnRight) {\r\n $(\"#content-trip-itinerary .scroller-nav\").css(\"visibility\", \"visible\");\r\n }\r\n else {\r\n $(\"#content-trip-itinerary .scroller-nav\").css(\"visibility\", \"hidden\");\r\n }\r\n\r\n // Fix the max width of itinerary menu\r\n $(\"#content-trip-itinerary .trip-dates-menu\").css(\"max-width\", \"0px\");\r\n var containerWidth = $(\".content-trip-details-main\").width();\r\n $(\"#content-trip-itinerary .trip-dates-menu\").css(\"max-width\", containerWidth + \"px\");\r\n }\r\n }\r\n }\r\n\r\n YouLi.Trip.Itinerary.DoItemResponse = function (itineraryItemId, responseValue) {\r\n\r\n let targetElement = element;\r\n\r\n // If it's an item that just takes a response, then do that now\r\n var data = {\r\n RequestedFrom: \"itinerary\",\r\n ScheduleItemId: itineraryItemId,\r\n InviteeId: $(\"#InviteeId\").val(),\r\n ResponseValue: responseValue,\r\n ApplyToGang: true\r\n };\r\n\r\n $.ajax({\r\n url: '/trip/inviteeschedulerespond',\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 if (response.responseJSON != undefined && response.responseJSON.url) {\r\n YouLi.Common.UI.HideLoading();\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n // reset the multistate check to the previous value\r\n $(targetElement).data(\"multiStateCheck\").revert();\r\n\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON.errorMessage)\r\n errorMessage = response.responseJSON.errorMessage;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n // get and restore collapsible panel states \r\n var openPanelIds = $(\"#itinerary-content .panel-collapse.collapse.in\").map(function () { return this.id; }).get();\r\n $('#itinerary-content').html(response.responseText);\r\n $(\".panel-collapse.collapse\").removeClass(\"in\");\r\n if (openPanelIds.length > 0) {\r\n $('#' + openPanelIds.join(',#')).addClass(\"in\"); // do this before calling collapse() as we don't want this animated here\r\n $('#' + openPanelIds.join(',#')).collapse(\"show\");\r\n }\r\n\r\n $(\"#content-trip-itinerary\").removeClass(\"hidden\");\r\n YouLi.Trip.Itinerary.FilterItems();\r\n YouLi.Trip.Itinerary.UpdateMenuNav();\r\n\r\n YouLi.Trip.UpdateResponseFooter(runOnce = true, checkTripUpdates = false);\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.Trip.Itinerary.AddItineraryItemToCalendar = function (element, calendarType) {\r\n const itineraryItemElement = $(element).closest(\".item-container\");\r\n const itineraryItemId = $(itineraryItemElement).data(\"id\");\r\n\r\n const item = YouLi.Trip.Itinerary.ItineraryItems.find((item) => {\r\n return item.ScheduleItemId == itineraryItemId;\r\n });\r\n\r\n if (item) {\r\n const itemDescription = YouLi.Common.Utils.StripHTML(item.Description);\r\n const newLineConst = calendarType == \"outlook\" ? \"\\\\n\" : \"\\n\";\r\n const eventDescription = `Location: ${item.Location}${newLineConst}${newLineConst}View Details: ${YouLi.Trip.CurrentInviteeMagicLink}${newLineConst}${newLineConst}${itemDescription}`;\r\n\r\n event = {\r\n title: item.Name,\r\n start: new Date(item.StartDateTimeUTC + \"Z\"),\r\n end: new Date(item.EndDateTimeUTC + \"Z\"),\r\n address: item.Location,\r\n description: eventDescription\r\n };\r\n\r\n YouLi.Trip.AddToCalendar(element, calendarType, event);\r\n return false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n $(function () {\r\n\r\n // Itinerary date menu functionality\r\n $(document).on(\"click\", \"#content-trip-itinerary .trip-dates-menu .nav li\", function () {\r\n\r\n YouLi.Trip.Itinerary.GoToDate($(this).data(\"date\"));\r\n });\r\n\r\n $(document).on(\"click\", \"#content-trip-itinerary .scroller-nav .right:not(.disabled)\", function () {\r\n var lastItem = $(\"#content-trip-itinerary .trip-dates-menu li:last-child\");\r\n var lastItemRight = lastItem.position().left + lastItem.outerWidth();\r\n var currentLeft = $(\"#content-trip-itinerary .trip-dates-menu li\").position().left;\r\n\r\n var newLeft = currentLeft;\r\n if (lastItemRight >= $(\"#content-trip-itinerary .scroller-nav\").position().left) {\r\n newLeft = Math.min(newLeft - scrollerAdvanceAmount, 0);\r\n $(\"#content-trip-itinerary .trip-dates-menu li\").css(\"left\", newLeft);\r\n }\r\n\r\n YouLi.Trip.Itinerary.UpdateMenuNav();\r\n\r\n });\r\n $(document).on(\"click\", \"#content-trip-itinerary .scroller-nav .left:not(.disabled)\", function () {\r\n var currentLeft = $(\"#content-trip-itinerary .trip-dates-menu li\").position().left;\r\n var newLeft = currentLeft;\r\n if (currentLeft < 0) {\r\n newLeft = Math.min(newLeft + scrollerAdvanceAmount, 0);\r\n $(\"#content-trip-itinerary .trip-dates-menu li\").css(\"left\", newLeft);\r\n }\r\n\r\n YouLi.Trip.Itinerary.UpdateMenuNav();\r\n\r\n });\r\n\r\n $(window).resize(function () {\r\n YouLi.Trip.Itinerary.UpdateMenuNav();\r\n });\r\n\r\n var currentDisplayedResponse;\r\n\r\n $(document).on('mouseup', \"#content-trip-itinerary\", function (e) {\r\n // hide response popover when click elsewhere\r\n if (currentDisplayedResponse && !currentDisplayedResponse.is(e.target) // if the target of the click isn't the container...\r\n && currentDisplayedResponse.has(e.target).length === 0) // ... nor a descendant of the container\r\n {\r\n $(\".itinerary-accordion-item .response-popover\").css(\"display\", \"none\");\r\n }\r\n });\r\n\r\n $(document).on(\"click\", \"#content-trip-itinerary #expand\", function () {\r\n\r\n if ($(this).hasClass(\"expanded\")) {\r\n $(\".itinerary-accordion-item .panel-collapse\").collapse('hide');\r\n // manually add collapsed class as for some reason it's not doing it for me\r\n $(\".itinerary-accordion-item .panel-heading a[data-toggle='collapse']\").addClass('collapsed');\r\n $(this).find(\".text\").text(\"Expand\");\r\n $(this).removeClass(\"expanded\");\r\n }\r\n else {\r\n $(\".itinerary-accordion-item .panel-collapse\").collapse('show');\r\n // manually add collapsed class as for some reason it's not doing it for me\r\n $(\".itinerary-accordion-item .panel-heading a[data-toggle='collapse']\").removeClass('collapsed');\r\n $(this).find(\".text\").text(\"Collapse\");\r\n $(this).addClass(\"expanded\");\r\n }\r\n\r\n });\r\n\r\n\r\n // Response functionality\r\n $(document).on(\"click\", \".itinerary-accordion-item .response:not(.locked):not(.response-not-required) .check\", function () {\r\n $(\".response-popover\").css(\"display\", \"none\"); // hide all others\r\n $(this).find(\".response-popover\").css(\"display\", \"block\");\r\n currentDisplayedResponse = $(this).parent();\r\n });\r\n\r\n var previewMode = $(\"#PreviewMode\").val() == \"True\";\r\n\r\n if (!previewMode) {\r\n\r\n $(document)\r\n .off(\"click\", \".itinerary-accordion-item .itinerary-response\")\r\n .on(\"click\", \".itinerary-accordion-item .itinerary-response\", function () {\r\n\r\n var itineraryItemElement = $(this).closest(\".itinerary-accordion-item\");\r\n var itineraryItemId = $(itineraryItemElement).data(\"id\");\r\n var responseValue = $(this).data(\"response-value\");\r\n\r\n $(\".response-popover\").css(\"display\", \"none\"); // hide response popup(s)\r\n\r\n if (!YouLi.Trip.InviteeHasRespondedYes) {\r\n $(\"#ResponseItineraryItemIncluded\").val(itineraryItemId);\r\n $(\"#ResponseItineraryItemIncludedAnswer\").val(responseValue);\r\n $(\"#ResponseDialogYesExtraNote\").show();\r\n $(\"#ResponseDialogYes\").modal('show');\r\n }\r\n else {\r\n YouLi.Trip.Itinerary.DoItemResponse(itineraryItemId, responseValue);\r\n }\r\n\r\n });\r\n }\r\n\r\n $(document).on(\"click\", \"#content-trip-itinerary .invitees-avatars-list\", function () {\r\n\r\n // only allow this if the All Invitees tab is visible to this invitee\r\n if (YouLi.Trip.ShowInviteesAllTab) {\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n let itineraryItemElement = $(this).closest(\".itinerary-accordion-item\");\r\n let itineraryItemId = $(itineraryItemElement).data(\"id\");\r\n let inviteeId = $(\"#InviteeId\").val();\r\n\r\n $.ajax({\r\n url: `/trip/itineraryparticipants/?id=${itineraryItemId}&inviteeid=${inviteeId}`,\r\n type: \"GET\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n YouLi.Common.UI.HideLoading();\r\n if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when loading.\");\r\n }\r\n else {\r\n $(\"#invitees-dialog-content\").html(response.responseText);\r\n $('#invitees-dialog').modal('show');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n // initially always have everything expanded\r\n $(\"#content-trip-itinerary #expand\").trigger(\"click\");\r\n\r\n // set up the map with markers\r\n if (YouLi.Trip.Maps && YouLi.Trip.Itinerary.ScheduleItemsOnMap && YouLi.Trip.Itinerary.ScheduleItemsOnMap.length > 0) {\r\n YouLi.Trip.Maps.InitialiseItinerary();\r\n }\r\n\r\n });\r\n\r\n }(YouLi.Trip.Itinerary ? YouLi.Trip.Itinerary : {}));\r\n }(YouLi.Trip ? YouLi.Trip : {}));\r\n}(YouLi ? YouLi : {}));\r\n","var YouLi = YouLi ? YouLi : {};\r\nYouLi.Trip = YouLi.Trip ? YouLi.Trip : {};\r\nYouLi.Trip.Invitees = YouLi.Trip.Invitees ? YouLi.Trip.Invitees : {};\r\n\r\n(function (YouLi) {\r\n (function (Trip) {\r\n (function (Invitees) {\r\n\r\n RefreshFiltersForCategory = function (category) {\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n const tripId = $(\"#TripId\").val();\r\n const inviteeId = $(\"#InviteeId\").val();\r\n const previewMode = $(\"#PreviewMode\").val();\r\n const categoryVal = encodeURIComponent(category);\r\n\r\n let refreshFiltersURL = `/trip/updateinviteefiltersforcategory?tripid=${tripId}&inviteeId=${inviteeId}&category=${categoryVal}&preview=${previewMode}`;\r\n\r\n fetch(refreshFiltersURL)\r\n .then(response => {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n if (!response.ok) {\r\n throw new Error('An error occurred when filtering');\r\n }\r\n return response.json();\r\n })\r\n .then(data => {\r\n $(\"#InviteesListFilters\").html(data.inviteesListFiltersHtml);\r\n })\r\n .catch((error) => {\r\n console.error('Error:', error);\r\n });\r\n };\r\n\r\n SearchInvitees = function () {\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n const tripId = $(\"#TripId\").val();\r\n const inviteeId = $(\"#InviteeId\").val();\r\n const previewMode = $(\"#PreviewMode\").val();\r\n \r\n const category = $(\"#InviteesListCategory\").length == 1 ? encodeURIComponent($(\"#InviteesListCategory\").val()) : \"\";\r\n\r\n const searchTerm = encodeURIComponent($(\"#InviteesListSearchTerm\").val());\r\n\r\n let refreshFiltersURL = `/trip/updateinviteeslistforsearch?tripid=${tripId}&inviteeId=${inviteeId}&preview=${previewMode}&searchTerm=${searchTerm}&category=${category}`;\r\n\r\n // Add filters if and only if they have been setup\r\n if ($(\"#Filter1TaskItemFieldId\").length == 1) {\r\n const filter1Val = $(\"#InviteesListFilter1\").length == 1 ? encodeURIComponent($(\"#InviteesListFilter1\").val()) : \"\";\r\n const filter1FieldId = encodeURIComponent($(\"#Filter1TaskItemFieldId\").val());\r\n refreshFiltersURL += `&filter1Val=${filter1Val}&filter1FieldId=${filter1FieldId}`;\r\n }\r\n\r\n if ($(\"#Filter2TaskItemFieldId\").length == 1) {\r\n const filter2Val = $(\"#InviteesListFilter2\").length == 1 ? encodeURIComponent($(\"#InviteesListFilter2\").val()) : \"\";\r\n const filter2FieldId = encodeURIComponent($(\"#Filter2TaskItemFieldId\").val());\r\n refreshFiltersURL += `&filter2Val=${filter2Val}&filter2FieldId=${filter2FieldId}`;\r\n }\r\n\r\n if ($(\"#Filter3TaskItemFieldId\").length == 1) {\r\n const filter3Val = $(\"#InviteesListFilter3\").length == 1 ? encodeURIComponent($(\"#InviteesListFilter3\").val()) : \"\";\r\n const filter3FieldId = encodeURIComponent($(\"#Filter3TaskItemFieldId\").val());\r\n refreshFiltersURL += `&filter3Val=${filter3Val}&filter3FieldId=${filter3FieldId}`;\r\n }\r\n\r\n fetch(refreshFiltersURL)\r\n .then(response => {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n if (!response.ok) {\r\n throw new Error('An error occurred when filtering');\r\n }\r\n return response.json();\r\n })\r\n .then(data => {\r\n $(\"#invitees-section-going-list\").html(data.inviteesListHtml);\r\n })\r\n .catch((error) => {\r\n console.error('Error:', error);\r\n });\r\n\r\n };\r\n \r\n $(function () {\r\n\r\n $(document).on(\"change\", \"#InviteesListCategory\", function () {\r\n if ($(this).val() == \"\") {\r\n $(\"#InviteesListFilters\").html(\"\"); // remove the filters when no category is selected\r\n }\r\n else {\r\n RefreshFiltersForCategory($(this).val()); \r\n }\r\n SearchInvitees();\r\n });\r\n\r\n $(document).on(\"keypress\", \"#InviteesListSearchTerm\", function (e) {\r\n if (e.keyCode == 13)\r\n SearchInvitees();\r\n });\r\n\r\n $(document).on(\"click\", \"#SearchButton\", function () {\r\n SearchInvitees();\r\n });\r\n });\r\n\r\n\r\n }(YouLi.Trip.Invitees ? YouLi.Trip.Invitees : {}));\r\n }(YouLi.Trip ? YouLi.Trip : {}));\r\n}(YouLi ? YouLi : {}));\r\n","var YouLi = YouLi ? YouLi : {};\r\nYouLi.Trip = YouLi.Trip ? YouLi.Trip : {};\r\n\r\n(function (YouLi) {\r\n (function (Trip) {\r\n\r\n var Map = null;\r\n var Geocoder = null;\r\n YouLi.Trip.CurrentSection = \"program\";\r\n YouLi.Trip.InitialDate = \"\";\r\n YouLi.Trip.SkipToItinerary = false;\r\n YouLi.Trip.ShowInviteesAllTab = false;\r\n YouLi.Trip.ShowCompleted = false;\r\n YouLi.Trip.InviteeHasResponded = false;\r\n YouLi.Trip.IsTemplate = false;\r\n YouLi.Trip.ShowImageErrorReport = false;\r\n\r\n YouLi.Trip.PaymentStyle = \"\";\r\n YouLi.Trip.PricingMode = \"\";\r\n YouLi.Trip.CheckoutFlowPageURL = \"\";\r\n YouLi.Trip.IsAnonymousAccess = false;\r\n\r\n YouLi.Trip.RequireResponseLastName = false;\r\n YouLi.Trip.RequireConsent = false;\r\n YouLi.Trip.PreviousSection = \"program\";\r\n YouLi.Trip.CurrentInviteeMagicLink = \"\";\r\n YouLi.Trip.StylesNameSalesPageDrSheri = \"\";\r\n YouLi.Trip.RespondedRecently = false;\r\n YouLi.Trip.CheckoutSuccessfulRecently = false;\r\n YouLi.Trip.GangPlaceholdersDialogOnLoad = false;\r\n\r\n YouLi.Trip.FooterUpdatesPaused = false;\r\n YouLi.Trip.PaymentsListUpdateCount = 0;\r\n YouLi.Trip.DelaysForPaymentsListUpdate = [3000, 3000, 60000];\r\n YouLi.Trip.FooterUpdateTimeout = 30000;\r\n YouLi.Trip.StyleName = \"\";\r\n YouLi.Trip.TripHasMobileAppEnabled = false;\r\n YouLi.Trip.IsCurrentUserTripPlanner = false;\r\n YouLi.Trip.IsCurrentUserTripOwner = false;\r\n\r\n YouLi.Trip.AffixTop = () => {\r\n var affixTop = 54; // allow for the sticky planner menu - no big deal if this actually could be zero\r\n\r\n if (YouLi.Trip.StyleName == YouLi.Trip.StylesNameSalesPageDrSheri) {\r\n doScroll = true;\r\n affixTop = 100;\r\n }\r\n\r\n return affixTop;\r\n };\r\n\r\n YouLi.Trip.StripBlankLinkTargets = function () {\r\n // first, add a class to any links within elements that have the exclusion class on them (this makes the removal easier)\r\n $('.keep-target-on-links a').addClass('keep-target-on-links');\r\n $('a[target=\"_blank\"]:not(.keep-target-on-links)').removeAttr('target');\r\n console.log(\"Testing 124\")\r\n };\r\n\r\n YouLi.Trip.GoToSection = function (section, element, doScroll, scrollOverride, updatePreviousSection = true) {\r\n // Remove trailing question mark or marks, if any.\r\n // This is to avoid a situation where there's a trailing question mark because of the '? cm_dontconvertlink' to stop Campaign Monitor from converting and expiring our links\r\n // utm_content=InviteeMagicLink#paymentdetails?\r\n section = section.replace(/\\?+$/, '');\r\n\r\n // First, check that we are allowing them to even go to this section based on a few business rules\r\n // (e.g. for trips with Rooming Map, if the trip package room isn't selected yet, we're not showing payment details yet)\r\n if (section == \"paymentdetails\" && $(\".content-tab-paymentdetails\").hasClass(\"hidden\")) {\r\n if ($(\".content-tab-roomingmap\").length > 0 && !$(\".content-tab-roomingmap\").hasClass(\"hidden\")) {\r\n section = \"roomingmap\"; // if we are NOT showing payment deatils, go to the default section\r\n }\r\n else {\r\n select = \"program\"; // if we are NOT showing payment deatils, go to the default section\r\n }\r\n }\r\n\r\n // Next, check that we have this section\r\n if ($(\"#content-trip-\" + section).length == 0)\r\n return;\r\n\r\n //Google tag manager \r\n if (section == \"paymentdetails\" && YouLi.Trip.CurrentSection != \"paymentdetails\") {\r\n\r\n if ($(\"#IsBooked\").val() == \"\" || $(\"#IsBooked\").val() == \"False\") {\r\n var gaData = YouLi.Common.GetGAData(\"view_cart\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n }\r\n }\r\n\r\n YouLi.Trip.CurrentSection = section;\r\n\r\n // update the activated menu\r\n $(\".content-trip-details-menu .nav li\").removeClass(\"active\");\r\n var selectedSectionMenuItem = $(\".content-trip-details-menu .nav\").find(\"[data-section='\" + section + \"']\");\r\n $(selectedSectionMenuItem).addClass(\"active\");\r\n\r\n window.location.hash = section;\r\n\r\n // only update the previous section if either a data value has been provided and set to true, or if it hasn't been provided then base it on the function parameter\r\n if (($(element).data(\"update-previous-section\") != undefined && $(element).data(\"update-previous-section\")) || ($(element).data(\"update-previous-section\") == undefined && updatePreviousSection)) {\r\n YouLi.Trip.PreviousSection = window.location.hash.substr(1);\r\n }\r\n\r\n // update the content\r\n $(\".content-trip-inner\").addClass(\"hidden\");\r\n var selectedContent = $(\"#content-trip-\" + section);\r\n $(selectedContent).removeClass(\"hidden\");\r\n\r\n // Scroll if the source element specified to\r\n if ($(element).data(\"scroll\") == true || doScroll) {\r\n // scroll the top of the content into view, or to a specific element based on the scrollOverride\r\n let scrollTarget = $(selectedContent);\r\n if ($(element).data(\"scroll-override\") || scrollOverride) {\r\n var scrollOverrideTargetName = $(element).data(\"scroll-override\") || scrollOverride;\r\n scrollTarget = $(scrollOverrideTargetName);\r\n }\r\n\r\n $('html, body').animate({\r\n scrollTop: scrollTarget.offset().top - YouLi.Trip.AffixTop()\r\n }, 1000);\r\n }\r\n\r\n // run initialise on certain tabs as required\r\n if (section == \"itinerary\") {\r\n YouLi.Trip.Itinerary.FilterItems();\r\n YouLi.Trip.Itinerary.UpdateMenuNav();\r\n }\r\n else if (section == \"program\") {\r\n YouLi.Trip.Program.RefreshLayout();\r\n YouLi.Trip.Program.UpdateMenuNav();\r\n }\r\n else if (section == \"roomingmap\") {\r\n YouLi.Trip.RoomingMap.ClearZoom();\r\n }\r\n else if (section == \"paymentdetails\") {\r\n YouLi.Trip.Payments.CheckForPaymentButtonUpdate();\r\n }\r\n }\r\n\r\n YouLi.Trip.ExpressInterestFormSuccess = function (result) {\r\n YouLi.Trip.Program.SaveDone = true; // set this in case we have that flow happening\r\n\r\n var formSubmitBtn = $(\"form\").find(\"input[type='submit']\");\r\n\r\n if (result.errors) {\r\n YouLi.Common.UI.HideInputLoading(formSubmitBtn);\r\n YouLi.Common.UI.HideLoading();\r\n YouLi.Common.UI.ClearClientSideErrors();\r\n YouLi.Common.UI.FormatClientSideErrors(result.errors);\r\n\r\n } else {\r\n YouLi.Common.UI.ClearClientSideErrors();\r\n if (result.url) {\r\n window.location.href = result.url;\r\n if (result.reload)\r\n location.reload();\r\n } else {\r\n YouLi.Common.UI.HideInputLoading(formSubmitBtn);\r\n YouLi.Common.UI.HideLoading();\r\n }\r\n }\r\n };\r\n\r\n YouLi.Trip.ExpressInterestFormFailure = function (xhr, status, error) {\r\n var formSubmitBtn = $(\"form\").find(\"input[type='submit']\");\r\n YouLi.Common.UI.HideInputLoading(formSubmitBtn);\r\n\r\n YouLi.Common.UI.FormatClientSideErrors(error, xhr);\r\n\r\n $('#ResponseDialogYes').animate({ scrollTop: 0 }, 800);\r\n };\r\n\r\n YouLi.Trip.GoToInviteeSection = function (section) {\r\n\r\n // update the activated menu\r\n $(\".invitees-section-links .content-list-tab\").removeClass(\"active\");\r\n var selectedSectionMenuItem = $(\".invitees-section-links\").find(\"[data-section='\" + section + \"']\");\r\n $(selectedSectionMenuItem).addClass(\"active\");\r\n\r\n // update the content\r\n $(\".invitees-list-main\").addClass(\"hidden\");\r\n var selectedContent = $(\"#invitees-section-\" + section + \".invitees-list-main\");\r\n $(selectedContent).removeClass(\"hidden\");\r\n\r\n }\r\n\r\n YouLi.Trip.GoToResourceSection = function (section) {\r\n\r\n // update the activated menu\r\n $(\".resources-section-links .content-list-tab\").removeClass(\"active\");\r\n var selectedSectionMenuItem = $(\".resources-section-links\").find(\"[data-section='\" + section + \"']\");\r\n $(selectedSectionMenuItem).addClass(\"active\");\r\n\r\n // update the content\r\n $(\".resources-list-main\").addClass(\"hidden\");\r\n var selectedContent = $(\"#resources-section-\" + section + \".resources-list-main\");\r\n $(selectedContent).removeClass(\"hidden\");\r\n\r\n }\r\n\r\n YouLi.Trip.UpdateCurrentInviteeName = function (name) {\r\n $('.invitees-list ul li[data-current-invitee=\"true\"]').find(\".name\").html(name);\r\n $('.title-bar').find(\".name\").html(name);\r\n }\r\n\r\n YouLi.Trip.UpdateCurrentInviteeMiniBio = function (minibio) {\r\n $('.invitees-list ul li[data-current-invitee=\"true\"]').find(\".bio\").html(minibio);\r\n $('.title-bar').find(\".bio\").html(minibio);\r\n $('.title-bar').find(\".bio\").data('content', minibio);\r\n YouLi.Trip.TrimMiniBioDisplay();\r\n\r\n }\r\n\r\n YouLi.Trip.UpdateCurrentInviteeAvatar = function (avatarURL) {\r\n $('.invitees-list ul li[data-current-invitee=\"true\"]').find(\"img\").attr(\"src\", avatarURL);\r\n $('.title-bar').find(\"img\").attr(\"src\", avatarURL);\r\n }\r\n\r\n YouLi.Trip.SetupMapEvents = function () {\r\n $(document).off(\"click\", \"#TripLocationMapStatic\");\r\n $(document).on(\"click\", \"#TripLocationMapStatic\", function () {\r\n\r\n var script = document.createElement(\"script\");\r\n script.setAttribute(\"src\", \"https://maps.googleapis.com/maps/api/js?key=AIzaSyCxwsk9jvdqzM9JSUbRhYfJiptxIAlDGCk&v=3&callback=YouLi.Trip.Maps.SetupLocationMap\");\r\n script.setAttribute(\"defer\", \"\");\r\n document.getElementById(\"MapScripts\").append(script);\r\n\r\n // unbind this event again (just in case the this setup function gets run again)\r\n $(document).off(\"click\", \"#TripLocationMapStatic\");\r\n });\r\n }\r\n\r\n YouLi.Trip.AddTripToCalendar = function (element, calendarType) {\r\n let event = {\r\n title: $(\"#TripName\").val(),\r\n start: new Date($(\"#TripStartDateTimeUTC\").val() + \"Z\"),\r\n end: new Date($(\"#TripEndDateTimeUTC\").val() + \"Z\"),\r\n address: $(\"#TripPrimaryLocation\").val(),\r\n description: \"Please be sure to complete any tasks before the event and check for updates on schedule: \" + YouLi.Trip.CurrentInviteeMagicLink\r\n };\r\n YouLi.Trip.AddToCalendar(element, calendarType, event);\r\n return false;\r\n };\r\n\r\n YouLi.Trip.AddToCalendarForSpeakeasy = function (element, calendarType, title, startDateTimeUTC, endDateTimeUTC) {\r\n let event = {\r\n title: title,\r\n start: new Date(startDateTimeUTC + \"Z\"),\r\n end: new Date(endDateTimeUTC + \"Z\"),\r\n address: '',\r\n description: \"Go to \" + YouLi.Trip.CurrentInviteeMagicLink + \" and click the Join Event button.\"\r\n };\r\n YouLi.Trip.AddToCalendar(element, calendarType, event);\r\n return false;\r\n }\r\n\r\n YouLi.Trip.AddToCalendar = function (element, calendarType, event) {\r\n const forbiddenChars = /[^a-zA-Z0-9 -!\\.,:;\\|^$()\\/\\\\]/;\r\n event.title = event.title.replace(forbiddenChars, '');\r\n\r\n const calLink = getAddToCalendarURL({ data: event, type: calendarType });\r\n if (calLink) {\r\n $(element).attr(\"href\", calLink);\r\n $(element).attr(\"onclick\", \"\"); // clear out this click event now we've worked out the proper link\r\n $(element).click();\r\n return false;\r\n }\r\n else {\r\n console.error(\"YouLi.Trip.AddToCalendar: Invalid event\");\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n YouLi.Trip.AdjustFooterForFloatingFooter = function () {\r\n\r\n $(\".footer\").css(\"margin-bottom\", $(\".content-trip-response-footer\").outerHeight())\r\n\r\n }\r\n\r\n YouLi.Trip.UpdateResponseFooter = function (runOnce, checkTripUpdates) {\r\n\r\n // Only update the footer if we're not already alerting them to the need to refresh. If we're already alerting them to push, we don't\r\n // need to check again for footer updates\r\n if ($(\"#ShowingRefreshMessage\").val() == \"true\")\r\n return;\r\n\r\n // If the page isn't currently active (and is not a run-once forced update), we want to pause the update, and just set a new timeout to check again. \r\n // DEV NOTE: in Chrome (and probably other browsers), having focus on the DevTools window WILL take focus away from the document\r\n if (!runOnce && !document.hasFocus()) {\r\n setTimeout(function () {\r\n YouLi.Trip.UpdateResponseFooter(false, true);\r\n }, YouLi.Trip.FooterUpdateTimeout);\r\n\r\n return;\r\n }\r\n\r\n var tripId = $(\"#TripId\").val();\r\n var inviteeId = $(\"#InviteeId\").val();\r\n var previewMode = $(\"#PreviewMode\").val();\r\n var lastTripItemUpdateDate = $(\"#LastTripItemUpdateDate\").val();\r\n\r\n var updateUrl = '/trip/updateresponsefooter?tripid=' + tripId + \"&inviteeid=\" + inviteeId + \"&preview=\" + previewMode\r\n if (checkTripUpdates)\r\n updateUrl += \"&lastUpdateTime=\" + lastTripItemUpdateDate;\r\n\r\n $.ajax({\r\n url: updateUrl,\r\n type: \"GET\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred. Please refresh the page to try again.\");\r\n }\r\n else {\r\n\r\n // If we have not explicitly paused footer updates (e.g. while on Costs tab), then update it now\r\n if (!YouLi.Trip.FooterUpdatesPaused) {\r\n $(\"#ResponseFooter\").html(response.responseText);\r\n YouLi.Trip.AdjustFooterForFloatingFooter();\r\n }\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.Trip.SetupUpdatePaymentsListTimer = function () {\r\n YouLi.Trip.PaymentsListUpdateCount = 0;\r\n if ($(\".cost-line-item-paid.in-progress\").length > 0) {\r\n setTimeout(function () {\r\n YouLi.Trip.RefreshPaymentsList();\r\n }, YouLi.Trip.DelaysForPaymentsListUpdate[YouLi.Trip.PaymentsListUpdateCount]);\r\n }\r\n };\r\n\r\n YouLi.Trip.RefreshPaymentsList = function () {\r\n\r\n var tripId = $(\"#TripId\").val();\r\n var inviteeId = $(\"#InviteeId\").val();\r\n var previewMode = $(\"#PreviewMode\").val();\r\n\r\n var updateUrl = '/trip/updatepaymentslist?tripid=' + tripId + \"&inviteeid=\" + inviteeId + \"&preview=\" + previewMode\r\n\r\n $.ajax({\r\n url: updateUrl,\r\n type: \"GET\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred. Please refresh the page to try again.\");\r\n }\r\n else {\r\n\r\n YouLi.Trip.PaymentsListUpdateCount++;\r\n\r\n $(\"#ContentCostPaymentList\").html(response.responseJSON.costPaymentsListHtml);\r\n\r\n if (response.responseJSON.contentCostPaymentDetailsHtml && $(\".content-trip-paymentdetails-costs\").length > 0) {\r\n $(\".content-trip-paymentdetails-costs\").html(response.responseJSON.contentCostPaymentDetailsHtml);\r\n YouLi.Trip.Payments.RefreshPaymentMethod(true);\r\n }\r\n else {\r\n if ($(\".cost-installments-selection:not(.individual)\").length > 0) {\r\n $(\".cost-installments-selection:not(.individual)\").html(response.responseJSON.installmentsTableHtml);\r\n }\r\n\r\n $(\"#ContentCostPaymentMethods\").html(response.responseJSON.costPaymentMethodsHtml);\r\n YouLi.Trip.Payments.RefreshPaymentMethod(true);\r\n\r\n $('#SavedPaymentMethodConfirmationContainer').html(response.responseJSON.savedPaymentDialogHtml);\r\n }\r\n\r\n // If there are still in-progress payments AND we have defined a timeout for another check, then set the timeout\r\n if ($(\".cost-line-item-paid.in-progress\").length > 0 && YouLi.Trip.PaymentsListUpdateCount < YouLi.Trip.DelaysForPaymentsListUpdate.length) {\r\n setTimeout(function () {\r\n YouLi.Trip.RefreshPaymentsList();\r\n }, YouLi.Trip.DelaysForPaymentsListUpdate[YouLi.Trip.PaymentsListUpdateCount]);\r\n }\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.Trip.AffixWindowResizeInitialised = false;\r\n\r\n YouLi.Trip.TrimMiniBioDisplay = function () {\r\n\r\n let bio = $('.mini-bio').data('content');\r\n let bioLength = window.innerWidth < 768 ? 50 : 200;\r\n bio = YouLi.Common.Utils.TrimToSize(bio, bioLength, true);\r\n $('.mini-bio').html(bio);\r\n };\r\n\r\n YouLi.Trip.SetupFixNavbarOnTop = function () {\r\n // set up scroll behaviour for the dr-sheri sales page\r\n if (!($('.anonymous').length) && YouLi.Trip.StyleName == YouLi.Trip.StylesNameSalesPageDrSheri) {\r\n $(window).off(\"scroll\");\r\n if (window.innerWidth <= 767) {\r\n YouLi.Trip.FixNavbarOnTop();\r\n $(window).on(\"scroll\", function () {\r\n YouLi.Trip.FixNavbarOnTop();\r\n });\r\n }\r\n else\r\n $('.content-trip-details-top').css(\"top\", 54)\r\n }\r\n };\r\n\r\n YouLi.Trip.FixNavbarOnTop = function () {\r\n if (window.pageYOffset > 55) {\r\n $('.content-trip-details-top').css(\"top\", \"55px\");\r\n } else {\r\n $('.content-trip-details-top').css(\"top\", \"96px\");;\r\n }\r\n };\r\n\r\n YouLi.Trip.ToggleMainMenu = function () {\r\n if ($('.content-trip-details-menu').find('li:not(.hidden)').length == 2) {\r\n $('.content-trip-details-menu').addClass('hidden');\r\n }\r\n if ($('.content-trip-details-menu-top').find('li:not(.hidden):not(.sign-up-btn)').length == 2) {\r\n $('.content-trip-details-menu-top').addClass('hidden');\r\n $('.content-trip-heading-image').css('margin-top', '0px');\r\n }\r\n };\r\n\r\n YouLi.Trip.SetupInviteeSectionMenu = function () {\r\n // invitees menu functionality\r\n $(\".invitees-section-links .content-list-tab:not(.disabled)\").off(\"click touchstart\").on(\"click touchstart\", function () {\r\n var section = $(this).data(\"section\");\r\n\r\n YouLi.Trip.GoToInviteeSection(section);\r\n });\r\n };\r\n\r\n YouLi.Trip.UpdateDateTimeAnswer = function (element) {\r\n var container = element.closest(\".date-time-container\");\r\n var datePicker = $('.datepicker', container).data(\"DateTimePicker\");\r\n var timePicker = $('.timepicker', container).data(\"DateTimePicker\");\r\n if (!datePicker || datePicker.date() == null || !timePicker || timePicker.date() == null) {\r\n $(\".combined-date-time-answer\", container).val(\"\");\r\n }\r\n else {\r\n $(\".combined-date-time-answer\", container).val(\r\n datePicker.date().format(\"D/M/Y \") + timePicker.date().format(\"hh:mm A\"));\r\n }\r\n };\r\n\r\n YouLi.Trip.ViewProfileForInvitee = function (inviteeId, doScroll = false) {\r\n const tripId = $(\"#TripId\").val();\r\n const previewMode = $(\"#PreviewMode\").val();\r\n\r\n var data = {\r\n tripid: tripId,\r\n inviteeId: inviteeId,\r\n preview: previewMode\r\n };\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n $.ajax({\r\n url: \"/Trip/ViewProfile\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n data: JSON.stringify(data),\r\n cache: false,\r\n complete: function (response) {\r\n YouLi.Common.UI.HideLoading();\r\n if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) { // || response.statusText == \"error\") {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when loading profile.\");\r\n }\r\n else {\r\n $(\"#view-profile-content\").html(response.responseText);\r\n YouLi.Trip.GoToSection(\"viewprofile\", undefined, doScroll, false, /* updatePreviousSection = */ false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n YouLi.Trip.ShowRequestMeetingBookingDialog = function (element) {\r\n const itemContainer = $(element).closest(\".item-container\");\r\n const meetingBlockId = $(itemContainer).data(\"id\");\r\n const profileContainer = $(element).closest(\"#content-trip-viewprofile\");\r\n const recipientInviteeId = $(profileContainer).data(\"profile-invitee-id\");\r\n const slotBookingName = $(\".view-profile-name\").text();\r\n\r\n $(\"#MeetingBookingRequestDialog #RequestMeetingBlockId\").val(meetingBlockId);\r\n $(\"#MeetingBookingRequestDialog #RequestMeetingRecipientInviteeId\").val(recipientInviteeId);\r\n $(\"#MeetingBookingRequestDialog .invitee-name\").text(slotBookingName);\r\n\r\n $(\"#MeetingBookingRequestDialog\").modal(\"show\");\r\n };\r\n\r\n YouLi.Trip.RequestMeetingBooking = function () {\r\n\r\n var $form = $('#RequestMeetingBlockForm');\r\n\r\n $.validator.unobtrusive.parse($form);\r\n $form.validate();\r\n\r\n if (!$form.valid()) {\r\n return;\r\n }\r\n\r\n $(\"#MeetingBookingRequestDialog\").modal(\"hide\");\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n const customMessageElement = $(\"#MeetingBookingRequestDialog #CustomMessageText\");\r\n\r\n const meetingBlockId = $(\"#MeetingBookingRequestDialog #RequestMeetingBlockId\").val();\r\n const recipientInviteeId = $(\"#MeetingBookingRequestDialog #RequestMeetingRecipientInviteeId\").val();\r\n const customMessageText = customMessageElement.val();\r\n\r\n const itineraryTabIsHidden = $(\"#content-trip-itinerary\").hasClass(\"hidden\");\r\n const inviteesTabIsHidden = $(\"#content-trip-invitees\").hasClass(\"hidden\");\r\n\r\n const itemContainer = $(`.profile-meeting-block.item-container[data-id='${meetingBlockId}']`);\r\n\r\n var data = {\r\n scheduleItemId: meetingBlockId,\r\n recipientInviteeId: recipientInviteeId,\r\n customMessageText: customMessageText\r\n };\r\n\r\n $.ajax({\r\n url: '/trip/requestmeetingbooking',\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 if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON.errorMessage)\r\n errorMessage = response.responseJSON.errorMessage;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n $(itemContainer).html(response.responseJSON.meetingBlockHtml);\r\n\r\n YouLi.Trip.UpdateItineraryContent(itineraryTabIsHidden, response.responseJSON.contentItineraryHtml);\r\n YouLi.Trip.UpdateInviteesContent(inviteesTabIsHidden, response.responseJSON.inviteesDetailsHtmlString);\r\n\r\n // Clear the message text for next time\r\n customMessageElement.val(\"\");\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.Trip.ShowDeclineMeetingRequestDialog = function (element) {\r\n const itemContainer = $(element).closest(\".item-container\");\r\n const meetingBlockId = $(itemContainer).data(\"id\");\r\n const profileContainer = $(element).closest(\"#content-trip-viewprofile\");\r\n const recipientInviteeId = $(profileContainer).data(\"profile-invitee-id\");\r\n const slotBookingName = $(\".view-profile-name\").text();\r\n\r\n $(\"#DeclineMeetingRequestDialog #RequestMeetingBlockId\").val(meetingBlockId);\r\n $(\"#DeclineMeetingRequestDialog #RequestMeetingRecipientInviteeId\").val(recipientInviteeId);\r\n $(\"#DeclineMeetingRequestDialog .invitee-name\").text(slotBookingName);\r\n\r\n $(\"#DeclineMeetingRequestDialog\").modal(\"show\");\r\n };\r\n\r\n YouLi.Trip.DeclineMeetingRequest = function () {\r\n\r\n var $form = $('#DeclineRequestForm');\r\n\r\n $.validator.unobtrusive.parse($form);\r\n $form.validate();\r\n\r\n if (!$form.valid()) {\r\n return;\r\n }\r\n\r\n $(\"#DeclineMeetingRequestDialog\").modal(\"hide\");\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n const meetingBlockId = $(\"#DeclineMeetingRequestDialog #RequestMeetingBlockId\").val();\r\n const recipientInviteeId = $(\"#DeclineMeetingRequestDialog #RequestMeetingRecipientInviteeId\").val();\r\n const customMessageText = $(\"#DeclineMeetingRequestDialog #CustomMessageText\").val();\r\n\r\n const itineraryTabIsHidden = $(\"#content-trip-itinerary\").hasClass(\"hidden\");\r\n const inviteesTabIsHidden = $(\"#content-trip-invitees\").hasClass(\"hidden\");\r\n\r\n const itemContainer = $(`.profile-meeting-block.item-container[data-id='${meetingBlockId}']`);\r\n\r\n var data = {\r\n scheduleItemId: meetingBlockId,\r\n recipientInviteeId: recipientInviteeId,\r\n customMessageText: customMessageText\r\n };\r\n\r\n $.ajax({\r\n url: '/trip/DeclineMeetingRequest',\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 if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON.errorMessage)\r\n errorMessage = response.responseJSON.errorMessage;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n $(itemContainer).html(response.responseJSON.meetingBlockHtml);\r\n\r\n YouLi.Trip.UpdateItineraryContent(itineraryTabIsHidden, response.responseJSON.contentItineraryHtml);\r\n YouLi.Trip.UpdateInviteesContent(inviteesTabIsHidden, response.responseJSON.inviteesDetailsHtmlString);\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.Trip.UndoDeclinedMeetingRequest = function (element) {\r\n\r\n const itemContainer = $(element).closest(\".item-container\");\r\n const meetingBlockId = $(itemContainer).data(\"id\");\r\n const profileContainer = $(element).closest(\"#content-trip-viewprofile\");\r\n const recipientInviteeId = $(profileContainer).data(\"profile-invitee-id\");\r\n\r\n const itineraryTabIsHidden = $(\"#content-trip-itinerary\").hasClass(\"hidden\");\r\n const inviteesTabIsHidden = $(\"#content-trip-invitees\").hasClass(\"hidden\");\r\n\r\n var data = {\r\n scheduleItemId: meetingBlockId,\r\n recipientInviteeId: recipientInviteeId\r\n };\r\n\r\n const undoButton = $(\".undo-declined-request\");\r\n YouLi.Common.UI.ShowButtonLoading(undoButton);\r\n\r\n $.ajax({\r\n url: '/trip/UndoDeclinedMeetingRequest',\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.HideButtonLoading(undoButton);\r\n\r\n if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON.errorMessage)\r\n errorMessage = response.responseJSON.errorMessage;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n $(itemContainer).html(response.responseJSON.meetingBlockHtml);\r\n\r\n YouLi.Trip.UpdateItineraryContent(itineraryTabIsHidden, response.responseJSON.contentItineraryHtml);\r\n YouLi.Trip.UpdateInviteesContent(inviteesTabIsHidden, response.responseJSON.inviteesDetailsHtmlString);\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.Trip.ShowScheduleMeetingBookingSlot = function (element) {\r\n const displayTime = $(element).text();\r\n const slotId = $(element).data(\"slot-id\");\r\n\r\n $(\".meeting-block-slots--selectable\").addClass(\"hidden\"); // TODO: animate??\r\n const meetingBlockSelectorElement = $(element).closest(\".meeting-block-slot-selector\");\r\n $(meetingBlockSelectorElement).find(\".meeting-block-slots--list--slot\").find(\"#MeetingBlockSlotScheduleSlotDisplay\").html(displayTime);\r\n $(meetingBlockSelectorElement).find(\".meeting-block-slots--list--slot\").find(\".schedule-meeting\").data(\"slot-id\", slotId);\r\n $(meetingBlockSelectorElement).find(\".meeting-block-slots--list--slot\").removeClass(\"hidden\");\r\n }\r\n\r\n YouLi.Trip.HideScheduleMeetingBookingSlot = function (element) {\r\n (element).closest(\".meeting-block-slots--list--slot\").addClass(\"hidden\");\r\n $(\".meeting-block-slots--selectable\").removeClass(\"hidden\"); // TODO: animate??\r\n }\r\n\r\n YouLi.Trip.ShowEditMeetingBookingSlot = function (element) {\r\n $(element).closest(\".actions\").addClass(\"hidden\");\r\n\r\n // hide/show appropriate buttons for the initial stage of this flow\r\n const slotDetailsElement = $(element).closest(\".slot-details\")\r\n const editActionsElement = $(slotDetailsElement).find(\".edit-actions\");\r\n $(editActionsElement).find(\".cancel-meeting\").removeClass(\"hidden\");\r\n $(editActionsElement).find(\".reschedule-meeting\").removeClass(\"hidden\");\r\n $(editActionsElement).find(\".keep-meeting\").addClass(\"hidden\");\r\n\r\n $(editActionsElement).find(\".reschedule-meeting\").off(\"click\");\r\n $(editActionsElement).find(\".reschedule-meeting\").on(\"click\", function () {\r\n YouLi.Trip.ShowRescheduleMeetingBookingSlot($(this));\r\n });\r\n\r\n $(editActionsElement).find(\".cancel-meeting\").off(\"click\");\r\n $(editActionsElement).find(\".cancel-meeting\").on(\"click\", function () {\r\n YouLi.Trip.ShowCancelMeetingBookingSlotDialog($(this));\r\n });\r\n\r\n $(editActionsElement).removeClass(\"hidden\");\r\n }\r\n\r\n YouLi.Trip.ShowRescheduleMeetingBookingSlot = function (element) {\r\n const slotContainerElement = $(element).closest(\".meeting-block-slots--list--slot-container\");\r\n const editActionsElement = $(element).closest(\".edit-actions\");\r\n const reschedulerElement = $(slotContainerElement).find(\".reschedule-selector\");\r\n\r\n const meetingBlockBookingId = $(element).closest(\".actions\").data(\"booking-id\");\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n $.ajax({\r\n url: `/trip/getmeetingblockrescheduler?meetingBlockBookingId=${meetingBlockBookingId}`,\r\n type: \"GET\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n YouLi.Common.UI.HideLoading();\r\n if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON.errorMessage)\r\n errorMessage = response.responseJSON.errorMessage;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n $(reschedulerElement).html(response.responseJSON.meetingBlockReschedulerHtml);\r\n\r\n // hide/show appropriate buttons for the \"reschedule\" stage of this flow\r\n $(editActionsElement).find(\".cancel-meeting\").addClass(\"hidden\");\r\n $(editActionsElement).find(\".reschedule-meeting\").addClass(\"hidden\");\r\n $(editActionsElement).find(\".keep-meeting\").removeClass(\"hidden\");\r\n\r\n $(editActionsElement).find(\".keep-meeting\").off(\"click\");\r\n $(editActionsElement).find(\".keep-meeting\").on(\"click\", function () {\r\n YouLi.Trip.HideEditMeetingBookingSlot($(this));\r\n });\r\n\r\n $(reschedulerElement).removeClass(\"hidden\");\r\n $(\".meeting-block-slots--selectable\").removeClass(\"hidden\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n YouLi.Trip.HideEditMeetingBookingSlot = function (element) {\r\n $(element).closest(\".slot-details\").find(\".actions\").removeClass(\"hidden\");\r\n $(element).closest(\".slot-details\").find(\".edit-actions\").addClass(\"hidden\");\r\n\r\n $(element).closest(\".meeting-block-slots--list--slot-container\").find(\".reschedule-selector\").html(\"\").addClass(\"hidden\");\r\n }\r\n\r\n YouLi.Trip.ShowCancelMeetingBookingSlotDialog = function (cancelMeetingButtonElement) {\r\n const meetingBlockBookingId = $(cancelMeetingButtonElement).closest(\".actions\").data(\"booking-id\");\r\n const slotBookingName = $(cancelMeetingButtonElement).closest(\".actions\").data(\"booking-name-other\");\r\n const slotDisplayTime = $(cancelMeetingButtonElement).closest(\".slot-details\").find(\".slot-display-time\").text();\r\n\r\n $(\"#MeetingBookingCancelDialog #CancelMeetingBlockBookingId\").val(meetingBlockBookingId);\r\n $(\"#MeetingBookingCancelDialog .meeting-block-name\").text(slotDisplayTime);\r\n $(\"#MeetingBookingCancelDialog .invitee-name\").text(slotBookingName);\r\n\r\n $(\"#MeetingBookingCancelDialog .do-cancel-meeting\").off(\"click\");\r\n $(\"#MeetingBookingCancelDialog .do-cancel-meeting\").on(\"click\", function () {\r\n YouLi.Trip.CancelMeetingBookingSlot();\r\n });\r\n\r\n $(\"#MeetingBookingCancelDialog\").modal(\"show\");\r\n }\r\n\r\n YouLi.Trip.CancelMeetingBookingSlot = function () {\r\n\r\n $(\"#MeetingBookingCancelDialog\").modal(\"hide\");\r\n\r\n const meetingBlockBookingId = $(\"#MeetingBookingCancelDialog #CancelMeetingBlockBookingId\").val();\r\n\r\n let itineraryTabIsHidden = $(\"#content-trip-itinerary\").hasClass(\"hidden\");\r\n let inviteesTabIsHidden = $(\"#content-trip-invitees\").hasClass(\"hidden\");\r\n\r\n if (meetingBlockBookingId) {\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n var data = {\r\n meetingBlockBookingId: meetingBlockBookingId,\r\n };\r\n\r\n $.ajax({\r\n url: '/trip/cancelmeetingbooking',\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 if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON.errorMessage)\r\n errorMessage = response.responseJSON.errorMessage;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n YouLi.Trip.UpdateItineraryContent(itineraryTabIsHidden, response.responseJSON.contentItineraryHtml);\r\n YouLi.Trip.UpdateInviteesContent(inviteesTabIsHidden, response.responseJSON.inviteesDetailsHtmlString);\r\n\r\n // refresh the current profile (if that is what's currently showing)\r\n if ($('#content-trip-viewprofile').length > 0 && !$(\"#content-trip-viewprofile\").hasClass(\"hidden\")) {\r\n var viewedProfileId = $(\"#content-trip-viewprofile\").data(\"profile-invitee-id\");\r\n YouLi.Trip.ViewProfileForInvitee(viewedProfileId);\r\n }\r\n }\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n YouLi.Trip.SetMeetingBookingSlotAvailability = function (element) {\r\n\r\n var scheduleItemId = element.dataset.scheduleItemId;\r\n var slotId = element.dataset.slotId;\r\n var status = element.dataset.status;\r\n var meetingBlockId = element.dataset.meetingBlockBookingId;\r\n\r\n let itineraryTabIsHidden = $(\"#content-trip-itinerary\").hasClass(\"hidden\");\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n var data = {\r\n ScheduleItemId: scheduleItemId,\r\n SlotId: slotId,\r\n Status: status,\r\n MeetingBlockBookingId: meetingBlockId\r\n };\r\n\r\n $.ajax({\r\n url: '/trip/SetMeetingBookingAvailability',\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 if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON != null && response.responseJSON.errors)\r\n errorMessage = response.responseJSON.errors;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n YouLi.Trip.UpdateItineraryContent(itineraryTabIsHidden, response.responseJSON.contentItineraryHtml);\r\n\r\n // refresh the current profile (if that is what's currently showing)\r\n if ($('#content-trip-viewprofile').length > 0 && !$(\"#content-trip-viewprofile\").hasClass(\"hidden\")) {\r\n var viewedProfileId = $(\"#content-trip-viewprofile\").data(\"profile-invitee-id\");\r\n YouLi.Trip.ViewProfileForInvitee(viewedProfileId);\r\n }\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.Trip.ScheduleMeetingBookingSlot = function (scheduleMeetingButtonElement) {\r\n\r\n const itemContainer = $(scheduleMeetingButtonElement).closest(\".item-container\");\r\n const meetingBlockId = $(itemContainer).data(\"id\");\r\n const meetingBlockBookingId = $(scheduleMeetingButtonElement).data(\"booking-id\");\r\n const slotId = $(scheduleMeetingButtonElement).data(\"slot-id\");\r\n\r\n let itineraryTabIsHidden = $(\"#content-trip-itinerary\").hasClass(\"hidden\");\r\n let inviteesTabIsHidden = $(\"#content-trip-invitees\").hasClass(\"hidden\");\r\n\r\n if (!(slotId && meetingBlockBookingId)) {\r\n return;\r\n }\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n var data = {\r\n scheduleItemId: meetingBlockId,\r\n meetingBlockBookingId: meetingBlockBookingId,\r\n slotId: slotId\r\n };\r\n\r\n $.ajax({\r\n url: '/trip/schedulemeetingbookingslot',\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 if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n var errorMessage = \"An error occurred.\";\r\n if (response.responseJSON.errorMessage)\r\n errorMessage = response.responseJSON.errorMessage;\r\n YouLi.Common.UI.ShowStandardDialog(errorMessage, \"Error\");\r\n }\r\n else {\r\n YouLi.Trip.UpdateItineraryContent(itineraryTabIsHidden, response.responseJSON.contentItineraryHtml);\r\n YouLi.Trip.UpdateInviteesContent(inviteesTabIsHidden, response.responseJSON.inviteesDetailsHtmlString);\r\n\r\n // refresh the current profile (if that is what's currently showing)\r\n if ($('#content-trip-viewprofile').length > 0 && !$(\"#content-trip-viewprofile\").hasClass(\"hidden\")) {\r\n var viewedProfileId = $(\"#content-trip-viewprofile\").data(\"profile-invitee-id\");\r\n YouLi.Trip.ViewProfileForInvitee(viewedProfileId);\r\n }\r\n }\r\n }\r\n\r\n });\r\n };\r\n\r\n YouLi.Trip.UpdateItineraryContent = function (itineraryTabIsHidden, html) {\r\n // get and restore collapsible panel states \r\n var openPanelIds = $(\"#itinerary-content .panel-collapse.collapse.in\").map(function () { return this.id; }).get();\r\n $('#itinerary-content').html(html);\r\n $(\".panel-collapse.collapse\").removeClass(\"in\");\r\n if (openPanelIds.length > 0) {\r\n $('#' + openPanelIds.join(',#')).addClass(\"in\"); // do this before calling collapse() as we don't want this animated here\r\n $('#' + openPanelIds.join(',#')).collapse(\"show\");\r\n }\r\n\r\n if (!itineraryTabIsHidden)\r\n $(\"#content-trip-itinerary\").removeClass(\"hidden\");\r\n\r\n YouLi.Trip.Itinerary.FilterItems();\r\n YouLi.Trip.Itinerary.UpdateMenuNav();\r\n }\r\n\r\n YouLi.Trip.UpdateTaskContent = function (taskTabIsHidden, html) {\r\n $('#tasks-content').html(html);\r\n\r\n if (!taskTabIsHidden)\r\n $(\"#content-trip-tasks\").removeClass(\"hidden\");\r\n\r\n YouLi.Trip.Tasks.FilterTasks();\r\n }\r\n\r\n YouLi.Trip.UpdateProgramContent = function (programTabIsHidden, html) {\r\n\r\n $('#program-content').html(html);\r\n\r\n $(\"#content-trip-program\").toggleClass(\"hidden\", programTabIsHidden);\r\n\r\n YouLi.Trip.Program.RefreshLayout();\r\n YouLi.Trip.Program.UpdateMenuNav();\r\n }\r\n\r\n YouLi.Trip.UpdateInviteesContent = function (inviteeTabIsHidden, html) {\r\n\r\n $('#invitees-content').html(html);\r\n\r\n if (!inviteeTabIsHidden)\r\n $(\"#content-trip-itinerary\").removeClass(\"hidden\");\r\n\r\n YouLi.Trip.SetupInviteeSectionMenu();\r\n }\r\n\r\n YouLi.Trip.UpdateMenuContent = function (selectedSectionMenuItem, html) {\r\n\r\n // update either the \"top\" menu or the normal one, depending on which is in use\r\n if ($(\".content-trip-details-menu-top\").length > 0)\r\n $(\".content-trip-details-menu-top\").html(html);\r\n else\r\n $(\".content-trip-details-menu\").html(html);\r\n\r\n // update the activated menu back to what it was\r\n $(\".content-trip-details-menu .nav li\").removeClass(\"active\");\r\n $(\".content-trip-details-menu .nav li\").find(\"[data-section='\" + selectedSectionMenuItem + \"']\").addClass(\"active\");\r\n\r\n YouLi.Trip.RefreshMenuAffix();\r\n }\r\n\r\n YouLi.Trip.ResizeSalesPageMenuWithLogo = function () {\r\n\r\n if ($(\"#SalesPageMenuWithLogo\").length == 0)\r\n return;\r\n\r\n const menuItemLinks = $(\".sales-page-dr-sheri .content-trip-details-top .content-trip-details-menu-top.traveller ul.nav a\");\r\n\r\n if (YouLi.Common.UI.GetClientWidth() > 767) {\r\n $(\"svg\", menuItemLinks).css({ \"display\": 'block' })\r\n $(\".text\", menuItemLinks).css({ \"display\": \"block\" })\r\n\r\n let firstLi = $(\"#SalesPageMenuWithLogo li:first-child\");\r\n if ($(firstLi).position().top > 0) {\r\n $(\"svg\", menuItemLinks).css({ \"display\": \"none\" });\r\n\r\n // If the menu STILL runs onto a second line (checking top again now), revert to the icons as well\r\n if ($(firstLi).position().top > 0 && $(menuItemLinks).find(\"svg\").first().css('display') == 'none') {\r\n $(\".text\", menuItemLinks).css({ \"display\": \"none\" });\r\n $(\"svg\", menuItemLinks).css({ \"display\": 'block' })\r\n }\r\n }\r\n\r\n } else {\r\n $(\".text\", menuItemLinks).css({ \"display\": \"none\" })\r\n $(\"svg\", menuItemLinks).css({ \"display\": 'block' })\r\n }\r\n\r\n YouLi.Trip.UpdateSalesPageBannerPosition();\r\n\r\n };\r\n\r\n YouLi.Trip.UpdateSalesPageBannerPosition = function () {\r\n $('.content-trip-heading-image').css('margin-top', parseInt($('.content-trip-details-menu-top').css(\"height\")));\r\n }\r\n\r\n YouLi.Trip.RefreshMenuAffix = function () {\r\n $('.content-trip-details-menu.traveller ul.nav').affix({\r\n offset: {\r\n top: function () {\r\n return $(\".content-trip-details-menu\").offset().top;\r\n },\r\n bottom: $(\"html\").outerWidth() < 767 ? 0 : 1000\r\n }\r\n }).on(\"affixed.bs.affix\", function () {\r\n\r\n if (!YouLi.Trip.AffixWindowResizeInitialised) {\r\n\r\n $(window).on(\"resize\", function () {\r\n $('.content-trip-details-menu.traveller ul.nav').data('bs.affix').options.offset.bottom = $(\"html\").outerWidth() < 767 ? 0 : 1000;\r\n });\r\n YouLi.Trip.AffixWindowResizeInitialised = true;\r\n }\r\n });\r\n }\r\n\r\n $(function () {\r\n\r\n if (YouLi.Trip.StyleName == YouLi.Trip.StylesNameSalesPageDrSheri) {\r\n $(\"#SalesPageMenuLogo img\").on(\"load\", function () {\r\n YouLi.Trip.ResizeSalesPageMenuWithLogo(); // call initially after loading the logo\r\n });\r\n\r\n $(window).on(\"resize\", function () {\r\n YouLi.Trip.ResizeSalesPageMenuWithLogo();\r\n });\r\n }\r\n\r\n YouLi.Trip.ToggleMainMenu();\r\n\r\n if ($(\"#RespondedYesRecentlyDialog\").length == 1)\r\n $(\"#RespondedYesRecentlyDialog\").modal('show');\r\n\r\n $(\".load-in-app\").toggle(!(YouLi.Common.Utils.IsYouLiMobileApp() || YouLi.Common.Utils.IsYouLiBundler())); // YOULI-5601 hide Load In App button in the actual app\r\n\r\n $(document).off(\"click\", \".load-in-app\").on(\"click\", \".load-in-app\", function () {\r\n if (YouLi.Trip.TripHasMobileAppEnabled) {\r\n if (YouLi.Common.Utils.IsMobile() && !YouLi.Common.Utils.IsYouLiBundler()) {\r\n return true;\r\n }\r\n else {\r\n $(\"#MobileAppDesktopDialog\").modal(\"show\");\r\n return false;\r\n }\r\n } else {\r\n if (YouLi.Trip.IsCurrentUserTripOwner) {\r\n let tripId = $(\"#TripId\").val();\r\n let target = \"_blank\";\r\n //let showPremiumTrip = $(this).data('premium-trip');\r\n YouLi.UpgradeSubscription.GoToUpgradePage(\"\", 'To allow your travelers to use the Mobile App to view their trips online and offline, upgrade to at least PRO. The Load in App button will not appear to your travelers until you upgrade.', \"\", \"\", false, window.location.pathname + window.location.search, tripId, target);\r\n } else if (YouLi.Trip.IsCurrentUserTripPlanner) {\r\n YouLi.Common.UI.ShowStandardDialog('To enable \"Load in App\" and allow registered travelers to view your trip pages online + offline on their Apple or Android phone, contact your trip owner to upgrade. Learn More', 'UPGRADE TO GET THIS FEATURE', 'OK', 'warning', '');\r\n }\r\n return false;\r\n }\r\n });\r\n\r\n YouLi.Trip.SetupFixNavbarOnTop();\r\n YouLi.Trip.TrimMiniBioDisplay();\r\n\r\n $(window).resize(function () {\r\n YouLi.Trip.SetupFixNavbarOnTop();\r\n YouLi.Trip.TrimMiniBioDisplay();\r\n });\r\n\r\n $(document).on(\"click\", \".share-trip-button\", function () {\r\n var tripId = $(this).data('trip-id');\r\n var inviteeId = $(this).data('invitee-id');\r\n let userAffiliateCode = $(this).data(\"affiliate-code\");\r\n const triggerPage = $(this).data(\"trigger-page\");\r\n\r\n let url = `/Planner/GetTripShareView?tripId=${tripId}&inviteeId=${inviteeId}&triggerPage=${triggerPage}&userAffiliateCode=${userAffiliateCode}`;\r\n YouLi.Common.UI.ShowLoading();\r\n $.ajax({\r\n url: url,\r\n type: \"GET\",\r\n contentType: \"application/json\",\r\n complete: function (response) {\r\n if (YouLi.Common) {\r\n YouLi.Common.UI.HideLoading();\r\n }\r\n\r\n if (response.status == 500 || response.statusText == \"error\") {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when loading share trip view.\");\r\n }\r\n else {\r\n $(\"#share-trip-div\").html(response.responseText);\r\n $('#ShareTripDialog').modal(\"show\");\r\n }\r\n }\r\n });\r\n });\r\n\r\n YouLi.Trip.Program.UpdateMenuNav(); // init\r\n\r\n if ((YouLi.Common.Utils.IsYouLiMobileApp() || YouLi.Common.Utils.IsYouLiBundler())) {\r\n YouLi.Trip.StripBlankLinkTargets();\r\n }\r\n\r\n YouLi.Trip.RefreshMenuAffix();\r\n\r\n YouLi.TripDates.Initialise();\r\n\r\n if (window.location.hash) {\r\n var section = window.location.hash.substring(1);\r\n\r\n if (section == \"viewprofile\") {\r\n var urlParams = new URLSearchParams(window.location.search);\r\n const viewInviteeId = urlParams.get(\"viewinvitee\")\r\n\r\n if (viewInviteeId)\r\n YouLi.Trip.ViewProfileForInvitee(viewInviteeId, true);\r\n else\r\n YouLi.Trip.ViewProfileForInvitee($(\"#InviteeId\").val(), true);\r\n }\r\n else {\r\n YouLi.Trip.GoToSection(section);\r\n }\r\n }\r\n else if (YouLi.Trip.SkipToItinerary) {\r\n YouLi.Trip.GoToSection(\"itinerary\");\r\n if (YouLi.Trip.InitialDate != \"\") {\r\n YouLi.Trip.Itinerary.GoToDate(YouLi.Trip.InitialDate);\r\n }\r\n }\r\n\r\n if (YouLi.Trip.RespondedRecently) {\r\n\r\n // Scroll to the top of the content details when they have just responded\r\n $('html, body').animate({\r\n scrollTop: $(\"#content-trip-paymentdetails .trip-details-main__inner\").offset().top - YouLi.Trip.AffixTop()\r\n }, 1000);\r\n\r\n } else if (YouLi.Trip.CheckoutSuccessfulRecently) {\r\n\r\n // Scroll to the top of the payments list when they have just used checkout to register\r\n $('html, body').animate({\r\n scrollTop: $(\"#ContentCostPaymentList\").offset().top - YouLi.Trip.AffixTop()\r\n }, 1000);\r\n } else if (YouLi.Trip.GangPlaceholdersDialogOnLoad) {\r\n // show the gang placeholder details dialog immediately if required\r\n $('#GangPlaceholdersDialog').modal('show');\r\n }\r\n\r\n\r\n $(document).on(\"click\", \"#sendreceiptemailbutton\", function () {\r\n YouLi.Common.SendPaymentReceipt($(\"#TripId\").val(), $(\"#InviteeId\").val());\r\n });\r\n\r\n $(document).on(\"click\", \".content-trip-heading-title.allow-response\", function () {\r\n $(\"#ResponseDialogYes\").modal(\"show\");\r\n });\r\n\r\n $(document).on(\"show.bs.modal\", \"#ResponseDialogYes\", function (e) {\r\n\r\n // First, check if we need to redirect to checkout flow, based on the payment style (when the pricing mode is not Brochure Mode)\r\n if (YouLi.Trip.IsAnonymousAccess && YouLi.Trip.PricingMode != \"estimated\" && YouLi.Trip.PaymentStyle == \"checkoutflowafter\") {\r\n window.location.href = YouLi.Trip.CheckoutFlowPageURL;\r\n return e.preventDefault();\r\n }\r\n\r\n var numUnrespondedItineraryItems = $(\".itinerary-accordion-item .response .check:not(.checked)\").length;\r\n\r\n if (numUnrespondedItineraryItems == 0) {\r\n $(\"#ResponseDialogYes .well.alert.outstanding-responses-list\").addClass(\"hidden\");\r\n }\r\n else {\r\n $(\"#ResponseDialogYes .well.alert.outstanding-responses-list\").removeClass(\"hidden\");\r\n\r\n $(\"#ResponseDialogYes .outstanding-responses-list ul\").empty();\r\n $(\".itinerary-accordion-item .response .check:not(.checked)\").each(function (item) {\r\n\r\n var itineraryItemElement = $(this).closest(\".itinerary-accordion-item\");\r\n var itineraryItemId = $(itineraryItemElement).data(\"id\");\r\n\r\n var itemToList = $.grep(YouLi.Trip.Itinerary.ItineraryItems, function (item) {\r\n return item.ScheduleItemId == itineraryItemId;\r\n });\r\n\r\n if (itemToList.length != 0) {\r\n var itemStartDate = moment(itemToList.StartDateTime);\r\n\r\n $(\"#ResponseDialogYes .outstanding-responses-list ul\").append(\"
  • \" + itemToList[0].Name + \" \" + itemStartDate.format('ddd DD MMM') + \"\");\r\n }\r\n });\r\n }\r\n\r\n // Set dropdown for Speakeasy if it makes sense.\r\n if ($(\"#speakeasy-dates\").length == 1) {\r\n let itemId = $(\"#ResponseItineraryItemIncluded\").val();\r\n if (itemId) {\r\n $(\"#ChosenOccurrence\").val(itemId);\r\n }\r\n\r\n let update = function () {\r\n $(\"#ChosenOccurrence option:selected\").each(function () {\r\n $(\"#ResponseItineraryItemIncluded\").val($(this).val());\r\n $(\"#ResponseItineraryItemIncludedAnswer\").val(\"yes\");\r\n });\r\n }\r\n\r\n update();\r\n\r\n $(\"#ChosenOccurrence\").on(\"change\", function () {\r\n update();\r\n });\r\n }\r\n });\r\n\r\n $(document).on(\"hide.bs.modal\", \"#ResponseDialogYes\", function () {\r\n // clear previous itinerary item selection\r\n $(\"#ResponseItineraryItemIncluded\").val(\"\");\r\n });\r\n\r\n $(document).on(\"click\", '#ResponseDialogYes button[type=\"submit\"]', function () {\r\n $(\"#ResponseDialogYes form\").submit();\r\n });\r\n\r\n $(document).off(\"click\", \".switch-invitee\");\r\n $(document).on(\"click\", \".switch-invitee\", function () {\r\n\r\n const data = {\r\n tripid: $(\"#TripId\").val(),\r\n inviteeid: $(\"#InviteeId\").val(),\r\n switchToInviteeId: $(this).data('inviteeid')\r\n };\r\n const updateLink = $(this).data('link');\r\n YouLi.Common.UI.ShowLoading();\r\n $.ajax({\r\n url: \"/trip/InsertChangeProfileLog\",\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 window.location.assign(updateLink);\r\n }\r\n });\r\n });\r\n\r\n $(document).off(\"click\", \".set-meeting-slot-availability\");\r\n $(document).on(\"click\", \".set-meeting-slot-availability\", function () {\r\n\r\n YouLi.Trip.SetMeetingBookingSlotAvailability(this);\r\n });\r\n\r\n $(document).off(\"click\", \".view-profile-link\");\r\n $(document).on(\"click\", \".view-profile-link\", function () {\r\n\r\n const inviteeId = $(this).data(\"profile-invitee-id\");\r\n YouLi.Trip.ViewProfileForInvitee(inviteeId, true);\r\n });\r\n\r\n $(document).off(\"click\", \".request-meeting\");\r\n $(document).on(\"click\", \".request-meeting\", function () {\r\n\r\n YouLi.Trip.ShowRequestMeetingBookingDialog($(this));\r\n });\r\n\r\n $(document).off(\"click\", \"#MeetingBookingRequestDialog .do-send-request\");\r\n $(document).on(\"click\", \"#MeetingBookingRequestDialog .do-send-request\", function () {\r\n\r\n YouLi.Trip.RequestMeetingBooking();\r\n });\r\n\r\n $(document).off(\"click\", \".decline-request\");\r\n $(document).on(\"click\", \".decline-request\", function () {\r\n\r\n YouLi.Trip.ShowDeclineMeetingRequestDialog($(this));\r\n });\r\n\r\n $(document).off(\"click\", \"#DeclineMeetingRequestDialog .send-decline-request-messgae\");\r\n $(document).on(\"click\", \"#DeclineMeetingRequestDialog .send-decline-request-messgae\", function () {\r\n\r\n YouLi.Trip.DeclineMeetingRequest();\r\n });\r\n\r\n $(document).off(\"click\", \".undo-declined-request\");\r\n $(document).on(\"click\", \".undo-declined-request\", function () {\r\n\r\n YouLi.Trip.UndoDeclinedMeetingRequest($(this));\r\n });\r\n\r\n $(document).off(\"click\", \".meeting-block-slots--selectable .slot:not(.booked)\");\r\n $(document).on(\"click\", \".meeting-block-slots--selectable .slot:not(.booked)\", function () {\r\n\r\n YouLi.Trip.ShowScheduleMeetingBookingSlot($(this));\r\n });\r\n\r\n $(document).off(\"click\", \".schedule-meeting\");\r\n $(document).on(\"click\", \".schedule-meeting\", function () {\r\n\r\n YouLi.Trip.ScheduleMeetingBookingSlot($(this));\r\n });\r\n\r\n $(document).off(\"click\", \".close-schedule\");\r\n $(document).on(\"click\", \".close-schedule\", function () {\r\n\r\n YouLi.Trip.HideScheduleMeetingBookingSlot($(this));\r\n });\r\n\r\n $(document).off(\"click\", \".meeting-block-slots--list--slot.booked .edit-booking\");\r\n $(document).on(\"click\", \".meeting-block-slots--list--slot.booked .edit-booking\", function () {\r\n\r\n YouLi.Trip.ShowEditMeetingBookingSlot($(this));\r\n });\r\n\r\n // main menu functionality\r\n $(document).off(\"click\", \".content-trip .content-tab\");\r\n $(document).on(\"click\", \".content-trip .content-tab\", function () {\r\n var section = $(this).data(\"section\");\r\n\r\n var triggerElement = $(this);\r\n var scrollTop = Math.max($(\"html\").scrollTop(), $(\"body\").scrollTop()); // NOTE: $(\"body\").scrollTop returns the right value on safari, but returns the zero on other. In reverse, $(\"html, body\").scrollTop returns 0 in safari but the right value in others... argh!\r\n if (scrollTop > $('.content-trip-details-main').offset().top) {\r\n\r\n $('html, body').animate({\r\n scrollTop: $('.content-trip-details-main').offset().top\r\n }, 'fast', function () {\r\n YouLi.Trip.GoToSection(section, $(this), triggerElement.data(\"scroll\"), triggerElement.data(\"scroll-override\"));\r\n $('.content-trip-details-menu.traveller ul.nav').affix('checkPosition');\r\n });\r\n }\r\n else {\r\n\r\n YouLi.Trip.GoToSection(section, $(this));\r\n $('.content-trip-details-menu.traveller ul.nav').affix('checkPosition');\r\n }\r\n\r\n });\r\n\r\n $(document).on(\"click\", \".content-trip-heading-details-location\", function () {\r\n if (!$(\".content-trip-heading-details-location\").data('is-virtual')) {\r\n $('html, body').animate({\r\n scrollTop: $(\".content-trip-details-location\").offset().top\r\n }, 1000);\r\n }\r\n\r\n });\r\n\r\n YouLi.Trip.SetupInviteeSectionMenu();\r\n\r\n // resources menu functionality\r\n $(\".resources-section-links .content-list-tab:not(.disabled)\").on(\"click touchstart\", function () {\r\n var section = $(this).data(\"section\");\r\n\r\n YouLi.Trip.GoToResourceSection(section);\r\n });\r\n\r\n\r\n $(\".content-trip-response-footer-container\").on(\"click\", \".close-footer\", function () {\r\n var tripId = $(\"#TripId\").val();\r\n var in60Minutes = 1 / 24;\r\n Cookies.set(tripId + '-TripHideFooter', \"true\", { expires: in60Minutes });\r\n $(\".content-trip-response-footer\").addClass(\"hidden\");\r\n\r\n YouLi.Trip.AdjustFooterForFloatingFooter();\r\n });\r\n\r\n function isImageBroken(image) {\r\n return image.naturalWidth === 0 || image.naturalHeight === 0 || image.complete === false;\r\n }\r\n\r\n $(document).on('change', '#NumberInGroup', function () {\r\n const data = {\r\n tripid: $(\"#TripId\").val(),\r\n numberInGroup: $('#NumberInGroup').val(),\r\n inviteeFullName: `${$('#ResponseFirstName').val()} ${$('#ResponseLastName').val()}`\r\n };\r\n YouLi.Common.UI.ShowLoading();\r\n $.ajax({\r\n url: \"/trip/UpdateGangMembersSection\",\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 if (response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred.\");\r\n }\r\n else {\r\n $('#GangDetails').html(response.responseJSON.gangDetailsHtmlString);\r\n $('#GangMemberDetails').html(response.responseJSON.gangMemberHtmlString);\r\n\r\n // if there are more than one gang members, then show the label for the primary invitee\r\n $(\"#PrimaryInviteeGangMemberLabel\").toggleClass(\"hidden\", $(\".gang-member-label\").length == 1)\r\n\r\n let $form = $('#AddEditTripUser');\r\n $.validator.unobtrusive.parse($form); // nb: this currently isn't working to trigger the unobtrusive validation for some reason\r\n }\r\n }\r\n });\r\n });\r\n\r\n $(document).on('keypress', '[name=\"ResponseFirstName\"], [name=\"ResponseLastName\"]', function (e) {\r\n //64 is char '@'\r\n if (e.which === 64) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n YouLi.Trip.AdjustFooterForFloatingFooter(); // init\r\n\r\n // Set a timeout to update payments list if there are any in-progress payments\r\n YouLi.Trip.SetupUpdatePaymentsListTimer();\r\n\r\n $(\"#AddEditTripUser\").off(\"dp.change\", \".date-time-container .datepicker\");\r\n $(\"#AddEditTripUser\").on(\"dp.change\", \".date-time-container .datepicker\", function (e) {\r\n YouLi.Trip.UpdateDateTimeAnswer(this);\r\n });\r\n\r\n $(\"#AddEditTripUser\").off(\"dp.change\", \".date-time-container .timepicker\");\r\n $(\"#AddEditTripUser\").on(\"dp.change\", \".date-time-container .timepicker\", function (e) {\r\n YouLi.Trip.UpdateDateTimeAnswer(this);\r\n });\r\n\r\n YouLi.Trip.SetupMapEvents();\r\n\r\n var forcePreventFooterUpdate = YouLi.Common.Utils.GetParameterFromURL(\"preventfooterupdate\");\r\n if (!forcePreventFooterUpdate) {\r\n setTimeout(function () {\r\n YouLi.Trip.UpdateResponseFooter(false, true);\r\n }, YouLi.Trip.FooterUpdateTimeout);\r\n }\r\n\r\n if (YouLi.Trip.ShowImageErrorReport) {\r\n\r\n const images = document.querySelectorAll('img');\r\n\r\n // Set up a load event listener, so that whenever an image successfully loods we can clear any broken image state off it\r\n images.forEach((img) => {\r\n img.addEventListener(\"load\", (event) => {\r\n console.log(\"image with src \" + event.target.src + \" loaded\");\r\n event.target.classList.remove(\"broken-image\");\r\n });\r\n });\r\n\r\n // Update any editor images to skip cache (no need for signing policies on these bucket images)\r\n images.forEach((img) => {\r\n if (img.src.indexOf(\"ylt-planner-editor-images.imgix.net\")) {\r\n img.src = img.src.replace(\"ylt-planner-editor-images.imgix.net\", \"ylt-planner-editorimages.s3.us-east-1.amazonaws.com\");\r\n }\r\n });\r\n\r\n // After a slight delay, loop through all the image elements on the page and check for any broken ones (they may also be subsequently fixed once they finished loading, if\r\n // that takes longer than 1 second)\r\n setTimeout(function () {\r\n const brokenImageUrls = [];\r\n // Iterate through the image elements and check for broken images, excluding lazy-loaded images\r\n images.forEach((img) => {\r\n if (!img.classList.contains(\"hidden\") && (!img.hasAttribute('loading') || img.getAttribute('loading') !== 'lazy')) {\r\n if (isImageBroken(img) && img.getAttribute('src')) {\r\n console.log(\"Image with src \" + img.src + \" is broken\");\r\n img.classList.add(\"broken-image\");\r\n brokenImageUrls.push(img.getAttribute('src'));\r\n }\r\n }\r\n });\r\n\r\n // Display the array of broken image URLs in the console\r\n //console.log('Broken Image URLs:', brokenImageUrls);\r\n\r\n //if ($(\"img.broken-image\").length > 0) \r\n const croppingNote = \"

    Note that in this view mode, cropping is not applied, click BACK TO TRIP to preview with cropping\";\r\n if (brokenImageUrls.length > 0)\r\n YouLi.Common.UI.ShowStandardDialog(`There are images missing or about to expire from cache, please review the page for red boxes to see these.${croppingNote}`, \"Check Images\");\r\n else\r\n YouLi.Common.UI.ShowStandardDialog(`No images missing or about to expire from cache.${croppingNote}`, \"Check Images\", \"OK\", \"success\");\r\n }, 3000);\r\n }\r\n });\r\n\r\n }(YouLi.Trip ? YouLi.Trip : {}));\r\n}(YouLi ? YouLi : {}));","/*!\r\n * imagesLoaded PACKAGED v4.1.3\r\n * JavaScript is all like \"You images are done yet or what?\"\r\n * MIT License\r\n */\r\n\r\n/**\r\n * EvEmitter v1.1.0\r\n * Lil' event emitter\r\n * MIT License\r\n */\r\n\r\n/* jshint unused: true, undef: true, strict: true */\r\n\r\n( function( global, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */ /* globals define, module, window */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD - RequireJS\r\n define( 'ev-emitter/ev-emitter',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS - Browserify, Webpack\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n global.EvEmitter = factory();\r\n }\r\n\r\n}( typeof window != 'undefined' ? window : this, function() {\r\n\r\n\r\n\r\nfunction EvEmitter() {}\r\n\r\nvar proto = EvEmitter.prototype;\r\n\r\nproto.on = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // set events hash\r\n var events = this._events = this._events || {};\r\n // set listeners array\r\n var listeners = events[ eventName ] = events[ eventName ] || [];\r\n // only add once\r\n if ( listeners.indexOf( listener ) == -1 ) {\r\n listeners.push( listener );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.once = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // add event\r\n this.on( eventName, listener );\r\n // set once flag\r\n // set onceEvents hash\r\n var onceEvents = this._onceEvents = this._onceEvents || {};\r\n // set onceListeners object\r\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\r\n // set flag\r\n onceListeners[ listener ] = true;\r\n\r\n return this;\r\n};\r\n\r\nproto.off = function( eventName, listener ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n var index = listeners.indexOf( listener );\r\n if ( index != -1 ) {\r\n listeners.splice( index, 1 );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.emitEvent = function( eventName, args ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n var i = 0;\r\n var listener = listeners[i];\r\n args = args || [];\r\n // once stuff\r\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\r\n\r\n while ( listener ) {\r\n var isOnce = onceListeners && onceListeners[ listener ];\r\n if ( isOnce ) {\r\n // remove listener\r\n // remove before trigger to prevent recursion\r\n this.off( eventName, listener );\r\n // unset once flag\r\n delete onceListeners[ listener ];\r\n }\r\n // trigger listener\r\n listener.apply( this, args );\r\n // get next listener\r\n i += isOnce ? 0 : 1;\r\n listener = listeners[i];\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.allOff =\r\nproto.removeAllListeners = function() {\r\n delete this._events;\r\n delete this._onceEvents;\r\n};\r\n\r\nreturn EvEmitter;\r\n\r\n}));\r\n\r\n/*!\r\n * imagesLoaded v4.1.3\r\n * JavaScript is all like \"You images are done yet or what?\"\r\n * MIT License\r\n */\r\n\r\n( function( window, factory ) { 'use strict';\r\n // universal module definition\r\n\r\n /*global define: false, module: false, require: false */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( [\r\n 'ev-emitter/ev-emitter'\r\n ], function( EvEmitter ) {\r\n return factory( window, EvEmitter );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter')\r\n );\r\n } else {\r\n // browser global\r\n window.imagesLoaded = factory(\r\n window,\r\n window.EvEmitter\r\n );\r\n }\r\n\r\n})( typeof window !== 'undefined' ? window : this,\r\n\r\n// -------------------------- factory -------------------------- //\r\n\r\nfunction factory( window, EvEmitter ) {\r\n\r\n\r\n\r\nvar $ = window.jQuery;\r\nvar console = window.console;\r\n\r\n// -------------------------- helpers -------------------------- //\r\n\r\n// extend objects\r\nfunction extend( a, b ) {\r\n for ( var prop in b ) {\r\n a[ prop ] = b[ prop ];\r\n }\r\n return a;\r\n}\r\n\r\n// turn element or nodeList into an array\r\nfunction makeArray( obj ) {\r\n var ary = [];\r\n if ( Array.isArray( obj ) ) {\r\n // use object if already an array\r\n ary = obj;\r\n } else if ( typeof obj.length == 'number' ) {\r\n // convert nodeList to array\r\n for ( var i=0; i < obj.length; i++ ) {\r\n ary.push( obj[i] );\r\n }\r\n } else {\r\n // array of single index\r\n ary.push( obj );\r\n }\r\n return ary;\r\n}\r\n\r\n// -------------------------- imagesLoaded -------------------------- //\r\n\r\n/**\r\n * @param {Array, Element, NodeList, String} elem\r\n * @param {Object or Function} options - if function, use as callback\r\n * @param {Function} onAlways - callback function\r\n */\r\nfunction ImagesLoaded( elem, options, onAlways ) {\r\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\r\n if ( !( this instanceof ImagesLoaded ) ) {\r\n return new ImagesLoaded( elem, options, onAlways );\r\n }\r\n // use elem as selector string\r\n if ( typeof elem == 'string' ) {\r\n elem = document.querySelectorAll( elem );\r\n }\r\n\r\n this.elements = makeArray( elem );\r\n this.options = extend( {}, this.options );\r\n\r\n if ( typeof options == 'function' ) {\r\n onAlways = options;\r\n } else {\r\n extend( this.options, options );\r\n }\r\n\r\n if ( onAlways ) {\r\n this.on( 'always', onAlways );\r\n }\r\n\r\n this.getImages();\r\n\r\n if ( $ ) {\r\n // add jQuery Deferred object\r\n this.jqDeferred = new $.Deferred();\r\n }\r\n\r\n // HACK check async to allow time to bind listeners\r\n setTimeout( function() {\r\n this.check();\r\n }.bind( this ));\r\n}\r\n\r\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\r\n\r\nImagesLoaded.prototype.options = {};\r\n\r\nImagesLoaded.prototype.getImages = function() {\r\n this.images = [];\r\n\r\n // filter & find items if we have an item selector\r\n this.elements.forEach( this.addElementImages, this );\r\n};\r\n\r\n/**\r\n * @param {Node} element\r\n */\r\nImagesLoaded.prototype.addElementImages = function( elem ) {\r\n // filter siblings\r\n if ( elem.nodeName == 'IMG' ) {\r\n this.addImage( elem );\r\n }\r\n // get background image on element\r\n if ( this.options.background === true ) {\r\n this.addElementBackgroundImages( elem );\r\n }\r\n\r\n // find children\r\n // no non-element nodes, #143\r\n var nodeType = elem.nodeType;\r\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\r\n return;\r\n }\r\n var childImgs = elem.querySelectorAll('img');\r\n // concat childElems to filterFound array\r\n for ( var i=0; i < childImgs.length; i++ ) {\r\n var img = childImgs[i];\r\n this.addImage( img );\r\n }\r\n\r\n // get child background images\r\n if ( typeof this.options.background == 'string' ) {\r\n var children = elem.querySelectorAll( this.options.background );\r\n for ( i=0; i < children.length; i++ ) {\r\n var child = children[i];\r\n this.addElementBackgroundImages( child );\r\n }\r\n }\r\n};\r\n\r\nvar elementNodeTypes = {\r\n 1: true,\r\n 9: true,\r\n 11: true\r\n};\r\n\r\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\r\n var style = getComputedStyle( elem );\r\n if ( !style ) {\r\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\r\n return;\r\n }\r\n // get url inside url(\"...\")\r\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\r\n var matches = reURL.exec( style.backgroundImage );\r\n while ( matches !== null ) {\r\n var url = matches && matches[2];\r\n if ( url ) {\r\n this.addBackground( url, elem );\r\n }\r\n matches = reURL.exec( style.backgroundImage );\r\n }\r\n};\r\n\r\n/**\r\n * @param {Image} img\r\n */\r\nImagesLoaded.prototype.addImage = function( img ) {\r\n var loadingImage = new LoadingImage( img );\r\n this.images.push( loadingImage );\r\n};\r\n\r\nImagesLoaded.prototype.addBackground = function( url, elem ) {\r\n var background = new Background( url, elem );\r\n this.images.push( background );\r\n};\r\n\r\nImagesLoaded.prototype.check = function() {\r\n var _this = this;\r\n this.progressedCount = 0;\r\n this.hasAnyBroken = false;\r\n // complete if no images\r\n if ( !this.images.length ) {\r\n this.complete();\r\n return;\r\n }\r\n\r\n function onProgress( image, elem, message ) {\r\n // HACK - Chrome triggers event before object properties have changed. #83\r\n setTimeout( function() {\r\n _this.progress( image, elem, message );\r\n });\r\n }\r\n\r\n this.images.forEach( function( loadingImage ) {\r\n loadingImage.once( 'progress', onProgress );\r\n loadingImage.check();\r\n });\r\n};\r\n\r\nImagesLoaded.prototype.progress = function( image, elem, message ) {\r\n this.progressedCount++;\r\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\r\n // progress event\r\n this.emitEvent( 'progress', [ this, image, elem ] );\r\n if ( this.jqDeferred && this.jqDeferred.notify ) {\r\n this.jqDeferred.notify( this, image );\r\n }\r\n // check if completed\r\n if ( this.progressedCount == this.images.length ) {\r\n this.complete();\r\n }\r\n\r\n if ( this.options.debug && console ) {\r\n console.log( 'progress: ' + message, image, elem );\r\n }\r\n};\r\n\r\nImagesLoaded.prototype.complete = function() {\r\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\r\n this.isComplete = true;\r\n this.emitEvent( eventName, [ this ] );\r\n this.emitEvent( 'always', [ this ] );\r\n if ( this.jqDeferred ) {\r\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\r\n this.jqDeferred[ jqMethod ]( this );\r\n }\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nfunction LoadingImage( img ) {\r\n this.img = img;\r\n}\r\n\r\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\r\n\r\nLoadingImage.prototype.check = function() {\r\n // If complete is true and browser supports natural sizes,\r\n // try to check for image status manually.\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n // report based on naturalWidth\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n return;\r\n }\r\n\r\n // If none of the checks above matched, simulate loading on detached element.\r\n this.proxyImage = new Image();\r\n this.proxyImage.addEventListener( 'load', this );\r\n this.proxyImage.addEventListener( 'error', this );\r\n // bind to image as well for Firefox. #191\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.proxyImage.src = this.img.src;\r\n};\r\n\r\nLoadingImage.prototype.getIsImageComplete = function() {\r\n return this.img.complete && this.img.naturalWidth !== undefined;\r\n};\r\n\r\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.img, message ] );\r\n};\r\n\r\n// ----- events ----- //\r\n\r\n// trigger specified handler for event type\r\nLoadingImage.prototype.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\nLoadingImage.prototype.onload = function() {\r\n this.confirm( true, 'onload' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.onerror = function() {\r\n this.confirm( false, 'onerror' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.unbindEvents = function() {\r\n this.proxyImage.removeEventListener( 'load', this );\r\n this.proxyImage.removeEventListener( 'error', this );\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\n// -------------------------- Background -------------------------- //\r\n\r\nfunction Background( url, element ) {\r\n this.url = url;\r\n this.element = element;\r\n this.img = new Image();\r\n}\r\n\r\n// inherit LoadingImage prototype\r\nBackground.prototype = Object.create( LoadingImage.prototype );\r\n\r\nBackground.prototype.check = function() {\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.img.src = this.url;\r\n // check if image is already complete\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n this.unbindEvents();\r\n }\r\n};\r\n\r\nBackground.prototype.unbindEvents = function() {\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\nBackground.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.element, message ] );\r\n};\r\n\r\n// -------------------------- jQuery -------------------------- //\r\n\r\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\r\n jQuery = jQuery || window.jQuery;\r\n if ( !jQuery ) {\r\n return;\r\n }\r\n // set local variable\r\n $ = jQuery;\r\n // $().imagesLoaded()\r\n $.fn.imagesLoaded = function( options, callback ) {\r\n var instance = new ImagesLoaded( this, options, callback );\r\n return instance.jqDeferred.promise( $(this) );\r\n };\r\n};\r\n// try making plugin\r\nImagesLoaded.makeJQueryPlugin();\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nreturn ImagesLoaded;\r\n\r\n});\r\n","/*!\r\n * Isotope PACKAGED v3.0.5\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Isotope Commercial License for commercial use\r\n *\r\n * https://isotope.metafizzy.co\r\n * Copyright 2017 Metafizzy\r\n */\r\n\r\n!function (t, e) { \"function\" == typeof define && define.amd ? define(\"jquery-bridget/jquery-bridget\", [\"jquery\"], function (i) { return e(t, i) }) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"jquery\")) : t.jQueryBridget = e(t, t.jQuery) }(window, function (t, e) { \"use strict\"; function i(i, s, a) { function u(t, e, o) { var n, s = \"$().\" + i + '(\"' + e + '\")'; return t.each(function (t, u) { var h = a.data(u, i); if (!h) return void r(i + \" not initialized. Cannot call methods, i.e. \" + s); var d = h[e]; if (!d || \"_\" == e.charAt(0)) return void r(s + \" is not a valid method\"); var l = d.apply(h, o); n = void 0 === n ? l : n }), void 0 !== n ? n : t } function h(t, e) { t.each(function (t, o) { var n = a.data(o, i); n ? (n.option(e), n._init()) : (n = new s(o, e), a.data(o, i, n)) }) } a = a || e || t.jQuery, a && (s.prototype.option || (s.prototype.option = function (t) { a.isPlainObject(t) && (this.options = a.extend(!0, this.options, t)) }), a.fn[i] = function (t) { if (\"string\" == typeof t) { var e = n.call(arguments, 1); return u(this, t, e) } return h(this, t), this }, o(a)) } function o(t) { !t || t && t.bridget || (t.bridget = i) } var n = Array.prototype.slice, s = t.console, r = \"undefined\" == typeof s ? function () { } : function (t) { s.error(t) }; return o(e || t.jQuery), i }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"ev-emitter/ev-emitter\", e) : \"object\" == typeof module && module.exports ? module.exports = e() : t.EvEmitter = e() }(\"undefined\" != typeof window ? window : this, function () { function t() { } var e = t.prototype; return e.on = function (t, e) { if (t && e) { var i = this._events = this._events || {}, o = i[t] = i[t] || []; return o.indexOf(e) == -1 && o.push(e), this } }, e.once = function (t, e) { if (t && e) { this.on(t, e); var i = this._onceEvents = this._onceEvents || {}, o = i[t] = i[t] || {}; return o[e] = !0, this } }, e.off = function (t, e) { var i = this._events && this._events[t]; if (i && i.length) { var o = i.indexOf(e); return o != -1 && i.splice(o, 1), this } }, e.emitEvent = function (t, e) { var i = this._events && this._events[t]; if (i && i.length) { i = i.slice(0), e = e || []; for (var o = this._onceEvents && this._onceEvents[t], n = 0; n < i.length; n++) { var s = i[n], r = o && o[s]; r && (this.off(t, s), delete o[s]), s.apply(this, e) } return this } }, e.allOff = function () { delete this._events, delete this._onceEvents }, t }), function (t, e) { \"use strict\"; \"function\" == typeof define && define.amd ? define(\"get-size/get-size\", [], function () { return e() }) : \"object\" == typeof module && module.exports ? module.exports = e() : t.getSize = e() }(window, function () { \"use strict\"; function t(t) { var e = parseFloat(t), i = t.indexOf(\"%\") == -1 && !isNaN(e); return i && e } function e() { } function i() { for (var t = { width: 0, height: 0, innerWidth: 0, innerHeight: 0, outerWidth: 0, outerHeight: 0 }, e = 0; e < h; e++) { var i = u[e]; t[i] = 0 } return t } function o(t) { var e = getComputedStyle(t); return e || a(\"Style returned \" + e + \". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1\"), e } function n() { if (!d) { d = !0; var e = document.createElement(\"div\"); e.style.width = \"200px\", e.style.padding = \"1px 2px 3px 4px\", e.style.borderStyle = \"solid\", e.style.borderWidth = \"1px 2px 3px 4px\", e.style.boxSizing = \"border-box\"; var i = document.body || document.documentElement; i.appendChild(e); var n = o(e); s.isBoxSizeOuter = r = 200 == t(n.width), i.removeChild(e) } } function s(e) { if (n(), \"string\" == typeof e && (e = document.querySelector(e)), e && \"object\" == typeof e && e.nodeType) { var s = o(e); if (\"none\" == s.display) return i(); var a = {}; a.width = e.offsetWidth, a.height = e.offsetHeight; for (var d = a.isBorderBox = \"border-box\" == s.boxSizing, l = 0; l < h; l++) { var f = u[l], c = s[f], m = parseFloat(c); a[f] = isNaN(m) ? 0 : m } var p = a.paddingLeft + a.paddingRight, y = a.paddingTop + a.paddingBottom, g = a.marginLeft + a.marginRight, v = a.marginTop + a.marginBottom, _ = a.borderLeftWidth + a.borderRightWidth, I = a.borderTopWidth + a.borderBottomWidth, z = d && r, x = t(s.width); x !== !1 && (a.width = x + (z ? 0 : p + _)); var S = t(s.height); return S !== !1 && (a.height = S + (z ? 0 : y + I)), a.innerWidth = a.width - (p + _), a.innerHeight = a.height - (y + I), a.outerWidth = a.width + g, a.outerHeight = a.height + v, a } } var r, a = \"undefined\" == typeof console ? e : function (t) { console.error(t) }, u = [\"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopWidth\", \"borderBottomWidth\"], h = u.length, d = !1; return s }), function (t, e) { \"use strict\"; \"function\" == typeof define && define.amd ? define(\"desandro-matches-selector/matches-selector\", e) : \"object\" == typeof module && module.exports ? module.exports = e() : t.matchesSelector = e() }(window, function () { \"use strict\"; var t = function () { var t = window.Element.prototype; if (t.matches) return \"matches\"; if (t.matchesSelector) return \"matchesSelector\"; for (var e = [\"webkit\", \"moz\", \"ms\", \"o\"], i = 0; i < e.length; i++) { var o = e[i], n = o + \"MatchesSelector\"; if (t[n]) return n } }(); return function (e, i) { return e[t](i) } }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"fizzy-ui-utils/utils\", [\"desandro-matches-selector/matches-selector\"], function (i) { return e(t, i) }) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"desandro-matches-selector\")) : t.fizzyUIUtils = e(t, t.matchesSelector) }(window, function (t, e) { var i = {}; i.extend = function (t, e) { for (var i in e) t[i] = e[i]; return t }, i.modulo = function (t, e) { return (t % e + e) % e }, i.makeArray = function (t) { var e = []; if (Array.isArray(t)) e = t; else if (t && \"object\" == typeof t && \"number\" == typeof t.length) for (var i = 0; i < t.length; i++)e.push(t[i]); else e.push(t); return e }, i.removeFrom = function (t, e) { var i = t.indexOf(e); i != -1 && t.splice(i, 1) }, i.getParent = function (t, i) { for (; t.parentNode && t != document.body;)if (t = t.parentNode, e(t, i)) return t }, i.getQueryElement = function (t) { return \"string\" == typeof t ? document.querySelector(t) : t }, i.handleEvent = function (t) { var e = \"on\" + t.type; this[e] && this[e](t) }, i.filterFindElements = function (t, o) { t = i.makeArray(t); var n = []; return t.forEach(function (t) { if (t instanceof HTMLElement) { if (!o) return void n.push(t); e(t, o) && n.push(t); for (var i = t.querySelectorAll(o), s = 0; s < i.length; s++)n.push(i[s]) } }), n }, i.debounceMethod = function (t, e, i) { var o = t.prototype[e], n = e + \"Timeout\"; t.prototype[e] = function () { var t = this[n]; t && clearTimeout(t); var e = arguments, s = this; this[n] = setTimeout(function () { o.apply(s, e), delete s[n] }, i || 100) } }, i.docReady = function (t) { var e = document.readyState; \"complete\" == e || \"interactive\" == e ? setTimeout(t) : document.addEventListener(\"DOMContentLoaded\", t) }, i.toDashed = function (t) { return t.replace(/(.)([A-Z])/g, function (t, e, i) { return e + \"-\" + i }).toLowerCase() }; var o = t.console; return i.htmlInit = function (e, n) { i.docReady(function () { var s = i.toDashed(n), r = \"data-\" + s, a = document.querySelectorAll(\"[\" + r + \"]\"), u = document.querySelectorAll(\".js-\" + s), h = i.makeArray(a).concat(i.makeArray(u)), d = r + \"-options\", l = t.jQuery; h.forEach(function (t) { var i, s = t.getAttribute(r) || t.getAttribute(d); try { i = s && JSON.parse(s) } catch (a) { return void (o && o.error(\"Error parsing \" + r + \" on \" + t.className + \": \" + a)) } var u = new e(t, i); l && l.data(t, n, u) }) }) }, i }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"outlayer/item\", [\"ev-emitter/ev-emitter\", \"get-size/get-size\"], e) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"ev-emitter\"), require(\"get-size\")) : (t.Outlayer = {}, t.Outlayer.Item = e(t.EvEmitter, t.getSize)) }(window, function (t, e) { \"use strict\"; function i(t) { for (var e in t) return !1; return e = null, !0 } function o(t, e) { t && (this.element = t, this.layout = e, this.position = { x: 0, y: 0 }, this._create()) } function n(t) { return t.replace(/([A-Z])/g, function (t) { return \"-\" + t.toLowerCase() }) } var s = document.documentElement.style, r = \"string\" == typeof s.transition ? \"transition\" : \"WebkitTransition\", a = \"string\" == typeof s.transform ? \"transform\" : \"WebkitTransform\", u = { WebkitTransition: \"webkitTransitionEnd\", transition: \"transitionend\" }[r], h = { transform: a, transition: r, transitionDuration: r + \"Duration\", transitionProperty: r + \"Property\", transitionDelay: r + \"Delay\" }, d = o.prototype = Object.create(t.prototype); d.constructor = o, d._create = function () { this._transn = { ingProperties: {}, clean: {}, onEnd: {} }, this.css({ position: \"absolute\" }) }, d.handleEvent = function (t) { var e = \"on\" + t.type; this[e] && this[e](t) }, d.getSize = function () { this.size = e(this.element) }, d.css = function (t) { var e = this.element.style; for (var i in t) { var o = h[i] || i; e[o] = t[i] } }, d.getPosition = function () { var t = getComputedStyle(this.element), e = this.layout._getOption(\"originLeft\"), i = this.layout._getOption(\"originTop\"), o = t[e ? \"left\" : \"right\"], n = t[i ? \"top\" : \"bottom\"], s = this.layout.size, r = o.indexOf(\"%\") != -1 ? parseFloat(o) / 100 * s.width : parseInt(o, 10), a = n.indexOf(\"%\") != -1 ? parseFloat(n) / 100 * s.height : parseInt(n, 10); r = isNaN(r) ? 0 : r, a = isNaN(a) ? 0 : a, r -= e ? s.paddingLeft : s.paddingRight, a -= i ? s.paddingTop : s.paddingBottom, this.position.x = r, this.position.y = a }, d.layoutPosition = function () { var t = this.layout.size, e = {}, i = this.layout._getOption(\"originLeft\"), o = this.layout._getOption(\"originTop\"), n = i ? \"paddingLeft\" : \"paddingRight\", s = i ? \"left\" : \"right\", r = i ? \"right\" : \"left\", a = this.position.x + t[n]; e[s] = this.getXValue(a), e[r] = \"\"; var u = o ? \"paddingTop\" : \"paddingBottom\", h = o ? \"top\" : \"bottom\", d = o ? \"bottom\" : \"top\", l = this.position.y + t[u]; e[h] = this.getYValue(l), e[d] = \"\", this.css(e), this.emitEvent(\"layout\", [this]) }, d.getXValue = function (t) { var e = this.layout._getOption(\"horizontal\"); return this.layout.options.percentPosition && !e ? t / this.layout.size.width * 100 + \"%\" : t + \"px\" }, d.getYValue = function (t) { var e = this.layout._getOption(\"horizontal\"); return this.layout.options.percentPosition && e ? t / this.layout.size.height * 100 + \"%\" : t + \"px\" }, d._transitionTo = function (t, e) { this.getPosition(); var i = this.position.x, o = this.position.y, n = parseInt(t, 10), s = parseInt(e, 10), r = n === this.position.x && s === this.position.y; if (this.setPosition(t, e), r && !this.isTransitioning) return void this.layoutPosition(); var a = t - i, u = e - o, h = {}; h.transform = this.getTranslate(a, u), this.transition({ to: h, onTransitionEnd: { transform: this.layoutPosition }, isCleaning: !0 }) }, d.getTranslate = function (t, e) { var i = this.layout._getOption(\"originLeft\"), o = this.layout._getOption(\"originTop\"); return t = i ? t : -t, e = o ? e : -e, \"translate3d(\" + t + \"px, \" + e + \"px, 0)\" }, d.goTo = function (t, e) { this.setPosition(t, e), this.layoutPosition() }, d.moveTo = d._transitionTo, d.setPosition = function (t, e) { this.position.x = parseInt(t, 10), this.position.y = parseInt(e, 10) }, d._nonTransition = function (t) { this.css(t.to), t.isCleaning && this._removeStyles(t.to); for (var e in t.onTransitionEnd) t.onTransitionEnd[e].call(this) }, d.transition = function (t) { if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(t); var e = this._transn; for (var i in t.onTransitionEnd) e.onEnd[i] = t.onTransitionEnd[i]; for (i in t.to) e.ingProperties[i] = !0, t.isCleaning && (e.clean[i] = !0); if (t.from) { this.css(t.from); var o = this.element.offsetHeight; o = null } this.enableTransition(t.to), this.css(t.to), this.isTransitioning = !0 }; var l = \"opacity,\" + n(a); d.enableTransition = function () { if (!this.isTransitioning) { var t = this.layout.options.transitionDuration; t = \"number\" == typeof t ? t + \"ms\" : t, this.css({ transitionProperty: l, transitionDuration: t, transitionDelay: this.staggerDelay || 0 }), this.element.addEventListener(u, this, !1) } }, d.onwebkitTransitionEnd = function (t) { this.ontransitionend(t) }, d.onotransitionend = function (t) { this.ontransitionend(t) }; var f = { \"-webkit-transform\": \"transform\" }; d.ontransitionend = function (t) { if (t.target === this.element) { var e = this._transn, o = f[t.propertyName] || t.propertyName; if (delete e.ingProperties[o], i(e.ingProperties) && this.disableTransition(), o in e.clean && (this.element.style[t.propertyName] = \"\", delete e.clean[o]), o in e.onEnd) { var n = e.onEnd[o]; n.call(this), delete e.onEnd[o] } this.emitEvent(\"transitionEnd\", [this]) } }, d.disableTransition = function () { this.removeTransitionStyles(), this.element.removeEventListener(u, this, !1), this.isTransitioning = !1 }, d._removeStyles = function (t) { var e = {}; for (var i in t) e[i] = \"\"; this.css(e) }; var c = { transitionProperty: \"\", transitionDuration: \"\", transitionDelay: \"\" }; return d.removeTransitionStyles = function () { this.css(c) }, d.stagger = function (t) { t = isNaN(t) ? 0 : t, this.staggerDelay = t + \"ms\" }, d.removeElem = function () { this.element.parentNode.removeChild(this.element), this.css({ display: \"\" }), this.emitEvent(\"remove\", [this]) }, d.remove = function () { return r && parseFloat(this.layout.options.transitionDuration) ? (this.once(\"transitionEnd\", function () { this.removeElem() }), void this.hide()) : void this.removeElem() }, d.reveal = function () { delete this.isHidden, this.css({ display: \"\" }); var t = this.layout.options, e = {}, i = this.getHideRevealTransitionEndProperty(\"visibleStyle\"); e[i] = this.onRevealTransitionEnd, this.transition({ from: t.hiddenStyle, to: t.visibleStyle, isCleaning: !0, onTransitionEnd: e }) }, d.onRevealTransitionEnd = function () { this.isHidden || this.emitEvent(\"reveal\") }, d.getHideRevealTransitionEndProperty = function (t) { var e = this.layout.options[t]; if (e.opacity) return \"opacity\"; for (var i in e) return i }, d.hide = function () { this.isHidden = !0, this.css({ display: \"\" }); var t = this.layout.options, e = {}, i = this.getHideRevealTransitionEndProperty(\"hiddenStyle\"); e[i] = this.onHideTransitionEnd, this.transition({ from: t.visibleStyle, to: t.hiddenStyle, isCleaning: !0, onTransitionEnd: e }) }, d.onHideTransitionEnd = function () { this.isHidden && (this.css({ display: \"none\" }), this.emitEvent(\"hide\")) }, d.destroy = function () { this.css({ position: \"\", left: \"\", right: \"\", top: \"\", bottom: \"\", transition: \"\", transform: \"\" }) }, o }), function (t, e) { \"use strict\"; \"function\" == typeof define && define.amd ? define(\"outlayer/outlayer\", [\"ev-emitter/ev-emitter\", \"get-size/get-size\", \"fizzy-ui-utils/utils\", \"./item\"], function (i, o, n, s) { return e(t, i, o, n, s) }) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"ev-emitter\"), require(\"get-size\"), require(\"fizzy-ui-utils\"), require(\"./item\")) : t.Outlayer = e(t, t.EvEmitter, t.getSize, t.fizzyUIUtils, t.Outlayer.Item) }(window, function (t, e, i, o, n) { \"use strict\"; function s(t, e) { var i = o.getQueryElement(t); if (!i) return void (u && u.error(\"Bad element for \" + this.constructor.namespace + \": \" + (i || t))); this.element = i, h && (this.$element = h(this.element)), this.options = o.extend({}, this.constructor.defaults), this.option(e); var n = ++l; this.element.outlayerGUID = n, f[n] = this, this._create(); var s = this._getOption(\"initLayout\"); s && this.layout() } function r(t) { function e() { t.apply(this, arguments) } return e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e } function a(t) { if (\"number\" == typeof t) return t; var e = t.match(/(^\\d*\\.?\\d*)(\\w*)/), i = e && e[1], o = e && e[2]; if (!i.length) return 0; i = parseFloat(i); var n = m[o] || 1; return i * n } var u = t.console, h = t.jQuery, d = function () { }, l = 0, f = {}; s.namespace = \"outlayer\", s.Item = n, s.defaults = { containerStyle: { position: \"relative\" }, initLayout: !0, originLeft: !0, originTop: !0, resize: !0, resizeContainer: !0, transitionDuration: \"0.4s\", hiddenStyle: { opacity: 0, transform: \"scale(0.001)\" }, visibleStyle: { opacity: 1, transform: \"scale(1)\" } }; var c = s.prototype; o.extend(c, e.prototype), c.option = function (t) { o.extend(this.options, t) }, c._getOption = function (t) { var e = this.constructor.compatOptions[t]; return e && void 0 !== this.options[e] ? this.options[e] : this.options[t] }, s.compatOptions = { initLayout: \"isInitLayout\", horizontal: \"isHorizontal\", layoutInstant: \"isLayoutInstant\", originLeft: \"isOriginLeft\", originTop: \"isOriginTop\", resize: \"isResizeBound\", resizeContainer: \"isResizingContainer\" }, c._create = function () { this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), o.extend(this.element.style, this.options.containerStyle); var t = this._getOption(\"resize\"); t && this.bindResize() }, c.reloadItems = function () { this.items = this._itemize(this.element.children) }, c._itemize = function (t) { for (var e = this._filterFindItemElements(t), i = this.constructor.Item, o = [], n = 0; n < e.length; n++) { var s = e[n], r = new i(s, this); o.push(r) } return o }, c._filterFindItemElements = function (t) { return o.filterFindElements(t, this.options.itemSelector) }, c.getItemElements = function () { return this.items.map(function (t) { return t.element }) }, c.layout = function () { this._resetLayout(), this._manageStamps(); var t = this._getOption(\"layoutInstant\"), e = void 0 !== t ? t : !this._isLayoutInited; this.layoutItems(this.items, e), this._isLayoutInited = !0 }, c._init = c.layout, c._resetLayout = function () { this.getSize() }, c.getSize = function () { this.size = i(this.element) }, c._getMeasurement = function (t, e) { var o, n = this.options[t]; n ? (\"string\" == typeof n ? o = this.element.querySelector(n) : n instanceof HTMLElement && (o = n), this[t] = o ? i(o)[e] : n) : this[t] = 0 }, c.layoutItems = function (t, e) { t = this._getItemsForLayout(t), this._layoutItems(t, e), this._postLayout() }, c._getItemsForLayout = function (t) { return t.filter(function (t) { return !t.isIgnored }) }, c._layoutItems = function (t, e) { if (this._emitCompleteOnItems(\"layout\", t), t && t.length) { var i = []; t.forEach(function (t) { var o = this._getItemLayoutPosition(t); o.item = t, o.isInstant = e || t.isLayoutInstant, i.push(o) }, this), this._processLayoutQueue(i) } }, c._getItemLayoutPosition = function () { return { x: 0, y: 0 } }, c._processLayoutQueue = function (t) { this.updateStagger(), t.forEach(function (t, e) { this._positionItem(t.item, t.x, t.y, t.isInstant, e) }, this) }, c.updateStagger = function () { var t = this.options.stagger; return null === t || void 0 === t ? void (this.stagger = 0) : (this.stagger = a(t), this.stagger) }, c._positionItem = function (t, e, i, o, n) { o ? t.goTo(e, i) : (t.stagger(n * this.stagger), t.moveTo(e, i)) }, c._postLayout = function () { this.resizeContainer() }, c.resizeContainer = function () { var t = this._getOption(\"resizeContainer\"); if (t) { var e = this._getContainerSize(); e && (this._setContainerMeasure(e.width, !0), this._setContainerMeasure(e.height, !1)) } }, c._getContainerSize = d, c._setContainerMeasure = function (t, e) { if (void 0 !== t) { var i = this.size; i.isBorderBox && (t += e ? i.paddingLeft + i.paddingRight + i.borderLeftWidth + i.borderRightWidth : i.paddingBottom + i.paddingTop + i.borderTopWidth + i.borderBottomWidth), t = Math.max(t, 0), this.element.style[e ? \"width\" : \"height\"] = t + \"px\" } }, c._emitCompleteOnItems = function (t, e) { function i() { n.dispatchEvent(t + \"Complete\", null, [e]) } function o() { r++ , r == s && i() } var n = this, s = e.length; if (!e || !s) return void i(); var r = 0; e.forEach(function (e) { e.once(t, o) }) }, c.dispatchEvent = function (t, e, i) { var o = e ? [e].concat(i) : i; if (this.emitEvent(t, o), h) if (this.$element = this.$element || h(this.element), e) { var n = h.Event(e); n.type = t, this.$element.trigger(n, i) } else this.$element.trigger(t, i) }, c.ignore = function (t) { var e = this.getItem(t); e && (e.isIgnored = !0) }, c.unignore = function (t) { var e = this.getItem(t); e && delete e.isIgnored }, c.stamp = function (t) { t = this._find(t), t && (this.stamps = this.stamps.concat(t), t.forEach(this.ignore, this)) }, c.unstamp = function (t) { t = this._find(t), t && t.forEach(function (t) { o.removeFrom(this.stamps, t), this.unignore(t) }, this) }, c._find = function (t) { if (t) return \"string\" == typeof t && (t = this.element.querySelectorAll(t)), t = o.makeArray(t) }, c._manageStamps = function () { this.stamps && this.stamps.length && (this._getBoundingRect(), this.stamps.forEach(this._manageStamp, this)) }, c._getBoundingRect = function () { var t = this.element.getBoundingClientRect(), e = this.size; this._boundingRect = { left: t.left + e.paddingLeft + e.borderLeftWidth, top: t.top + e.paddingTop + e.borderTopWidth, right: t.right - (e.paddingRight + e.borderRightWidth), bottom: t.bottom - (e.paddingBottom + e.borderBottomWidth) } }, c._manageStamp = d, c._getElementOffset = function (t) { var e = t.getBoundingClientRect(), o = this._boundingRect, n = i(t), s = { left: e.left - o.left - n.marginLeft, top: e.top - o.top - n.marginTop, right: o.right - e.right - n.marginRight, bottom: o.bottom - e.bottom - n.marginBottom }; return s }, c.handleEvent = o.handleEvent, c.bindResize = function () { t.addEventListener(\"resize\", this), this.isResizeBound = !0 }, c.unbindResize = function () { t.removeEventListener(\"resize\", this), this.isResizeBound = !1 }, c.onresize = function () { this.resize() }, o.debounceMethod(s, \"onresize\", 100), c.resize = function () { this.isResizeBound && this.needsResizeLayout() && this.layout() }, c.needsResizeLayout = function () { var t = i(this.element), e = this.size && t; return e && t.innerWidth !== this.size.innerWidth }, c.addItems = function (t) { var e = this._itemize(t); return e.length && (this.items = this.items.concat(e)), e }, c.appended = function (t) { var e = this.addItems(t); e.length && (this.layoutItems(e, !0), this.reveal(e)) }, c.prepended = function (t) { var e = this._itemize(t); if (e.length) { var i = this.items.slice(0); this.items = e.concat(i), this._resetLayout(), this._manageStamps(), this.layoutItems(e, !0), this.reveal(e), this.layoutItems(i) } }, c.reveal = function (t) { if (this._emitCompleteOnItems(\"reveal\", t), t && t.length) { var e = this.updateStagger(); t.forEach(function (t, i) { t.stagger(i * e), t.reveal() }) } }, c.hide = function (t) { if (this._emitCompleteOnItems(\"hide\", t), t && t.length) { var e = this.updateStagger(); t.forEach(function (t, i) { t.stagger(i * e), t.hide() }) } }, c.revealItemElements = function (t) { var e = this.getItems(t); this.reveal(e) }, c.hideItemElements = function (t) { var e = this.getItems(t); this.hide(e) }, c.getItem = function (t) { for (var e = 0; e < this.items.length; e++) { var i = this.items[e]; if (i.element == t) return i } }, c.getItems = function (t) { t = o.makeArray(t); var e = []; return t.forEach(function (t) { var i = this.getItem(t); i && e.push(i) }, this), e }, c.remove = function (t) { var e = this.getItems(t); this._emitCompleteOnItems(\"remove\", e), e && e.length && e.forEach(function (t) { t.remove(), o.removeFrom(this.items, t) }, this) }, c.destroy = function () { var t = this.element.style; t.height = \"\", t.position = \"\", t.width = \"\", this.items.forEach(function (t) { t.destroy() }), this.unbindResize(); var e = this.element.outlayerGUID; delete f[e], delete this.element.outlayerGUID, h && h.removeData(this.element, this.constructor.namespace) }, s.data = function (t) { t = o.getQueryElement(t); var e = t && t.outlayerGUID; return e && f[e] }, s.create = function (t, e) { var i = r(s); return i.defaults = o.extend({}, s.defaults), o.extend(i.defaults, e), i.compatOptions = o.extend({}, s.compatOptions), i.namespace = t, i.data = s.data, i.Item = r(n), o.htmlInit(i, t), h && h.bridget && h.bridget(t, i), i }; var m = { ms: 1, s: 1e3 }; return s.Item = n, s }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"isotope-layout/js/item\", [\"outlayer/outlayer\"], e) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"outlayer\")) : (t.Isotope = t.Isotope || {}, t.Isotope.Item = e(t.Outlayer)) }(window, function (t) { \"use strict\"; function e() { t.Item.apply(this, arguments) } var i = e.prototype = Object.create(t.Item.prototype), o = i._create; i._create = function () { this.id = this.layout.itemGUID++ , o.call(this), this.sortData = {} }, i.updateSortData = function () { if (!this.isIgnored) { this.sortData.id = this.id, this.sortData[\"original-order\"] = this.id, this.sortData.random = Math.random(); var t = this.layout.options.getSortData, e = this.layout._sorters; for (var i in t) { var o = e[i]; this.sortData[i] = o(this.element, this) } } }; var n = i.destroy; return i.destroy = function () { n.apply(this, arguments), this.css({ display: \"\" }) }, e }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"isotope-layout/js/layout-mode\", [\"get-size/get-size\", \"outlayer/outlayer\"], e) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"get-size\"), require(\"outlayer\")) : (t.Isotope = t.Isotope || {}, t.Isotope.LayoutMode = e(t.getSize, t.Outlayer)) }(window, function (t, e) { \"use strict\"; function i(t) { this.isotope = t, t && (this.options = t.options[this.namespace], this.element = t.element, this.items = t.filteredItems, this.size = t.size) } var o = i.prototype, n = [\"_resetLayout\", \"_getItemLayoutPosition\", \"_manageStamp\", \"_getContainerSize\", \"_getElementOffset\", \"needsResizeLayout\", \"_getOption\"]; return n.forEach(function (t) { o[t] = function () { return e.prototype[t].apply(this.isotope, arguments) } }), o.needsVerticalResizeLayout = function () { var e = t(this.isotope.element), i = this.isotope.size && e; return i && e.innerHeight != this.isotope.size.innerHeight }, o._getMeasurement = function () { this.isotope._getMeasurement.apply(this, arguments) }, o.getColumnWidth = function () { this.getSegmentSize(\"column\", \"Width\") }, o.getRowHeight = function () { this.getSegmentSize(\"row\", \"Height\") }, o.getSegmentSize = function (t, e) { var i = t + e, o = \"outer\" + e; if (this._getMeasurement(i, o), !this[i]) { var n = this.getFirstItemSize(); this[i] = n && n[o] || this.isotope.size[\"inner\" + e] } }, o.getFirstItemSize = function () { var e = this.isotope.filteredItems[0]; return e && e.element && t(e.element) }, o.layout = function () { this.isotope.layout.apply(this.isotope, arguments) }, o.getSize = function () { this.isotope.getSize(), this.size = this.isotope.size }, i.modes = {}, i.create = function (t, e) { function n() { i.apply(this, arguments) } return n.prototype = Object.create(o), n.prototype.constructor = n, e && (n.options = e), n.prototype.namespace = t, i.modes[t] = n, n }, i }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"masonry-layout/masonry\", [\"outlayer/outlayer\", \"get-size/get-size\"], e) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"outlayer\"), require(\"get-size\")) : t.Masonry = e(t.Outlayer, t.getSize) }(window, function (t, e) { var i = t.create(\"masonry\"); i.compatOptions.fitWidth = \"isFitWidth\"; var o = i.prototype; return o._resetLayout = function () { this.getSize(), this._getMeasurement(\"columnWidth\", \"outerWidth\"), this._getMeasurement(\"gutter\", \"outerWidth\"), this.measureColumns(), this.colYs = []; for (var t = 0; t < this.cols; t++)this.colYs.push(0); this.maxY = 0, this.horizontalColIndex = 0 }, o.measureColumns = function () { if (this.getContainerWidth(), !this.columnWidth) { var t = this.items[0], i = t && t.element; this.columnWidth = i && e(i).outerWidth || this.containerWidth } var o = this.columnWidth += this.gutter, n = this.containerWidth + this.gutter, s = n / o, r = o - n % o, a = r && r < 1 ? \"round\" : \"floor\"; s = Math[a](s), this.cols = Math.max(s, 1) }, o.getContainerWidth = function () { var t = this._getOption(\"fitWidth\"), i = t ? this.element.parentNode : this.element, o = e(i); this.containerWidth = o && o.innerWidth }, o._getItemLayoutPosition = function (t) { t.getSize(); var e = t.size.outerWidth % this.columnWidth, i = e && e < 1 ? \"round\" : \"ceil\", o = Math[i](t.size.outerWidth / this.columnWidth); o = Math.min(o, this.cols); for (var n = this.options.horizontalOrder ? \"_getHorizontalColPosition\" : \"_getTopColPosition\", s = this[n](o, t), r = { x: this.columnWidth * s.col, y: s.y }, a = s.y + t.size.outerHeight, u = o + s.col, h = s.col; h < u; h++)this.colYs[h] = a; return r }, o._getTopColPosition = function (t) { var e = this._getTopColGroup(t), i = Math.min.apply(Math, e); return { col: e.indexOf(i), y: i } }, o._getTopColGroup = function (t) { if (t < 2) return this.colYs; for (var e = [], i = this.cols + 1 - t, o = 0; o < i; o++)e[o] = this._getColGroupY(o, t); return e }, o._getColGroupY = function (t, e) { if (e < 2) return this.colYs[t]; var i = this.colYs.slice(t, t + e); return Math.max.apply(Math, i) }, o._getHorizontalColPosition = function (t, e) { var i = this.horizontalColIndex % this.cols, o = t > 1 && i + t > this.cols; i = o ? 0 : i; var n = e.size.outerWidth && e.size.outerHeight; return this.horizontalColIndex = n ? i + t : this.horizontalColIndex, { col: i, y: this._getColGroupY(i, t) } }, o._manageStamp = function (t) { var i = e(t), o = this._getElementOffset(t), n = this._getOption(\"originLeft\"), s = n ? o.left : o.right, r = s + i.outerWidth, a = Math.floor(s / this.columnWidth); a = Math.max(0, a); var u = Math.floor(r / this.columnWidth); u -= r % this.columnWidth ? 0 : 1, u = Math.min(this.cols - 1, u); for (var h = this._getOption(\"originTop\"), d = (h ? o.top : o.bottom) + i.outerHeight, l = a; l <= u; l++)this.colYs[l] = Math.max(d, this.colYs[l]) }, o._getContainerSize = function () { this.maxY = Math.max.apply(Math, this.colYs); var t = { height: this.maxY }; return this._getOption(\"fitWidth\") && (t.width = this._getContainerFitWidth()), t }, o._getContainerFitWidth = function () { for (var t = 0, e = this.cols; --e && 0 === this.colYs[e];)t++; return (this.cols - t) * this.columnWidth - this.gutter }, o.needsResizeLayout = function () { var t = this.containerWidth; return this.getContainerWidth(), t != this.containerWidth }, i }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"isotope-layout/js/layout-modes/masonry\", [\"../layout-mode\", \"masonry-layout/masonry\"], e) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"../layout-mode\"), require(\"masonry-layout\")) : e(t.Isotope.LayoutMode, t.Masonry) }(window, function (t, e) { \"use strict\"; var i = t.create(\"masonry\"), o = i.prototype, n = { _getElementOffset: !0, layout: !0, _getMeasurement: !0 }; for (var s in e.prototype) n[s] || (o[s] = e.prototype[s]); var r = o.measureColumns; o.measureColumns = function () { this.items = this.isotope.filteredItems, r.call(this) }; var a = o._getOption; return o._getOption = function (t) { return \"fitWidth\" == t ? void 0 !== this.options.isFitWidth ? this.options.isFitWidth : this.options.fitWidth : a.apply(this.isotope, arguments) }, i }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"isotope-layout/js/layout-modes/fit-rows\", [\"../layout-mode\"], e) : \"object\" == typeof exports ? module.exports = e(require(\"../layout-mode\")) : e(t.Isotope.LayoutMode) }(window, function (t) { \"use strict\"; var e = t.create(\"fitRows\"), i = e.prototype; return i._resetLayout = function () { this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement(\"gutter\", \"outerWidth\") }, i._getItemLayoutPosition = function (t) { t.getSize(); var e = t.size.outerWidth + this.gutter, i = this.isotope.size.innerWidth + this.gutter; 0 !== this.x && e + this.x > i && (this.x = 0, this.y = this.maxY); var o = { x: this.x, y: this.y }; return this.maxY = Math.max(this.maxY, this.y + t.size.outerHeight), this.x += e, o }, i._getContainerSize = function () { return { height: this.maxY } }, e }), function (t, e) { \"function\" == typeof define && define.amd ? define(\"isotope-layout/js/layout-modes/vertical\", [\"../layout-mode\"], e) : \"object\" == typeof module && module.exports ? module.exports = e(require(\"../layout-mode\")) : e(t.Isotope.LayoutMode) }(window, function (t) { \"use strict\"; var e = t.create(\"vertical\", { horizontalAlignment: 0 }), i = e.prototype; return i._resetLayout = function () { this.y = 0 }, i._getItemLayoutPosition = function (t) { t.getSize(); var e = (this.isotope.size.innerWidth - t.size.outerWidth) * this.options.horizontalAlignment, i = this.y; return this.y += t.size.outerHeight, { x: e, y: i } }, i._getContainerSize = function () { return { height: this.y } }, e }), function (t, e) { \"function\" == typeof define && define.amd ? define([\"outlayer/outlayer\", \"get-size/get-size\", \"desandro-matches-selector/matches-selector\", \"fizzy-ui-utils/utils\", \"isotope-layout/js/item\", \"isotope-layout/js/layout-mode\", \"isotope-layout/js/layout-modes/masonry\", \"isotope-layout/js/layout-modes/fit-rows\", \"isotope-layout/js/layout-modes/vertical\"], function (i, o, n, s, r, a) { return e(t, i, o, n, s, r, a) }) : \"object\" == typeof module && module.exports ? module.exports = e(t, require(\"outlayer\"), require(\"get-size\"), require(\"desandro-matches-selector\"), require(\"fizzy-ui-utils\"), require(\"isotope-layout/js/item\"), require(\"isotope-layout/js/layout-mode\"), require(\"isotope-layout/js/layout-modes/masonry\"), require(\"isotope-layout/js/layout-modes/fit-rows\"), require(\"isotope-layout/js/layout-modes/vertical\")) : t.Isotope = e(t, t.Outlayer, t.getSize, t.matchesSelector, t.fizzyUIUtils, t.Isotope.Item, t.Isotope.LayoutMode) }(window, function (t, e, i, o, n, s, r) {\r\n function a(t, e) { return function (i, o) { for (var n = 0; n < t.length; n++) { var s = t[n], r = i.sortData[s], a = o.sortData[s]; if (r > a || r < a) { var u = void 0 !== e[s] ? e[s] : e, h = u ? 1 : -1; return (r > a ? 1 : -1) * h } } return 0 } } var u = t.jQuery, h = String.prototype.trim ? function (t) { return t.trim() } : function (t) { return t.replace(/^\\s+|\\s+$/g, \"\") }, d = e.create(\"isotope\", { layoutMode: \"masonry\", isJQueryFiltering: !0, sortAscending: !0 }); d.Item = s, d.LayoutMode = r; var l = d.prototype; l._create = function () { this.itemGUID = 0, this._sorters = {}, this._getSorters(), e.prototype._create.call(this), this.modes = {}, this.filteredItems = this.items, this.sortHistory = [\"original-order\"]; for (var t in r.modes) this._initLayoutMode(t) }, l.reloadItems = function () { this.itemGUID = 0, e.prototype.reloadItems.call(this) }, l._itemize = function () { for (var t = e.prototype._itemize.apply(this, arguments), i = 0; i < t.length; i++) { var o = t[i]; o.id = this.itemGUID++ } return this._updateItemsSortData(t), t }, l._initLayoutMode = function (t) { var e = r.modes[t], i = this.options[t] || {}; this.options[t] = e.options ? n.extend(e.options, i) : i, this.modes[t] = new e(this) }, l.layout = function () { return !this._isLayoutInited && this._getOption(\"initLayout\") ? void this.arrange() : void this._layout() }, l._layout = function () { var t = this._getIsInstant(); this._resetLayout(), this._manageStamps(), this.layoutItems(this.filteredItems, t), this._isLayoutInited = !0 }, l.arrange = function (t) { this.option(t), this._getIsInstant(); var e = this._filter(this.items); this.filteredItems = e.matches, this._bindArrangeComplete(), this._isInstant ? this._noTransition(this._hideReveal, [e]) : this._hideReveal(e), this._sort(), this._layout() }, l._init = l.arrange, l._hideReveal = function (t) { this.reveal(t.needReveal), this.hide(t.needHide) }, l._getIsInstant = function () { var t = this._getOption(\"layoutInstant\"), e = void 0 !== t ? t : !this._isLayoutInited; return this._isInstant = e, e }, l._bindArrangeComplete = function () { function t() { e && i && o && n.dispatchEvent(\"arrangeComplete\", null, [n.filteredItems]) } var e, i, o, n = this; this.once(\"layoutComplete\", function () { e = !0, t() }), this.once(\"hideComplete\", function () { i = !0, t() }), this.once(\"revealComplete\", function () { o = !0, t() }) }, l._filter = function (t) { var e = this.options.filter; e = e || \"*\"; for (var i = [], o = [], n = [], s = this._getFilterTest(e), r = 0; r < t.length; r++) { var a = t[r]; if (!a.isIgnored) { var u = s(a); u && i.push(a), u && a.isHidden ? o.push(a) : u || a.isHidden || n.push(a) } } return { matches: i, needReveal: o, needHide: n } }, l._getFilterTest = function (t) {\r\n return u && this.options.isJQueryFiltering ? function (e) { return u(e.element).is(t) } : \"function\" == typeof t ? function (e) { return t(e.element) } : function (e) { return o(e.element, t) }\r\n }, l.updateSortData = function (t) { var e; t ? (t = n.makeArray(t), e = this.getItems(t)) : e = this.items, this._getSorters(), this._updateItemsSortData(e) }, l._getSorters = function () { var t = this.options.getSortData; for (var e in t) { var i = t[e]; this._sorters[e] = f(i) } }, l._updateItemsSortData = function (t) { for (var e = t && t.length, i = 0; e && i < e; i++) { var o = t[i]; o.updateSortData() } }; var f = function () { function t(t) { if (\"string\" != typeof t) return t; var i = h(t).split(\" \"), o = i[0], n = o.match(/^\\[(.+)\\]$/), s = n && n[1], r = e(s, o), a = d.sortDataParsers[i[1]]; return t = a ? function (t) { return t && a(r(t)) } : function (t) { return t && r(t) } } function e(t, e) { return t ? function (e) { return e.getAttribute(t) } : function (t) { var i = t.querySelector(e); return i && i.textContent } } return t }(); d.sortDataParsers = { parseInt: function (t) { return parseInt(t, 10) }, parseFloat: function (t) { return parseFloat(t) } }, l._sort = function () { if (this.options.sortBy) { var t = n.makeArray(this.options.sortBy); this._getIsSameSortBy(t) || (this.sortHistory = t.concat(this.sortHistory)); var e = a(this.sortHistory, this.options.sortAscending); this.filteredItems.sort(e) } }, l._getIsSameSortBy = function (t) { for (var e = 0; e < t.length; e++)if (t[e] != this.sortHistory[e]) return !1; return !0 }, l._mode = function () { var t = this.options.layoutMode, e = this.modes[t]; if (!e) throw new Error(\"No layout mode: \" + t); return e.options = this.options[t], e }, l._resetLayout = function () { e.prototype._resetLayout.call(this), this._mode()._resetLayout() }, l._getItemLayoutPosition = function (t) { return this._mode()._getItemLayoutPosition(t) }, l._manageStamp = function (t) { this._mode()._manageStamp(t) }, l._getContainerSize = function () { return this._mode()._getContainerSize() }, l.needsResizeLayout = function () { return this._mode().needsResizeLayout() }, l.appended = function (t) { var e = this.addItems(t); if (e.length) { var i = this._filterRevealAdded(e); this.filteredItems = this.filteredItems.concat(i) } }, l.prepended = function (t) { var e = this._itemize(t); if (e.length) { this._resetLayout(), this._manageStamps(); var i = this._filterRevealAdded(e); this.layoutItems(this.filteredItems), this.filteredItems = i.concat(this.filteredItems), this.items = e.concat(this.items) } }, l._filterRevealAdded = function (t) { var e = this._filter(t); return this.hide(e.needHide), this.reveal(e.matches), this.layoutItems(e.matches, !0), e.matches }, l.insert = function (t) { var e = this.addItems(t); if (e.length) { var i, o, n = e.length; for (i = 0; i < n; i++)o = e[i], this.element.appendChild(o.element); var s = this._filter(e).matches; for (i = 0; i < n; i++)e[i].isLayoutInstant = !0; for (this.arrange(), i = 0; i < n; i++)delete e[i].isLayoutInstant; this.reveal(s) } }; var c = l.remove; return l.remove = function (t) { t = n.makeArray(t); var e = this.getItems(t); c.call(this, t); for (var i = e && e.length, o = 0; i && o < i; o++) { var s = e[o]; n.removeFrom(this.filteredItems, s) } }, l.shuffle = function () { for (var t = 0; t < this.items.length; t++) { var e = this.items[t]; e.sortData.random = Math.random() } this.options.sortBy = \"random\", this._sort(), this._layout() }, l._noTransition = function (t, e) { var i = this.options.transitionDuration; this.options.transitionDuration = 0; var o = t.apply(this, e); return this.options.transitionDuration = i, o }, l.getFilteredItemElements = function () { return this.filteredItems.map(function (t) { return t.element }) }, d\r\n});","/*! X-editable - v1.5.1 \r\n* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery\r\n* http://github.com/vitalets/x-editable\r\n* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */\r\n/**\r\nForm with single input element, two buttons and two states: normal/loading.\r\nApplied as jQuery method to DIV tag (not to form tag!). This is because form can be in loading state when spinner shown.\r\nEditableform is linked with one of input types, e.g. 'text', 'select' etc.\r\n\r\n@class editableform\r\n@uses text\r\n@uses textarea\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n \r\n var EditableForm = function (div, options) {\r\n this.options = $.extend({}, $.fn.editableform.defaults, options);\r\n this.$div = $(div); //div, containing form. Not form tag. Not editable-element.\r\n if(!this.options.scope) {\r\n this.options.scope = this;\r\n }\r\n //nothing shown after init\r\n };\r\n\r\n EditableForm.prototype = {\r\n constructor: EditableForm,\r\n initInput: function() { //called once\r\n //take input from options (as it is created in editable-element)\r\n this.input = this.options.input;\r\n \r\n //set initial value\r\n //todo: may be add check: typeof str === 'string' ? \r\n this.value = this.input.str2value(this.options.value); \r\n \r\n //prerender: get input.$input\r\n this.input.prerender();\r\n },\r\n initTemplate: function() {\r\n this.$form = $($.fn.editableform.template); \r\n },\r\n initButtons: function() {\r\n var $btn = this.$form.find('.editable-buttons');\r\n $btn.append($.fn.editableform.buttons);\r\n if(this.options.showbuttons === 'bottom') {\r\n $btn.addClass('editable-buttons-bottom');\r\n }\r\n },\r\n /**\r\n Renders editableform\r\n\r\n @method render\r\n **/ \r\n render: function() {\r\n //init loader\r\n this.$loading = $($.fn.editableform.loading); \r\n this.$div.empty().append(this.$loading);\r\n \r\n //init form template and buttons\r\n this.initTemplate();\r\n if(this.options.showbuttons) {\r\n this.initButtons();\r\n } else {\r\n this.$form.find('.editable-buttons').remove();\r\n }\r\n\r\n //show loading state\r\n this.showLoading(); \r\n \r\n //flag showing is form now saving value to server. \r\n //It is needed to wait when closing form.\r\n this.isSaving = false;\r\n \r\n /** \r\n Fired when rendering starts\r\n @event rendering \r\n @param {Object} event event object\r\n **/ \r\n this.$div.triggerHandler('rendering');\r\n \r\n //init input\r\n this.initInput();\r\n \r\n //append input to form\r\n this.$form.find('div.editable-input').append(this.input.$tpl); \r\n \r\n //append form to container\r\n this.$div.append(this.$form);\r\n \r\n //render input\r\n $.when(this.input.render())\r\n .then($.proxy(function () {\r\n //setup input to submit automatically when no buttons shown\r\n if(!this.options.showbuttons) {\r\n this.input.autosubmit(); \r\n }\r\n \r\n //attach 'cancel' handler\r\n this.$form.find('.editable-cancel').click($.proxy(this.cancel, this));\r\n \r\n if(this.input.error) {\r\n this.error(this.input.error);\r\n this.$form.find('.editable-submit').attr('disabled', true);\r\n this.input.$input.attr('disabled', true);\r\n //prevent form from submitting\r\n this.$form.submit(function(e){ e.preventDefault(); });\r\n } else {\r\n this.error(false);\r\n this.input.$input.removeAttr('disabled');\r\n this.$form.find('.editable-submit').removeAttr('disabled');\r\n var value = (this.value === null || this.value === undefined || this.value === '') ? this.options.defaultValue : this.value;\r\n this.input.value2input(value);\r\n //attach submit handler\r\n this.$form.submit($.proxy(this.submit, this));\r\n }\r\n\r\n /** \r\n Fired when form is rendered\r\n @event rendered\r\n @param {Object} event event object\r\n **/ \r\n this.$div.triggerHandler('rendered'); \r\n\r\n this.showForm();\r\n \r\n //call postrender method to perform actions required visibility of form\r\n if(this.input.postrender) {\r\n this.input.postrender();\r\n } \r\n }, this));\r\n },\r\n cancel: function() { \r\n /** \r\n Fired when form was cancelled by user\r\n @event cancel \r\n @param {Object} event event object\r\n **/ \r\n this.$div.triggerHandler('cancel');\r\n },\r\n showLoading: function() {\r\n var w, h;\r\n if(this.$form) {\r\n //set loading size equal to form\r\n w = this.$form.outerWidth();\r\n h = this.$form.outerHeight(); \r\n if(w) {\r\n this.$loading.width(w);\r\n }\r\n if(h) {\r\n this.$loading.height(h);\r\n }\r\n this.$form.hide();\r\n } else {\r\n //stretch loading to fill container width\r\n w = this.$loading.parent().width();\r\n if(w) {\r\n this.$loading.width(w);\r\n }\r\n }\r\n this.$loading.show(); \r\n },\r\n\r\n showForm: function(activate) {\r\n this.$loading.hide();\r\n this.$form.show();\r\n if(activate !== false) {\r\n this.input.activate(); \r\n }\r\n /** \r\n Fired when form is shown\r\n @event show \r\n @param {Object} event event object\r\n **/ \r\n this.$div.triggerHandler('show');\r\n },\r\n\r\n error: function(msg) {\r\n var $group = this.$form.find('.control-group'),\r\n $block = this.$form.find('.editable-error-block'),\r\n lines;\r\n\r\n if(msg === false) {\r\n $group.removeClass($.fn.editableform.errorGroupClass);\r\n $block.removeClass($.fn.editableform.errorBlockClass).empty().hide(); \r\n } else {\r\n //convert newline to
    for more pretty error display\r\n if(msg) {\r\n lines = (''+msg).split('\\n');\r\n for (var i = 0; i < lines.length; i++) {\r\n lines[i] = $('
    ').text(lines[i]).html();\r\n }\r\n msg = lines.join('
    ');\r\n }\r\n $group.addClass($.fn.editableform.errorGroupClass);\r\n $block.addClass($.fn.editableform.errorBlockClass).html(msg).show();\r\n }\r\n },\r\n\r\n submit: function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n \r\n //get new value from input\r\n var newValue = this.input.input2value(); \r\n\r\n //validation: if validate returns string or truthy value - means error\r\n //if returns object like {newValue: '...'} => submitted value is reassigned to it\r\n var error = this.validate(newValue);\r\n if ($.type(error) === 'object' && error.newValue !== undefined) {\r\n newValue = error.newValue;\r\n this.input.value2input(newValue);\r\n if(typeof error.msg === 'string') {\r\n this.error(error.msg);\r\n this.showForm();\r\n return;\r\n }\r\n } else if (error) {\r\n this.error(error);\r\n this.showForm();\r\n return;\r\n } \r\n \r\n //if value not changed --> trigger 'nochange' event and return\r\n /*jslint eqeq: true*/\r\n if (!this.options.savenochange && this.input.value2str(newValue) == this.input.value2str(this.value)) {\r\n /*jslint eqeq: false*/ \r\n /** \r\n Fired when value not changed but form is submitted. Requires savenochange = false.\r\n @event nochange \r\n @param {Object} event event object\r\n **/ \r\n this.$div.triggerHandler('nochange'); \r\n return;\r\n } \r\n\r\n //convert value for submitting to server\r\n var submitValue = this.input.value2submit(newValue);\r\n \r\n this.isSaving = true;\r\n \r\n //sending data to server\r\n $.when(this.save(submitValue))\r\n .done($.proxy(function(response) {\r\n this.isSaving = false;\r\n\r\n //run success callback\r\n var res = typeof this.options.success === 'function' ? this.options.success.call(this.options.scope, response, newValue) : null;\r\n\r\n //if success callback returns false --> keep form open and do not activate input\r\n if(res === false) {\r\n this.error(false);\r\n this.showForm(false);\r\n return;\r\n }\r\n\r\n //if success callback returns string --> keep form open, show error and activate input \r\n if(typeof res === 'string') {\r\n this.error(res);\r\n this.showForm();\r\n return;\r\n }\r\n\r\n //if success callback returns object like {newValue: } --> use that value instead of submitted\r\n //it is usefull if you want to chnage value in url-function\r\n if(res && typeof res === 'object' && res.hasOwnProperty('newValue')) {\r\n newValue = res.newValue;\r\n }\r\n\r\n //clear error message\r\n this.error(false); \r\n this.value = newValue;\r\n /** \r\n Fired when form is submitted\r\n @event save \r\n @param {Object} event event object\r\n @param {Object} params additional params\r\n @param {mixed} params.newValue raw new value\r\n @param {mixed} params.submitValue submitted value as string\r\n @param {Object} params.response ajax response\r\n\r\n @example\r\n $('#form-div').on('save'), function(e, params){\r\n if(params.newValue === 'username') {...}\r\n });\r\n **/\r\n this.$div.triggerHandler('save', {newValue: newValue, submitValue: submitValue, response: response});\r\n }, this))\r\n .fail($.proxy(function(xhr) {\r\n this.isSaving = false;\r\n\r\n var msg;\r\n if(typeof this.options.error === 'function') {\r\n msg = this.options.error.call(this.options.scope, xhr, newValue);\r\n } else {\r\n msg = typeof xhr === 'string' ? xhr : xhr.responseText || xhr.statusText || 'Unknown error!';\r\n }\r\n\r\n this.error(msg);\r\n this.showForm();\r\n }, this));\r\n },\r\n\r\n save: function(submitValue) {\r\n //try parse composite pk defined as json string in data-pk \r\n this.options.pk = $.fn.editableutils.tryParseJson(this.options.pk, true); \r\n \r\n var pk = (typeof this.options.pk === 'function') ? this.options.pk.call(this.options.scope) : this.options.pk,\r\n /*\r\n send on server in following cases:\r\n 1. url is function\r\n 2. url is string AND (pk defined OR send option = always) \r\n */\r\n send = !!(typeof this.options.url === 'function' || (this.options.url && ((this.options.send === 'always') || (this.options.send === 'auto' && pk !== null && pk !== undefined)))),\r\n params;\r\n\r\n if (send) { //send to server\r\n this.showLoading();\r\n\r\n //standard params\r\n params = {\r\n name: this.options.name || '',\r\n value: submitValue,\r\n pk: pk \r\n };\r\n\r\n //additional params\r\n if(typeof this.options.params === 'function') {\r\n params = this.options.params.call(this.options.scope, params); \r\n } else {\r\n //try parse json in single quotes (from data-params attribute)\r\n this.options.params = $.fn.editableutils.tryParseJson(this.options.params, true); \r\n $.extend(params, this.options.params);\r\n }\r\n\r\n if(typeof this.options.url === 'function') { //user's function\r\n return this.options.url.call(this.options.scope, params);\r\n } else { \r\n //send ajax to server and return deferred object\r\n return $.ajax($.extend({\r\n url : this.options.url,\r\n data : params,\r\n type : 'POST'\r\n }, this.options.ajaxOptions));\r\n }\r\n }\r\n }, \r\n\r\n validate: function (value) {\r\n if (value === undefined) {\r\n value = this.value;\r\n }\r\n if (typeof this.options.validate === 'function') {\r\n return this.options.validate.call(this.options.scope, value);\r\n }\r\n },\r\n\r\n option: function(key, value) {\r\n if(key in this.options) {\r\n this.options[key] = value;\r\n }\r\n \r\n if(key === 'value') {\r\n this.setValue(value);\r\n }\r\n \r\n //do not pass option to input as it is passed in editable-element\r\n },\r\n\r\n setValue: function(value, convertStr) {\r\n if(convertStr) {\r\n this.value = this.input.str2value(value);\r\n } else {\r\n this.value = value;\r\n }\r\n \r\n //if form is visible, update input\r\n if(this.$form && this.$form.is(':visible')) {\r\n this.input.value2input(this.value);\r\n } \r\n } \r\n };\r\n\r\n /*\r\n Initialize editableform. Applied to jQuery object.\r\n\r\n @method $().editableform(options)\r\n @params {Object} options\r\n @example\r\n var $form = $('<div>').editableform({\r\n type: 'text',\r\n name: 'username',\r\n url: '/post',\r\n value: 'vitaliy'\r\n });\r\n\r\n //to display form you should call 'render' method\r\n $form.editableform('render'); \r\n */\r\n $.fn.editableform = function (option) {\r\n var args = arguments;\r\n return this.each(function () {\r\n var $this = $(this), \r\n data = $this.data('editableform'), \r\n options = typeof option === 'object' && option; \r\n if (!data) {\r\n $this.data('editableform', (data = new EditableForm(this, options)));\r\n }\r\n\r\n if (typeof option === 'string') { //call method \r\n data[option].apply(data, Array.prototype.slice.call(args, 1));\r\n } \r\n });\r\n };\r\n\r\n //keep link to constructor to allow inheritance\r\n $.fn.editableform.Constructor = EditableForm; \r\n\r\n //defaults\r\n $.fn.editableform.defaults = {\r\n /* see also defaults for input */\r\n\r\n /**\r\n Type of input. Can be text|textarea|select|date|checklist\r\n\r\n @property type \r\n @type string\r\n @default 'text'\r\n **/\r\n type: 'text',\r\n /**\r\n Url for submit, e.g. '/post' \r\n If function - it will be called instead of ajax. Function should return deferred object to run fail/done callbacks.\r\n\r\n @property url \r\n @type string|function\r\n @default null\r\n @example\r\n url: function(params) {\r\n var d = new $.Deferred;\r\n if(params.value === 'abc') {\r\n return d.reject('error message'); //returning error via deferred object\r\n } else {\r\n //async saving data in js model\r\n someModel.asyncSaveMethod({\r\n ..., \r\n success: function(){\r\n d.resolve();\r\n }\r\n }); \r\n return d.promise();\r\n }\r\n } \r\n **/ \r\n url:null,\r\n /**\r\n Additional params for submit. If defined as object - it is **appended** to original ajax data (pk, name and value). \r\n If defined as function - returned object **overwrites** original ajax data.\r\n @example\r\n params: function(params) {\r\n //originally params contain pk, name and value\r\n params.a = 1;\r\n return params;\r\n }\r\n\r\n @property params \r\n @type object|function\r\n @default null\r\n **/ \r\n params:null,\r\n /**\r\n Name of field. Will be submitted on server. Can be taken from id attribute\r\n\r\n @property name \r\n @type string\r\n @default null\r\n **/ \r\n name: null,\r\n /**\r\n Primary key of editable object (e.g. record id in database). For composite keys use object, e.g. {id: 1, lang: 'en'}.\r\n Can be calculated dynamically via function.\r\n\r\n @property pk \r\n @type string|object|function\r\n @default null\r\n **/ \r\n pk: null,\r\n /**\r\n Initial value. If not defined - will be taken from element's content.\r\n For __select__ type should be defined (as it is ID of shown text).\r\n\r\n @property value \r\n @type string|object\r\n @default null\r\n **/ \r\n value: null,\r\n /**\r\n Value that will be displayed in input if original field value is empty (`null|undefined|''`).\r\n\r\n @property defaultValue \r\n @type string|object\r\n @default null\r\n @since 1.4.6\r\n **/ \r\n defaultValue: null,\r\n /**\r\n Strategy for sending data on server. Can be `auto|always|never`.\r\n When 'auto' data will be sent on server **only if pk and url defined**, otherwise new value will be stored locally.\r\n\r\n @property send \r\n @type string\r\n @default 'auto'\r\n **/ \r\n send: 'auto', \r\n /**\r\n Function for client-side validation. If returns string - means validation not passed and string showed as error.\r\n Since 1.5.1 you can modify submitted value by returning object from `validate`: \r\n `{newValue: '...'}` or `{newValue: '...', msg: '...'}`\r\n\r\n @property validate \r\n @type function\r\n @default null\r\n @example\r\n validate: function(value) {\r\n if($.trim(value) == '') {\r\n return 'This field is required';\r\n }\r\n }\r\n **/ \r\n validate: null,\r\n /**\r\n Success callback. Called when value successfully sent on server and **response status = 200**. \r\n Usefull to work with json response. For example, if your backend response can be {success: true}\r\n or {success: false, msg: \"server error\"} you can check it inside this callback. \r\n If it returns **string** - means error occured and string is shown as error message. \r\n If it returns **object like** {newValue: <something>} - it overwrites value, submitted by user. \r\n Otherwise newValue simply rendered into element.\r\n \r\n @property success \r\n @type function\r\n @default null\r\n @example\r\n success: function(response, newValue) {\r\n if(!response.success) return response.msg;\r\n }\r\n **/ \r\n success: null,\r\n /**\r\n Error callback. Called when request failed (response status != 200). \r\n Usefull when you want to parse error response and display a custom message.\r\n Must return **string** - the message to be displayed in the error block.\r\n \r\n @property error \r\n @type function\r\n @default null\r\n @since 1.4.4\r\n @example\r\n error: function(response, newValue) {\r\n if(response.status === 500) {\r\n return 'Service unavailable. Please try later.';\r\n } else {\r\n return response.responseText;\r\n }\r\n }\r\n **/ \r\n error: null,\r\n /**\r\n Additional options for submit ajax request.\r\n List of values: http://api.jquery.com/jQuery.ajax\r\n \r\n @property ajaxOptions \r\n @type object\r\n @default null\r\n @since 1.1.1 \r\n @example \r\n ajaxOptions: {\r\n type: 'put',\r\n dataType: 'json'\r\n } \r\n **/ \r\n ajaxOptions: null,\r\n /**\r\n Where to show buttons: left(true)|bottom|false \r\n Form without buttons is auto-submitted.\r\n\r\n @property showbuttons \r\n @type boolean|string\r\n @default true\r\n @since 1.1.1\r\n **/ \r\n showbuttons: true,\r\n /**\r\n Scope for callback methods (success, validate). \r\n If null means editableform instance itself. \r\n\r\n @property scope \r\n @type DOMElement|object\r\n @default null\r\n @since 1.2.0\r\n @private\r\n **/ \r\n scope: null,\r\n /**\r\n Whether to save or cancel value when it was not changed but form was submitted\r\n\r\n @property savenochange \r\n @type boolean\r\n @default false\r\n @since 1.2.0\r\n **/\r\n savenochange: false\r\n }; \r\n\r\n /*\r\n Note: following params could redefined in engine: bootstrap or jqueryui:\r\n Classes 'control-group' and 'editable-error-block' must always present!\r\n */ \r\n $.fn.editableform.template = '
    '+\r\n '
    ' + \r\n '
    '+\r\n '
    ' + \r\n '
    ' + \r\n '
    ';\r\n\r\n //loading div\r\n $.fn.editableform.loading = '
    ';\r\n\r\n //buttons\r\n $.fn.editableform.buttons = ''+\r\n ''; \r\n\r\n //error class attached to control-group\r\n $.fn.editableform.errorGroupClass = null; \r\n\r\n //error class attached to editable-error-block\r\n $.fn.editableform.errorBlockClass = 'editable-error';\r\n \r\n //engine\r\n $.fn.editableform.engine = 'jquery';\r\n}(window.jQuery));\r\n\r\n/**\r\n* EditableForm utilites\r\n*/\r\n(function ($) {\r\n \"use strict\";\r\n \r\n //utils\r\n $.fn.editableutils = {\r\n /**\r\n * classic JS inheritance function\r\n */ \r\n inherit: function (Child, Parent) {\r\n var F = function() { };\r\n F.prototype = Parent.prototype;\r\n Child.prototype = new F();\r\n Child.prototype.constructor = Child;\r\n Child.superclass = Parent.prototype;\r\n },\r\n\r\n /**\r\n * set caret position in input\r\n * see http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area\r\n */ \r\n setCursorPosition: function(elem, pos) {\r\n if (elem.setSelectionRange) {\r\n elem.setSelectionRange(pos, pos);\r\n } else if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n },\r\n\r\n /**\r\n * function to parse JSON in *single* quotes. (jquery automatically parse only double quotes)\r\n * That allows such code as: \r\n * safe = true --> means no exception will be thrown\r\n * for details see http://stackoverflow.com/questions/7410348/how-to-set-json-format-to-html5-data-attributes-in-the-jquery\r\n */\r\n tryParseJson: function(s, safe) {\r\n if (typeof s === 'string' && s.length && s.match(/^[\\{\\[].*[\\}\\]]$/)) {\r\n if (safe) {\r\n try {\r\n /*jslint evil: true*/\r\n s = (new Function('return ' + s))();\r\n /*jslint evil: false*/\r\n } catch (e) {} finally {\r\n return s;\r\n }\r\n } else {\r\n /*jslint evil: true*/\r\n s = (new Function('return ' + s))();\r\n /*jslint evil: false*/\r\n }\r\n }\r\n return s;\r\n },\r\n\r\n /**\r\n * slice object by specified keys\r\n */\r\n sliceObj: function(obj, keys, caseSensitive /* default: false */) {\r\n var key, keyLower, newObj = {};\r\n\r\n if (!$.isArray(keys) || !keys.length) {\r\n return newObj;\r\n }\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n key = keys[i];\r\n if (obj.hasOwnProperty(key)) {\r\n newObj[key] = obj[key];\r\n }\r\n\r\n if(caseSensitive === true) {\r\n continue;\r\n }\r\n\r\n //when getting data-* attributes via $.data() it's converted to lowercase.\r\n //details: http://stackoverflow.com/questions/7602565/using-data-attributes-with-jquery\r\n //workaround is code below.\r\n keyLower = key.toLowerCase();\r\n if (obj.hasOwnProperty(keyLower)) {\r\n newObj[key] = obj[keyLower];\r\n }\r\n }\r\n\r\n return newObj;\r\n },\r\n\r\n /*\r\n exclude complex objects from $.data() before pass to config\r\n */\r\n getConfigData: function($element) {\r\n var data = {};\r\n $.each($element.data(), function(k, v) {\r\n if(typeof v !== 'object' || (v && typeof v === 'object' && (v.constructor === Object || v.constructor === Array))) {\r\n data[k] = v;\r\n }\r\n });\r\n return data;\r\n },\r\n\r\n /*\r\n returns keys of object\r\n */\r\n objectKeys: function(o) {\r\n if (Object.keys) {\r\n return Object.keys(o); \r\n } else {\r\n if (o !== Object(o)) {\r\n throw new TypeError('Object.keys called on a non-object');\r\n }\r\n var k=[], p;\r\n for (p in o) {\r\n if (Object.prototype.hasOwnProperty.call(o,p)) {\r\n k.push(p);\r\n }\r\n }\r\n return k;\r\n }\r\n\r\n },\r\n \r\n /**\r\n method to escape html.\r\n **/\r\n escape: function(str) {\r\n return $('
    ').text(str).html();\r\n },\r\n \r\n /*\r\n returns array items from sourceData having value property equal or inArray of 'value'\r\n */\r\n itemsByValue: function(value, sourceData, valueProp) {\r\n if(!sourceData || value === null) {\r\n return [];\r\n }\r\n \r\n if (typeof(valueProp) !== \"function\") {\r\n var idKey = valueProp || 'value';\r\n valueProp = function (e) { return e[idKey]; };\r\n }\r\n \r\n var isValArray = $.isArray(value),\r\n result = [], \r\n that = this;\r\n\r\n $.each(sourceData, function(i, o) {\r\n if(o.children) {\r\n result = result.concat(that.itemsByValue(value, o.children, valueProp));\r\n } else {\r\n /*jslint eqeq: true*/\r\n if(isValArray) {\r\n if($.grep(value, function(v){ return v == (o && typeof o === 'object' ? valueProp(o) : o); }).length) {\r\n result.push(o); \r\n }\r\n } else {\r\n var itemValue = (o && (typeof o === 'object')) ? valueProp(o) : o;\r\n if(value == itemValue) {\r\n result.push(o); \r\n }\r\n }\r\n /*jslint eqeq: false*/\r\n }\r\n });\r\n \r\n return result;\r\n },\r\n \r\n /*\r\n Returns input by options: type, mode. \r\n */\r\n createInput: function(options) {\r\n var TypeConstructor, typeOptions, input,\r\n type = options.type;\r\n\r\n //`date` is some kind of virtual type that is transformed to one of exact types\r\n //depending on mode and core lib\r\n if(type === 'date') {\r\n //inline\r\n if(options.mode === 'inline') {\r\n if($.fn.editabletypes.datefield) {\r\n type = 'datefield';\r\n } else if($.fn.editabletypes.dateuifield) {\r\n type = 'dateuifield';\r\n }\r\n //popup\r\n } else {\r\n if($.fn.editabletypes.date) {\r\n type = 'date';\r\n } else if($.fn.editabletypes.dateui) {\r\n type = 'dateui';\r\n }\r\n }\r\n \r\n //if type still `date` and not exist in types, replace with `combodate` that is base input\r\n if(type === 'date' && !$.fn.editabletypes.date) {\r\n type = 'combodate';\r\n } \r\n }\r\n \r\n //`datetime` should be datetimefield in 'inline' mode\r\n if(type === 'datetime' && options.mode === 'inline') {\r\n type = 'datetimefield'; \r\n } \r\n\r\n //change wysihtml5 to textarea for jquery UI and plain versions\r\n if(type === 'wysihtml5' && !$.fn.editabletypes[type]) {\r\n type = 'textarea';\r\n }\r\n\r\n //create input of specified type. Input will be used for converting value, not in form\r\n if(typeof $.fn.editabletypes[type] === 'function') {\r\n TypeConstructor = $.fn.editabletypes[type];\r\n typeOptions = this.sliceObj(options, this.objectKeys(TypeConstructor.defaults));\r\n input = new TypeConstructor(typeOptions);\r\n return input;\r\n } else {\r\n $.error('Unknown type: '+ type);\r\n return false; \r\n } \r\n },\r\n \r\n //see http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\r\n supportsTransitions: function () {\r\n var b = document.body || document.documentElement,\r\n s = b.style,\r\n p = 'transition',\r\n v = ['Moz', 'Webkit', 'Khtml', 'O', 'ms'];\r\n \r\n if(typeof s[p] === 'string') {\r\n return true; \r\n }\r\n\r\n // Tests for vendor specific prop\r\n p = p.charAt(0).toUpperCase() + p.substr(1);\r\n for(var i=0; i\r\nThis method applied internally in $().editable(). You should subscribe on it's events (save / cancel) to get profit of it.
    \r\nFinal realization can be different: bootstrap-popover, jqueryui-tooltip, poshytip, inline-div. It depends on which js file you include.
    \r\nApplied as jQuery method.\r\n\r\n@class editableContainer\r\n@uses editableform\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n\r\n var Popup = function (element, options) {\r\n this.init(element, options);\r\n };\r\n \r\n var Inline = function (element, options) {\r\n this.init(element, options);\r\n }; \r\n\r\n //methods\r\n Popup.prototype = {\r\n containerName: null, //method to call container on element\r\n containerDataName: null, //object name in element's .data()\r\n innerCss: null, //tbd in child class\r\n containerClass: 'editable-container editable-popup', //css class applied to container element\r\n defaults: {}, //container itself defaults\r\n \r\n init: function(element, options) {\r\n this.$element = $(element);\r\n //since 1.4.1 container do not use data-* directly as they already merged into options.\r\n this.options = $.extend({}, $.fn.editableContainer.defaults, options); \r\n this.splitOptions();\r\n \r\n //set scope of form callbacks to element\r\n this.formOptions.scope = this.$element[0]; \r\n \r\n this.initContainer();\r\n \r\n //flag to hide container, when saving value will finish\r\n this.delayedHide = false;\r\n\r\n //bind 'destroyed' listener to destroy container when element is removed from dom\r\n this.$element.on('destroyed', $.proxy(function(){\r\n this.destroy();\r\n }, this)); \r\n \r\n //attach document handler to close containers on click / escape\r\n if(!$(document).data('editable-handlers-attached')) {\r\n //close all on escape\r\n $(document).on('keyup.editable', function (e) {\r\n if (e.which === 27) {\r\n $('.editable-open').editableContainer('hide');\r\n //todo: return focus on element \r\n }\r\n });\r\n\r\n //close containers when click outside \r\n //(mousedown could be better than click, it closes everything also on drag drop)\r\n $(document).on('click.editable', function(e) {\r\n var $target = $(e.target), i,\r\n exclude_classes = ['.editable-container', \r\n '.ui-datepicker-header', \r\n '.datepicker', //in inline mode datepicker is rendered into body\r\n '.modal-backdrop', \r\n '.bootstrap-wysihtml5-insert-image-modal', \r\n '.bootstrap-wysihtml5-insert-link-modal'\r\n ];\r\n \r\n //check if element is detached. It occurs when clicking in bootstrap datepicker\r\n if (!$.contains(document.documentElement, e.target)) {\r\n return;\r\n }\r\n\r\n //for some reason FF 20 generates extra event (click) in select2 widget with e.target = document\r\n //we need to filter it via construction below. See https://github.com/vitalets/x-editable/issues/199\r\n //Possibly related to http://stackoverflow.com/questions/10119793/why-does-firefox-react-differently-from-webkit-and-ie-to-click-event-on-selec\r\n if($target.is(document)) {\r\n return; \r\n }\r\n \r\n //if click inside one of exclude classes --> no nothing\r\n for(i=0; i container changes size before hide. \r\n */ \r\n \r\n //if form already exist - delete previous data \r\n if(this.$form) {\r\n //todo: destroy prev data!\r\n //this.$form.destroy();\r\n }\r\n\r\n this.$form = $('
    ');\r\n \r\n //insert form into container body\r\n if(this.tip().is(this.innerCss)) {\r\n //for inline container\r\n this.tip().append(this.$form); \r\n } else {\r\n this.tip().find(this.innerCss).append(this.$form);\r\n } \r\n \r\n //render form\r\n this.renderForm();\r\n },\r\n\r\n /**\r\n Hides container with form\r\n @method hide()\r\n @param {string} reason Reason caused hiding. Can be save|cancel|onblur|nochange|undefined (=manual)\r\n **/ \r\n hide: function(reason) { \r\n if(!this.tip() || !this.tip().is(':visible') || !this.$element.hasClass('editable-open')) {\r\n return;\r\n }\r\n \r\n //if form is saving value, schedule hide\r\n if(this.$form.data('editableform').isSaving) {\r\n this.delayedHide = {reason: reason};\r\n return; \r\n } else {\r\n this.delayedHide = false;\r\n }\r\n\r\n this.$element.removeClass('editable-open'); \r\n this.innerHide();\r\n\r\n /**\r\n Fired when container was hidden. It occurs on both save or cancel. \r\n **Note:** Bootstrap popover has own `hidden` event that now cannot be separated from x-editable's one.\r\n The workaround is to check `arguments.length` that is always `2` for x-editable. \r\n\r\n @event hidden \r\n @param {object} event event object\r\n @param {string} reason Reason caused hiding. Can be save|cancel|onblur|nochange|manual\r\n @example\r\n $('#username').on('hidden', function(e, reason) {\r\n if(reason === 'save' || reason === 'cancel') {\r\n //auto-open next editable\r\n $(this).closest('tr').next().find('.editable').editable('show');\r\n } \r\n });\r\n **/\r\n this.$element.triggerHandler('hidden', reason || 'manual'); \r\n },\r\n\r\n /* internal show method. To be overwritten in child classes */\r\n innerShow: function () {\r\n \r\n }, \r\n\r\n /* internal hide method. To be overwritten in child classes */\r\n innerHide: function () {\r\n\r\n },\r\n \r\n /**\r\n Toggles container visibility (show / hide)\r\n @method toggle()\r\n @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\r\n **/ \r\n toggle: function(closeAll) {\r\n if(this.container() && this.tip() && this.tip().is(':visible')) {\r\n this.hide();\r\n } else {\r\n this.show(closeAll);\r\n } \r\n },\r\n\r\n /*\r\n Updates the position of container when content changed.\r\n @method setPosition()\r\n */ \r\n setPosition: function() {\r\n //tbd in child class\r\n },\r\n\r\n save: function(e, params) {\r\n /** \r\n Fired when new value was submitted. You can use $(this).data('editableContainer') inside handler to access to editableContainer instance\r\n \r\n @event save \r\n @param {Object} event event object\r\n @param {Object} params additional params\r\n @param {mixed} params.newValue submitted value\r\n @param {Object} params.response ajax response\r\n @example\r\n $('#username').on('save', function(e, params) {\r\n //assuming server response: '{success: true}'\r\n var pk = $(this).data('editableContainer').options.pk;\r\n if(params.response && params.response.success) {\r\n alert('value: ' + params.newValue + ' with pk: ' + pk + ' saved!');\r\n } else {\r\n alert('error!'); \r\n } \r\n });\r\n **/ \r\n this.$element.triggerHandler('save', params);\r\n \r\n //hide must be after trigger, as saving value may require methods of plugin, applied to input\r\n this.hide('save');\r\n },\r\n\r\n /**\r\n Sets new option\r\n \r\n @method option(key, value)\r\n @param {string} key \r\n @param {mixed} value \r\n **/ \r\n option: function(key, value) {\r\n this.options[key] = value;\r\n if(key in this.containerOptions) {\r\n this.containerOptions[key] = value;\r\n this.setContainerOption(key, value); \r\n } else {\r\n this.formOptions[key] = value;\r\n if(this.$form) {\r\n this.$form.editableform('option', key, value); \r\n }\r\n }\r\n },\r\n \r\n setContainerOption: function(key, value) {\r\n this.call('option', key, value);\r\n },\r\n\r\n /**\r\n Destroys the container instance\r\n @method destroy()\r\n **/ \r\n destroy: function() {\r\n this.hide();\r\n this.innerDestroy();\r\n this.$element.off('destroyed');\r\n this.$element.removeData('editableContainer');\r\n },\r\n \r\n /* to be overwritten in child classes */\r\n innerDestroy: function() {\r\n \r\n }, \r\n \r\n /*\r\n Closes other containers except one related to passed element. \r\n Other containers can be cancelled or submitted (depends on onblur option)\r\n */\r\n closeOthers: function(element) {\r\n $('.editable-open').each(function(i, el){\r\n //do nothing with passed element and it's children\r\n if(el === element || $(el).find(element).length) {\r\n return;\r\n }\r\n\r\n //otherwise cancel or submit all open containers \r\n var $el = $(el),\r\n ec = $el.data('editableContainer');\r\n\r\n if(!ec) {\r\n return; \r\n }\r\n \r\n if(ec.options.onblur === 'cancel') {\r\n $el.data('editableContainer').hide('onblur');\r\n } else if(ec.options.onblur === 'submit') {\r\n $el.data('editableContainer').tip().find('form').submit();\r\n }\r\n });\r\n\r\n },\r\n \r\n /**\r\n Activates input of visible container (e.g. set focus)\r\n @method activate()\r\n **/ \r\n activate: function() {\r\n if(this.tip && this.tip().is(':visible') && this.$form) {\r\n this.$form.data('editableform').input.activate(); \r\n }\r\n } \r\n\r\n };\r\n\r\n /**\r\n jQuery method to initialize editableContainer.\r\n \r\n @method $().editableContainer(options)\r\n @params {Object} options\r\n @example\r\n $('#edit').editableContainer({\r\n type: 'text',\r\n url: '/post',\r\n pk: 1,\r\n value: 'hello'\r\n });\r\n **/ \r\n $.fn.editableContainer = function (option) {\r\n var args = arguments;\r\n return this.each(function () {\r\n var $this = $(this),\r\n dataKey = 'editableContainer', \r\n data = $this.data(dataKey),\r\n options = typeof option === 'object' && option,\r\n Constructor = (options.mode === 'inline') ? Inline : Popup; \r\n\r\n if (!data) {\r\n $this.data(dataKey, (data = new Constructor(this, options)));\r\n }\r\n\r\n if (typeof option === 'string') { //call method \r\n data[option].apply(data, Array.prototype.slice.call(args, 1));\r\n } \r\n });\r\n }; \r\n\r\n //store constructors\r\n $.fn.editableContainer.Popup = Popup;\r\n $.fn.editableContainer.Inline = Inline;\r\n\r\n //defaults\r\n $.fn.editableContainer.defaults = {\r\n /**\r\n Initial value of form input\r\n\r\n @property value \r\n @type mixed\r\n @default null\r\n @private\r\n **/ \r\n value: null,\r\n /**\r\n Placement of container relative to element. Can be top|right|bottom|left. Not used for inline container.\r\n\r\n @property placement \r\n @type string\r\n @default 'top'\r\n **/ \r\n placement: 'top',\r\n /**\r\n Whether to hide container on save/cancel.\r\n\r\n @property autohide \r\n @type boolean\r\n @default true\r\n @private \r\n **/ \r\n autohide: true,\r\n /**\r\n Action when user clicks outside the container. Can be cancel|submit|ignore. \r\n Setting ignore allows to have several containers open. \r\n\r\n @property onblur \r\n @type string\r\n @default 'cancel'\r\n @since 1.1.1\r\n **/ \r\n onblur: 'cancel',\r\n \r\n /**\r\n Animation speed (inline mode only)\r\n @property anim \r\n @type string\r\n @default false\r\n **/ \r\n anim: false,\r\n \r\n /**\r\n Mode of editable, can be `popup` or `inline` \r\n \r\n @property mode \r\n @type string \r\n @default 'popup'\r\n @since 1.4.0 \r\n **/ \r\n mode: 'popup' \r\n };\r\n\r\n /* \r\n * workaround to have 'destroyed' event to destroy popover when element is destroyed\r\n * see http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom\r\n */\r\n jQuery.event.special.destroyed = {\r\n remove: function(o) {\r\n if (o.handler) {\r\n o.handler();\r\n }\r\n }\r\n }; \r\n\r\n}(window.jQuery));\r\n\r\n/**\r\n* Editable Inline \r\n* ---------------------\r\n*/\r\n(function ($) {\r\n \"use strict\";\r\n \r\n //copy prototype from EditableContainer\r\n //extend methods\r\n $.extend($.fn.editableContainer.Inline.prototype, $.fn.editableContainer.Popup.prototype, {\r\n containerName: 'editableform',\r\n innerCss: '.editable-inline',\r\n containerClass: 'editable-container editable-inline', //css class applied to container element\r\n \r\n initContainer: function(){\r\n //container is element\r\n this.$tip = $('');\r\n \r\n //convert anim to miliseconds (int)\r\n if(!this.options.anim) {\r\n this.options.anim = 0;\r\n } \r\n },\r\n \r\n splitOptions: function() {\r\n //all options are passed to form\r\n this.containerOptions = {};\r\n this.formOptions = this.options;\r\n },\r\n \r\n tip: function() {\r\n return this.$tip; \r\n },\r\n \r\n innerShow: function () {\r\n this.$element.hide();\r\n this.tip().insertAfter(this.$element).show();\r\n }, \r\n \r\n innerHide: function () {\r\n this.$tip.hide(this.options.anim, $.proxy(function() {\r\n this.$element.show();\r\n this.innerDestroy();\r\n }, this)); \r\n },\r\n \r\n innerDestroy: function() {\r\n if(this.tip()) {\r\n this.tip().empty().remove();\r\n }\r\n } \r\n });\r\n\r\n}(window.jQuery));\r\n/**\r\nMakes editable any HTML element on the page. Applied as jQuery method.\r\n\r\n@class editable\r\n@uses editableContainer\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n\r\n var Editable = function (element, options) {\r\n this.$element = $(element);\r\n //data-* has more priority over js options: because dynamically created elements may change data-* \r\n this.options = $.extend({}, $.fn.editable.defaults, options, $.fn.editableutils.getConfigData(this.$element)); \r\n if(this.options.selector) {\r\n this.initLive();\r\n } else {\r\n this.init();\r\n }\r\n \r\n //check for transition support\r\n if(this.options.highlight && !$.fn.editableutils.supportsTransitions()) {\r\n this.options.highlight = false;\r\n }\r\n };\r\n\r\n Editable.prototype = {\r\n constructor: Editable, \r\n init: function () {\r\n var isValueByText = false, \r\n doAutotext, finalize;\r\n\r\n //name\r\n this.options.name = this.options.name || this.$element.attr('id');\r\n \r\n //create input of specified type. Input needed already here to convert value for initial display (e.g. show text by id for select)\r\n //also we set scope option to have access to element inside input specific callbacks (e. g. source as function)\r\n this.options.scope = this.$element[0]; \r\n this.input = $.fn.editableutils.createInput(this.options);\r\n if(!this.input) {\r\n return; \r\n } \r\n\r\n //set value from settings or by element's text\r\n if (this.options.value === undefined || this.options.value === null) {\r\n this.value = this.input.html2value($.trim(this.$element.html()));\r\n isValueByText = true;\r\n } else {\r\n /*\r\n value can be string when received from 'data-value' attribute\r\n for complext objects value can be set as json string in data-value attribute, \r\n e.g. data-value=\"{city: 'Moscow', street: 'Lenina'}\"\r\n */\r\n this.options.value = $.fn.editableutils.tryParseJson(this.options.value, true); \r\n if(typeof this.options.value === 'string') {\r\n this.value = this.input.str2value(this.options.value);\r\n } else {\r\n this.value = this.options.value;\r\n }\r\n }\r\n \r\n //add 'editable' class to every editable element\r\n this.$element.addClass('editable');\r\n \r\n //specifically for \"textarea\" add class .editable-pre-wrapped to keep linebreaks\r\n if(this.input.type === 'textarea') {\r\n this.$element.addClass('editable-pre-wrapped');\r\n }\r\n \r\n //attach handler activating editable. In disabled mode it just prevent default action (useful for links)\r\n if(this.options.toggle !== 'manual') {\r\n this.$element.addClass('editable-click');\r\n this.$element.on(this.options.toggle + '.editable', $.proxy(function(e){\r\n //prevent following link if editable enabled\r\n if(!this.options.disabled) {\r\n e.preventDefault();\r\n }\r\n \r\n //stop propagation not required because in document click handler it checks event target\r\n //e.stopPropagation();\r\n \r\n if(this.options.toggle === 'mouseenter') {\r\n //for hover only show container\r\n this.show();\r\n } else {\r\n //when toggle='click' we should not close all other containers as they will be closed automatically in document click listener\r\n var closeAll = (this.options.toggle !== 'click');\r\n this.toggle(closeAll);\r\n }\r\n }, this));\r\n } else {\r\n this.$element.attr('tabindex', -1); //do not stop focus on element when toggled manually\r\n }\r\n \r\n //if display is function it's far more convinient to have autotext = always to render correctly on init\r\n //see https://github.com/vitalets/x-editable-yii/issues/34\r\n if(typeof this.options.display === 'function') {\r\n this.options.autotext = 'always';\r\n }\r\n \r\n //check conditions for autotext:\r\n switch(this.options.autotext) {\r\n case 'always':\r\n doAutotext = true;\r\n break;\r\n case 'auto':\r\n //if element text is empty and value is defined and value not generated by text --> run autotext\r\n doAutotext = !$.trim(this.$element.text()).length && this.value !== null && this.value !== undefined && !isValueByText;\r\n break;\r\n default:\r\n doAutotext = false;\r\n }\r\n\r\n //depending on autotext run render() or just finilize init\r\n $.when(doAutotext ? this.render() : true).then($.proxy(function() {\r\n if(this.options.disabled) {\r\n this.disable();\r\n } else {\r\n this.enable(); \r\n }\r\n /** \r\n Fired when element was initialized by `$().editable()` method. \r\n Please note that you should setup `init` handler **before** applying `editable`. \r\n \r\n @event init \r\n @param {Object} event event object\r\n @param {Object} editable editable instance (as here it cannot accessed via data('editable'))\r\n @since 1.2.0\r\n @example\r\n $('#username').on('init', function(e, editable) {\r\n alert('initialized ' + editable.options.name);\r\n });\r\n $('#username').editable();\r\n **/ \r\n this.$element.triggerHandler('init', this);\r\n }, this));\r\n },\r\n\r\n /*\r\n Initializes parent element for live editables \r\n */\r\n initLive: function() {\r\n //store selector \r\n var selector = this.options.selector;\r\n //modify options for child elements\r\n this.options.selector = false; \r\n this.options.autotext = 'never';\r\n //listen toggle events\r\n this.$element.on(this.options.toggle + '.editable', selector, $.proxy(function(e){\r\n var $target = $(e.target);\r\n if(!$target.data('editable')) {\r\n //if delegated element initially empty, we need to clear it's text (that was manually set to `empty` by user)\r\n //see https://github.com/vitalets/x-editable/issues/137 \r\n if($target.hasClass(this.options.emptyclass)) {\r\n $target.empty();\r\n }\r\n $target.editable(this.options).trigger(e);\r\n }\r\n }, this)); \r\n },\r\n \r\n /*\r\n Renders value into element's text.\r\n Can call custom display method from options.\r\n Can return deferred object.\r\n @method render()\r\n @param {mixed} response server response (if exist) to pass into display function\r\n */ \r\n render: function(response) {\r\n //do not display anything\r\n if(this.options.display === false) {\r\n return;\r\n }\r\n \r\n //if input has `value2htmlFinal` method, we pass callback in third param to be called when source is loaded\r\n if(this.input.value2htmlFinal) {\r\n return this.input.value2html(this.value, this.$element[0], this.options.display, response); \r\n //if display method defined --> use it \r\n } else if(typeof this.options.display === 'function') {\r\n return this.options.display.call(this.$element[0], this.value, response);\r\n //else use input's original value2html() method \r\n } else {\r\n return this.input.value2html(this.value, this.$element[0]); \r\n }\r\n },\r\n \r\n /**\r\n Enables editable\r\n @method enable()\r\n **/ \r\n enable: function() {\r\n this.options.disabled = false;\r\n this.$element.removeClass('editable-disabled');\r\n this.handleEmpty(this.isEmpty);\r\n if(this.options.toggle !== 'manual') {\r\n if(this.$element.attr('tabindex') === '-1') { \r\n this.$element.removeAttr('tabindex'); \r\n }\r\n }\r\n },\r\n \r\n /**\r\n Disables editable\r\n @method disable()\r\n **/ \r\n disable: function() {\r\n this.options.disabled = true; \r\n this.hide(); \r\n this.$element.addClass('editable-disabled');\r\n this.handleEmpty(this.isEmpty);\r\n //do not stop focus on this element\r\n this.$element.attr('tabindex', -1); \r\n },\r\n \r\n /**\r\n Toggles enabled / disabled state of editable element\r\n @method toggleDisabled()\r\n **/ \r\n toggleDisabled: function() {\r\n if(this.options.disabled) {\r\n this.enable();\r\n } else { \r\n this.disable(); \r\n }\r\n }, \r\n \r\n /**\r\n Sets new option\r\n \r\n @method option(key, value)\r\n @param {string|object} key option name or object with several options\r\n @param {mixed} value option new value\r\n @example\r\n $('.editable').editable('option', 'pk', 2);\r\n **/ \r\n option: function(key, value) {\r\n //set option(s) by object\r\n if(key && typeof key === 'object') {\r\n $.each(key, $.proxy(function(k, v){\r\n this.option($.trim(k), v); \r\n }, this)); \r\n return;\r\n }\r\n\r\n //set option by string \r\n this.options[key] = value; \r\n \r\n //disabled\r\n if(key === 'disabled') {\r\n return value ? this.disable() : this.enable();\r\n } \r\n \r\n //value\r\n if(key === 'value') {\r\n this.setValue(value);\r\n }\r\n \r\n //transfer new option to container! \r\n if(this.container) {\r\n this.container.option(key, value); \r\n }\r\n \r\n //pass option to input directly (as it points to the same in form)\r\n if(this.input.option) {\r\n this.input.option(key, value);\r\n }\r\n \r\n }, \r\n \r\n /*\r\n * set emptytext if element is empty\r\n */\r\n handleEmpty: function (isEmpty) {\r\n //do not handle empty if we do not display anything\r\n if(this.options.display === false) {\r\n return;\r\n }\r\n\r\n /* \r\n isEmpty may be set directly as param of method.\r\n It is required when we enable/disable field and can't rely on content \r\n as node content is text: \"Empty\" that is not empty %)\r\n */\r\n if(isEmpty !== undefined) { \r\n this.isEmpty = isEmpty;\r\n } else {\r\n //detect empty\r\n //for some inputs we need more smart check\r\n //e.g. wysihtml5 may have
    ,

    , \r\n if(typeof(this.input.isEmpty) === 'function') {\r\n this.isEmpty = this.input.isEmpty(this.$element); \r\n } else {\r\n this.isEmpty = $.trim(this.$element.html()) === '';\r\n }\r\n } \r\n \r\n //emptytext shown only for enabled\r\n if(!this.options.disabled) {\r\n if (this.isEmpty) {\r\n this.$element.html(this.options.emptytext);\r\n if(this.options.emptyclass) {\r\n this.$element.addClass(this.options.emptyclass);\r\n }\r\n } else if(this.options.emptyclass) {\r\n this.$element.removeClass(this.options.emptyclass);\r\n }\r\n } else {\r\n //below required if element disable property was changed\r\n if(this.isEmpty) {\r\n this.$element.empty();\r\n if(this.options.emptyclass) {\r\n this.$element.removeClass(this.options.emptyclass);\r\n }\r\n }\r\n }\r\n }, \r\n \r\n /**\r\n Shows container with form\r\n @method show()\r\n @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\r\n **/ \r\n show: function (closeAll) {\r\n if(this.options.disabled) {\r\n return;\r\n }\r\n \r\n //init editableContainer: popover, tooltip, inline, etc..\r\n if(!this.container) {\r\n var containerOptions = $.extend({}, this.options, {\r\n value: this.value,\r\n input: this.input //pass input to form (as it is already created)\r\n });\r\n this.$element.editableContainer(containerOptions);\r\n //listen `save` event \r\n this.$element.on(\"save.internal\", $.proxy(this.save, this));\r\n this.container = this.$element.data('editableContainer'); \r\n } else if(this.container.tip().is(':visible')) {\r\n return;\r\n } \r\n \r\n //show container\r\n this.container.show(closeAll);\r\n },\r\n \r\n /**\r\n Hides container with form\r\n @method hide()\r\n **/ \r\n hide: function () { \r\n if(this.container) { \r\n this.container.hide();\r\n }\r\n },\r\n \r\n /**\r\n Toggles container visibility (show / hide)\r\n @method toggle()\r\n @param {boolean} closeAll Whether to close all other editable containers when showing this one. Default true.\r\n **/ \r\n toggle: function(closeAll) {\r\n if(this.container && this.container.tip().is(':visible')) {\r\n this.hide();\r\n } else {\r\n this.show(closeAll);\r\n }\r\n },\r\n \r\n /*\r\n * called when form was submitted\r\n */ \r\n save: function(e, params) {\r\n //mark element with unsaved class if needed\r\n if(this.options.unsavedclass) {\r\n /*\r\n Add unsaved css to element if:\r\n - url is not user's function \r\n - value was not sent to server\r\n - params.response === undefined, that means data was not sent\r\n - value changed \r\n */\r\n var sent = false;\r\n sent = sent || typeof this.options.url === 'function';\r\n sent = sent || this.options.display === false; \r\n sent = sent || params.response !== undefined; \r\n sent = sent || (this.options.savenochange && this.input.value2str(this.value) !== this.input.value2str(params.newValue)); \r\n \r\n if(sent) {\r\n this.$element.removeClass(this.options.unsavedclass); \r\n } else {\r\n this.$element.addClass(this.options.unsavedclass); \r\n }\r\n }\r\n \r\n //highlight when saving\r\n if(this.options.highlight) {\r\n var $e = this.$element,\r\n bgColor = $e.css('background-color');\r\n \r\n $e.css('background-color', this.options.highlight);\r\n setTimeout(function(){\r\n if(bgColor === 'transparent') {\r\n bgColor = ''; \r\n }\r\n $e.css('background-color', bgColor);\r\n $e.addClass('editable-bg-transition');\r\n setTimeout(function(){\r\n $e.removeClass('editable-bg-transition'); \r\n }, 1700);\r\n }, 10);\r\n }\r\n \r\n //set new value\r\n this.setValue(params.newValue, false, params.response);\r\n \r\n /** \r\n Fired when new value was submitted. You can use $(this).data('editable') to access to editable instance\r\n \r\n @event save \r\n @param {Object} event event object\r\n @param {Object} params additional params\r\n @param {mixed} params.newValue submitted value\r\n @param {Object} params.response ajax response\r\n @example\r\n $('#username').on('save', function(e, params) {\r\n alert('Saved value: ' + params.newValue);\r\n });\r\n **/\r\n //event itself is triggered by editableContainer. Description here is only for documentation \r\n },\r\n\r\n validate: function () {\r\n if (typeof this.options.validate === 'function') {\r\n return this.options.validate.call(this, this.value);\r\n }\r\n },\r\n \r\n /**\r\n Sets new value of editable\r\n @method setValue(value, convertStr)\r\n @param {mixed} value new value \r\n @param {boolean} convertStr whether to convert value from string to internal format\r\n **/ \r\n setValue: function(value, convertStr, response) {\r\n if(convertStr) {\r\n this.value = this.input.str2value(value);\r\n } else {\r\n this.value = value;\r\n }\r\n if(this.container) {\r\n this.container.option('value', this.value);\r\n }\r\n $.when(this.render(response))\r\n .then($.proxy(function() {\r\n this.handleEmpty();\r\n }, this));\r\n },\r\n \r\n /**\r\n Activates input of visible container (e.g. set focus)\r\n @method activate()\r\n **/ \r\n activate: function() {\r\n if(this.container) {\r\n this.container.activate(); \r\n }\r\n },\r\n \r\n /**\r\n Removes editable feature from element\r\n @method destroy()\r\n **/ \r\n destroy: function() {\r\n this.disable();\r\n \r\n if(this.container) {\r\n this.container.destroy(); \r\n }\r\n \r\n this.input.destroy();\r\n\r\n if(this.options.toggle !== 'manual') {\r\n this.$element.removeClass('editable-click');\r\n this.$element.off(this.options.toggle + '.editable');\r\n } \r\n \r\n this.$element.off(\"save.internal\");\r\n \r\n this.$element.removeClass('editable editable-open editable-disabled');\r\n this.$element.removeData('editable');\r\n } \r\n };\r\n\r\n /* EDITABLE PLUGIN DEFINITION\r\n * ======================= */\r\n\r\n /**\r\n jQuery method to initialize editable element.\r\n \r\n @method $().editable(options)\r\n @params {Object} options\r\n @example\r\n $('#username').editable({\r\n type: 'text',\r\n url: '/post',\r\n pk: 1\r\n });\r\n **/\r\n $.fn.editable = function (option) {\r\n //special API methods returning non-jquery object\r\n var result = {}, args = arguments, datakey = 'editable';\r\n switch (option) {\r\n /**\r\n Runs client-side validation for all matched editables\r\n \r\n @method validate()\r\n @returns {Object} validation errors map\r\n @example\r\n $('#username, #fullname').editable('validate');\r\n // possible result:\r\n {\r\n username: \"username is required\",\r\n fullname: \"fullname should be minimum 3 letters length\"\r\n }\r\n **/\r\n case 'validate':\r\n this.each(function () {\r\n var $this = $(this), data = $this.data(datakey), error;\r\n if (data && (error = data.validate())) {\r\n result[data.options.name] = error;\r\n }\r\n });\r\n return result;\r\n\r\n /**\r\n Returns current values of editable elements. \r\n Note that it returns an **object** with name-value pairs, not a value itself. It allows to get data from several elements. \r\n If value of some editable is `null` or `undefined` it is excluded from result object.\r\n When param `isSingle` is set to **true** - it is supposed you have single element and will return value of editable instead of object. \r\n \r\n @method getValue()\r\n @param {bool} isSingle whether to return just value of single element\r\n @returns {Object} object of element names and values\r\n @example\r\n $('#username, #fullname').editable('getValue');\r\n //result:\r\n {\r\n username: \"superuser\",\r\n fullname: \"John\"\r\n }\r\n //isSingle = true\r\n $('#username').editable('getValue', true);\r\n //result \"superuser\" \r\n **/\r\n case 'getValue':\r\n if(arguments.length === 2 && arguments[1] === true) { //isSingle = true\r\n result = this.eq(0).data(datakey).value;\r\n } else {\r\n this.each(function () {\r\n var $this = $(this), data = $this.data(datakey);\r\n if (data && data.value !== undefined && data.value !== null) {\r\n result[data.options.name] = data.input.value2submit(data.value);\r\n }\r\n });\r\n }\r\n return result;\r\n\r\n /**\r\n This method collects values from several editable elements and submit them all to server. \r\n Internally it runs client-side validation for all fields and submits only in case of success. \r\n See
    creating new records for details. \r\n Since 1.5.1 `submit` can be applied to single element to send data programmatically. In that case\r\n `url`, `success` and `error` is taken from initial options and you can just call `$('#username').editable('submit')`. \r\n \r\n @method submit(options)\r\n @param {object} options \r\n @param {object} options.url url to submit data \r\n @param {object} options.data additional data to submit\r\n @param {object} options.ajaxOptions additional ajax options\r\n @param {function} options.error(obj) error handler \r\n @param {function} options.success(obj,config) success handler\r\n @returns {Object} jQuery object\r\n **/\r\n case 'submit': //collects value, validate and submit to server for creating new record\r\n var config = arguments[1] || {},\r\n $elems = this,\r\n errors = this.editable('validate');\r\n\r\n // validation ok\r\n if($.isEmptyObject(errors)) {\r\n var ajaxOptions = {};\r\n \r\n // for single element use url, success etc from options\r\n if($elems.length === 1) {\r\n var editable = $elems.data('editable');\r\n //standard params\r\n var params = {\r\n name: editable.options.name || '',\r\n value: editable.input.value2submit(editable.value),\r\n pk: (typeof editable.options.pk === 'function') ? \r\n editable.options.pk.call(editable.options.scope) : \r\n editable.options.pk \r\n };\r\n\r\n //additional params\r\n if(typeof editable.options.params === 'function') {\r\n params = editable.options.params.call(editable.options.scope, params); \r\n } else {\r\n //try parse json in single quotes (from data-params attribute)\r\n editable.options.params = $.fn.editableutils.tryParseJson(editable.options.params, true); \r\n $.extend(params, editable.options.params);\r\n }\r\n\r\n ajaxOptions = {\r\n url: editable.options.url,\r\n data: params,\r\n type: 'POST' \r\n };\r\n \r\n // use success / error from options \r\n config.success = config.success || editable.options.success;\r\n config.error = config.error || editable.options.error;\r\n \r\n // multiple elements\r\n } else {\r\n var values = this.editable('getValue'); \r\n \r\n ajaxOptions = {\r\n url: config.url,\r\n data: values, \r\n type: 'POST'\r\n }; \r\n } \r\n\r\n // ajax success callabck (response 200 OK)\r\n ajaxOptions.success = typeof config.success === 'function' ? function(response) {\r\n config.success.call($elems, response, config);\r\n } : $.noop;\r\n \r\n // ajax error callabck\r\n ajaxOptions.error = typeof config.error === 'function' ? function() {\r\n config.error.apply($elems, arguments);\r\n } : $.noop;\r\n \r\n // extend ajaxOptions \r\n if(config.ajaxOptions) { \r\n $.extend(ajaxOptions, config.ajaxOptions);\r\n }\r\n \r\n // extra data \r\n if(config.data) {\r\n $.extend(ajaxOptions.data, config.data);\r\n } \r\n \r\n // perform ajax request\r\n $.ajax(ajaxOptions);\r\n } else { //client-side validation error\r\n if(typeof config.error === 'function') {\r\n config.error.call($elems, errors);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n //return jquery object\r\n return this.each(function () {\r\n var $this = $(this), \r\n data = $this.data(datakey), \r\n options = typeof option === 'object' && option;\r\n\r\n //for delegated targets do not store `editable` object for element\r\n //it's allows several different selectors.\r\n //see: https://github.com/vitalets/x-editable/issues/312 \r\n if(options && options.selector) {\r\n data = new Editable(this, options);\r\n return; \r\n } \r\n \r\n if (!data) {\r\n $this.data(datakey, (data = new Editable(this, options)));\r\n }\r\n\r\n if (typeof option === 'string') { //call method \r\n data[option].apply(data, Array.prototype.slice.call(args, 1));\r\n } \r\n });\r\n }; \r\n \r\n\r\n $.fn.editable.defaults = {\r\n /**\r\n Type of input. Can be text|textarea|select|date|checklist and more\r\n\r\n @property type \r\n @type string\r\n @default 'text'\r\n **/\r\n type: 'text', \r\n /**\r\n Sets disabled state of editable\r\n\r\n @property disabled \r\n @type boolean\r\n @default false\r\n **/ \r\n disabled: false,\r\n /**\r\n How to toggle editable. Can be click|dblclick|mouseenter|manual. \r\n When set to manual you should manually call show/hide methods of editable. \r\n **Note**: if you call show or toggle inside **click** handler of some DOM element, \r\n you need to apply e.stopPropagation() because containers are being closed on any click on document.\r\n \r\n @example\r\n $('#edit-button').click(function(e) {\r\n e.stopPropagation();\r\n $('#username').editable('toggle');\r\n });\r\n\r\n @property toggle \r\n @type string\r\n @default 'click'\r\n **/ \r\n toggle: 'click',\r\n /**\r\n Text shown when element is empty.\r\n\r\n @property emptytext \r\n @type string\r\n @default 'Empty'\r\n **/ \r\n emptytext: 'Empty',\r\n /**\r\n Allows to automatically set element's text based on it's value. Can be auto|always|never. Useful for select and date.\r\n For example, if dropdown list is {1: 'a', 2: 'b'} and element's value set to 1, it's html will be automatically set to 'a'. \r\n auto - text will be automatically set only if element is empty. \r\n always|never - always(never) try to set element's text.\r\n\r\n @property autotext \r\n @type string\r\n @default 'auto'\r\n **/ \r\n autotext: 'auto', \r\n /**\r\n Initial value of input. If not set, taken from element's text. \r\n Note, that if element's text is empty - text is automatically generated from value and can be customized (see `autotext` option). \r\n For example, to display currency sign:\r\n @example\r\n \r\n \r\n \r\n @property value \r\n @type mixed\r\n @default element's text\r\n **/\r\n value: null,\r\n /**\r\n Callback to perform custom displaying of value in element's text. \r\n If `null`, default input's display used. \r\n If `false`, no displaying methods will be called, element's text will never change. \r\n Runs under element's scope. \r\n _**Parameters:**_ \r\n \r\n * `value` current value to be displayed\r\n * `response` server response (if display called after ajax submit), since 1.4.0\r\n \r\n For _inputs with source_ (select, checklist) parameters are different: \r\n \r\n * `value` current value to be displayed\r\n * `sourceData` array of items for current input (e.g. dropdown items) \r\n * `response` server response (if display called after ajax submit), since 1.4.0\r\n \r\n To get currently selected items use `$.fn.editableutils.itemsByValue(value, sourceData)`.\r\n \r\n @property display \r\n @type function|boolean\r\n @default null\r\n @since 1.2.0\r\n @example\r\n display: function(value, sourceData) {\r\n //display checklist as comma-separated values\r\n var html = [],\r\n checked = $.fn.editableutils.itemsByValue(value, sourceData);\r\n \r\n if(checked.length) {\r\n $.each(checked, function(i, v) { html.push($.fn.editableutils.escape(v.text)); });\r\n $(this).html(html.join(', '));\r\n } else {\r\n $(this).empty(); \r\n }\r\n }\r\n **/ \r\n display: null,\r\n /**\r\n Css class applied when editable text is empty.\r\n\r\n @property emptyclass \r\n @type string\r\n @since 1.4.1 \r\n @default editable-empty\r\n **/ \r\n emptyclass: 'editable-empty',\r\n /**\r\n Css class applied when value was stored but not sent to server (`pk` is empty or `send = 'never'`). \r\n You may set it to `null` if you work with editables locally and submit them together. \r\n\r\n @property unsavedclass \r\n @type string\r\n @since 1.4.1 \r\n @default editable-unsaved\r\n **/ \r\n unsavedclass: 'editable-unsaved',\r\n /**\r\n If selector is provided, editable will be delegated to the specified targets. \r\n Usefull for dynamically generated DOM elements. \r\n **Please note**, that delegated targets can't be initialized with `emptytext` and `autotext` options, \r\n as they actually become editable only after first click. \r\n You should manually set class `editable-click` to these elements. \r\n Also, if element originally empty you should add class `editable-empty`, set `data-value=\"\"` and write emptytext into element:\r\n\r\n @property selector \r\n @type string\r\n @since 1.4.1 \r\n @default null\r\n @example\r\n
    \r\n \r\n Empty\r\n \r\n Operator\r\n
    \r\n \r\n \r\n **/ \r\n selector: null,\r\n /**\r\n Color used to highlight element after update. Implemented via CSS3 transition, works in modern browsers.\r\n \r\n @property highlight \r\n @type string|boolean\r\n @since 1.4.5 \r\n @default #FFFF80 \r\n **/\r\n highlight: '#FFFF80'\r\n };\r\n \r\n}(window.jQuery));\r\n\r\n/**\r\nAbstractInput - base class for all editable inputs.\r\nIt defines interface to be implemented by any input type.\r\nTo create your own input you can inherit from this class.\r\n\r\n@class abstractinput\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n\r\n //types\r\n $.fn.editabletypes = {};\r\n\r\n var AbstractInput = function () { };\r\n\r\n AbstractInput.prototype = {\r\n /**\r\n Initializes input\r\n\r\n @method init() \r\n **/\r\n init: function(type, options, defaults) {\r\n this.type = type;\r\n this.options = $.extend({}, defaults, options);\r\n },\r\n\r\n /*\r\n this method called before render to init $tpl that is inserted in DOM\r\n */\r\n prerender: function() {\r\n this.$tpl = $(this.options.tpl); //whole tpl as jquery object \r\n this.$input = this.$tpl; //control itself, can be changed in render method\r\n this.$clear = null; //clear button\r\n this.error = null; //error message, if input cannot be rendered \r\n },\r\n \r\n /**\r\n Renders input from tpl. Can return jQuery deferred object.\r\n Can be overwritten in child objects\r\n\r\n @method render()\r\n **/\r\n render: function() {\r\n\r\n }, \r\n\r\n /**\r\n Sets element's html by value. \r\n\r\n @method value2html(value, element)\r\n @param {mixed} value\r\n @param {DOMElement} element\r\n **/\r\n value2html: function(value, element) {\r\n $(element)[this.options.escape ? 'text' : 'html']($.trim(value));\r\n },\r\n\r\n /**\r\n Converts element's html to value\r\n\r\n @method html2value(html)\r\n @param {string} html\r\n @returns {mixed}\r\n **/\r\n html2value: function(html) {\r\n return $('
    ').html(html).text();\r\n },\r\n\r\n /**\r\n Converts value to string (for internal compare). For submitting to server used value2submit().\r\n\r\n @method value2str(value) \r\n @param {mixed} value\r\n @returns {string}\r\n **/\r\n value2str: function(value) {\r\n return value;\r\n }, \r\n\r\n /**\r\n Converts string received from server into value. Usually from `data-value` attribute.\r\n\r\n @method str2value(str)\r\n @param {string} str\r\n @returns {mixed}\r\n **/\r\n str2value: function(str) {\r\n return str;\r\n }, \r\n \r\n /**\r\n Converts value for submitting to server. Result can be string or object.\r\n\r\n @method value2submit(value) \r\n @param {mixed} value\r\n @returns {mixed}\r\n **/\r\n value2submit: function(value) {\r\n return value;\r\n },\r\n\r\n /**\r\n Sets value of input.\r\n\r\n @method value2input(value) \r\n @param {mixed} value\r\n **/\r\n value2input: function(value) {\r\n this.$input.val(value);\r\n },\r\n\r\n /**\r\n Returns value of input. Value can be object (e.g. datepicker)\r\n\r\n @method input2value() \r\n **/\r\n input2value: function() { \r\n return this.$input.val();\r\n }, \r\n\r\n /**\r\n Activates input. For text it sets focus.\r\n\r\n @method activate() \r\n **/\r\n activate: function() {\r\n if(this.$input.is(':visible')) {\r\n this.$input.focus();\r\n }\r\n },\r\n\r\n /**\r\n Creates input.\r\n\r\n @method clear() \r\n **/ \r\n clear: function() {\r\n this.$input.val(null);\r\n },\r\n\r\n /**\r\n method to escape html.\r\n **/\r\n escape: function(str) {\r\n return $('
    ').text(str).html();\r\n },\r\n \r\n /**\r\n attach handler to automatically submit form when value changed (useful when buttons not shown)\r\n **/\r\n autosubmit: function() {\r\n \r\n },\r\n \r\n /**\r\n Additional actions when destroying element \r\n **/\r\n destroy: function() {\r\n },\r\n\r\n // -------- helper functions --------\r\n setClass: function() { \r\n if(this.options.inputclass) {\r\n this.$input.addClass(this.options.inputclass); \r\n } \r\n },\r\n\r\n setAttr: function(attr) {\r\n if (this.options[attr] !== undefined && this.options[attr] !== null) {\r\n this.$input.attr(attr, this.options[attr]);\r\n } \r\n },\r\n \r\n option: function(key, value) {\r\n this.options[key] = value;\r\n }\r\n \r\n };\r\n \r\n AbstractInput.defaults = { \r\n /**\r\n HTML template of input. Normally you should not change it.\r\n\r\n @property tpl \r\n @type string\r\n @default ''\r\n **/ \r\n tpl: '',\r\n /**\r\n CSS class automatically applied to input\r\n \r\n @property inputclass \r\n @type string\r\n @default null\r\n **/ \r\n inputclass: null,\r\n \r\n /**\r\n If `true` - html will be escaped in content of element via $.text() method. \r\n If `false` - html will not be escaped, $.html() used. \r\n When you use own `display` function, this option obviosly has no effect.\r\n \r\n @property escape \r\n @type boolean\r\n @since 1.5.0\r\n @default true\r\n **/ \r\n escape: true,\r\n \r\n //scope for external methods (e.g. source defined as function)\r\n //for internal use only\r\n scope: null,\r\n \r\n //need to re-declare showbuttons here to get it's value from common config (passed only options existing in defaults)\r\n showbuttons: true \r\n };\r\n \r\n $.extend($.fn.editabletypes, {abstractinput: AbstractInput});\r\n \r\n}(window.jQuery));\r\n\r\n/**\r\nList - abstract class for inputs that have source option loaded from js array or via ajax\r\n\r\n@class list\r\n@extends abstractinput\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n \r\n var List = function (options) {\r\n \r\n };\r\n\r\n $.fn.editableutils.inherit(List, $.fn.editabletypes.abstractinput);\r\n\r\n $.extend(List.prototype, {\r\n render: function () {\r\n var deferred = $.Deferred();\r\n\r\n this.error = null;\r\n this.onSourceReady(function () {\r\n this.renderList();\r\n deferred.resolve();\r\n }, function () {\r\n this.error = this.options.sourceError;\r\n deferred.resolve();\r\n });\r\n\r\n return deferred.promise();\r\n },\r\n\r\n html2value: function (html) {\r\n return null; //can't set value by text\r\n },\r\n \r\n value2html: function (value, element, display, response) {\r\n var deferred = $.Deferred(),\r\n success = function () {\r\n if(typeof display === 'function') {\r\n //custom display method\r\n display.call(element, value, this.sourceData, response); \r\n } else {\r\n this.value2htmlFinal(value, element);\r\n }\r\n deferred.resolve();\r\n };\r\n \r\n //for null value just call success without loading source\r\n if(value === null) {\r\n success.call(this); \r\n } else {\r\n this.onSourceReady(success, function () { deferred.resolve(); });\r\n }\r\n\r\n return deferred.promise();\r\n }, \r\n\r\n // ------------- additional functions ------------\r\n\r\n onSourceReady: function (success, error) {\r\n //run source if it function\r\n var source;\r\n if ($.isFunction(this.options.source)) {\r\n source = this.options.source.call(this.options.scope);\r\n this.sourceData = null;\r\n //note: if function returns the same source as URL - sourceData will be taken from cahce and no extra request performed\r\n } else {\r\n source = this.options.source;\r\n } \r\n \r\n //if allready loaded just call success\r\n if(this.options.sourceCache && $.isArray(this.sourceData)) {\r\n success.call(this);\r\n return; \r\n }\r\n\r\n //try parse json in single quotes (for double quotes jquery does automatically)\r\n try {\r\n source = $.fn.editableutils.tryParseJson(source, false);\r\n } catch (e) {\r\n error.call(this);\r\n return;\r\n }\r\n\r\n //loading from url\r\n if (typeof source === 'string') {\r\n //try to get sourceData from cache\r\n if(this.options.sourceCache) {\r\n var cacheID = source,\r\n cache;\r\n\r\n if (!$(document).data(cacheID)) {\r\n $(document).data(cacheID, {});\r\n }\r\n cache = $(document).data(cacheID);\r\n\r\n //check for cached data\r\n if (cache.loading === false && cache.sourceData) { //take source from cache\r\n this.sourceData = cache.sourceData;\r\n this.doPrepend();\r\n success.call(this);\r\n return;\r\n } else if (cache.loading === true) { //cache is loading, put callback in stack to be called later\r\n cache.callbacks.push($.proxy(function () {\r\n this.sourceData = cache.sourceData;\r\n this.doPrepend();\r\n success.call(this);\r\n }, this));\r\n\r\n //also collecting error callbacks\r\n cache.err_callbacks.push($.proxy(error, this));\r\n return;\r\n } else { //no cache yet, activate it\r\n cache.loading = true;\r\n cache.callbacks = [];\r\n cache.err_callbacks = [];\r\n }\r\n }\r\n \r\n //ajaxOptions for source. Can be overwritten bt options.sourceOptions\r\n var ajaxOptions = $.extend({\r\n url: source,\r\n type: 'get',\r\n cache: false,\r\n dataType: 'json',\r\n success: $.proxy(function (data) {\r\n if(cache) {\r\n cache.loading = false;\r\n }\r\n this.sourceData = this.makeArray(data);\r\n if($.isArray(this.sourceData)) {\r\n if(cache) {\r\n //store result in cache\r\n cache.sourceData = this.sourceData;\r\n //run success callbacks for other fields waiting for this source\r\n $.each(cache.callbacks, function () { this.call(); }); \r\n }\r\n this.doPrepend();\r\n success.call(this);\r\n } else {\r\n error.call(this);\r\n if(cache) {\r\n //run error callbacks for other fields waiting for this source\r\n $.each(cache.err_callbacks, function () { this.call(); }); \r\n }\r\n }\r\n }, this),\r\n error: $.proxy(function () {\r\n error.call(this);\r\n if(cache) {\r\n cache.loading = false;\r\n //run error callbacks for other fields\r\n $.each(cache.err_callbacks, function () { this.call(); }); \r\n }\r\n }, this)\r\n }, this.options.sourceOptions);\r\n \r\n //loading sourceData from server\r\n $.ajax(ajaxOptions);\r\n \r\n } else { //options as json/array\r\n this.sourceData = this.makeArray(source);\r\n \r\n if($.isArray(this.sourceData)) {\r\n this.doPrepend();\r\n success.call(this); \r\n } else {\r\n error.call(this);\r\n }\r\n }\r\n },\r\n\r\n doPrepend: function () {\r\n if(this.options.prepend === null || this.options.prepend === undefined) {\r\n return; \r\n }\r\n \r\n if(!$.isArray(this.prependData)) {\r\n //run prepend if it is function (once)\r\n if ($.isFunction(this.options.prepend)) {\r\n this.options.prepend = this.options.prepend.call(this.options.scope);\r\n }\r\n \r\n //try parse json in single quotes\r\n this.options.prepend = $.fn.editableutils.tryParseJson(this.options.prepend, true);\r\n \r\n //convert prepend from string to object\r\n if (typeof this.options.prepend === 'string') {\r\n this.options.prepend = {'': this.options.prepend};\r\n }\r\n \r\n this.prependData = this.makeArray(this.options.prepend);\r\n }\r\n\r\n if($.isArray(this.prependData) && $.isArray(this.sourceData)) {\r\n this.sourceData = this.prependData.concat(this.sourceData);\r\n }\r\n },\r\n\r\n /*\r\n renders input list\r\n */\r\n renderList: function() {\r\n // this method should be overwritten in child class\r\n },\r\n \r\n /*\r\n set element's html by value\r\n */\r\n value2htmlFinal: function(value, element) {\r\n // this method should be overwritten in child class\r\n }, \r\n\r\n /**\r\n * convert data to array suitable for sourceData, e.g. [{value: 1, text: 'abc'}, {...}]\r\n */\r\n makeArray: function(data) {\r\n var count, obj, result = [], item, iterateItem;\r\n if(!data || typeof data === 'string') {\r\n return null; \r\n }\r\n\r\n if($.isArray(data)) { //array\r\n /* \r\n function to iterate inside item of array if item is object.\r\n Caclulates count of keys in item and store in obj. \r\n */\r\n iterateItem = function (k, v) {\r\n obj = {value: k, text: v};\r\n if(count++ >= 2) {\r\n return false;// exit from `each` if item has more than one key.\r\n }\r\n };\r\n \r\n for(var i = 0; i < data.length; i++) {\r\n item = data[i]; \r\n if(typeof item === 'object') {\r\n count = 0; //count of keys inside item\r\n $.each(item, iterateItem);\r\n //case: [{val1: 'text1'}, {val2: 'text2} ...]\r\n if(count === 1) { \r\n result.push(obj); \r\n //case: [{value: 1, text: 'text1'}, {value: 2, text: 'text2'}, ...]\r\n } else if(count > 1) {\r\n //removed check of existance: item.hasOwnProperty('value') && item.hasOwnProperty('text')\r\n if(item.children) {\r\n item.children = this.makeArray(item.children); \r\n }\r\n result.push(item);\r\n }\r\n } else {\r\n //case: ['text1', 'text2' ...]\r\n result.push({value: item, text: item}); \r\n }\r\n }\r\n } else { //case: {val1: 'text1', val2: 'text2, ...}\r\n $.each(data, function (k, v) {\r\n result.push({value: k, text: v});\r\n }); \r\n }\r\n return result;\r\n },\r\n \r\n option: function(key, value) {\r\n this.options[key] = value;\r\n if(key === 'source') {\r\n this.sourceData = null;\r\n }\r\n if(key === 'prepend') {\r\n this.prependData = null;\r\n } \r\n } \r\n\r\n }); \r\n\r\n List.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n /**\r\n Source data for list. \r\n If **array** - it should be in format: `[{value: 1, text: \"text1\"}, {value: 2, text: \"text2\"}, ...]` \r\n For compability, object format is also supported: `{\"1\": \"text1\", \"2\": \"text2\" ...}` but it does not guarantee elements order.\r\n \r\n If **string** - considered ajax url to load items. In that case results will be cached for fields with the same source and name. See also `sourceCache` option.\r\n \r\n If **function**, it should return data in format above (since 1.4.0).\r\n \r\n Since 1.4.1 key `children` supported to render OPTGROUP (for **select** input only). \r\n `[{text: \"group1\", children: [{value: 1, text: \"text1\"}, {value: 2, text: \"text2\"}]}, ...]` \r\n\r\n\t\t\r\n @property source \r\n @type string | array | object | function\r\n @default null\r\n **/ \r\n source: null, \r\n /**\r\n Data automatically prepended to the beginning of dropdown list.\r\n \r\n @property prepend \r\n @type string | array | object | function\r\n @default false\r\n **/ \r\n prepend: false,\r\n /**\r\n Error message when list cannot be loaded (e.g. ajax error)\r\n \r\n @property sourceError \r\n @type string\r\n @default Error when loading list\r\n **/ \r\n sourceError: 'Error when loading list',\r\n /**\r\n if true and source is **string url** - results will be cached for fields with the same source. \r\n Usefull for editable column in grid to prevent extra requests.\r\n \r\n @property sourceCache \r\n @type boolean\r\n @default true\r\n @since 1.2.0\r\n **/ \r\n sourceCache: true,\r\n /**\r\n Additional ajax options to be used in $.ajax() when loading list from server.\r\n Useful to send extra parameters (`data` key) or change request method (`type` key).\r\n \r\n @property sourceOptions \r\n @type object|function\r\n @default null\r\n @since 1.5.0\r\n **/ \r\n sourceOptions: null\r\n });\r\n\r\n $.fn.editabletypes.list = List; \r\n\r\n}(window.jQuery));\r\n\r\n/**\r\nText input\r\n\r\n@class text\r\n@extends abstractinput\r\n@final\r\n@example\r\nawesome\r\n\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n \r\n var Text = function (options) {\r\n this.init('text', options, Text.defaults);\r\n };\r\n\r\n $.fn.editableutils.inherit(Text, $.fn.editabletypes.abstractinput);\r\n\r\n $.extend(Text.prototype, {\r\n render: function() {\r\n this.renderClear();\r\n this.setClass();\r\n this.setAttr('placeholder');\r\n },\r\n \r\n activate: function() {\r\n if(this.$input.is(':visible')) {\r\n this.$input.focus();\r\n $.fn.editableutils.setCursorPosition(this.$input.get(0), this.$input.val().length);\r\n if(this.toggleClear) {\r\n this.toggleClear();\r\n }\r\n }\r\n },\r\n \r\n //render clear button\r\n renderClear: function() {\r\n if (this.options.clear) {\r\n this.$clear = $('');\r\n this.$input.after(this.$clear)\r\n .css('padding-right', 24)\r\n .keyup($.proxy(function(e) {\r\n //arrows, enter, tab, etc\r\n if(~$.inArray(e.keyCode, [40,38,9,13,27])) {\r\n return;\r\n } \r\n\r\n clearTimeout(this.t);\r\n var that = this;\r\n this.t = setTimeout(function() {\r\n that.toggleClear(e);\r\n }, 100);\r\n \r\n }, this))\r\n .parent().css('position', 'relative');\r\n \r\n this.$clear.click($.proxy(this.clear, this)); \r\n } \r\n },\r\n \r\n postrender: function() {\r\n /*\r\n //now `clear` is positioned via css\r\n if(this.$clear) {\r\n //can position clear button only here, when form is shown and height can be calculated\r\n// var h = this.$input.outerHeight(true) || 20,\r\n var h = this.$clear.parent().height(),\r\n delta = (h - this.$clear.height()) / 2;\r\n \r\n //this.$clear.css({bottom: delta, right: delta});\r\n }\r\n */ \r\n },\r\n \r\n //show / hide clear button\r\n toggleClear: function(e) {\r\n if(!this.$clear) {\r\n return;\r\n }\r\n \r\n var len = this.$input.val().length,\r\n visible = this.$clear.is(':visible');\r\n \r\n if(len && !visible) {\r\n this.$clear.show();\r\n } \r\n \r\n if(!len && visible) {\r\n this.$clear.hide();\r\n } \r\n },\r\n \r\n clear: function() {\r\n this.$clear.hide();\r\n this.$input.val('').focus();\r\n } \r\n });\r\n\r\n Text.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n /**\r\n @property tpl \r\n @default \r\n **/ \r\n tpl: '',\r\n /**\r\n Placeholder attribute of input. Shown when input is empty.\r\n\r\n @property placeholder \r\n @type string\r\n @default null\r\n **/ \r\n placeholder: null,\r\n \r\n /**\r\n Whether to show `clear` button \r\n \r\n @property clear \r\n @type boolean\r\n @default true \r\n **/\r\n clear: true\r\n });\r\n\r\n $.fn.editabletypes.text = Text;\r\n\r\n}(window.jQuery));\r\n\r\n/**\r\nTextarea input\r\n\r\n@class textarea\r\n@extends abstractinput\r\n@final\r\n@example\r\nawesome comment!\r\n\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n \r\n var Textarea = function (options) {\r\n this.init('textarea', options, Textarea.defaults);\r\n };\r\n\r\n $.fn.editableutils.inherit(Textarea, $.fn.editabletypes.abstractinput);\r\n\r\n $.extend(Textarea.prototype, {\r\n render: function () {\r\n this.setClass();\r\n this.setAttr('placeholder');\r\n this.setAttr('rows'); \r\n \r\n //ctrl + enter\r\n this.$input.keydown(function (e) {\r\n if (e.ctrlKey && e.which === 13) {\r\n $(this).closest('form').submit();\r\n }\r\n });\r\n },\r\n \r\n //using `white-space: pre-wrap` solves \\n <--> BR conversion very elegant!\r\n /* \r\n value2html: function(value, element) {\r\n var html = '', lines;\r\n if(value) {\r\n lines = value.split(\"\\n\");\r\n for (var i = 0; i < lines.length; i++) {\r\n lines[i] = $('
    ').text(lines[i]).html();\r\n }\r\n html = lines.join('
    ');\r\n }\r\n $(element).html(html);\r\n },\r\n \r\n html2value: function(html) {\r\n if(!html) {\r\n return '';\r\n }\r\n\r\n var regex = new RegExp(String.fromCharCode(10), 'g');\r\n var lines = html.split(//i);\r\n for (var i = 0; i < lines.length; i++) {\r\n var text = $('
    ').html(lines[i]).text();\r\n\r\n // Remove newline characters (\\n) to avoid them being converted by value2html() method\r\n // thus adding extra
    tags\r\n text = text.replace(regex, '');\r\n\r\n lines[i] = text;\r\n }\r\n return lines.join(\"\\n\");\r\n },\r\n */\r\n activate: function() {\r\n $.fn.editabletypes.text.prototype.activate.call(this);\r\n }\r\n });\r\n\r\n Textarea.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n /**\r\n @property tpl\r\n @default \r\n **/\r\n tpl:'',\r\n /**\r\n @property inputclass\r\n @default input-large\r\n **/\r\n inputclass: 'input-large',\r\n /**\r\n Placeholder attribute of input. Shown when input is empty.\r\n\r\n @property placeholder\r\n @type string\r\n @default null\r\n **/\r\n placeholder: null,\r\n /**\r\n Number of rows in textarea\r\n\r\n @property rows\r\n @type integer\r\n @default 7\r\n **/ \r\n rows: 7 \r\n });\r\n\r\n $.fn.editabletypes.textarea = Textarea;\r\n\r\n}(window.jQuery));\r\n\r\n/**\r\nSelect (dropdown)\r\n\r\n@class select\r\n@extends list\r\n@final\r\n@example\r\n\r\n\r\n**/\r\n(function ($) {\r\n \"use strict\";\r\n \r\n var Select = function (options) {\r\n this.init('select', options, Select.defaults);\r\n };\r\n\r\n $.fn.editableutils.inherit(Select, $.fn.editabletypes.list);\r\n\r\n $.extend(Select.prototype, {\r\n renderList: function() {\r\n this.$input.empty();\r\n\r\n var fillItems = function($el, data) {\r\n var attr;\r\n if($.isArray(data)) {\r\n for(var i=0; i', attr), data[i].children)); \r\n } else {\r\n attr.value = data[i].value;\r\n if(data[i].disabled) {\r\n attr.disabled = true;\r\n }\r\n $el.append($('
  • \").html(this[this.length - 1].ErrorMessage).appendTo(list);\r\n });\r\n }\r\n\r\n $('#question-dialog').animate({ scrollTop: 0 }, 800);\r\n\r\n } else {\r\n // get and restore collapsible panel states\r\n var openPanelIds = $(\".panel-collapse.collapse.in\").map(function () { return this.id; }).get();\r\n \r\n $('#tasks-content').html(result.contentTasksHtml);\r\n $('.trip-heading-title').html(result.tripHeadingTitle);\r\n $('.trip-content-heading').html(result.tripContentHeadingHtml);\r\n\r\n if ($('#content-trip-viewprofile').length > 0 && !$(\"#content-trip-viewprofile\").hasClass(\"hidden\")) {\r\n $('#view-profile-content').html(result.currentInviteeProfileHtml);\r\n $(\"#content-trip-viewprofile\").removeClass(\"hidden\"); // show it as it was previously being shown\r\n }\r\n\r\n RefreshInviteesTab(result.inviteesDetailsHtmlString, result.showInvitees);\r\n\r\n if (YouLi.Trip.Payments != undefined)\r\n YouLi.Trip.Payments.BillToEmail = result.currentInviteeEmail;\r\n\r\n if (openPanelIds.length > 0) {\r\n $('#' + openPanelIds.join(',#')).collapse(\"show\");\r\n }\r\n YouLi.Trip.Tasks.FilterTasks();\r\n $('#question-dialog').modal('hide');\r\n $(\"#content-trip-tasks\").toggleClass(\"hidden\", YouLi.Trip.CurrentSection != \"tasks\");\r\n\r\n setTimeout(function () {\r\n // animate the hiding of the just-completed task (if it was completed)\r\n if (!YouLi.Trip.ShowCompleted) {\r\n $(\".completing\").fadeOut(1000, function () {\r\n $(\".completing\").removeClass(\"completing\");\r\n });\r\n }\r\n else \r\n {\r\n $(\".completing\").removeClass(\"completing\");\r\n }\r\n }, 1000);\r\n\r\n YouLi.Trip.UpdateResponseFooter(runOnce = true, checkTripUpdates = false);\r\n }\r\n\r\n };\r\n\r\n YouLi.Trip.Tasks.TaskRespondFormFailure = function (xhr, status, error) {\r\n var formSubmitBtn = $(\"form\").find(\"button[type='submit']\");\r\n YouLi.Common.UI.HideButtonLoading(formSubmitBtn);\r\n\r\n // update the summary with the error\r\n var summaryContainer = $('div[data-valmsg-summary=true]'),\r\n list = summaryContainer.find(\"ul\");\r\n if (list && list.length) {\r\n list.empty();\r\n summaryContainer.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $(\"
  • \").html(error).appendTo(list);\r\n }\r\n\r\n $('#question-dialog').animate({ scrollTop: 0 }, 800);\r\n };\r\n\r\n var RefreshInviteesTab = function (tabHTML, showInviteeTab) {\r\n if (showInviteeTab) {\r\n // Display and refresh invitees tab (if not already displayed)\r\n $(\".content-tab-invitees\").removeClass(\"hidden\");\r\n\r\n $(\"#invitees-content\").html(tabHTML);\r\n\r\n YouLi.Trip.SetupInviteeSectionMenu();\r\n }\r\n }\r\n\r\n $(function () {\r\n\r\n // Response functionality\r\n $(document).on(\"click touchstart\", \".task-do-response\", function () {\r\n\r\n var taskItemId = $(this).data(\"task-item-id\");\r\n var inviteeId = $(\"#InviteeId\").val();\r\n var previewMode = $(\"#PreviewMode\").val();\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n $(\"#question-dialog-content\").load('/trip/taskrespond?taskItemId=' + taskItemId + \"&inviteeid=\" + inviteeId + \"&preview=\" + previewMode, function (responseText, textStatus, XMLHttpRequest) {\r\n YouLi.Common.UI.HideLoading();\r\n if (textStatus == \"error\") {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when loading response\");\r\n }\r\n else {\r\n $('#question-dialog').modal('show');\r\n }\r\n });\r\n });\r\n\r\n $(document).on(\"click\", \"#FilterTasks\", function () {\r\n // toggle filter\r\n YouLi.Trip.ShowCompleted = !YouLi.Trip.ShowCompleted;\r\n YouLi.Trip.Tasks.FilterTasks();\r\n });\r\n\r\n // initially hide or show completed, depending on number of tasks outstanding\r\n YouLi.Trip.Tasks.FilterTasks();\r\n\r\n });\r\n\r\n }(YouLi.Trip.Tasks ? YouLi.Trip.Tasks : {}));\r\n }(YouLi.Trip ? YouLi.Trip : {}));\r\n}(YouLi ? YouLi : {}));\r\n","(function ( $ ) {\r\n \r\n $.multiStateCheck = function (element, options) {\r\n\r\n var defaults = {\r\n states: [\"crossed\", \"unchecked\", \"checked\"],\r\n onAfterChangeState: function () { },\r\n }\r\n\r\n var plugin = this;\r\n\r\n plugin.settings = {}\r\n\r\n var $element = $(element),\r\n element = element;\r\n\r\n plugin.init = function () {\r\n plugin.settings = $.extend({}, defaults, options);\r\n\r\n $element.off(\"click\").on(\"click\", function (e) {\r\n\r\n if ($(this).attr(\"disabled\")) {\r\n return;\r\n }\r\n\r\n // three-way state\r\n //switch ($(this).attr(\"data-state\")) {\r\n // case \"checked\":\r\n // $(this).attr(\"data-state\", \"crossed\");\r\n // break;\r\n // case \"crossed\":\r\n // $(this).attr(\"data-state\", \"unchecked\");\r\n // break;\r\n // default: /* unchecked */\r\n // $(this).attr(\"data-state\", \"checked\");\r\n //}\r\n\r\n var currentState = $(this).attr(\"data-state\");\r\n var indexCurrentState = options.states.indexOf(currentState);\r\n var nextState = indexCurrentState == options.states.length - 1 ? 0 : indexCurrentState + 1; // either choose the next state, or if we are at the last state, choose the first state\r\n $(this).attr(\"data-state\", options.states[nextState])\r\n\r\n if (options.onAfterChangeState !== undefined) {\r\n options.onAfterChangeState(e);\r\n }\r\n });\r\n\r\n }\r\n\r\n plugin.revert = function () {\r\n if ($element.attr(\"disabled\")) {\r\n return;\r\n }\r\n console.log(\"Reverting\");\r\n // three-way state\r\n //switch ($element.attr(\"data-state\")) {\r\n // case \"checked\":\r\n // $element.attr(\"data-state\", \"unchecked\");\r\n // break;\r\n // case \"crossed\":\r\n // $element.attr(\"data-state\", \"checked\");\r\n // break;\r\n // default:\r\n // $element.attr(\"data-state\", \"crossed\");\r\n //}\r\n\r\n var currentState = $element.attr(\"data-state\");\r\n var indexCurrentState = options.states.indexOf(currentState);\r\n var nextState = 0 ? options.states.length - 1 : indexCurrentState - 1; // either choose the previous state, or if we are at the first state, choose the last state\r\n $element.attr(\"data-state\", options.states[nextState])\r\n }\r\n\r\n plugin.init(); \r\n }\r\n\r\n $.fn.multiStateCheck = function (options) {\r\n\r\n return this.each(function () {\r\n if ($(this).data('multiStateCheck') == undefined) {\r\n var plugin = new $.multiStateCheck(this, options);\r\n $(this).data('multiStateCheck', plugin);\r\n }\r\n });\r\n }\r\n}(jQuery));\r\n\r\n\r\n","var YouLi = YouLi ? YouLi : {};\r\nYouLi.TripDates = YouLi.TripDates ? YouLi.TripDates : {};\r\n\r\n(function (YouLi) {\r\n (function (TripDates) {\r\n\r\n\r\n function UpdateEndDate() {\r\n\r\n let startDate = $('.datepicker', '#TripDatesStartDate').data(\"DateTimePicker\");\r\n let endDate = $('.datepicker', '#TripDatesEndDate').data(\"DateTimePicker\");\r\n //set the date values based on the other one\r\n if (startDate && endDate) {\r\n if (startDate.date() != null) {\r\n if ($('#TripDates_EndDate').val() == \"\" || endDate.date() == null || Date.parse(startDate.date()) > Date.parse(endDate.date())) {\r\n endDate.date(startDate.date());\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n YouLi.TripDates.Initialise = function () {\r\n $(document).off(\"dp.show\", \"#TripDatesEndDate\");\r\n $(document).on(\"dp.show\", \"#TripDatesEndDate\", function (e) {\r\n // YOULI-459 - default the initial month\r\n datePicker = $('.datepicker', '#TripDatesEndDate').data(\"DateTimePicker\");\r\n if (datePicker.date() == null) {\r\n if ($(\"#TripDates_StartDate\").val() != \"\") {\r\n datePicker.date($(\"#TripDates_StartDate\").val());\r\n }\r\n datePicker.date(null);\r\n }\r\n });\r\n\r\n\r\n\r\n $(document).on(\"dp.change\", \"#TripDatesEndDate\", function () {\r\n UpdateEndDate()\r\n ToggleEstimatedDateFields();\r\n });\r\n\r\n $(document).on(\"dp.change\", \"#TripDatesStartDate\", function () {\r\n UpdateEndDate()\r\n ToggleEstimatedDateFields();\r\n });\r\n\r\n $(document).off('click', \"#toggle-date-estimate\").on(\"click\", \"#toggle-date-estimate\", function () {\r\n\r\n // toggle selection mode\r\n $(\"#TripDates_DateSelectionMode\").val($(\"#TripDates_DateSelectionMode\").val() == \"exact\" ? \"approx\" : \"exact\");\r\n\r\n ToggleEstimatedDateFields();\r\n });\r\n ToggleEstimatedDateFields(true); //init\r\n\r\n $(document).on(\"change\", \"#TripDates_IsSingleDay\", function () {\r\n\r\n var hasTime = $('#TripDates_IsSingleDay').is(\":checked\");\r\n $('.time-section').toggleClass('hidden', !hasTime);\r\n\r\n });\r\n\r\n $(\"#TripDatesStartTime\").on(\"dp.change\", \".timepicker\", function (e) {\r\n\r\n let startTime = $('.timepicker', '#TripDatesStartTime').data(\"DateTimePicker\");\r\n let endTime = $('.timepicker', '#TripDatesEndTime').data(\"DateTimePicker\");\r\n\r\n if (startTime && endTime) {\r\n if (startTime.date() !== null && endTime.date() === null) {\r\n endTime.date(startTime.date());\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n function ToggleEstimatedDateFields(isInit) {\r\n var selectionMode = $(\"#TripDates_DateSelectionMode\").val();\r\n\r\n if (!isInit)\r\n $(\"#pendingSaveSpan\").show();\r\n\r\n if (selectionMode == \"exact\") {\r\n // show exact\r\n $(\".exactDate\").show();\r\n $(\"#approxDate\").hide();\r\n $(\"#toggle-dateType-text\").text(\"Not sure? Switch to enter free text\");\r\n \r\n // Reminders: only show \"ON\" if the trip is considered active (see https://docs.google.com/spreadsheets/d/1DEIvcV95Rv3LdyFNvBUmQV5CRrapGtpRhYNzVOJVS3I/edit#gid=0).\r\n var endDate = moment($(\"#TripDates_EndDate\").val(), \"D MMM YYYY\");\r\n var dateNow = new moment();\r\n if (!endDate || !endDate.isValid()) {\r\n $(\"#auto-reminders-status\").text(\"OFF\");\r\n $(\".reminders-status a\").attr(\"data-original-title\", \"Automated reminders OFF for this trip. Set a Start and End date to turn ON.\");\r\n }\r\n else if (endDate < new moment().subtract(1, 'month')) {\r\n $(\"#auto-reminders-status\").text(\"OFF\");\r\n $(\".reminders-status a\").attr(\"data-original-title\", \"Automated reminders OFF for this trip because it is more than one month ago.\");\r\n \r\n }\r\n else {\r\n $(\"#auto-reminders-status\").text(\"ON\");\r\n $(\".reminders-status a\").attr(\"data-original-title\", \"Automated reminders are ON for this trip. Click 'Don't know dates yet?' to turn OFF.\");\r\n }\r\n }\r\n else {\r\n // show approx\r\n $(\".exactDate\").hide();\r\n $(\"#approxDate\").show();\r\n $(\"#toggle-dateType-text\").text(\"Ready to Go? Switch to Set your Dates\");\r\n\r\n $(\"#auto-reminders-status\").text(\"OFF\");\r\n $(\".reminders-status a\").attr(\"data-original-title\", \"Automated reminders OFF for this trip. Click 'I know the trip dates' to set dates and turn ON.\");\r\n }\r\n }\r\n\r\n\r\n }(YouLi.TripDates ? YouLi.TripDates : {}));\r\n}(YouLi ? YouLi : {}));\r\n","(function ($) {\r\n\r\n $.fn.updateAvatarInline = function (options) {\r\n\r\n var self = $(this);\r\n\r\n var settings = $.extend({\r\n HiddenValueSelector: \"#ImageURL\",\r\n ImageFieldSelector: \"\",\r\n FileInputFieldSelector: \"\",\r\n SuccessHandler: undefined,\r\n S3RefreshURL: \"\",\r\n TargetImageFieldWidth: 100,\r\n TargetImageFieldHeight: 100,\r\n ValidFileTypes: undefined\r\n }, options);\r\n\r\n self.uploadAttemptsCount = 0;\r\n\r\n function UploadSuccess(data, textStatus, xhr) {\r\n\r\n var newSrc = YouLi.Common.Utils.AddParametersToURL(\"https://ylt-images.imgix.net/\" + encodeURIComponent(YouLi.Common.S3FileUpload.NewFileKey), \"fit=crop&crop=\" + settings.CropType + (settings.ModalImageFieldHeight == \"auto\" ? \"\" : \"&h=\" + settings.ModalImageFieldHeight) + \"&w=\" + settings.ModalImageFieldWidth),\r\n image = new Image();\r\n image.src = newSrc;\r\n image.onload = function () {\r\n self.find(\".thumbnail-image\").attr(\"src\", newSrc);\r\n YouLi.Common.UI.HideAvatarLoading(settings.FileInputFieldSelector);\r\n YouLi.Common.UI.HideButtonLoading(\".btn-form-complete\");\r\n }\r\n $(settings.HiddenValueSelector).val(encodeURIComponent(YouLi.Common.S3FileUpload.NewFileKey)); // could call if needed: .trigger(\"change\");\r\n\r\n self.find(\"#file\").val(\"\"); /* clear file selection to allow the same file to be selected again and trigger upload */\r\n\r\n // Nb: loading button will be cleared when new image is loaded\r\n }\r\n\r\n function UploadError(xhr, ajaxOptions, thrownError) {\r\n\r\n if (xhr.status == 403 && self.uploadAttemptsCount == 0) {\r\n // forbidden - try to refresh policy\r\n $.ajax({\r\n url: settings.S3RefreshURL,\r\n type: \"GET\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n if (response.status != 200 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred. Please refresh the page to try again.\");\r\n }\r\n else {\r\n YouLi.Common.S3FileUpload.KeyPrefix = response.responseJSON.newKeyPrefix + response.responseJSON.newUUID;\r\n YouLi.Common.S3FileUpload.Uuid = response.responseJSON.newUUID;\r\n YouLi.Common.S3FileUpload.Policy = response.responseJSON.policy;\r\n YouLi.Common.S3FileUpload.PolicySignature = response.responseJSON.policySignature;\r\n\r\n // retry upload\r\n self.uploadAttemptsCount++;\r\n YouLi.Common.S3FileUpload.SingleFileSelected(self.querySelector(\"input[type='file']\"), settings.ValidFileTypes, UploadSuccess, UploadError, UploadComplete);\r\n }\r\n }\r\n\r\n });\r\n }\r\n else {\r\n alert(\"There was an error attempting to upload the file. (\" + thrownError + \")\");\r\n self.uploadAttemptsCount++;\r\n self.find(\"#file\").val(\"\"); /* clear file selection to allow the same file to be selected again and trigger upload */\r\n YouLi.Common.UI.HideAvatarLoading(settings.FileInputFieldSelector);\r\n YouLi.Common.UI.HideButtonLoading(\".btn-form-complete\");\r\n }\r\n }\r\n\r\n function UploadComplete(data, textStatus, xhr) {\r\n }\r\n\r\n $(function () {\r\n YouLi.Common.UI.Init();\r\n\r\n self.off(\"change\", \"input[type='file']\").on(\"change\", \"input[type='file']\", function (e) {\r\n if (this.files.length >= 1) {\r\n YouLi.Common.UI.ShowAvatarLoading(settings.FileInputFieldSelector);\r\n YouLi.Common.UI.ShowButtonLoading(\".btn-form-complete\");\r\n \r\n // Get a fresh S3 policy every time (so a user can upload the same file more than once, e.g. after changing it on their computer)\r\n $.ajax({\r\n url: settings.S3RefreshURL,\r\n type: \"GET\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n if (response.status != 200 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred. Please refresh the page to try again.\");\r\n }\r\n else {\r\n YouLi.Common.S3FileUpload.KeyPrefix = response.responseJSON.newKeyPrefix + response.responseJSON.newUUID;\r\n YouLi.Common.S3FileUpload.Uuid = response.responseJSON.newUUID;\r\n YouLi.Common.S3FileUpload.Policy = response.responseJSON.policy;\r\n YouLi.Common.S3FileUpload.PolicySignature = response.responseJSON.policySignature;\r\n\r\n self.uploadAttemptsCount = 0;\r\n\r\n if (!YouLi.Common.S3FileUpload.SingleFileSelected(e.target, settings.ValidFileTypes, UploadSuccess, UploadError, UploadComplete)) {\r\n YouLi.Common.UI.HideAvatarLoading(settings.FileInputFieldSelector);\r\n YouLi.Common.UI.HideButtonLoading(\".btn-form-complete\");\r\n }\r\n }\r\n }\r\n\r\n });\r\n }\r\n });\r\n });\r\n\r\n return this;\r\n };\r\n\r\n}(jQuery));","var YouLiS3ResourceUpload = function (options, queueElement) {\r\n\r\n this.queueElement = queueElement;\r\n\r\n this.resourceDisplayName = \"\";\r\n this.contentType = \"\";\r\n this.uploadAttemptsCount = 0;\r\n\r\n this.options = $.extend({\r\n UploadUrl: \"\",\r\n SuccessURL: \"\",\r\n KeyPrefix: \"\",\r\n ACL: \"\",\r\n Uuid: \"\",\r\n AccessKey: \"\",\r\n Policy: \"\",\r\n PolicySignature: \"\",\r\n NewFileKey: \"\",\r\n FileTypeDescription: \"image\",\r\n FileTypeErrorText: \"\",\r\n MaxFileSize: 8000000,\r\n ValidFileTypes: [\"image/gif\", \"image/jpeg\", \"image/png\", \"application/pdf\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\r\n \"application/vnd.ms-excel\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \"text/plain\", \"application/vnd.apple.numbers\", \"application/vnd.apple.pages\"],\r\n }, options);\r\n\r\n this.progressHandler = function (e) {\r\n var self = this;\r\n if (e.lengthComputable) {\r\n var percentComplete = Math.round(e.loaded * 100 / e.total);\r\n self.queueElement.find(\".file-progress\").css(\"width\", percentComplete + '%').attr('aria-valuenow', percentComplete);\r\n self.queueElement.find('.file-progress span').text(percentComplete + \"%\");\r\n }\r\n else {\r\n self.queueElement.find('.file-progress span').text('unable to compute');\r\n }\r\n };\r\n\r\n this.completeHandler = function (xhr, status) {\r\n self.queueElement.find(\".progress\").addClass(\"hidden\");\r\n };\r\n\r\n this.successHandler = function (result, status, xhr) {\r\n if (xhr && xhr.status == 200) {\r\n alert(\"Success\");\r\n }\r\n };\r\n\r\n this.errorHandler = function (xhr, status, error) {\r\n alert(\"There was an error attempting to upload the file. (\" + error + \")\");\r\n };\r\n};\r\n\r\nYouLiS3ResourceUpload.prototype.SingleFileSelected = function (selectedFile, overrideSuccessHandler, overrideErrorHandler, overrideCompleteHandler, overrideProgressHandler) {\r\n\r\n if (selectedFile) {\r\n if (selectedFile.size > this.options.MaxFileSize) {\r\n alert(\"File must be max \" + (this.options.MaxFileSize / 1000000) + \"MB in size\");\r\n return false;\r\n }\r\n else if (this.options.ValidFileTypes.length > 0 && !(YouLi.Validation.IsValidFileType(selectedFile, this.options.ValidFileTypes))) {\r\n // the file doesn't match the valid file types or any of the override extensions\r\n if (this.options.FileTypeErrorText.length > 0) {\r\n alert(this.options.FileTypeErrorText);\r\n }\r\n else {\r\n alert(\"File must be a valid \" + this.options.FileTypeDescription);\r\n }\r\n return false;\r\n }\r\n\r\n this.UploadFile(selectedFile, overrideSuccessHandler, overrideErrorHandler, overrideCompleteHandler, overrideProgressHandler);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nYouLiS3ResourceUpload.prototype.UploadFile = function (selectedFile, overrideSuccessHandler, overrideErrorHandler, overrideCompleteHandler, overrideProgressHandler) {\r\n\r\n var self = this;\r\n\r\n var redirect = \"\";\r\n\r\n if (typeof FormData === \"undefined\") {\r\n // Redirect to an empty page is required for IE < 10\r\n redirect = this.options.SuccessURL;\r\n }\r\n\r\n var dataString = new FormData();\r\n\r\n this.options.NewFileKey = this.options.KeyPrefix + selectedFile.name;\r\n this.resourceDisplayName = selectedFile.name;\r\n this.contentType = YouLi.Common.Utils.MimeType(YouLi.Common.Utils.GetFileExtension(selectedFile.name));\r\n\r\n dataString.append(\"key\", this.options.NewFileKey);\r\n dataString.append(\"acl\", this.options.ACL);\r\n dataString.append(\"Content-Type\", YouLi.Common.Utils.MimeType(YouLi.Common.Utils.GetFileExtension(selectedFile.name)));\r\n dataString.append(\"x-amz-meta-uuid\", this.options.Uuid);\r\n dataString.append(\"AWSAccessKeyId\", this.options.AccessKey);\r\n dataString.append(\"Policy\", this.options.Policy);\r\n dataString.append(\"Signature\", this.options.PolicySignature);\r\n dataString.append(\"success_action_redirect\", redirect);\r\n dataString.append('file', selectedFile);\r\n\r\n if (self.queueElement !== undefined) {\r\n self.queueElement.find(\".file-progress\").css(\"width\", '0%').attr('aria-valuenow', 0);\r\n self.queueElement.find(\".progress\").removeClass(\"hidden\");\r\n };\r\n\r\n $.ajax({\r\n url: this.options.UploadUrl,\r\n type: 'POST',\r\n xhr: function () { // Custom XMLHttpRequest\r\n var myXhr = $.ajaxSettings.xhr();\r\n if (myXhr.upload) { // Check if upload property exists\r\n myXhr.upload.addEventListener('progress', (function (passedInElement) {\r\n return function (e) { overrideProgressHandler !== undefined ? overrideProgressHandler(e, passedInElement) : self.progressHandler(e, passedInElement); };\r\n })(self.queueElement), false); // For handling the progress of the upload\r\n }\r\n return myXhr;\r\n },\r\n //Ajax events\r\n success: function (result, status, xhr) {\r\n if (overrideSuccessHandler !== undefined) {\r\n eval(overrideSuccessHandler(result, status, xhr, self.queueElement, self.options.NewFileKey, self.resourceDisplayName, self.contentType));\r\n }\r\n else {\r\n self.successHandler(result, status, xhr);\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n if (overrideErrorHandler !== undefined) {\r\n eval(overrideErrorHandler(xhr, status, error, self));\r\n }\r\n else {\r\n self.errorHandler(xhr, status, error);\r\n }\r\n },\r\n complete: function (xhr, status) {\r\n if (overrideCompleteHandler !== undefined) {\r\n eval(overrideCompleteHandler(xhr, status, self.queueElement));\r\n }\r\n else {\r\n self.completeHandler(xhr, status);\r\n }\r\n },\r\n // Form data\r\n data: dataString,\r\n //Options to tell jQuery not to process data or worry about content-type.\r\n cache: false,\r\n contentType: false,\r\n processData: false\r\n });\r\n};"]}