PageSourceSearch

https://board.wartenberger-sv.com/gallery/js/Gallery.min.js?v=1790246578

js wartenberger-sv.com collected 2026-09-25 08:58:43 UTC 114,727 bytes, 1 lines download raw bytes

1var Gallery={Album:{}};Gallery.Album.Dialog=Class.extend({_createdCallbacks:[],_descriptionError:null,_dialog:null,_dialogContainer:null,_saveCallbacks:[],_proxy:null,_titleError:null,_updatedCallbacks:[],_validationCallbacks:[],init:function(){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)})},_cancel:function(){this._dialogContainer.wcfDialog("close")},_hideDescriptionError:function(){this._descriptionError&&(this._descriptionError.hide(),this._dialog.find('textarea[name="description"]').parents("dl").removeClass("formError"))},_hideTitleError:function(){this._titleError&&(this._titleError.hide(),this._dialog.find('input[name="title"]').parents("dl").removeClass("formError"))},_save:function(){var e,t,i,a=!1,s=this._dialog.find('input[name="title"]').val();for(t in s.length?s.length>255?(a=!0,this._showTitleError(WCF.Language.get("gallery.album.title.error.tooLong"))):this._hideTitleError():(a=!0,this._showTitleError(WCF.Language.get("wcf.global.form.error.empty"))),(e=this._dialog.find('textarea[name="description"]').val()).length>65535?(a=!0,this._showDescriptionError(WCF.Language.get("gallery.album.description.error.tooLong"))):this._hideDescriptionError(),this._validationCallbacks)this._val
1idationCallbacks[t](this._dialogContainer)||(a=!0);if(!a){for(t in this._dialogContainer.find("button").disable(),i={accessLevel:this._dialog.find('select[name="accessLevel"] > option:selected').val()||0,description:e,title:s},this._saveCallbacks)i=this._saveCallbacks[t](i);this._dialogContainer.data("albumID")?this._proxy.setOption("data",{actionName:"update",className:"gallery\\data\\album\\AlbumAction",objectIDs:[this._dialogContainer.data("albumID")],parameters:{data:i}}):this._proxy.setOption("data",{actionName:"createAlbum",className:"gallery\\data\\album\\AlbumAction",parameters:{data:i}}),this._proxy.sendRequest()}},_showDialog:function(e,t){var i,a;null===this._dialog?(this._dialogContainer=$('<div id="albumDialog" />').data("__api",this).appendTo(document.body),this._dialog=$("<div />").appendTo(this._dialogContainer),i=$('<div class="formSubmit" />').appendTo(this._dialogContainer),a=$('<button class="buttonPrimary">'+WCF.Language.get("wcf.global.button.save")+"</button>").appendTo(i),$("<button>"+WCF.Language.get("wcf.global.button.cancel")+"</button>").appendTo(i).click($.proxy(this._cancel,this)),a.click($.proxy(this._save,this))):this._dialogContainer.find("button").enable(),this._dialogContainer.data("albumID",t),this._dialog.html(e),require(["EventKey"],function(e){this._dialog.find('input[name="title"]')[0].addEventListener("keydown",function(t){e.Enter(t)&&this._save()}.bind(this))}.bind(this)),this._dialogContainer.wcfDialog({title:WCF.Language.get(t?"gallery.album.edit":"gallery.album.add")}),this._dialogContainer.wcfDialog("render"),this._dialog.find('input[name="title"]').focus()},_showDescriptionError:function(e){null===this._descriptionError&&(this._descriptionError=$('<small class="innerError" />').hide(),this._dialog.find('textarea[name="description"]').after(this._descriptionError),this._dialog.find('textarea[name="description"]').parents("dl").addClass("formError")),this._descriptionError.show().text(e)},_showTitleError:function(e){null===this._titleError&&(this._titleError=$('<small class="innerError" />').hide(),this._dialog.find('input[name="title"]').after(this._titleError),this._dialog.find('input[name="title"]').parents("dl").addClass("formError")),this._titleError.show().text(e)},_success:function(e,t,i){var a;switch(e.actionName){case"createAlbum":for(a in this._cancel(),(new WCF.System.Notification).show(),this._createdCallbacks)this._createdCallbacks[a](e.returnValues);break;case"getDialog":this._showDialog(e.returnValues.template,e.returnValues.albumID);break;case"update":for(a in this._cancel(),(new WCF.System.Notification).show(),this._updatedCallbacks)this._updatedCallbacks[a](this._dialogContainer)}},registerCallback:function(e,t){if("created"==e||"save"==e||"updated"==e||"validate"==e)if($.isFunction(t))switch(e){case"created":this._createdCallbacks.push(t);break;case"updated":this._updatedCallbacks.push(t);break;case"save":this._saveCallbacks.push(t);break;case"validate":this._validationCallbacks.push(t)}else console.debug("[Gallery.Album.Dialog] Given callback is invalid.");else console.debug('[Gallery.Album.Dialog] Unknown event "'+e+'"')},show:function(e){var t=[];e&&t.push(e),this._proxy.setOption("data",{actionName:"getDialog",className:"gallery\\data\\album\\AlbumAction",objectIDs:t}),this._proxy.sendRequest()}}),Gallery.Album.InlineEditor=WCF.InlineEditor.extend({_dialog:null,_permissions:{},_redirectURL:"",_sortImagesURL:"",_execute:function(e,t){var i,a;if(!this._validate(e,t))return!1;switch(i=$("#"+e).data("albumID"),t){case"delete":a=this._redirectURL,WCF.System.Confirmation.show(WCF.Language.get("gallery.album.delete.confirmMessage"),(function(e){"confirm"===e&&new WCF.Action.Proxy({autoSend:!0,data:{actionName:"delete",className:"gallery\\data\\album\\AlbumAction",objectIDs:[i]},success:function(e,t,i){new WCF.System.Notification(WCF.Language.get("gallery.album.delete.success")).show((function(){window.location=a}))}})}));break;case"edit":this.getDialog().show(i);break;case"sortImages":window.location=this._sortImagesURL}},_getPermission:function(e){return this._permissions[e]?this._permissions[e]:0},_getTriggerElement:function(e){return e.find(".jsAlbumInlineEditor")},_registerAlbumDialogCallbacks:function(){this._dialog.registerCallback("updated",$.proxy(this._updateAlbumData,this))},_setOptions:function(){this._options=[{label:WCF.Language.get("gallery.album.sortImages"),optionName:"sortImages"},{label:WCF.Language.get("gallery.album.delete"),optionName:"delete"},{optionName:"divider"},{label:WCF.Language.get("wcf.global.button.edit"),optionName:"edit",isQuickOption:!0}]},_updateAlbumData:function(e){var t=$(".contentHeader .contentTitle > .badge");$(".contentHeader .contentTitle").text(e.find('input[name="title"]').val()+(t?" ":"")),t&&$(".contentHeader .contentTitle").append(t),$(".contentHeader .contentHeaderDescription").text(e.find('textarea[name="description"]').val())},_validate:function(e,t){switch(t){case"delete":return!!this._getPermission("canDeleteAlbum");case"edit":return!!this._getPermission("canEditAlbum");case"sortImages":return!!this._getPermission("canSortImages")}return!1},getDialog:function(){return null===this._dialog&&(this._dialog=new Gallery.Album.Dialog,this._registerAlbumDialogCallbacks()),this._dialog},setPermission:function(e,t){this._permissions[e]=t},setPermissions:function(e){for(var t in e)this.setPermission(t,e[t])},setRedirectURL:function(e){this._redirectURL=e},setSortImagesURL:function(e){this._sortImagesURL=e}}),Gallery.Album.Share=WCF.Message.Share.Content.extend({_albumID:0,init:function(e){this._albumID=e,this._super()},_click:function(e){var t,i,a,s;e.preventDefault(),i=(t=$(e.currentTarget).prop("href")).hashCode(),void 0===this._cache[i]?(a=!1,null===this._dialog?(this._dialog=$("<div />").hide().appendTo(document.body),a=!0):this._dialog.empty(),s=$('<section class="section"><h2 class="sectionTitle"><label for="__sharePermalink">'+WCF.Language.get("wcf.message.share.permalink")+"</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__sharePermalink" class="long" readonly />').attr("value",t).appendTo(s),s=$('<section class="section"><h2 class="sectionTitle"><label for="__shareBBCode">'+WCF.Language.get("wcf.message.share.permalink.bbcode")+"</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__shareBBCode" class="long" readonly />').attr("value","[album]"+this._albumID+"[/album]").appendTo(s),this._cache[i]=this._dialog.html(),a?this._dialog.wcfDialog({title:WCF.Language.get("wcf.message.share")}):this._dialog.wcfDialog("open")):this._dialog.html(this._cache[i]).wcfDialog("open"),this._enableSelection()}}),Gallery.Album.SortableImageList=Class.extend({_albumID:0,_offset:50,_proxy:null,init:function(e){this._albumID=e,this._offset=50,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),new WCF.Sortable.List("imageList","gallery\\data\\image\\ImageAction",0,{axis:"",placeholder:"galleryImage galleryImageTiny gallerySortableImagePlaceholder",toleranceElement:""},!0,{albumID:e}),$("#loadMoreImages").click($.proxy(this._loadMoreImages,this))}
1,_loadMoreImages:function(){this._proxy.setOption("data",{actionName:"loadSortableImages",className:"gallery\\data\\album\\AlbumAction",objectIDs:[this._albumID],parameters:{offset:this._offset}}),this._proxy.sendRequest()},_success:function(e,t,i){$("#imageList > .gallerySortableImageList").append(e.returnValues.template).sortable("refresh"),50!=e.returnValues.count&&$("#loadMoreImages").remove(),this._offset+=50}}),Gallery.Category={},Gallery.Category.MarkAllAsRead=Class.extend({_proxy:null,init:function(){this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),$(".markAllAsReadButton").click($.proxy(this._click,this))},_click:function(e){e.preventDefault(),this._proxy.setOption("data",{actionName:"markAllAsRead",className:"gallery\\data\\category\\GalleryCategoryAction"}),this._proxy.sendRequest()},_success:function(e,t,i){$(".nestedCategoryList").find(".badge.badgeUpdate").hide(),$(".galleryImageList .galleryNewImageBadge, .galleryMasonry .galleryNewImageBadge").hide(),document.querySelectorAll(".mainMenu .active .badge").forEach((e=>e.remove())),WCF.System.Event.fireEvent("com.woltlab.wcf.MainMenuMobile","updateButtonState"),(new WCF.System.Notification).show()}}),Gallery.Image={},Gallery.Image.Browser=Class.extend({_dialog:null,_isOpen:!1,_redactor:null,init:function(){this._dialog=null,this._isOpen=!1},open:function(e){if(this._isOpen)return!1;this._redactor=e,this._isOpen=!0,null===this._dialog?new WCF.Action.Proxy({autoSend:!0,data:{actionName:"getImageBrowser",className:"gallery\\data\\image\\UserImageAction",objectIDs:[WCF.User.userID]},success:$.proxy(this._initImageBrowser,this)}):(this._dialog.wcfDialog("open"),$(window).trigger("resize"))},_initImageBrowser:function(e,t,i){WCF.DOMNodeInsertedHandler.addCallback("Gallery.Image.Browser."+this._redactor.$textarea.wcfIdentify(),$.proxy(this._domNo
1deInserted,this)),this._dialog=$("<div />").hide().html(e.returnValues.template).appendTo(document.body),this._dialog.wcfDialog({onClose:$.proxy((function(){this._isOpen=!1}),this),title:WCF.Language.get("gallery.image.browser")}),new Gallery.Image.Browser.AlbumList.Loader(this),new Gallery.Image.Browser.ImageList.Loader(this),new Gallery.Image.Browser.Search.Loader(this),$(window).trigger("resize"),this._dialog.wcfDialog("render")},_insertBBCode:function(e){var t=$(e.currentTarget).data("bbcode");require(["Core"],(e=>{e.interactWithRedactor((()=>{this._redactor.buffer.set(),this._redactor.insert.text(t)}))}))},_domNodeInserted:function(){this._dialog.find(".jsGalleryImageBrowserInsertAlbum").removeClass("jsGalleryImageBrowserInsertAlbum").click($.proxy(this._insertBBCode,this));var e=this;this._dialog.find(".jsGalleryImageBrowserInsertImage").removeClass("jsGalleryImageBrowserInsertImage").each((function(t,i){var a=$(i);a.hasClass("dropdown")?WCF.Dropdown.getDropdownMenu(a.wcfIdentify()).find("li").click($.proxy(e._insertBBCode,e)):a.children("a").click($.proxy(e._insertBBCode,e))}))}}),Gallery.Image.Browser.Loader=Class.extend({_actionName:"loadImages",_cache:{},_imageBrowser:null,_list:null,_pagination:null,_pageNo:1,_pages:0,_previousPageNo:1,_proxy:null,init:function(e,t,i){this._actionName="loadImages",this._cache={},this._imageBrowser=e,this._list=$("#"+t),this._pagination=$("#"+i),this._pageNo=1,this._pages=0,this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._previousPageNo=1},_showPage:function(e,t){t&&t.activePage&&(t.template||(this._previousPageNo=this._pageNo),this._pageNo=t.activePage),this._cache[this._pageNo]||t&&t.template?(this._cache[this._previousPageNo]=this._list.children().detach(),t&&t.template?this._list.html(t.template):this._list.append(this._cache[this._pageNo])):this._loadItems()},_getParameters:function(){return{data:{pageNo:this._pageNo}}},_loadItems:function(){this._proxy.setOption("data",{actionName:this._actionName,className:"gallery\\data\\image\\UserImageAction",parameters:this._getParameters()}),this._proxy.sendRequest()},_success:function(e,t,i){this._showPage(null,{activePage:e.returnValues.pageNo,template:e.returnValues.template})}}),Gallery.Image.Browser.AlbumList={},Gallery.Image.Browser.AlbumList.Loader=Gallery.Image.Browser.Loader.extend({init:function(e){this._super(e,"galleryImageBrowserAlbumList","galleryImageBrowserAlbumPagination"),this._actionName="loadAlbums",this._pagination.data("pages")>1&&this._pagination.wcfPages({maxPage:this._pagination.data("pages")}).on("wcfpagesswitched",$.proxy(this._showPage,this))}}),Gallery.Image.Browser.ImageList={},Gallery.Image.Browser.ImageList.Loader=Gallery.Image.Browser.Loader.extend({init:function(e){this._super(e,"galleryImageBrowserImageList .galleryImageBrowserContainerList","galleryImageBrowserImageListPagination"),this._pagination.data("pages")>1&&this._pagination.wcfPages({maxPage:this._pagination.data("pages")}).on("wcfpagesswitched",$.proxy(this._showPage,this))}}),Gallery.Image.Browser.Search={},Gallery.Image.Browser.Search.Handler=WCF.Search.Base.extend({_searchLoader:null,init:function(e){this._super("#galleryImageBrowserImageSearchInput",null,[],!1,!0),this._delay=500,this._searchLoader=e;var t=this._searchInput.parent().removeClass("dropdown");WCF.Dropdown.removeDropdown(t.wcfIdentify())},_keyUp:function(e){switch(e.which){case $.ui.keyCode.UP:case $.ui.keyCode.DOWN:return}this._super(e)},_queryServer:function(e){this._proxy.setOption("data",{actionName:"loadImages",className:"gallery\\data\\image\\UserImageAction",parameters:this._getParameters(e)}),this._proxy.sendRequest()},_getParameters:function(e){return e.data.pageNo=1,e},_success:function(e,t,i){this._searchLoader.handleSearchResult(e)},_clearList:function(e){e&&this._searchInput.val("")}}),Gallery.Image.Browser.Search.Loader=Gallery.Image.Browser.Loader.extend({_searchString:"",init:function(e){this._super(e,"galleryImageBrowserImageSearchResultList","galleryImageBrowserImageSearchResultPagination"),this._list.hide(),new Gallery.Image.Browser.Search.Handler(this)},handleSearchResult:function(e){this._pages>1&&this._pagination.wcfPages("destroy"),this._pageNo=1,this._pages=e.returnValues.pages,this._searchString=e.returnValues.searchString,this._pagination.empty(),this._pages>1&&this._pagination.wcfPages({maxPage:this._pages}).on("wcfpagesswitched",$.proxy(this._showPage,this)),this._list.empty().hide().next("p").remove(),this._pages?(this._list.html(e.returnValues.template).show(),WCF.DOMNodeInsertedHandler.execute()):$('<p class="info">'+e.returnValues.errorMessage+"</p>").insertAfter(this._list)},_getParameters:function(){var e=this._super();return e.data.searchString=this._searchString,e}}),Gallery.Image.Delete=WCF.Action.Delete.extend({_redirectURL:"",init:function(e,t,i){this._super(e,t),this._redirectURL=i},_success:function(e,t,i){new WCF.System.Notification(WCF.Language.get("gallery.image.delete.success")).show($.proxy((function(){window.location=this._redirectURL}),this))}}),Gallery.Image.AlbumNavigation=Class.extend({_activeImage:null,_imageList:null,_side:"left",init:function(){var e,t;this._activeImage=$(".gallerySidebarBoxImageNavigation").find("li.active"),this._imageList=$("#galleryAlbumImageNavigation"),"rtl"==WCF.Language.get("wcf.global.pageDirection")&&(this._side="right"),e=-this._activeImage.position().left+this._activeImage.outerWidth(!0),t=-this._activeImage.outerWidth(!0)*(this._imageList.children().length-3),e>0?e=0:e<t&&(e=t),this._imageList.css(this._side,e),e?e==t&&$(".galleryNavigationArrowNext").addClass("disabled").children(".pointer").removeClass("pointer"):$(".galleryNavigationArrowPrevious").addClass("disabled").children(".pointer").removeClass("pointer"),$(".galleryNavigationArrowPrevious").click($.proxy(this._showPreviousImages,this)),$(".galleryNavigationArrowNext").click($.proxy(this._showNextImages,this))},_showPreviousImages:function(e){var t,i,a,s,n,r=$(e.currentTarget);if(!$(e.currentTarget).hasClass("disabled")){for(t=parseInt(this._imageList.css(this._side)),i=this._activeImage.outerWidth(!0),a=t+3*i;a>0;)a-=i;a!=t&&(s=$(".galleryNavigationArrowNext")).hasClass("disabled")&&(s.removeClass("disabled"),s.children(".icon").addClass("pointer")),(n={})[this._side]=a,this._imageList.animate(n,500,(function(){a!=t+3*i&&(r.addClass("disabled"),r.children(".pointer").removeClass("pointer"))}))}},_showNextImages:function(e){var t,i,a,s,n,r=$(e.currentTarget);if(!$(e.currentTarget).hasClass("disabled")){for(t=parseInt(this._imageList.css(this._side)),i=this._activeImage.outerWidth(!0),a=t-3*i;a<-i*(this._imageList.children().length-3);)a+=i;a!=t&&(s=$(".galleryNavigationArrowPrevious")).hasClass("disabled")&&(s.removeClass("disabled"),s.children(".icon").addClass("pointer")),(n={})[this._side]=a,this._imageList.animate(n,500,(function(){a!=t-3*i&&(r.addClass("disabled"),r.children(".pointer").removeClass("pointer"))}))}}}),Gallery.Image.InlineEditor=WCF.InlineEditor.extend({_environment:"list",_permissions:{},_redirectURL:"",_updateHandler:null,setRedirectURL:function(e,t){this._redirectURL=e,this._environment=t||"list"},setUpdateHandler:function(e){this._updateHandler=e},_setOptions:function(){this._options=[{label:WCF.Language.get("gallery.image.enable"),optionName:"enable"},{label:WCF.Language.get("gallery.image.disable"),optionName:"disable"},{label:WCF.Language.get("gallery.image.trash"),optionName:"trash"},{label:WCF.Language.get("gallery.image.restore"),optionName:"restore"},{label:WCF.Language.get("gallery.image.delete"),optionName:"delete"},{optionName:"divider"},{label:WCF.Language.get("wcf.global.button.edit"),optionName:"edit",isQuickOption:!0}]},_show:function(e){var t,i,a=$(e.currentTarget).data("elementID"),s=null;for(i in this._dropdowns[a]||(s=this._getTriggerElement(this._elements[a]).addClass("dropdownToggle").parent().addClass("dropdown").end(),this._dropdowns[a]=$('<ul class="dropdownMenu" />').insertAfter(s)),this._super(e),null!==s&&(WCF.Dropdown.initDropdown(s,e.originalEvent||e),t=s.parent().wcfIdentify(),WCF.Dropdown.registerCallback(t,$.proxy(this._toggleDropdown,this)),this._toggleDropdown(t,"open")),this._elements)this._elements[i].removeClass("jsGalleryImageShowDetail
1s");return this._elements[a].addClass("jsGalleryImageShowDetails"),!1},_hide:function(e){this._super(e),this._elements[e].removeClass("jsGalleryImageShowDetails")},_toggleDropdown:function(e,t){WCF.Dropdown.getDropdown(e).parents(".messageOptions").toggleClass("forceOpen")},_getTriggerElement:function(e){return e.find(".jsImageInlineEditor")},_validate:function(e,t){var i=$("#"+e).data("objectID");switch(t){case"delete":return!!this._getPermission("canDeleteImage")&&this._updateHandler.getValue(i,"isDeleted");case"restore":return!!this._getPermission("canRestoreImage")&&this._updateHandler.getValue(i,"isDeleted");case"trash":return!!this._getPermission("canTrashImage")&&!this._updateHandler.getValue(i,"isDeleted");case"enable":return!!this._getPermission("canEnableImage")&&(!this._updateHandler.getValue(i,"isDeleted")&&this._updateHandler.getValue(i,"isDisabled"));case"disable":return!!this._getPermission("canEnableImage")&&(!this._updateHandler.getValue(i,"isDeleted")&&!this._updateHandler.getValue(i,"isDisabled"));case"edit":return!0}return!1},_execute:function(e,t){var i;if(!this._validate(e,t))return!1;switch(t){case"disable":case"enable":this._updateImage(e,t,{isDisabled:"enable"===t?0:1});break;case"delete":i=this,WCF.System.Confirmation.show(WCF.Language.get("gallery.image.delete.confirmMessage"),(function(a){"confirm"===a&&i._updateImage(e,t,{deleted:1})}));break;case"edit":window.location=this._getTriggerElement($("#"+e)).prop("href");break;case"restore":this._updateImage(e,t,{isDeleted:0});break;case"trash":i=this,WCF.System.Confirmation.show(WCF.Language.get("gallery.image.trash.confirmMessage"),(function(a){"confirm"===a&&i._updateImage(e,t,{isDeleted:1,reason:$("#wcfSystemConfirmationContent").find("textarea").val()})}),{},$('<div class="section"><dl><dt>'+WCF.Language.get("gallery.image.trash.reason")+'</dt><dd><textarea cols="40" rows="4" /></dd></dl></div>'))}},_updateImage:function(e,t,i){var a,s;"delete"===t?(a=this,s=this._elements[e].data("objectID"),new WCF.Action.Proxy({autoSend:!0,data:{actionName:"delete",className:"gallery\\data\\image\\ImageAction",objectIDs:[s]},success:function(e){a._redirectURL?window.location=a._redirectURL:window.location.reload()}})):(this._updateData.push({data:i,elementID:e,optionName:t}),this._proxy.setOption("data",{actionName:t,className:"gallery\\data\\image\\ImageAction",objectIDs:[this._elements[e].data("objectID")],parameters:{data:i}}),this._proxy.sendRequest())},_updateState:function(e){var t,i,a,s,n;if("image"!=this._environment||1!=this._updateData.length||"trash"!=this._updateData[0].optionName||this._getPermission("canViewDeletedImage"))for(this._notification.show(),t=0,i=this._updateData.length;t<i;t++)a=this._updateData[t],s=$("#"+a.elementID).data("objectID"),n=a.data,"trash"===a.optionName&&e&&e.returnValues&&e.returnValues.imageData&&e.returnValues.imageData[s]&&(n.deleteNote=e.returnValues.imageData[s].deleteNote),this._updateHandler.update(s,n);else this._notification.show($.proxy((function(){window.location=this._redirectURL}),this))},_getPermission:function(e){return this._permissions[e]?this._permissions[e]:0},setPermission:function(e,t){this._permissions[e]=t},setPermissions:function(e){for(var t in e)this.setPermission(t,e[t])}}),Gallery.Image.Handler=Class.extend({_activeImageID:"",_callbacks:{addImage:[],removeImage:[]},_dataHandlers:{image:{},video:{},videoLink:{}},_errorMessage:null,_image:null,_imageContainer:null,_imageProcessor:null,_images:{},_initialData:{},_options:{},_orderedImageIDs:[],_proxy:null,_saveButton:null,_saveRequestCount:0,_scrollEffect:null,_thumbnailListContainer:null,_thumbnailAreaSelector:null,_uploadHandler:null,_uploadWarning:null,_overwriteDataButtons:null,_currentImageContainer:null,_currentVideoContainter:null,_video:null,videoLinkHandler:null,init:function(e){this._options=e,this._saveRequestCount=0,this._callbacks={addImage:[],removeImage:[]},this._initialData={},this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),this._thumbnailListContainer=$("#thumbnailListContainer"),this._thumbnailList=$("#thumbnailList"),this._imageContainer=$("#imageContainer"),this._overwriteDataButtons=$(".jsOverwriteDataButton").click($.proxy(this._overwriteData,this)).hide(),this._rotateImageButtons=$(".jsRotateImageButton").click($.proxy(this._rotateImage,this)),this._saveButton=$("#saveButton").click($.proxy(this._save,this)),this._currentImageContainer=$("#currentImageContainer"),this._image=$('<img src="" alt="" />').appendTo($("#image")),this._currentVideoContainer=$("#currentVideoContainer"),this._video=$('<video src="" controls />').appendTo($("#video")),this._currentVideoLinkContainer=$("#currentVideoLinkContainer"),this._videoLink=$("#videoLink"),this._thumbnailAreaSelector=new Gallery.Image.ThumbnailAreaSelector(this),this.getOption("tmpHash")&&(this._uploadHandler=new Gallery.Image.Upload(this,this.getOption("maxParallelUploads")),(this.getFreeImageCount()>0||this.getFreeUploadedVideoCount()>0||this.getFreeVideoLinkCount()>0)&&this._thumbnailListContainer.show(),this.getFreeImageCount()<=0&&this.getFreeUploadedVideoCount()<=0&&this._uploadHandler.hideUploadButton(),this.getFreeImageCount()<=0&&this.getFreeUploadedVideoCount()<=0&&this.getFreeVideoLinkCount()<=0&&(this._uploadWarning=$
1(".jsGalleryUploadWarning"))),this._imageProcessor=new Gallery.Image.Processor(this),$("#imageToogle").click($.proxy(this._toggleImage,this)),$("#videoToogle").click($.proxy(this._toggleVideo,this)),$("#videoLinkToogle").click($.proxy(this._toggleVideoLink,this)),require(["Ui/Screen"],(e=>{e.on("screen-md-up",{setup:()=>{this._previousImageButton=this._imageContainer.children(".galleryPreviousImageButton").click($.proxy(this._showPreviousImage,this)),this._nextImageButton=this._imageContainer.children(".galleryNextImageButton").click($.proxy(this._showNextImage,this)),this._imageContainer.data("visibleNextPreviousButtons",!1),$(window).on("scroll",$.proxy(this._scroll,this)),$(window).on("resize",$.proxy(this._scroll,this))}})}))},_getRedirectUrl:function(){var e,t,i,a;if(this.getOption("redirectURL"))return this.getOption("redirectURL");for(a in e=this.getImages(),t=$.getLength(e),i=0,e)(e[a].get("isVideo")||e[a].get("isVideoLink"))&&i++;return t==i?this.getOption("redirectVideoURL"):this.getOption("redirectImageURL")},_toggleImage:function(e){var t=$(e.currentTarget);t.children(".icon").toggleClass("fa-chevron-right").toggleClass("fa-chevron-down"),t.parent().next("small").toggle(),$(".jsImageButton").toggle(),$("#image").toggle()},_toggleVideo:function(e){$(e.currentTarget).children(".icon").toggleClass("fa-chevron-right").toggleClass("fa-chevron-down"),$(".jsVideoButton").toggle(),$("#video").toggle()},_toggleVideoLink:function(e){$(e.currentTarget).children(".icon").toggleClass("fa-chevron-right").toggleClass("fa-chevron-down"),$(".jsVideoLinkButton").toggle(),$("#videoLink").toggle()},_pauseVideo:function(){var e=this._video[0];e.pause(),this.getActiveImage().set("__videoTimestamp",e.currentTime)},_getImageIDs:function(){var e,t=[];for(e in this._images)t.push(e);return t},_getRequestData:function(){var e,t,i,a,s=[],n={},r=0;for(e in this._images){for(a in t=0,(i=this._images[e].getData()).__useCoordinates||(i.latitude=0,i.longitude=0,i.location=""),i)"__"==a.substr(0,2)?delete i[a]:$.isArray(i[a])?t+=i[a].length:$.isPlainObject(i[a])?t+=$.getLength(i[a]):t++;r+$.getLength(i)>this.getOption("maxInputVars")-150&&(s.push(n),n={},r=0),n[e]=i,r+=t}return s.push(n),s},_handleSavedImageData:function(e){var t,i,a,s;if(void 0!==e.thumbnailImageIDs&&e.thumbnailImageIDs.length)for(a in new WCF.System.Notification(WCF.Language.get("gallery.image.upload.info.thumbnailGeneration"),"info").show(void 0,5e3),t=new Gallery.Image.ThumbnailGenerator,i=0,e.thumbnailImageIDs)t.generateThumbnails(e.thumbnailImageIDs[a],$.proxy((function(){++i==e.thumbnailImageIDs.length&&(this._saveRequestCount--,this._saveRequestCount||(window.location=this._getRedirectUrl()))}),this),!0);else if(void 0!==e.errors){for(s in this._images)this.getImage(s).setErrors(e.errors[s]||{}),e.errors[s]&&this.getImage(s).getThumbnailContainer().addClass("imageError");this._showErrorMessage()}else this._saveRequestCount--,this._saveRequestCount||(window.location=this._getRedirectUrl())},_hideNextPreviousButtons:function(){this._previousImageButton&&this._imageContainer.data("visibleNextPreviousButtons")&&(this._previousImageButton.addClass("hidden"),this._nextImageButton.addClass("hidden"),this._imageContainer.data("visibleNextPreviousButtons",!1),this._imageContainer.removeClass("galleryHasNextPreviousImageButtons"))},_overwriteData:function(){WCF.System.Confirmation.show(WCF.Language.get("gallery.image.overwriteData.confirmMessage"),(function(e){"confirm"===e&&(WCF.System.Event.fireEvent("com.woltlab.gallery.imageHandler","overwriteData"),(new WCF.System.Notification).show())}))},_readOrderedImageIDs:function(){this._orderedImageIDs=[],this._thumbnailList.children().each(function(e,t){var i=$(t).data("imageID");i&&this._orderedImageIDs.push(i)}.bind(this))},_refreshNextPreviousButtons:function(){if(this._previousImageButton&&this._previousImageButton.is(":visible")){var e=this._orderedImageIDs.indexOf(this._activeImageID);switch(this._previousImageButton.removeClass("disabled"),this._nextImageButton.removeClass("disabled"),e){case 0:this._previousImageButton.addClass("disabled");break;case this._orderedImageIDs.length-1:this._nextImageButton.addClass("disabled")}}},_rotateImage:function(e,t){t||!this.getActiveImage().get("thumbnailWidth")?(this._proxy.setOption("data",{actionName:"rotateImage",className:"gallery\\data\\image\\ImageAction",objectIDs:[this.getActiveImage().getImageID()],parameters:{angle:e?$(e.currentTarget).data("angle"):t}}
1),this._proxy.sendRequest()):WCF.System.Confirmation.show(WCF.Language.get("gallery.image.rotate.confirmMessage"),$.proxy((function(t){"confirm"===t&&this._rotateImage(null,$(e.currentTarget).data("angle"))}),this))},_save:function(){this._saveButton.disable(),this.setActiveImage(this.getActiveImage()),this.validate()?(null!==this._errorMessage&&this._errorMessage.hide(),this._sendRequests()):this._showErrorMessage()},_scroll:function(){var e,t,i,a;this._previousImageButton&&this._previousImageButton.is(":visible")&&(e=$(window).scrollTop()+$(window).height()/2,i=(t=this._imageContainer.offset().top)+this._imageContainer.height(),e-(a=100)>=t&&e+a<=i&&(this._previousImageButton.css("top",e-t+"px"),this._nextImageButton.css("top",e-t+"px")))},_sendRequests:function(){var e,t=this._getRequestData();for(e in this._saveRequestCount=t.length,t)this._proxy.setOption("data",{actionName:"saveImageData",className:"gallery\\data\\image\\ImageAction",objectIDs:Object.keys(t[e]),parameters:{data:t[e],isEdit:this.getOption("tmpHash")?0:1}}),this._proxy.sendRequest()},_showErrorMessage:function(){this.setActiveImage(this.getActiveImage()),null===this._errorMessage&&(this._errorMessage=$('<p class="error" />').text(WCF.Language.get(this.getOption("tmpHash")?"gallery.image.upload.error.markedImages":"wcf.global.form.error")).hide().insertBefore("#thumbnailListContainer"),this._scrollEffect=new WCF.Effect.Scroll),this._scrollEffect.scrollTo(this._errorMessage),this._errorMessage.show(),this._saveButton.enable()},_showNextImage:function(){var e=this._orderedImageIDs.indexOf(this._activeImageID);e+1<this._orderedImageIDs.length&&this.setActiveImage(this._images[this._orderedImageIDs[e+1]])},_showNextPreviousButtons:function(){this._previousImageButton&&(this._imageContainer.data("visibleNextPreviousButtons")?this._refreshNextPreviousButtons():(this._previousImageButton.removeClass("hidden"),this._nextImageButton.removeClass("hidden"),this._imageContainer.data("visibleNextPreviousButtons",!0),this._imageContainer.addClass("galleryHasNextPreviousImageButtons"),this._refreshNextPreviousButtons(),this._scroll()))},_showPreviousImage:function(){var e=this._orderedImageIDs.indexOf(this._activeImageID);e&&this.setActiveImage(this._images[this._orderedImageIDs[e-1]])},_success:function(e,t,i){var a,s;switch(e.actionName){case"delete":if(e.objectIDs)for(a in e.objectIDs)this.removeImage(e.objectIDs[a]);this.setUserImageCount(e.returnValues.userImageCount),void 0!==e.returnValues.userVideoLinkCount&&this.setUserVideoLinkCount(e.returnValues.userVideoLinkCount),void 0!==e.returnValues.userUploadedVideoCount&&this.setUserUploadedVideoCount(e.returnValues.userUploadedVideoCount),this.updateRestrictions(e.returnValues.restrictions),(new WCF.System.Notification).show();break;case"rotateImage":this.getImageNode().on("load",$.proxy(this._didRotateImage,this,e.returnValues)),s=this.getActiveImage().get("url"),s+=-1!=s.indexOf("?")?"&":"?",s+="timestamp="+ +(new Date).getTime(),this.getImageNode().removeAttr("src").attr("src",s),this.getActiveImage().set("height",e.returnValues.height),this.getActiveImage().set("width",e.returnValues.width),this.getActiveImage().set("thumbnailHeight",0),this.getActiveImage().set("thumbnailWidth",0),this.getActiveImage().set("thumbnailX",0),this.getActiveImage().set("thumbnailY",0),(new WCF.System.Notification).show();break;case"saveImageData":this._handleSavedImageData(e.returnValues)}},_didRotateImage:function(e){this.getImageNode().off("load",$.proxy(this._didRotateImage,this)),WCF.System.Event.fireEvent("com.woltlab.gallery.ImageHandler","didRotateImage",e)},addDataHandler:function(e,t,i){var a,s,n;if(void 0===i&&(i=["image"]),!Array.isArray(i))throw new Error("'types' parameter has to be an array.");for(s=0,n=i.length;s<n;s++){if("image"!==(a=i[s])&&"video"!==a&&"videoLink"!==a)throw new Error("Unknown type '"+a+'".');this._dataHandlers[a][e]=t}t.setImageHandler(this)},addError:function(e){var t;t="string"==typeof e?$('<p class="error" />').text(e).insertBefore(this._thumbnailListContainer):e,$('<span class="icon icon16 fa-times pointer jsTooltip" title="'+WCF.Language.get("wcf.global.button.hide")+'" />').appendTo(t).click((function(){$(this).parent().wcfFadeOut((function(){$(this).remove()}))}))},addImage:function(e,t){var i,a;if(this._thumbnailListContainer.is(":visible")||!this.getOption("tmpHash")&&!$.getLength(this._images)||this._thumbnailListContainer.show(),this.getOption("tmpHash"))for(i in this._initialData)t.set(i,this._initialData[i]);for(a in this._images[e]=t,this._readOrderedImageIDs(),t.setImageHandler(this),this._callbacks.addImage)this._callbacks.addImage[a](t);$.getLength(this._images)>1?(this._overwriteDataButtons.show(),this._showNextPreviousButtons()):this._hideNextPreviousButtons()},addInitialData:function(e,t){this._initialData[e]=t},getActiveImage:function(){return void 0!==this._images[this._activeImageID]?this._images[this._activeImageID]:null},getDataHandler:function(e,t){if(void 0===t&&(t="image"),"image"!==t&&"video"!==t&&"videoLink"!==t)throw new Error("Unknown type '"+t+'".');return void 0!==this._dataHandlers[t][e]?this._dataHandlers[t][e]:null},getDataHandlers:function(e){if(void 0===e&&(e="image"),"image"!==e&&"video"!==e&&"videoLink"!==e)throw new Error("Unknown type '"+e+'".');return this._dataHandlers[e]},getActiveImageDataHandlers:function(){return this.getDataHandlers(this.getActiveImage().getType())},getImage:function(e){return void 0!==this._images[e]?this._images[e]:null},getImageNode:function(){return this._image},getImageProcessor:function(){return this._imageProcessor},getImages:function(){return this._images},registerCallback:function(e,t){return"addImage"!=e&&"removeImage"!=e?(console.debug("[Gallery.Image.Handler] Unknown callback event '"+e+"'"),!1):$.isFunction(t)?void this._callbacks[e].push(t):(console.debug("[Gallery.Image.Handler] Callback for '"+e+"' is invali
1d"),!1)},removeDataHandler:function(e,t){if(void 0!==t&&"image"!==t&&"video"!==t&&"videoLink"!==t)throw new Error("Unknown type '"+t+'".');if(void 0===t){var i=!1;return void 0!==this._dataHandlers.image[e]&&(delete this._dataHandlers.image[e],i=!0),void 0!==this._dataHandlers.video[e]&&(delete this._dataHandlers.video[e],i=!0),void 0!==this._dataHandlers.videoLink[e]&&(delete this._dataHandlers.videoLink[e],i=!0),i}return void 0!==this._dataHandlers[t][e]&&(delete this._dataHandlers[t][e],!0)},removeImage:function(e){if(void 0!==this._images[e]){for(var t in this._images[e].remove(),delete this._images[e],this._orderedImageIDs.splice(this._orderedImageIDs.indexOf(e)),this._callbacks.removeImage)this._callbacks.removeImage[t](e);return $.getLength(this._images)?e==this._activeImageID&&(this._activeImageID=0,$("#thumbnailList > li:eq(0)").each($.proxy((function(e,t){this.setActiveImage(this._images[$(t).data("imageID")])}),this))):(this._imageContainer.hide(),this._activeImageID=0),1==$.getLength(this._images)&&this._overwriteDataButtons.hide(),$.getLength(this._images)<=1?this._hideNextPreviousButtons():this._showNextPreviousButtons(),this._readOrderedImageIDs(),!0}return!1},removeImageByClick:function(e){WCF.System.Confirmation.show(WCF.Language.get("gallery.image.delete.confirmMessage"),$.proxy((function(t){"confirm"===t&&(this._proxy.setOption("data",{actionName:"delete",className:"gallery\\data\\image\\ImageAction",objectIDs:[$(e.currentTarget).data("imageID")],parameters:{returnUserImageCount:1}}),this._proxy.sendRequest())}),this))},setActiveImage:function(e,t){var i,a,s,n,r,o,l;if(!1!==t&&(t=!0),this._activeImageID){if(i=this._images[this._activeImageID].getData(),t){for(s in a=this.getActiveImageDataHandlers())a[s].readData(),i=$.extend(i,a[s].getData());this._images[this._activeImageID].setData(i)}i.isVideo&&this._pauseVideo()}switch(this._activeImageID=e.getImageID(),$("#thumbnailList").children("li").removeClass("active"),e.getThumbnailContainer().addClass("active"),n=this.getActiveImage().getType()){case"image":this._currentImageContainer.show(),this._currentVideoContainer.hide(),this._currentVideoLinkContainer.hide(),this._image.attr("src",e.get("url")).on("load",$.proxy(this._thumbnailAreaSelector.refresh,this._thumbnailAreaSelector)),this._rotateImageButtons.show().each($.proxy((function(e,t){var i=$(t);i.data("angle")%180&&(this.getActiveImage().get("width")<this.getOption("minHeight")||this.getActiveImage().get("height")<this.getOption("minWidth"))&&i.hide()}),this));break;case"video":this._currentImageContainer.hide(),this._currentVideoContainer.show(),this._currentVideoLinkContainer.hide(),this._video.attr("src")!==e.get("videoLink")&&((r=this._images[this._activeImageID].get("__videoTimestamp"))&&(o=function(){this._video[0].currentTime=r,this._video.off("loadedmetadata",o)}.bind(this),this._video.on("loadedmetadata",o)),this._video.attr("src",e.get("videoLink")));break;case"videoLink":this._currentImageContainer.hide(),this._currentVideoContainer.hide(),this._currentVideoLinkContainer.show(),this._videoLink.html(e.get("embedCode"));break;default:throw new Error("Unknown type '"+n+"'.")}for(s in a=this.getActiveImageDataHandlers())a[s].updateData();(l=["image","video","videoLink"]).splice(l.indexOf(n,1)),l.forEach((function(e){var t,i=this._dataHandlers[e];for(t in i)a[t]||i[t].setInactive()}),this),this._refreshNextPreviousButtons()},addEditedImageData:function(e){this.addImage(e.imageID,new Gallery.Image.Handler.Image(e.imageID,e,null,!0)),this._imageContainer.show()},setEditedImageData:function(e){throw new Error("Use `addEditedImageData(editedImageData)` and `setFirstImageActive()` instead.")},setFirstImageActive:function(){var e=this.getImage($("#thumbnailList").children("li:eq(0)").data("imageID"));e&&(this._imageContainer.is(":visible")||this._imageContainer.show(),this.setActiveImage(e)),this._readOrderedImageIDs()},setUserImageCount:function(e){this.setOption("userImageCount",e),this._updateUploadInterface()},setUserUploadedVideoCount:function(e){this.setOption("userUploadedVideoCount",e),this._updateUploadInterface()},setUserVideoLinkCount:function(e){this.setOption("userVideoLinkCount",e),this._updateUploadInterface()},_updateUploadInterface:function(){this.videoLinkHandler&&this.videoLinkHandler.updateInterface(),this._uploadHandler&&(this.getOption("userImageCount")<this.getOption("maxUserImageCount")||this.getOption("userUploadedVideoCount")<this.getOption("maxUserUploadedVideoCount")?(this._thumbnailListContainer.show(),this._uploadHandler.showU
1ploadButton(),this._uploadWarning&&this._uploadWarning.hide()):(this._uploadHandler.hideUploadButton(),this._uploadWarning?this._uploadWarning.show():this._uploadWarning=$('<p class="warning" />').text(WCF.Language.get("gallery.image.upload.error.tooManyUploads")).insertBefore(this._thumbnailListContainer)))},getFreeImageCount:function(){return this.getOption("maxUserImageCount")-this.getOption("userImageCount")},getFreeUploadedVideoCount:function(){return null===this.getOption("maxUserUploadedVideoCount")?0:this.getOption("maxUserUploadedVideoCount")-this.getOption("userUploadedVideoCount")},getFreeVideoLinkCount:function(){return null===this.getOption("maxUserVideoLinkCount")?0:this.getOption("maxUserVideoLinkCount")-this.getOption("userVideoLinkCount")},validate:function(){var e,t=!0;for(e in this._images)this._images[e].validate()||(t=!1);return t},getOption:function(e){return e in this._options?this._options[e]:null},setOption:function(e,t){this._options[e]=t},getTmpHash:function(){throw new Error("Use `getOption('tmpHash')` instead.")},setRedirectURL:function(e){throw new Error("Use `setOption('redirectURL', redirectURL)` instead.")},startUpload:function(){this._saveButton.disable()},finishUpload:function(){this._saveButton.enable()},updateRestrictions:function(e){$("#galleryUploadRestrictions").html($(e).html())}}),Gallery.Image.ImageGrid=Class.extend({_activeElement:-1,_baseInterval:3e3,_elements:[],_images:[],_intervalModifier:1,_isHover:!1,_pe:null,init:function(e,t){if(this._images=t,this._images.length<2)console.debug("[Gallery.Image.ImageGrid] At least two images are required but "+t.length+" are given, aborting.");else{var i=document.getElementById(e);null!==!i?(this._initElements(i),this._pe=new WCF.PeriodicalExecuter(this.cycleImages.bind(this),this._baseInterval*this._intervalModifier),this._initEventListener(i)):console.debug("[Gallery.Image.ImageGrid] Container '"+e+"' is missing, aborting.")}},_initElements:function(e){var t,i;this._elements=[].slice.call(e.children),t=document.createElement("a"),i=document.createElement("span"),t.appendChild(i),this._elements[0].appendChild(t),this._elements[0].setAttribute("data-active-image",0),this._elements[0].setAttribute("data-image-index",0),this._elements[1]&&this._elements[1].setAttribute("data-image-index",3),this._elements[2]&&this._elements[2].setAttribute("data-image-index",7),2===this._elements.length?this._intervalModifier=1.5:1===this._elements.length&&(this._intervalModifier=2)},_initEventListener:function(e){var t,i;e.addEventListener("mouseover",function(){this._isHover=!0}.bind(this)),e.addEventListener("mouseout",function(){this._isHover=!1}.bind(this)),t=this._elements.length,(i=function(){var e,i=this._elements[0].offsetTop,a=1;t>1&&this._elements[1].offsetTop===i&&(a=2,3===t&&this._elements[2].offsetTop===i&&(a=3)),e=2,2===a?e=1.5:3===a&&(e=1),e!==this._intervalModifier&&(this._intervalModifier=e,this._pe.setInterval(this._baseInterval*this._intervalModifier))}.bind(this))(),window.addEventListener("resize",i)},cycleImages:function(){var e,t,i,a,s,n,r,o;this._isHover||(e=0,this._activeElement++,this._activeElement===this._elements.length&&(this._activeElement=e),t=this._elements[this._activeElement],this._activeElement===e?((i=parseInt(t.getAttribute("data-image-index"))+1)===this._images.length&&(i=0),2===(a=parseInt(t.getAttribute("data-active-image"))+1)&&(a=0),(s=new Image).src=this._images[i].src,(n=t.children[a]).setAttribute("href",this._images[i].url),n.classList.add("active"),n.children[0].style.setProperty("background-image","url("+this._images[i].src+")"),n.children[0].setAttribute("data-title",this._images[i].title),t.children[1===a?0:1].classList.remove("active"),t.setAttribute("data-active-image",a),t.setAttribute("data-image-index",i),s.complete?t.classList.add("hideLoading"):(t.classList.remove("hideLoading"),n.children[0].classList.add("imageLoading"),s.addEventListener("load",function(){t.classList.add("hideLoading"),n.children[0].classList.remove("imageLoading")}.bind(this)))):(t.children.length>2&&t.removeChild(t.children[t.children.length-1]),(i=parseInt(t.getAttribute("data-image-index"))+1)===this._images.length&&(i=0),(r=document.createElement("li")).classList.add("imageGridItemOffset"),(o=document.createElement("a")).setAttribute("href",this._images[i].url),o.setAttribute("data-title",this._images[i].title),r.appendChild(o),(s=document.createElement("img")).setAttribute("src",this._images[i].src),o.appendChild(s),t.insertBefore(r,this._elements[this._activeElement].children[0]),t.setAttribute("data-image-index",i),s.complete||(s.classList.add("imageLoading"),s.addEventListener("load",(function(){s.classList.remove("imageLoading")}))),setTimeout((function(){r.classList.remove("imageGridItemOffset")}),10),t.offsetTop>this._elements[0].offsetTop&&setTimeout(this.cycleImages.bind(this),20)))}}),Gallery.Image.ImagesInMotion=Class.extend({_container:null,_effectOptions:{},init:function(e,t,i){var a,s,n,r;if(t.length<2)console.debug("[Gallery.Image.ImagesInMotion] At least two images are required but "+t.length+" are given, aborting.");else if(this._container=$("#"+e),this._container.length){for(this._effectOptions=i||{},shuffle(t),a=null,s=!1,n=0,r=t.length;n<r;n++)a=$('<img src="'+t[n].url+'" />').data("imageData",t[n]).appendTo(this._container),0===n&&(a.get(0).complete?s=!0:a.on("load",$.proxy(this._initKenBurnsEffect,this)));s&&this._initKenBurnsEffect()}else console.debug("[Gallery.Image.ImagesInMotion] Container id '"+e+"' is invali
1d, aborting.")},_initKenBurnsEffect:function(){this._container.removeClass("loading").kenburns(this._effectOptions)}}),$.widget||($.widget=function(){}),$.widget("gallery.kenburns",{_activeCanvas:1,_animationIDs:[],_canvases:[],_caption:null,_current:{height:0,width:0,x:0,y:0},_images:[],_imageData:[],_index:-1,_link:null,_resumeAnimationCallbacks:[],_supportedAlignments:[],_updateCanvasDimensionsCallbacks:[],_userAvatar:null,options:{duration:7e3,randomizeZoom:!0,zoomFactor:.9},_create:function(){this._activeCanvas=1,this._animationIDs=[0,0],this._images=[],this._imageData=[],this._index=-1,this._resumeAnimationCallbacks=[null,null],this._updateCanvasDimensionsCallbacks=[null,null],this._supportedAlignments=["top","left","bottom","center","right"],this._canvases=[$('<canvas class="kenburns" />').appendTo(this.element).get(0),$('<canvas class="kenburns" />').appendTo(this.element).get(0)],this._link=$('<a class="box48"></a>').appendTo(this.element),this._userAvatar=$("<img />").addClass("userAvatarImage").appendTo(this._link),this._caption=$("<h1 />").appendTo(this._link),this.updateCanvasDimensions(),this.options.zoomFactor=Math.abs(this.options.zoomFactor),this.options.zoomFactor=Math.min(Math.max(this.options.zoomFactor,.5),1.5),this.element.children("img").each($.proxy((function(e,t){this._images.push(t),this._imageData.push($(t).data("imageData"))}),this)),WCF.PageVisibilityHandler.addCallback("gallery.kenburns."+this.element.wcfIdentify().hashCode(),$.proxy((function(e){e?this.pause():this.resume()}),this)),$(window).resize($.proxy(this.updateCanvasDimensions,this)),this.start()},updateCanvasDimensions:function(){var e=this.element.getDimensions("inner");this._canvases[0].height=e.height,this._canvases[0].width=e.width,this._canvases[1].height=e.height,this._canvases[1].width=e.width,this._updateCanvasDimensionsCallbacks[0]&&this._updateCanvasDimensionsCallbacks[0](),this._updateCanvasDimensionsCallbacks[1]&&this._updateCanvasDimensionsCallbacks[1]()},start:function(){var e,t,i,a=-1===this._index;this._index++,this._index===this._images.length&&(this._index=0),$(this._canvases[this._activeCanvas]).removeClass("primary").addClass("secondary"),this._activeCanvas=this._activeCanvas?0:1,e=this._canvases[this._activeCanvas],$(e).addClass("primary").removeClass("secondary"),t=this._images[this._index],this._current=this.getCurrentImageDimensions(t,e),i=this._imageData[this._index],this._caption.html(i.title),this._link.prop("href",i.link),this._userAvatar.prop("src",i.avatar),this._render(e,a)},getCurrentImageDimensions:function(e,t){var i,a={height:Math.floor(t.width/e.width*e.height),width:t.width,x:0,y:0};return a.height<t.height&&(i=t.height/a.height,a.height=t.height,a.width=t.width*i),t.width<700&&(a.height*=2,a.width*=2),a.x=(a.width-t.width)/2*-1,a.y=(a.height-t.height)/2*-1,a},pause:function(){this._animationIDs[0]&&cancelAnimationFrame(this._animationIDs[0]),this._animationIDs[1]&&cancelAnimationFrame(this._animationIDs[1])},resume:function(){null!==this._resumeAnimationCallbacks[0]&&this._resumeAnimationCallbacks[0](),null!==this._resumeAnimationCallbacks[1]&&this._resumeAnimationCallbacks[1]()},_getAlignment:function(e,t,i,a,s,n,r){var o=0,l=0;switch(r){case"top":o=(s-i)/2*-1;break;case"left":l=(n-a)/2*-1;break;case"bottom":o=(s-i)/2*-1,l=-1*(n-a);break;case"right":o=-1*(s-i),l=(n-a)/2*-1;break;default:o=(s-i)/2*-1,l=(n-a)/2*-1}return{x:e+o,y:t+l}},_scaleImage:function(e,t,i){var a=Math.floor(e.width*t),s=Math.floor(e.height*t),n=this._getAlignment(e.x,e.y,e.width,e.height,a,s,i);return{height:s,width:a,x:n.x,y:n.y}},_render:function(e,t){function i(t){var C,w;null===o&&(o=t),c&&(c=!1,o=t-l),l=t-o,C=_._scaleImage(v,a,p),w=_._images[b],l<h?g=l/h:l>d?(g=(_.options.duration-l)/1e3,m||(m=!0,_.start())):g=1,I.clearRect(0,0,e.width,e.height),I.globalAlpha=g,I.drawImage(w,0,0,w.width,w.height,C.x,C.y,C.width,C.height),u=!1,y>1?(a=1+s*l)<r&&(u=!0):(a=n-s*l)>r&&(u=!0),u?_._animationIDs[f]=requestAnimationFrame(i):(_._resumeAnimationCallbacks[f]=null,_._updateCanvasDimensionsCallbacks[f]=null)}var a,s,n,r,o,l,g,h,d,m,c,u,_,p=this._supportedAlignments[Math.floor(Math.random()*this._supportedAlignments.length)],f=this._activeCanvas,I=e.getContext("2d"),v=this._current,b=this._index,y=this.options.zoomFactor;this.options.randomizeZoom&&Math.round(Math.random())&&(y=2-y),e.width<700&&(y=y<1?1-2*(y=1-y):1+2*(y=1-y)),a=1,s=0,n=1,(r=y)>1?s=Math.abs(y-1)/this.options.duration:(n=a=1-y+1,s=(1-y)/this.options.duration,r=1),o=null,l=0,g=0,h=t?1e3:0,d=this.options.duration-1e3,m=!1,c=!1,u=!1,_=this,this._resumeAnimationCallbacks[f]=function(){c=!0,_._animationIDs[f]=requestAnimationFrame(i)},this._updateCanvasDimensionsCallbacks[f]=function(){v=_.getCurrentImageDimensions(_._images[b],e)},this._animationIDs[f]=requestAnimationFrame(i)}}),Gallery.Image.Share=WCF.Message.Share.Content.extend({_smallImageURL:"",_largeImageURL:"",_imageID:0,init:function(e,t,i){this._imageID=e,this._smallImageURL=t,this._largeImageURL=i,this._super()},_click:function(e){var t,i,a,s;e.preventDefault(),i=(t=$(e.currentTarget).prop("href")).hashCode(),void 0===this._cache[i]?(a=!1,null===this._dialog?(this._dialog=$("<div />").hide().appendTo(document.body),a=!0):this._dialog.empty(),s=$('<section class="section"><h2 class="sectionTitle"><label for="__sharePermalink">'+WCF.Language.get("wcf.message.share.permalink")+"</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__sharePermalink" class="long" readonly />').attr("value",t).appendTo(s),this._smallImageURL?(s=$('<section class="section"><h2 class="sectionTitle"><label for="__shareSmallImageBBCode">'+WCF.Language.get("wcf.message.share.permalink.bbcode")+" ("+WCF.Language.get("gallery.image.share.smallImage")+")</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__shareSmallImageBBCode" class="long" readonly />').attr("value","[image='"+this._imageID+"',small][/image]").appendTo(s),s=$('<section class="section"><h2 class="sectionTitle"><label for="__shareLargeImageBBCode">'+WCF.Language.get("wcf.message.share.permalink.bbcode")+" ("+WCF.Language.get("gallery.image.share.largeImage")+")</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__shareLargeImageBBCode" class="long" readonly />').attr("value","[image='"+this._imageID+"',large][/image]").appendTo(s),s=$('<section class="section"><h2 class="sectionTitle"><label for="__shareSmallImageHTML">'+WCF.Language.get("wcf.message.share.permalink.html")+" ("+WCF.Language.get("gallery.image.share.smallImage")+")</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__shareSmallImageHTML" class="long" readonly />').attr("value",'<a href="'+t+'"><img src="'+this._smallImageURL+'" alt="" /></a>').appendTo(s),s=$('<section class="section"><h2 class="sectionTitle"><label for="__shareLargeImageHTML">'+WCF.Language.get("wcf.message.share.permalink.html")+" ("+WCF.Language.get("gallery.image.share.largeImage")+")</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__shareLargeImageHTML" class="long" readonly />').attr("value",'<a href="'+t+'"><img src="'+this._largeImageURL+'" alt="" /></a>').appendTo(s)):(s=$('<section class="section"><h2 class="sectionTitle"><label for="__shareImageBBCode">'+WCF.Language.get("wcf.message.share.permalink.bbcode")+"</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__shareImageBBCode" class="long" readonly />').attr("value","[url='"+t+"'][img]"+this._largeImageURL+"[/img][/url]").appendTo(s),s=$('<section class="section"><h2 class="sectionTitle"><label for="__shareImageHTML">'+WCF.Language.get("wcf.message.share.permalink.html")+"</label></h2></section>").appendTo(this._dialog),$('<input type="text" id="__shareImageHTML" class="long" readonly />').attr("value",'<a href="'+t+'"><img src="'+this._largeImageURL+'" alt="" /></a>').appendTo(s)),this._cache[i]=this._dialog.html(),a?this._dialog.wcfDialog({title:WCF.Language.get("wcf.message.share")}):this._dialog.wcfDialog("open")):this._dialog.html(this._cache[i]).wcfDialog("open"),this._enableSelection()}}),Gallery.Image.Slideshow={_didInit:!1,init:function(){this._didInit||(this._didInit=!0,this._domNo
1deInserted(),WCF.DOMNodeInsertedHandler.addCallback("Gallery.Image.Slideshow",$.proxy(this._domNodeInserted,this)))},_domNodeInserted:function(){$(".jsGalleryAlbumImageViewer").removeClass("jsGalleryAlbumImageViewer").wcfImageViewer({className:"gallery\\data\\album\\AlbumAction"}),$(".jsGalleryCategoryImageViewer").removeClass("jsGalleryCategoryImageViewer").wcfImageViewer({className:"gallery\\data\\category\\GalleryCategoryAction"}),document.querySelectorAll(".jsGalleryUserImageViewer").forEach((e=>{e.classList.remove("jsGalleryUserImageViewer");parseInt(e.dataset.objectId,10)&&$(e).wcfImageViewer({className:"gallery\\data\\image\\ImageAction"})}))}},Gallery.Image.Upload=WCF.Upload.Parallel.extend({_archiveUploadSuccess:null,_imageHandler:null,_listItems:{},_maxParallelUploads:0,_outstandingUploads:0,_quotaExceededError:null,_thumbnailGenerator:null,_tooManyImagesError:null,_visibleArchiveUploadSuccess:!1,_uploadRequests:[],init:function(e,t){this._imageHandler=e,this._maxParallelUploads=t,this._outstandingUploads=0,this._uploadRequests=[],this._super($("#thumbnailList"),$("#thumbnailList"),"gallery\\data\\image\\ImageAction")},_abortUpload:function(e){var t=$(e.currentTarget.parentNode);this._uploadRequests[~~t.data("internalFileID")].abort(),t.remove()},_createButton:function(){var e;this._supportsAJAXUpload?(this._fileUpload=$('<input type="file" name="'+this._name+'" '+(this._options.multiple?'multiple="true" ':"")+"/>"),this._fileUpload.change($.proxy(this._upload,this)),(e=$('<li class="jsImageUpload jsTooltip" title="'+WCF.Language.get("gallery.image.button.upload")+'"><span class="icon icon32 fa-upload"></span></li>')).prepend(this._fileUpload)):(e=$('<li class="jsImageUpload jsImageUploadFallback jsTooltip" title="'+WCF.Language.get("gallery.image.button.upload")+'"><span class="icon icon32 fa-upload"></span> <span>'+WCF.Language.get("wcf.global.button.upload")+"</span></li>")).click($.proxy(this._showOverlay,this)),this._insertButton(e),WCF.DOMNodeInsertedHandler.execute()},_error:function(e,t,i){this._imageHandler.addError(WCF.Language.get("gallery.image.upload.error.uploadFailed")),this._outstandingUploads--,0===this._outstandingUploads&&this._imageHandler.finishUpload()},_getParameters:function(){return{tmpHash:this._imageHandler.getOption("tmpHash")}},_getThumbnailGenerator:function(){return null===this._thumbnailGenerator&&(this._thumbnailGenerator=new Gallery.Image.ThumbnailGenerator),this._thumbnailGenerator},_insertButton:function(e){var t=this._buttonSelector.find(".jsVideoLinkAdd");t.length?e.insertBefore(t):this._buttonSelector.append(e)},_initFile:function(e){var t=$('<li><span class="icon icon16 fa-times pointer galleryAbortUpload jsTooltip" title="'+WCF.Language.get("gallery.image.upload.abort")+'"></span><small class="galleryUploadProgress"><progress max="100" /> <span>0%</span></small><span class="icon icon32 fa-spinner"></span></li>').insertBefore(this._fileListSelector.find(".jsImageUpload"));return $.getLength(this._imageHandler.getImages())||t.on("didLoadImage",$.proxy(this._imageHandler.setFirstImageActive,this._imageHandler)),t.children(".galleryAbortUpload").on("click",this._abortUpload.bind(this)),t},_removeButton:function(){this._buttonSelector.find(".jsImageUpload").remove()},_processUploadedImage:function(e,t){var i,a,s,n,r,o,l=this._uploadMatrix[t],g={resize:1,rotate:1,thumbnails:1,watermarks:e.delayWatermarks?0:1};if(e.images&&e.images[t])i=e.images[t],this._imageHandler.addImage(i.imageID,new Gallery.Image.Handler.Image(i.imageID,i,l)),this._imageHandler.getImageProcessor().addImage(i.imageID,!1,g);else if(e.archiveImages&&e.archiveImages[t]){for(a in l.remove(),this._archiveUploadSuccess||(this._archiveUploadSuccess=new WCF.System.Notification(WCF.Language.get("gallery.image.upload.archive.success"))),this._visibleArchiveUploadSuccess||(this._visibleArchiveUploadSuccess=!0,this._archiveUploadSuccess.show($.proxy(this._setArchiveUploadSuccessHidden))),e.archiveImages[t])i=e.archiveImages[t][a],l=$("<li />").data("imageID",a).data("imageData",i).on("didLoadImage",$.proxy(this._imageHandler.setFirstImageActive,this._imageHandler)).append($('<span class="icon icon32 fa-spinner" />')),this._fileListSelector.find(".jsImageUpload").before(l),this._listItems[a]=l,this._imageHandler.addImage(i.imageID,new Gallery.Image.Handler.Image(i.imageID,i,l)),this._imageHandler.getImageProcessor().addImage(i.imageID,!1,g);
1if(this._imageHandler.getImageProcessor().startProcessor(),e.archiveErrors[t]&&e.archiveErrors[t].files&&e.archiveErrors[t].files.length){for(r in s=$('<div class="info pointer" />').text(e.archiveErrors[t].errorMessage),n=$('<ul class="nativeList" />').appendTo(s),e.archiveErrors[t].files)n.append($("<li />").text(e.archiveErrors[t].files[r].errorMessage));this._imageHandler.addError(s)}}e.errors&&e.errors[t]&&(e.archiveImages&&!e.archiveImages[t]&&(o=l.next("li"),l.remove(),o&&o.data("imageID")&&o.on("didLoadImage",$.proxy(this._imageHandler.setFirstImageActive,this._imageHandler))),this._imageHandler.addError(e.errors[t].errorMessage)),this._imageHandler.setUserImageCount(e.userImageCount)},_processUploadedVideo:function(e,t){var i,a=this._uploadMatrix[t];e.videos&&e.videos[t]&&(i=e.videos[t],this._imageHandler.addImage(i.imageID,new Gallery.Image.Handler.Image(i.imageID,i,a)),this._imageHandler.getActiveImage()||this._imageHandler.setFirstImageActive()),e.errors&&e.errors[t]&&(this._imageHandler.addError(e.errors[t].errorMessage),a.remove()),this._imageHandler.setUserUploadedVideoCount(e.userVideoCount)},_progress:function(e,t){this._super(e,t);var i=this._uploadMatrix[e].find("progress");i.next("span").text(i.attr("value")+"%")},_sendRequest:function(e,t){0===this._outstandingUploads&&this._imageHandler.startUpload(),this._outstandingUploads++,this._uploadRequests[e]=this._super(e,t)},_success:function(e,t){if(this._outstandingUploads--,0===this._outstandingUploads&&this._imageHandler.finishUpload(),"abort"!==this._uploadRequests[e].status&&t.returnValues){var i=this._uploadMatrix[e];switch(i.find(".galleryUploadProgress").remove(),i.find(".galleryAbortUpload").remove(),t.returnValues.uploadType){case"video":this._processUploadedVideo(t.returnValues,e);break;case"image":this._processUploadedImage(t.returnValues,e);break;default:throw new Error("Unknown upload type '"+t.returnValues.uploadType+"'.")}this._imageHandler.updateRestrictions(t.returnValues.restrictions),WCF.DOMNodeInsertedHandler.execute()}},_upload:function(){var e,t=this._fileUpload.prop("files");t.length>this._maxParallelUploads?$('<p class="error pointer" />').text(WCF.Language.get("gallery.image.upload.error.maxParallelFileUpload")).insertBefore($("#thumbnailListContainer")).click((function(){this.remove()})):t.length>this._imageHandler.getFreeImageCount()+this._imageHandler.getFreeUploadedVideoCount()?(e=WCF.Language.get("gallery.image.upload.error.tooManyImageSelected",{imageCount:t.length,maximumImageCount:this._imageHandler.getFreeImageCount()}),$('<p class="error pointer" />').text(e).insertBefore($("#thumbnailListContainer")).click((function(){this.remove()}))):this._super(),this._fileUpload&&(this._removeButton(),this._createButton())},_setArchiveUploadSuccessHidden:function(){this._visibleArchiveUploadSuccess=!1},hideUploadButton:function(){this._buttonSelector.find(".jsImageUpload").hide()},showUploadButton:function(){this._buttonSelector.find(".jsImageUpload").show()}}),Gallery.Image.Processor=Class.extend({_imageHandler:null,_queue:{},_proxy:null,init:function(e){this._imageHandler=e,this._proxy=new WCF.Action.Proxy({showLoadingOverlay:!1,success:$.proxy(this._success,this)})},_sendRequest:function(){var e,t,i=this._queue;for(t in this._queue={},e=[],i)e.push(t);this._proxy.setOption("data",{actionName:"processImages",className:"gallery\\data\\image\\ImageAction",objectIDs:e,parameters:{queue:i}}),this._proxy.sendRequest()},_success:function(e,t,i){var a,s,n,r,o,l,g,h,d;for(a in e.returnValues.errors)this._imageHandler.addError(e.returnValues.errors[a]),(n=(s=this._imageHandler.getImage(a)).getThumbnailContainer().next("li"))&&n.data("imageID")&&n.on("didLoadImage",$.proxy(this._imageHandler.setFirstImageActive,this._imageHandler)),this._imageHandler.removeImage(a);for(a in e.returnValues.queue){for(o in r=e.returnValues.queue[a],s=this._imageHandler.getImage(a),e.returnValues.imageData[a])s.set(o,e.returnValues.imageData[a][o]);l=parseInt(r.resize),g=parseInt(r.rotate),h=parseInt(r.thumbnails),d=parseInt(r.watermarks),l||g||h||d?this._queue[a]={resize:l,rotate:g,thumbnails:h,watermarks:d}:(r.tinyURL&&s.set("tinyURL",r.tinyURL),s.showTinyThumbnail())}$.getLength(this._queue)?this._sendRequest():WCF.System.Event.fireEvent("com.woltlab.gallery.image.processor","finishedProcessing")},addImage:function(e,t,i){this._queue[e]||(this._queue[e]={resize:1,rotate:1,thumbnails:1,watermarks:1},$.isPlainObject(i)&&(this._queue[e]=i),t||this.startProcessor())},startProcessor:function(){$.getLength(this._queue)&&this._sendRequest()}}),Gallery.Image.ThumbnailGenerator=Class.extend({generateThumbnails:function(e,t,i){i=i||!1,new WCF.Action.Proxy({autoSend:!0,data:{actionName:"generateThumbnails",className:"gallery\\data\\image\\ImageAction",objectIDs:[e],parameters:{refresh:i}},showLoadingOverlay:!1,success:$.proxy((function(i,a,s){i.returnValues.pendingThumbnails?this.generateThumbnails(e,t):$.isFunction(t)&&t(e,i.returnValues)}),this)})}}),Gallery.Image.Handler.Image=Class.extend({_createThumbnail:!1,_data:{},_errors:{},_imageID:0,_imageHandler:null,_removeImageIcon:null,_thumbnail:null,_thumbnailContainer:null,init:function(e,t,i,a){if(this._imageID=e,this._data=t||{},this._thumbnailContainer=i,this._createThumbnail=a||!1,this._thumbnailContainer&&this._thumbnailContainer.children("img").length?this._thumbnail=this._thumbnailContainer.children("img").eq(0):this._thumbnail=null,this._thumbnail)this._thumbnail.click($.proxy(this._editImage,this));else if(this._createThumbnail){this._thumbnailContainer=$("<li />");var s=$("#thumbnailList > .jsImageUpload");s.length?this._thumbnailContainer.insertBefore(s):this._thumbnailContainer.appendTo($("#thumbnailList")),this._addThumbnail(this._thumbnailContainer)}else this._data.isVideo&&(this._addThumbnail(this._thumbnailContainer),this._thumbnailContainer.click($.proxy(this._editImage,this)));this._thumbnailContainer.data({imageData:t,imageID:e})},_addThumbnail:function(e){if(this._thumbnail)this._thumbnail.attr("src",this.get("tinyURL")+"?date="+Date.now());else{e.children(".fa-spinner").remove(),this._thumbnail=$('<img src="'+this.get("tinyURL")+'" alt="" />').appendTo(e),this._thumbnail.click($.proxy(this._editImage,this));var t=$('<ul class="imageOptions" />').appendTo(e);this._removeImageIcon=$('<span class="icon icon16 fa-times pointer jsTooltip" title="'+WCF.Language.get("wcf.global.button.delete")+'" />').data("imageID",this.getImageID()),this._imageHandler&&this._removeImageIcon.click($.proxy(this._imageHandler.removeImageByClick,this._imageHandler)),t.append($("<li />").append(this._removeImageIcon)),e.append(t),e.trigger("didLoadImage")}},_editImage:function(){this._imageHandler.setActiveImage(this)},addError:function(e,t){this._errors[e]=t},get:function(e){return void 0!==this._data[e]?this._data[e]:null},getData:function(){return this._data},getErrors:function(){return this._errors},getImageID:function(){return this._imageID},getImageHandler:function(){return this._imageHandler},getThumbnail:function(){return this._thumbnail},getThumbnailContainer:function(){return this._thumbnailContainer},getType:function(){return this._data.isVideo?"video":this._data.isVideoLink?"videoLink":"image"},remove:function(){this._thumbnailContainer.remove()}
1,removeThumbnail:function(){if(!this._data.isVideo)throw new Error("The thumbnail may only be removed from videos.");this._thumbnail.remove(),this._thumbnail=null},set:function(e,t){this._data[e]=t},setData:function(e){this._data=e},setErrors:function(e){this._errors=e},setImageHandler:function(e){this._imageHandler=e,this._removeImageIcon&&this._removeImageIcon.click($.proxy(this._imageHandler.removeImageByClick,this._imageHandler))},showTinyThumbnail:function(){this._addThumbnail(this._thumbnailContainer)},validate:function(){var e,t;for(t in this.setErrors({}),e=this._imageHandler.getActiveImageDataHandlers())if(!e[t].validateData(this))return this._thumbnailContainer&&this._thumbnailContainer.addClass("imageError"),!1;return this._thumbnailContainer.hasClass("imageError")&&this._thumbnailContainer.removeClass("imageError"),!0}}),Gallery.Image.Clipboard=Class.extend({_categoryID:0,_environment:"category",_updateHandler:null,init:function(e,t,i){this._updateHandler=e,this._environment=t,this._categoryID=i||0,this._dialog=$("<div />").appendTo(document.body),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this)}),require(["EventHandler"],function(e){e.add("com.woltlab.wcf.clipboard","com.woltlab.gallery.image",this._clipboardAction.bind(this))}.bind(this))},_clipboardAction:function(e){var t,i;if("com.woltlab.gallery.image.moveToAlbum"===e.data.actionName)this._proxy.setOption("data",{actionName:"prepareMoveToAlbum",className:"gallery\\data\\image\\ImageAction",objectIDs:e.data.parameters.objectIDs}),this._proxy.sendRequest();else if(e.responseData&&e.responseData.returnValues&&e.responseData.returnValues.imageData)for(i in t=e.responseData.returnValues.imageData)t.hasOwnProperty(i)&&this._updateHandler.update(i,t[i])},_moveToAlbum:function(e){this._proxy.setOption("data",{actionName:"moveToAlbum",className:"gallery\\data\\image\\ImageAction",objectIDs:this._dialog.data("objectIDs"),parameters:{albumID:parseInt(this._dialog.find("#albumID").val())}}),this._proxy.sendRequest(),this._dialog.wcfDialog("close")},_success:function(e,t,i){switch(e.actionName){case"prepareMoveToAlbum":this._dialog.data("objectIDs",e.objectIDs).html(e.returnValues.template),this._dialog.wcfDialog({title:WCF.Language.get("gallery.image.moveToAlbum")}),this._dialog.find(".formSubmit > input[type=submit]").click($.proxy(this._moveToAlbum,this));break;case"moveToAlbum":window.location.reload()}}}),Gallery.Image.UpdateHandler=Class.extend({_images:{},init:function(){$(".galleryImage").each($.proxy((function(e,t){var i=$(t);this._images[i.data("objectID")]=i}),this))},update:function(e,t){if(this._images[e])for(var i in t)this._updateProperty(e,i,t[i]);else console.debug("[Gallery.Image.UpdateHandler] Unknown image id "+e)},_updateProperty:function(e,t,i){switch(t){case"deleted":this._delete(e,i);break;case"deleteNote":this._deleteNote(e,i);break;case"isDeleted":i?this._trash(e):this._restore(e);break;case"isDisabled":i?this._disable(e):this._enable(e);break;default:this._handleCustomProperty(e,t,i)}},_handleCustomProperty:function(e,t,i){this._images[e].trigger("imageUpdateHandlerProperty",[e,t,i])},_delete:function(e,t){},_deleteNote:function(e,t){},_disable:function(e){this._images[e].data("isDisabled",1)},_enable:function(e){this._images[e].data("isDisabled",0)},_restore:function(e){this._images[e].data("isDeleted",0)},_trash:function(e){this._images[e].data("isDeleted",1)},getValue:function(e,t){if(this._images[e])switch(t){case"isDeleted":return this._images[e].data("isDeleted");case"isDisabled":return this._images[e].data("isDisabled")}else console.debug("[Gallery.Image.UpdateHandler] Unknown image id "+e)}}),Gallery.Image.UpdateHandler.ImageList=Gallery.Image.UpdateHandler.extend({_delete:function(e,t){this._images[e].remove(),delete this._images[e],WCF.Clipboard.reload()},_disable:function(e){this._super(e),this._images[e].addClass("imageDisabled")},_enable:function(e){this._super(e),this._images[e].removeClass("imageDisabled")},_restore:function(e){this._super(e),this._images[e].removeClass("imageDeleted")},_trash:function(e){this._super(e),this._images[e].data("canViewDeletedImage")||window.location.reload(),this._images[e].addClass("imageDeleted")}}),Gallery.Image.UpdateHandler.Image=Gallery.Image.UpdateHandler.extend({_delete:function(e,t){new WCF.PeriodicalExecuter((function(e){e.stop(),window.location=t}),1e3)},_deleteNote:function(e,t){$('<div class="section"><p class="galleryImageDeleteNote">'+t+"</p></div>").insertBefore($(".galleryImageContainer > .galleryImageLikesSummery"))},_disable:function(e){this._super(e),$(".galleryImageHeadline").addClass("messageDisabled")},_enable:function(e){this._super(e),$(".galleryImageHeadline").removeClass("messageDisabled")},_restore:function(e){this._super(e),$(".galleryImageHeadline").removeClass("messageDeleted"),this._images[e].parent().find(".galleryImageDeleteNote").remove()},_trash:function(e){this._super(e),$(".galleryImageHeadline").addClass("messageDeleted")}}),Gallery.Image.DataHandler={},Gallery.Image.DataHandler.Base=Class.extend({_data:{},_imageHandler:null,_overwriteIcons:[],init:function(){this._data={},this._imageHandler=null,this._overwriteIcons=[],WCF.System.Event.addListener("com.woltlab.gallery.imageHandler","overwriteData",$.proxy(this._overwriteData,this))},_overwriteData:function(){},_toggleOverwriteIcons:function(){var e;if(1==$.getLength(this._imageHandler.getImages()))for(e in this._overwriteIcons)this._overwriteIcons[e].hide();else for(e in this._overwriteIcons)this._overwriteIcons[e].show()},getData:function(){return this._data},getImageHandler:function(){return this._imageHandler},readData:function(){},setImageHandler:function(e){this._imageHandler=e,this._imageHandler.registerCallback("addImage",$.proxy(this._toggleOverwriteIcons,this)),this._imageHandler.registerCallback("removeImage",$.proxy(this._toggleOverwriteIcons,this))},setInactive:function(){},updateData:function(){},validateData:function(e){return!0}}),Gallery.Image.DataHandler.Default=Gallery.Image.DataHandler.Base.extend({_categoryIDs:[],_categoryIDsError:null,_descriptionError:null,_maxDescriptionLength:0,_titleError:null,_useTitleAsFilename:null,init:function(e,t){var i,a,s,n;this._super(),this._categoryIDs=e,this._maxDescriptionLength=t,i=$('<span class="icon icon16 fa-refresh pointer jsTooltip galleryOverwriteIcon" title="'+WCF.Language.get("gallery.image.button.overwrite")+'" />').click($.proxy(this._overwriteTitle,this)),this._overwriteIcons.push(i),(a=$("#title").parent().prev("dt")).children("label").css("display","inline-block"),a.append(i),s=$('<span class="icon icon16 fa-refresh pointer jsTooltip galleryOverwriteIcon" title="'+WCF.Language.get("gallery.image.button.overwrite")+'" />').click($.proxy(this._overwriteCategories,this)),this._overwriteIcons.push(s),$("#flexibleCategoryList").prev(".
1sectionTitle").append(s),n=$('<span class="icon icon16 fa-refresh pointer jsTooltip galleryOverwriteIcon" title="'+WCF.Language.get("gallery.image.button.overwrite")+'" />').click($.proxy(this._overwriteDescription,this)),this._overwriteIcons.push(n),(a=$("#text").parents("dl:eq(0)").prev(".sectionTitle")).children("label").css("display","inline-block"),a.append(n),this._useTitleAsFilename=$("#useFilenameAsTitle"),this._useTitleAsFilename.on("change",$.proxy(this._change,this))},_change:function(e){var t,i;$(e.currentTarget).is(":checked")?(i=(t=this.getImageHandler().getActiveImage()).get("filename"),t.get("isVideo")&&(i=t.get("videoFilename")),i=i.substr(0,i.lastIndexOf(".")),$("#title").val(i).disable()):$("#title").val("").enable()},_getCategoryIDs:function(){var e=[];return $('input[name="categoryIDs[]"]').each((function(t,i){var a=$(i);a.prop("checked")&&e.push(parseInt(a.val()))})),e},_hideCategoryIDsError:function(){null!==this._categoryIDsError&&this._categoryIDsError.hide()},_hideDescriptionError:function(){null!==this._descriptionError&&this._descriptionError.hide()},_hideTitleError:function(){null!==this._titleError&&this._titleError.hide()},_needCategoriesOverwriteConfirmation:function(){var e,t,i=this.getImageHandler().getImages();for(e in i)if(this.getImageHandler().getActiveImage().getImageID()!=e&&(t=i[e].get("categoryIDs"))&&t.length)return!0;return!1},_needDescriptionOverwriteConfirmation:function(){var e,t=this.getImageHandler().getImages();for(e in t)if(this.getImageHandler().getActiveImage().getImageID()!=e&&$.trim(t[e].get("description")))return!0;return!1},_needTitleOverwriteConfirmation:function(){var e,t=this.getImageHandler().getImages();for(e in t)if(this.getImageHandler().getActiveImage().getImageID()!=e&&t[e].get("title"))return!0;return!1},_overwriteCategories:function(e){e.preventDefault(),this._needCategoriesOverwriteConfirmation()?WCF.System.Confirmation.show(WCF.Language.get("gallery.image.categoryIDs.overwrite.confirmMessage"),$.proxy((function(e){"confirm"===e&&this._setCategoryIDs()}),this)):this._setCategoryIDs()},_overwriteData:function(){this._setCategoryIDs(!1),this._setDescription(!1),this._setTitle(!1)},_overwriteDescription:function(e){e.preventDefault(),this._needDescriptionOverwriteConfirmation()?WCF.System.Confirmation.show(WCF.Language.get("gallery.image.description.overwrite.confirmMessage"),$.proxy((function(e){"confirm"===e&&this._setDescription()}),this)):this._setDescription()},_overwriteTitle:function(e){e.preventDefault(),this._needTitleOverwriteConfirmation()?WCF.System.Confirmation.show(WCF.Language.get("gallery.image.title.overwrite.confirmMessage"),$.proxy((function(e){"confirm"===e&&this._setTitle()}),this)):this._setTitle()},_setCategoryIDs:function(e){var t,i,a;for(a in void 0===e&&(e=!0),t=this._getCategoryIDs(),i=this.getImageHandler().getImages())this.getImageHandler().getActiveImage().getImageID()!=a&&i[a].set("categoryIDs",t);e&&(new WCF.System.Notification).show()},_setDescription:function(e){var t,i,a;for(a in void 0===e&&(e=!0),t=$("#text").redactor("code.get"),i=this.getImageHandler().getImages())this.getImageHandler().getActiveImage().getImageID()!=a&&i[a].set("description",t);e&&(new WCF.System.Notification).show()},_setTitle:function(e){var t,i,a,s,n,r;for(s in void 0===e&&(e=!0),t=this._useTitleAsFilename.is(":checked"),i=$("#title").val(),a=this.getImageHandler().getImages())this.getImageHandler().getActiveImage().getImageID()!=s&&((n=a[s]).set("useFilenameAsTitle",t?1:0),r="",t&&(r=n.get("filename"),n.get("isVideo")&&(r=n.get("videoFilename")),r=r.substr(0,r.lastIndexOf("."))),n.set("title",t?r:i));e&&(new WCF.System.Notification).show()},_showCategoryIDsError:function(e){null===this._categoryIDsError&&(this._categoryIDsError=$('<small class="innerError" />').hide(),$("#flexibleCategoryList").after(this._categoryIDsError)),this._categoryIDsError.text(e).show()},_showDescriptionError:function(e){null===this._descriptionError&&(this._descriptionError=$('<small class="innerError" />').hide(),$("#text").closest("dd").append(this._descriptionError)),this._descriptionError.text(e).show()},_showTitleError:function(e){null===this._titleError&&(this._titleError=$('<small class="innerError" />').hide(),$("#title").after(this._titleError)),this._titleError.text(e).show()},readData:function(){var e=this.getImageHandler().getActiveImage().get("isVideoLink");!e&&this._useTitleAsFilename.is(":checked")&&(e=1),this._data={categoryIDs:this._getCategoryIDs(),description:$("#text").redactor("code.get"),title:$("#title").val(),useFilenameAsTitle:e}},updateData:function(){var e,t,i,a;$(window).resize(),e=this.getImageHandler().getActiveImage().getData(),this._data={categoryIDs:e.categoryIDs||[],description:e.description||"",title:e.title||"",useFilenameAsTitle:e.useFilenameAsTitle||0},e.isVideoLink?(this._data.useFilenameAsTitle=0,this._useTitleAsFilename.closest("label").hide()):this._useTitleAsFilename.closest("label").show(),void 0!==(t=this.getImageHandler().getActiveImage().getErrors()).categoryIDs?this._showCategoryIDsError(t.categoryIDs):this._hideCategoryIDsError(),void 0!==t.description?this._showDescriptionError(t.description):this._hideDescriptionError(),void 0!==t.title?this._showTitleError(t.title):this._hideTitleError(),this._useTitleAsFilename.prop("checked",!!this._data.useFilenameAsTitle),this._data.useFilenameAsTitle?(i=e.filename,e.isVideo&&(i=e.videoFilename),i=i.substr(0,i.lastIndexOf(".")),$("#title").val(i).disable()):$("#title").val(this._data.title).enable(),$('input[name="categoryIDs[]"]').each($.proxy((function(e,t){var i=$(t);-1==this._data.categoryIDs.indexOf(parseInt(i.val()))?i.prop("checked",!1):i.prop("checked",!0)}),this));try{$("#text").redactor("code.set",this._data.description)}catch(e){}a=$(document).scrollTop(),$("#title").focus().blur(),$(document).scrollTop(a)},validateData:function(e){var t,i=e.getData(),a=!0;if(void 0===i.title||""==i.title?(e.addError("title",WCF.Language.get("wcf.global.form.error.empty")),a=!1):i.title.length>255&&(e.addError("title",WCF.Language.get("gallery.image.title.error.tooLong")),a=!1),void 0===i.description||null===i.description?i.description="":i.description.length>this._maxDescriptionLength&&(e.addError("description",WCF.Language.get("gallery.image.description.error.tooLong")),a=!1),void 0!==i.categoryIDs&&i.categoryIDs.length){for(t in i.categoryIDs)if(-1==this._categoryIDs.indexOf(i.categoryIDs[t])){e.addError("categoryIDs",WCF.Language.get("wcf.global.form.error.noValidSelection")),a=!1;break}}else e.addError("categoryIDs",WCF.Language.get("wcf.global.form.error.empty")),a=!1;return a}}),Gallery.Image.DataHandler.EnableComments=Gallery.Image.DataHandler.Base.extend({init:function(){this._super();
1var e=$('<span class="icon icon16 fa-refresh pointer jsTooltip galleryOverwriteIcon" title="'+WCF.Language.get("gallery.image.button.overwrite")+'" />').click($.proxy(this._click,this));this._overwriteIcons.push(e),$("#enableComments").closest("label").append(e),WCF.DOMNodeInsertedHandler.execute()},_click:function(e){e.preventDefault(),this._needOverwriteConfirmation()?WCF.System.Confirmation.show(WCF.Language.get("gallery.image.enableComments.overwrite.confirmMessage"),$.proxy((function(e){"confirm"===e&&this._setEnableComments()}),this)):this._setEnableComments()},_needOverwriteConfirmation:function(){var e,t=$("#enableComments").is(":checked")?1:0,i=this.getImageHandler().getImages();for(e in i)if(this.getImageHandler().getActiveImage().getImageID()!=e&&i[e].get("enableComments")!=t)return!0;return!1},_overwriteData:function(){this._setEnableComments(!1)},_setEnableComments:function(e){var t,i;for(i in void 0===e&&(e=!0),t=this.getImageHandler().getImages())this.getImageHandler().getActiveImage().getImageID()!=i&&t[i].set("enableComments",$("#enableComments").is(":checked")?1:0);e&&(new WCF.System.Notification).show()},readData:function(){this._data={enableComments:$("#enableComments").is(":checked")?1:0}},updateData:function(){var e=this.getImageHandler().getActiveImage().getData();this._data={enableComments:void 0!==e.enableComments?e.enableComments:1},$("#enableComments").prop("checked",!!this._data.enableComments)}}),Gallery.Image.DataHandler.Album=Gallery.Image.DataHandler.Base.extend({_albumIDError:null,_albumIDs:[],_maxAlbums:0,_systemNotification:null,init:function(e,t){var i,a,s;if(this._super(),this._albumIDs=e,this._maxAlbums=t,this._albumIDError=null,i=$('<span class="icon icon16 fa-refresh pointer jsTooltip galleryOverwriteIcon" title="'+WCF.Language.get("gallery.image.button.overwrite")+'" />').click($.proxy(this._click,this)),this._overwriteIcons.push(i),(a=$("#albumID").parent().prev("dt")).children("label").css("display","inline-block"),a.append(i),!this._albumIDs.length)for(s in $("#albumID").hide(),this._overwriteIcons)this._overwriteIcons[s].hide();e.length<t&&(this._albumDialog=new Gallery.Album.Dialog,this._albumDialog.registerCallback("created",$.proxy(this._addNewAlbum,this)),this._albumAddIcon=$('<span class="icon icon16 fa-plus pointer jsTooltip" title="'+WCF.Language.get("gallery.album.button.add")+'" />').click($.proxy(this._addAlbum,this)).css("margin-left","5px"),$("#albumID").after(this._albumAddIcon)),WCF.DOMNodeInsertedHandler.execute()},_addAlbum:function(e){this._albumDialog.show()},_addNewAlbum:function(e){if(this._albumIDs.push(parseInt(e.albumID)),1==this._albumIDs.length&&($("#albumID").show(),$.getLength(this._imageHandler.getImages())>1))for(var t in this._overwriteIcons)this._overwriteIcons[t].show();$("#albumID").append($('<option value="'+e.albumID+'" />').text(e.title)).val(e.albumID),this._albumIDs.length>=this._maxAlbums?(this._albumAddIcon.remove(),new WCF.System.Notification(WCF.Language.get("gallery.image.upload.albumLimitReached"),"warning").show(void 0,5e3)):(null===this._systemNotification&&(this._systemNotification=new WCF.System.Notification),this._systemNotification.show())},_click:function(e){e.preventDefault(),this._needOverwriteConfirmation()?WCF.System.Confirmation.show(WCF.Language.get("gallery.image.albumID.overwrite.confirmMessage"),$.proxy((function(e){"confirm"===e&&this._setAlbumID()}),this)):this._setAlbumID()},_hideAlbumIDError:function(){null!==this._albumIDError&&this._albumIDError.hide()},_needOverwriteConfirmation:function(){var e,t=this.getImageHandler().getImages();for(e in t)if(this.getImageHandler().getActiveImage().getImageID()!=e&&t[e].get("albumID"))return!0;return!1},_overwriteData:function(){this._setAlbumID(!1)},_setAlbumID:function(e){var t,i;for(i in void 0===e&&(e=!0),t=this.getImageHandler().getImages())this.getImageHandler().getActiveImage().getImageID()!=i&&t[i].set("albumID",parseInt($("#albumID").val()||0));e&&(new WCF.System.Notification).show()},_showAlbumIDError:function(e){null===this._albumIDError&&(this._albumIDError=$('<small class="innerError" />').hide(),$("#albumID").parent().append(this._albumIDError)),this._albumIDError.text(e).show()},_toggleOverwriteIcons:function(){this._albumIDs.length&&this._super()},readData:function(){this._data={albumID:parseInt($("#albumID").val()||0)}},updateData:function(){var e,t=this.getImageHandler().getActiveImage().getData();this._data={albumID:t.albumID||0},$("#albumID").val(this._data.albumID),void 0!==(e=this.getImageHandler().getActiveImage().getErrors()).albumID?this._showAlbumIDError(e.albumID):this._hideAlbumIDError()},validateData:function(e){var t=e.getData();return!t.albumID||-1!=this._albumIDs.indexOf(t.albumID)||(e.addError("albumID",WCF.Language.get("wcf.global.form.error.noValidSelection")),!1)}}),Gallery.Image.DataHandler.Tagging=Gallery.Image.DataHandler.Base.extend({init:function(){var e;this._super(),e=$('<span class="icon icon16 fa-refresh pointer jsTooltip galleryOverwriteIcon" title="'+WCF.Language.get("gallery.image.button.overwrite")+'" />').click($.proxy(this._click,this)),this._overwriteIcons.push(e),$("#tagSearchInput").closest("dl").children("dt").children("label").css("display","inline-block").append(e)},_click:function(e){e.preventDefault(),this._needOverwriteConfirmation()?WCF.System.Confirmation.show(WCF.Language.get("gallery.image.tags.overwrite.confirmMessage"),$.proxy((function(e){"confirm"===e&&this._setTags()}),this)):this._setTags()},_getTags:function(){var e,t,i=require("WoltLabSuite/Core/Ui/ItemList").getValues("tagSearchInput"),a=[];for(e=0,t=i.length;e<t;e++)a.push(i[e].value);return a},_needOverwriteConfirmation:function(){var e,t,i=this.getImageHandler().getImages();for(e in i)if(this.getImageHandler().getActiveImage().getImageID()!=e&&(t=i[e].get("tags"))&&t.length)return!0;return!1},_overwriteData:function(){this._setTags(!1)},_setTags:function(e){var t,i,a;for(a in void 0===e&&(e=!0),t=this._getTags(),i=this.getImageHandler().getImages())this.getImageHandler().getActiveImage().getImageID()!=a&&i[a].set("tags",t);e&&(new WCF.System.Notification).show()},readData:function(){this._data={tags:this._getTags()}},updateData:function(){var e,t,i;for(this._data={tags:this.getImageHandler().getActiveImage().getData().tags||[]},e=[],t=0,i=this._data.tags.length;t<i;t++)e.push({objectId:"",value:this._data.tags[t]});require(["WoltLabSuite/Core/Ui/ItemList"],(function(t){t.setValues("tagSearchInput",e)}))}}),Gallery.Image.DataHandler.Location=Gallery.Image.DataHandler.Base.extend({_locationInput:null,_useCoordinates:null,_userLatitude:null,_userLongitude:null,init:function(){this._super();try{this._locationInput=new WCF.Location.GoogleMaps.LocationInput("mapContainer",void 0,"#geocode",WCF.Location.GoogleMaps.Settings.get("defaultLatitude"),WCF.Location.GoogleMaps.Settings.get("defaultLongitude"),"gallery\\data\\image\\ImageAction")}catch(e){return}WCF.Location.Util.getLocation($.proxy((function(e,t){void 0!==e&&void 0!==t&&(this._userLatitude=e,this._userLongitude=t)}),this));
1var e=$('<span class="icon icon16 fa-refresh pointer jsTooltip galleryOverwriteIcon" title="'+WCF.Language.get("gallery.image.button.overwrite")+'" />').click($.proxy(this._click,this));this._overwriteIcons.push(e),$("#mapContainer").parents(".section:eq(0)").children(".sectionTitle").append(e),this._useCoordinates=$("#useCoordinates").change($.proxy(this._change,this)),WCF.System.Event.addListener("com.woltlab.wcf.googleMaps","authenticationFailure",this._disable.bind(this))},_change:function(e){this._useCoordinates.prop("checked")?($(".jsCoordinatesField").show(),this._locationInput.getMap().refresh()):$(".jsCoordinatesField").hide()},_click:function(e){e.preventDefault(),this._needOverwriteConfirmation()?WCF.System.Confirmation.show(WCF.Language.get("gallery.image.coordinates.overwrite.confirmMessage"),$.proxy((function(e){"confirm"===e&&this._setCoordinates()}),this)):this._setCoordinates()},_disable:function(){$("#mapContainer").closest("section").remove(),this.getImageHandler().removeDataHandler("location")},_initLocation:function(e){if(0!=e.get("latitude")&&0!=e.get("longitude")&&!e.get("location")){var t=e.getImageID();WCF.Location.GoogleMaps.Util.reverseGeocoding($.proxy((function(e){if(e){var i=this.getImageHandler().getImage(t);i.set("__useCoordinates",!0),i.set("location",e)}}),this),null,e.get("latitude"),e.get("longitude"))}},_needOverwriteConfirmation:function(){var e,t=this.getImageHandler().getImages();for(e in t)if(this.getImageHandler().getActiveImage().getImageID()!=e&&0!=t[e].get("latitude")&&0!=t[e].get("longitude"))return!0;return!1},_overwriteData:function(){this._setCoordinates(!1)},_setCoordinates:function(e){var t,i,a,s,n,r;for(n in void 0===e&&(e=!0),t=WCF.Location.GoogleMaps.Util.getMarkerPosition(this._locationInput.getMarker()),i=this._useCoordinates.prop("checked"),a=this.getImageHandler().getImages(),s=$.trim($("#geocode").val()),a)this.getImageHandler().getActiveImage().getImageID()!=n&&((r=a[n]).set("latitude",t.latitude),r.set("location",s),r.set("longitude",t.longitude),r.set("__useCoordinates",i?1:0));e&&(new WCF.System.Notification).show()},readData:function(){this._data=WCF.Location.GoogleMaps.Util.getMarkerPosition(this._locationInput.getMarker()),this._data.location=$("#geocode").val(),this._data.__useCoordinates=this._useCoordinates.prop("checked")?1:0},setImageHandler:function(e){this._super(e),null!==this._locationInput?this._imageHandler.registerCallback("addImage",$.proxy(this._initLocation,this)):this._disable()},updateData:function(){var e=this.getImageHandler().getActiveImage().getData();this._data={latitude:e.latitude||0,location:e.location||"",longitude:e.longitude||0,__useCoordinates:void 0!==e.__useCoordinates?e.__useCoordinates:0!=e.latitude&&0!=e.longitude},0!=this._data.latitude&&0!=this._data.longitude?WCF.Location.GoogleMaps.Util.moveMarker(this._locationInput.getMarker(),this._data.latitude,this._data.longitude,!this._data.location):this._userLatitude&&this._userLongitude?WCF.Location.GoogleMaps.Util.moveMarker(this._locationInput.getMarker(),this._userLatitude,this._userLongitude,!0):WCF.Location.GoogleMaps.Util.moveMarker(this._locationInput.getMarker(),WCF.Location.GoogleMaps.Settings.get("defaultLatitude"),WCF.Location.GoogleMaps.Settings.get("defaultLongitude"),!0),WCF.Location.GoogleMaps.Util.focusMarker(this._locationInput.getMarker()),this._useCoordinates.prop("checked",!!this._data.__useCoordinates),$("#geocode").val(this._data.location),this._change()}}),Gallery.Image.DataHandler.VideoThumbnail=Gallery.Image.DataHandler.Base.extend({_container:null,_deleteButton:null,_thumbnail:null,_upload:null,init:function(){this._container=$("#galleryVideoThumbnailContainer"),this._thumbnail=$("#galleryVideoThumbnailPreview"),this._deleteButton=$("#galleryVideoThumbnailDeleteButton").click(this._deleteThumbnail.bind(this)),require(["WoltLabSuite/Gallery/Ui/Video/Thumbnail/Upload"],function(e){this._upload=new e(this)}.bind(this))},_deleteThumbnail:function(){WCF.System.Confirmation.show(WCF.Language.get("gallery.video.thumbnail.delete.confirmMessage"),$.proxy((function(e){"confirm"===e&&new WCF.Action.Proxy({autoSend:!0,data:{actionName:"deleteVideoThumbnail",className:"gallery\\data\\image\\ImageAction",objectIDs:[this.getImageHandler().getActiveImage().get("imageID")]},success:$.proxy(this._success,this)})}),this))},_success:function(e,t,i){var a=this.getImageHandler().getImage(~~e.returnValues.imageID);a.set("filename",""),a.set("filesize",0),a.set("url",""),a.set("tinyURL",""),this._thumbnail.attr("src",""),this._thumbnail.hide(),this._deleteButton.hide(),a.removeThumbn
1ail()},readData:function(){this._data.url=this._thumbnail.attr("src")},setInactive:function(){this._container.hide()},updateData:function(){var e=this.getImageHandler().getActiveImage().getData();e.filename?(this._thumbnail.attr("src",e.url),this._thumbnail.show(),this._deleteButton.show()):(this._thumbnail.hide(),this._deleteButton.hide()),this._container.show()},updateAfterUpload:function(){this._thumbnail.show(),this._deleteButton.show()}}),Gallery.Image.PendingImageHandler=Class.extend({_imageHandler:null,init:function(e){this._imageHandler=e,$("#loadPendingImages").click($.proxy(this._loadImages,this)),$("#deletePendingImages").click($.proxy(this._deleteImages,this))},_deleteImages:function(){WCF.System.Confirmation.show(WCF.Language.get("gallery.image.pendingImages.delete.confirmMessage"),$.proxy((function(e){"confirm"===e&&($("#loadPendingImages").off("click"),$("#deletePendingImages").off("click"),new WCF.Action.Proxy({autoSend:!0,data:{actionName:"deletePendingImages",className:"gallery\\data\\image\\ImageAction",parameters:{tmpHash:this._imageHandler.getOption("tmpHash")}},success:$.proxy(this._success,this)}))}),this))},_loadImages:function(){$("#loadPendingImages").off("click"),$("#deletePendingImages").off("click"),new WCF.Action.Proxy({autoSend:!0,data:{actionName:"loadPendingImages",className:"gallery\\data\\image\\ImageAction",parameters:{tmpHash:this._imageHandler.getOption("tmpHash")}},success:$.proxy(this._success,this)})},_success:function(e,t,i){switch(e.actionName){case"deletePendingImages":this._imageHandler.updateRestrictions(e.returnValues.restrictions),this._imageHandler.setUserImageCount(e.returnValues.userImageCount),null!==e.returnValues.userUploadedVideoCount&&this._imageHandler.setUserUploadedVideoCount(e.returnValues.userUploadedVideoCount),null!==e.returnValues.userVideoLinkCount&&this._imageHandler.setUserVideoLinkCount(e.returnValues.userVideoLinkCount);break;case"loadPendingImages":if(e.returnValues){for(var a in e.returnValues)this._imageHandler.addImage(a,new Gallery.Image.Handler.Image(a,e.returnValues[a],null,!0));this._imageHandler.getActiveImage()||this._imageHandler.setFirstImageActive()}}(new WCF.System.Notification).show(),$("#pendingImageContainer").remove()}}),Gallery.Image.ThumbnailAreaSelector=Class.extend({_button:null,_imageDimensions:{},_imageDiv:null,_imageHandler:null,_selection:null,init:function(e){this._imageHandler=e,this._overlay=$("#galleryThumbnailAreaSelectorOverlay"),this._overlay.length||(this._overlay=$('<div id="galleryThumbnailAreaSelectorOverlay" class="dialogOverlay" />').css({height:"100%",zIndex:~~$("#pageHeaderContainer").css("z-index")-2}).appendTo(document.body),this._overlay.attr("aria-hidden","true")),this._imageDiv=$("<div />").css({overflow:"hidden",position:"absolute",zIndex:1+~~this._overlay.css("z-index")}).hide().appendTo(document.body),this._selection=$('<div id="galleryImageThumbnailAreaSelector" />').appendTo(this._imageDiv).resizable({aspectRatio:!0,containment:"parent",handles:"n, e, s, w, ne, se, sw, nw",resize:$.proxy(this._updateSelection,this)}).draggable({containment:"parent",drag:$.proxy(this._updateSelection,this)}),this._selection.append($('<div class="galleryImageThumbnailArea" />')),$(window).resize($.proxy(this._resize,this)),this._button=$("#selectThumbnailAreaButton").click($.proxy(this._click,this))},_cancelSelection:function(){var e,t,i,a;require(["WoltLabSuite/Core/Ui/Page/Action"],function(e){e.hide("galleryImageThumbnailAreaChoose"),e.hide("galleryImageThumbnailAreaCancel")}.bind(this)),this._overlay.attr("aria-hidden","true"),this._imageDiv.hide(),(e=this._imageHandler.getActiveImage()).get("thumbnailWidth")&&(t=$("#image"),i=Math.ceil(e.get("thumbnailX")/e.get("width")*t.width()),a=Math.ceil(e.get("thumbnailY")/e.get("height")*t.height()),this._selection.css({"background-position":"-"+i+"px -"+a+"px",height:Math.ceil(e.get("thumbnailHeight")*t.height()/e.get("height")),left:i,top:a,width:Math.ceil(e.get("thumbnailWidth")*t.width()/e.get("width"))}),this._selection.draggable("option","disabled",!0).resizable("option","disabled",!0).addClass("disabled"))},_click:function(e){var t,i;if(this.refresh(null,!0),t=this._imageHandler.getImageNode(),(i=this._imageHandler.getActiveImage()).get("width")>1200&&i.get("height")>900)this._selection.resizable("option","minHeight",Math.floor(t.height()/i.get("height")*Math.min(i.get("height"),900))),this._selection.resizable("option","minWidth",Math.floor(t.width()/i.get("width")*Math.min(i.get("width"),12
100)));else if(i.get("width")>560&&i.get("height")>420)this._selection.resizable("option","minHeight",Math.floor(t.height()/i.get("height")*Math.min(i.get("height"),420))),this._selection.resizable("option","minWidth",Math.floor(t.width()/i.get("width")*Math.min(i.get("width"),560)));else{if(!(i.get("width")>280&&i.get("height")>210))return;this._selection.resizable("option","minHeight",Math.floor(t.height()/i.get("height")*Math.min(i.get("height"),210))),this._selection.resizable("option","minWidth",Math.floor(t.width()/i.get("width")*Math.min(i.get("width"),280)))}require(["Language","WoltLabSuite/Core/Ui/Page/Action"],function(e,t){t.has("galleryImageThumbnailAreaChoose")?(t.show("galleryImageThumbnailAreaChoose"),t.show("galleryImageThumbnailAreaCancel")):this._createPageActions(e,t)}.bind(this)),this._overlay.attr("aria-hidden","false"),this._imageDiv.show(),this._selection.draggable("option","disabled",!1).resizable("option","disabled",!1).removeClass("disabled"),this._imageDiv.css("z-index",1+~~this._overlay.css("z-index"))},_createPageActions:function(e,t){var i=elCreate("a");i.textContent=e.get("wcf.global.button.cancel"),i.addEventListener("click",this._cancelSelection.bind(this)),t.add("galleryImageThumbnailAreaCancel",i),(i=elCreate("a")).textContent=e.get("gallery.image.thumbnail.chooseSelection"),i.addEventListener("click",this._saveArea.bind(this)),t.add("galleryImageThumbnailAreaChoose",i)},_resize:function(){var e,t,i,a=this._imageHandler.getImageNode(),s=a.getDimensions();this._selection.is(":visible")&&(e=s.height/this._imageDimensions.height,t=s.width/this._imageDimensions.width,this._selection.height(this._selection.height()*e),this._selection.width(this._selection.width()*t),this._imageDiv.height(this._imageDiv.height()*e),this._imageDiv.width(this._imageDiv.width()*t),i=a.offset(),this._imageDiv.css({left:i.left,top:i.top}),this._selection.css("background-size",s.width+"px "+s.height+"px")),this._imageDimensions=s},_saveArea:function(){var e=this._imageHandler.getActiveImage(),t=this._imageHandler.getImageNode(),i=this._selection.position();e.set("__selectionOutherHeight",this._selection.outerHeight()),e.set("__selectionOutherWidth",this._selection.outerWidth()),e.set("__selectionLeft",i.left),e.set("__selectionTop",i.top),e.set("thumbnailHeight",Math.ceil(this._selection.outerHeight()/t.height()*e.get("height"))),e.set("thumbnailWidth",Math.ceil(this._selection.outerWidth()/t.width()*e.get("width"))),e.set("thumbnailX",Math.ceil(i.left*e.get("width")/t.width())),e.set("thumbnailY",Math.ceil(i.top*e.get("height")/t.height())),e.get("thumbnailWidth")+e.get("thumbnailX")>e.get("width")&&e.set("thumbnailWidth",e.get("width")-e.get("thumbnailX")),e.get("thumbnailHeight")+e.get("thumbnailY")>e.get("height")&&e.set("thumbnailHeight",e.get("height")-e.get("thumbnailY")),require(["WoltLabSuite/Core/Ui/Page/Action"],function(e){e.hide("galleryImageThumbnailAreaChoose"),e.hide("galleryImageThumbnailAreaCancel")}.bind(this)),this._overlay.attr("aria-hidden","true"),this._imageDiv.hide(),this._imageDiv.css("z-index",0)},_updateSelection:function(e,t){this._selection.css({"background-position":"-"+t.position.left+"px -"+t.position.top+"px"})},refresh:function(e,t){var i,a,s,n,r,o=this._imageHandler.getImageNode(),l=this._imageHandler.getActiveImage();if(l.get("width")<=280&&l.get("height")<=210)return this._selection.hide(),void this._button.hide();this._button.show(),i=o.offset(),this._imageDiv.css({height:o.height(),left:i.left,top:i.top,width:o.width()}),(l.get("thumbnailWidth")||t)&&(a=this._imageDiv.height(),s=this._imageDiv.width(),n=0,r=0,l.get("thumbnailWidth")?l.get("__selectionOutherWidth")?(a=l.get("__selectionOutherHeight"),s=l.get("__selectionOutherWidth"),n=l.get("__selectionLeft"),r=l.get("__selectionTop")):(a=Math.ceil(l.get("thumbnailHeight")*o.height()/l.get("height")),s=Math.ceil(l.get("thumbnailWidth")*o.width()/l.get("width")),n=Math.ceil(l.get("thumbnailX")/l.get("width")*o.width()),r=Math.ceil(l.get("thumbnailY")/l.get("height")*o.height())):a/s<3/4?(s=parseInt(4*a/3),n=parseInt((this._imageDiv.width()-s)/2)):(a=parseInt(3*s/4),r=parseInt((this._imageDiv.height()-a)/2)),this._selection.css({"background-image":"url("+o.attr("src")+")","background-position":"-"+n+"px -"+r+"px","background-size":this._imageDiv.width()+"px "+this._imageDiv.height()+"px",height:a,left:n,top:r,width:s}),this._selection.parent().css({"background-color":"rgba(0, 0, 0, 0.5)"})),this._imageDimensions=o.getDimensions()}}),Gallery.Image.Marker={},Gallery.Image.Marker.Editor=Gallery.Image.DataHandler.Base.extend({_disableAdding:!1,_dialog:null,_markers:[],_markerHeight:0,_markerWidth:0,init:function(){$("#image > img").click($.proxy(this._addMarker,this)).droppable({accept:".galleryImageMarker",drop:$.proxy(this._updateMarkerPosition,this),over:function(e,t){t.helper.switchClass("fa-trash","fa-map-marker")},out:function(e,t){t.helper.switchClass("fa-map-marker","fa-tras
1h")},tolerance:"pointer"}),this._proxy=new WCF.Action.Proxy({success:$.proxy(this._success,this),autoAbortPrevious:!0}),$(window).resize($.proxy(this._refreshMarkerPositions,this)),WCF.System.Event.addListener("com.woltlab.gallery.ImageHandler","didRotateImage",$.proxy(this._rotateMarkers,this))},_addMarker:function(e){var t,i;this._disableAdding||(this._disableAdding=!0,this.getImageHandler().getImageNode().position(),t=this._convertClickPositionToDisplayPosition({left:e.offsetX,top:e.offsetY}),i=this._createMarker(t.left,t.top),new WCF.PeriodicalExecuter($.proxy((function(e){this._showDialog(null,i),e.stop()}),this),250))},_addMarkerByData:function(e){this.getImageHandler().getActiveImage();var t,i,a,s=this.getImageHandler().getImageNode();s.width()?(s.off("load",$.proxy(this._addMarkerByData,this,e)),t=this._convertSavePositionToDisplayPosition({left:e.positionX,top:e.positionY}),this._createMarker(t.left,t.top,e),i={left:100,top:100},a=this._convertSavePositionToDisplayPosition(i),this._convertDisplayPositionToSavePosition(a),this.getImageHandler().getActiveImage(),this.getImageHandler().getImageNode()):s.on("load",$.proxy(this._addMarkerByData,this,e))},_changeMarkerType:function(e){"user"==$(e.currentTarget).val()?($("#galleryImageMarkerUser").show(),$("#galleryImageMarkerText").hide()):($("#galleryImageMarkerUser").hide(),$("#galleryImageMarkerText").show()),this._dialog.wcfDialog("render")},_convertClickPositionToDisplayPosition:function(e){this.getImageHandler().getActiveImage();var t=this.getImageHandler().getImageNode();return{left:~~(e.left+t.position().left-this._getMarkerWidth()/2),top:e.top-this._getMarkerHeight()}},_convertDisplayPositionToSavePosition:function(e){var t=this.getImageHandler().getActiveImage(),i=this.getImageHandler().getImageNode(),a=t.get("height")/i.height(),s=t.get("width")/i.width();return{left:~~((e.left-i.position().left+this._getMarkerWidth()/2)*s),top:~~((e.top+this._getMarkerHeight())*a)}},_convertSavePositionToDisplayPosition:function(e){var t=this.getImageHandler().getActiveImage(),i=this.getImageHandler().getImageNode(),a=i.height()/t.get("height"),s=i.width()/t.get("width");return{left:~~(e.left*s+i.position().left-this._getMarkerWidth()/2),top:~~(e.top*a-this._getMarkerHeight())}},_createDialog:function(){this._dialog=$("<div />").appendTo(document.body),this._dialog.append('<section class="section"><h2 class="sectionTitle">'+WCF.Language.get("gallery.image.marker.type")+'</h2><dl class="wide"><dt></dt><dd class="floated"><label><input type="radio" name="markerType" value="user" /> '+WCF.Language.get("gallery.image.marker.type.user")+'</label><label><input type="radio" name="markerType" value="text" /> '+WCF.Language.get("gallery.image.marker.type.text")+'</label></dd></dl></section><section class="section" id="galleryImageMarkerUser" style="display: none"><header class="sectionHeader"><h2 class="sectionTitle">'+WCF.Language.get("gallery.image.marker.user")+'</h2><p class="sectionDescription">'+WCF.Language.get("gallery.image.marker.user.description")+'</p></header><dl class="wide"><dt></dt><dd><input type="text" name="markerUser" class="long" /></dd></dl></section><section class="section" id="galleryImageMarkerText" style="display: none"><header class="sectionHeader"><h2 class="sectionTitle">'+WCF.Language.get("gallery.image.marker.text")+'</h2><p class="sectionDescription">'+WCF.Language.get("gallery.image.marker.text.description")+'</p></header><dl class="wide"><dt></dt><dd><textarea name="markerDescription" cols="40" rows="4"></textarea></dd></dl></section><div class="formSubmit"><button class="buttonPrimary" data-type="save">'+WCF.Language.get("wcf.global.button.save")+'</button><button data-type="delete">'+WCF.Language.get("wcf.global.button.delete")+"</button></div>"),this._dialog.find('input[name="markerType"]').change($.proxy(this._changeMarkerType,this)),this._dialog.find('button[data-type="delete"]').click($.proxy(this._deleteMarker,this)),this._dialog.find('button[data-type="save"]').click($.proxy(this._saveMarker,this)),new WCF.Search.User('#galleryImageMarkerUser input[name="markerUser"]',null,!1)},_createMarker:function(e,t,i){var a,s=$('<span class="galleryImageMarker pointer icon icon32 fa-map-marker" />').hide().appendTo(this.getImageHandler().getImageNode().parent());return i&&s.data(i),s.css({left:e,position:"absolute",top:t}).draggable({cursorAt:{left:parseInt(this._getMarkerWidth()/2)+1,top:s.height()},start:$.proxy(this._dragStart,this),stack:".galleryImageMarker",stop:$.proxy(this._dragStop,this)}),s.on("mouseup",$.proxy(this._showDialog,this)),s.show(),a=this._convertDisplayPositionToSavePosition({left:e,top:t}),s.data({imageID:this._imageHandler.getActiveImage().getImageID(),id:s.wcfIdentify(),positionX:a.left,positionY:a.top}),this._markers.push(s),s},_deleteMarker:function(){this._dialog.wcfDialog("close"),WCF.System.Confirmation.show(WCF.Language.get("gallery.image.marker.delete.confirmMessage"),$.proxy((function(e){"confirm"===e?this._removeMarker():this._dialog.wcfDialog("open")}),this))},_dragStart:function(e,t){t.helper.data("dragStartPosition",t.helper.position())},_dragStop:function(e,t){t.helper.hasClass("fa-trash")&&(t.helper.removeClass("fa-trash").addClass("fa-spinner"),WCF.System.Confirmation.show(WCF.Language.get("gallery.image.marker.delete.confirmMessage"),$.proxy((function(e){if("confirm"===e)this._removeMarker(t.helper);else{var i=t.helper.data("dragStartPosition");t.helper.css({left:i.left,top:i.top}).removeClass("fa-spinner").addClass("fa-trash")}}),this)))},_getMarkerHeight:function(){return this._markerHeight||this._setMarkerDimensions(),this._markerHeight},_getMarkerWidth:function(){return this._markerWidth||this._setMarkerDimensions(),this._markerWidth},_removeMarker:function(e){var t,i,a,s,n=null;for(n=e?e.wcfIdentify():this._dialog.data("id"),t=0,i=0,a=this._markers.length;i<a;i++)if((s=this._markers[i]).data("id")==n){t=i,e||(e=s,this._dialog.wcfDialog("close"));break}e.wcfFadeOut((function(){$(this).remove()})),this._markers.splice(t,1)},_refreshMarkerPositions:function(){var e,t,i=this.getImageHandler().getImageNode();if(i.width()){if(i.off("load",$.proxy(this._refreshMarkerPositions,this)),this._imageHandler.getActiveImage().get("markers")||[],this._markers.length)for(e=0;e<this._markers.length;e++)(t=this._markers[e]).css(this._convertSavePositionToDisplayPosition({left:t.data("positionX"),top:t.data("positionY")}))}else i.on("load",$.proxy(this._refreshMarkerPositions,this))},_rotateMarkers:function(e){var t,i,a,s,n,r=this.getMarkers();for(t in r){switch(r[t],a=i=r[t].data("positionX"),n=s=r[t].data("positionY"),e.angle){case 90:a=e.width*e.scaleFactor-s,n=i;break;
1case 180:a=e.width*e.scaleFactor-i,n=e.height*e.scaleFactor-s;break;case 270:a=s,n=e.height*e.scaleFactor-i}r[t].data("positionX",parseInt(a)),r[t].data("positionY",parseInt(n))}this._markers=r,this._refreshMarkerPositions()},_saveMarker:function(e,t){var i,a,s,n,r=this._dialog.find('input[name="markerType"]:checked').val(),o=this._dialog.find('input[name="markerUser"]').val(),l=this._dialog.find('textarea[name="markerDescription"]').val();if(this._validateData(r,o,t,l)){for(i=null,a=0,s=this._markers.length;a<s;a++)if((n=this._markers[a]).wcfIdentify()==this._dialog.data("id")){i=n;break}i.data({description:"text"==r?l:"",type:r,userID:"user"==r?t:null,username:"user"==r?o:null}),this._dialog.wcfDialog("close")}},_setMarkerDimensions:function(){var e=$('<span class="galleryImageMarker pointer icon icon32 fa-map-marker" />').appendTo(this.getImageHandler().getImageNode().parent());this._markerHeight=e.outerHeight(),this._markerWidth=e.outerWidth(),e.remove()},_showDialog:function(e,t){var i=null;i=t||$(e.currentTarget),e&&i.hasClass("ui-draggable-dragging")||(this._dialog||this._createDialog(),this._dialog.data("id",i.wcfIdentify()),i.data("type")?(this._dialog.find('input[name="markerType"][value="'+i.data("type")+'"]').prop("checked",!0),this._dialog.find('input[name="markerUser"]').val(i.data("username")),this._dialog.find('textarea[name="markerDescription"]').val(i.data("description")),"user"==i.data("type")?($("#galleryImageMarkerUser").show(),$("#galleryImageMarkerText").hide()):($("#galleryImageMarkerUser").hide(),$("#galleryImageMarkerText").show()),this._dialog.find(".
1innerError").hide(),this._dialog.wcfDialog({title:WCF.Language.get("gallery.image.marker.edit")})):(this._dialog.find('input[name="markerType"]').prop("checked",!1),this._dialog.find('input[name="markerUser"],textarea[name="markerDescription"]').val(""),$("#galleryImageMarkerUser, #galleryImageMarkerText").hide(),this._dialog.wcfDialog({closable:!1,title:WCF.Language.get("gallery.image.marker.add")}),this._disableAdding=!1))},_success:function(e,t,i){var a,s=this._dialog.find('input[name="markerUser"]').val();if($.getLength(e.returnValues))for(a in e.returnValues)if(e.returnValues[a].label===s)return void this._saveMarker(null,e.returnValues[a].objectID);this._saveMarker(null,!1)},_updateMarkerPosition:function(e,t){var i=t.draggable,a=this._convertDisplayPositionToSavePosition(i.position());i.data({positionX:a.left,positionY:a.top})},_validateData:function(e,t,i,a){var s,n=!0;if("user"!=e&&"text"!=e?(n=!1,(s=this._dialog.find('input[name="markerType"]').parent().next(".innerError")).length||(s=$('<small class="innerError" />').text(WCF.Language.get("wcf.global.form.error.empty")),this._dialog.find('input[name="markerType"]').parent().parent().append(s)),s.show()):this._dialog.find('input[name="markerType"]').parent().next(".innerError").hide(),"user"==e)if(t){if(void 0===i)return this._proxy.setOption("data",{actionName:"getSearchResultList",className:"wcf\\data\\user\\UserAction",parameters:{data:{includeUserGroups:!1,searchString:t}}}),void this._proxy.sendRequest();!1===i&&(n=!1,(s=this._dialog.find('input[name="markerUser"]').next(".innerError")).length||(s=$('<small class="innerError" />').text(WCF.Language.get("wcf.user.username.error.notFound",{username:t})),this._dialog.find('input[name="markerUser"]').parent().append(s)),s.text(WCF.Language.get("wcf.user.username.error.notFound",{username:t})).show())}else n=!1,(s=this._dialog.find('input[name="markerUser"]').next(".innerError")).length||(s=$('<small class="innerError" />').text(WCF.Language.get("wcf.global.form.error.empty")),this._dialog.find('input[name="markerUser"]').parent().append(s)),s.text(WCF.Language.get("wcf.global.form.error.empty")).show();else this._dialog.find('input[name="markerUser"]').next(".innerError").hide();return"text"!=e||a?this._dialog.find('textarea[name="markerDescription"]').next(".innerError").hide():(n=!1,(s=this._dialog.find('textarea[name="markerDescription"]').next(".innerError")).length||(s=$('<small class="innerError" />').text(WCF.Language.get("wcf.global.form.error.empty")),this._dialog.find('textarea[name="markerDescription"]').parent().append(s)),s.show()),n},getData:function(){return{markers:this.getMarkersData(this.getMarkers())}},getMarkers:function(){return this._markers},getMarkersData:function(e){var t,i,a,s,n=[];for(t=0,i=e.length;t<i;t++)s={description:(a=e[t]).data("description")||"",id:a.wcfIdentify(),imageID:a.data("imageID"),positionX:a.data("positionX"),positionY:a.data("positionY")},a.data("markerID")&&(s.markerID=a.data("markerID")),a.data("userID")&&(s.userID=a.data("userID"),s.username=a.data("username")),n.push(s);return n},setMarkers:function(e){this.getImageHandler().getImageNode().parent().find(".galleryImageMarker").hide(),this._markers=[];for(var t=0,i=e.length;t<i;t++)e[t].id?this._markers.push($("#"+e[t].id).show()):this._addMarkerByData(e[t]);this._refreshMarkerPositions()},updateData:function(){this.setMarkers(this.getImageHandler().getActiveImage().get("markers")||[])}}),Gallery.Image.Marker.Handler=Class.extend({_image:null,_imageContainer:null,_imageHeight:0,_imageWidth:0,_markers:[],init:function(e,t,i){this._markers=e,this._imageWidth=t,this._imageHeight=i,this._imageContainer=$(".galleryImage"),this._image=this._imageContainer.find("> a > img").eq(0),this._image.width()?this._addMarkers():this._image.on("load",$.proxy(this._addMarkers,this)),$(window).resize($.proxy(this.refreshMarkerPositions,this)),$.browser.touch?$(".galleryImageMarker").click($.proxy(this._showDialog.bind(this))):$(".jsGalleryImageMarkedUser").hover($.proxy(this._highlightMarkedUser,this))},_addMarkers:function(){var e,t,i;for(this._image.off("load",$.proxy(this._addMarkers,this)),e=0,t=this._markers.length;e<t;e++)(i=this._markers[e]).userID?this._addUserMarker(i):this._addTextMarker(i)},_addTextMarker:function(e){var t=$('<span class="galleryImageMarker galleryImageTextMarker" />').data(e);this._imageContainer.append(t),this._setMarkerPosition(t)},_addUserMarker:function(e){var t=$('<span class="galleryImageMarker galleryImageUserMar
1ker userLink" />').data(e);t.attr("data-user-id",e["user-id"]),this._imageContainer.append(t),this._setMarkerPosition(t)},_highlightMarkedUser:function(e){var t=$(e.currentTarget).data("userID");this._imageContainer.children(".galleryImageMarker").each((function(e,i){var a=$(i);a.data("userID")==t&&a.toggleClass("jsMarked")}))},_setMarkerPosition:function(e){e.css({left:parseInt(this._image.position().left+e.data("positionX")*this._image.width()/this._imageWidth-e.outerWidth()/2),top:parseInt(e.data("positionY")*this._image.height()/this._imageHeight-e.outerHeight()/2)})},_showDialog:function(e){var t=$(e.currentTarget);t.hasClass("galleryImageUserMarker")?require(["Ajax","Language","Ui/Dialog"],(function(e,i,a){var s="imageMarker"+t.data("markerID");a.getDialog(s)?a.openStatic(s):e.apiOnce({data:{actionName:"getUserProfile",className:"wcf\\data\\user\\UserProfileAction",objectIDs:[t.data("userID")]},success:function(e){a.openStatic(s,e.returnValues.template,{title:i.get("gallery.image.marker")})}})})):require(["Language","Ui/Dialog"],(function(e,i){i.openStatic("imageMarker"+t.data("markerID"),t.data("description"),{title:e.get("gallery.image.marker")})}))},refreshMarkerPositions:function(){this._imageContainer.children(".galleryImageMarker").each($.proxy((function(e,t){this._setMarkerPosition($(t))}),this))}}),Gallery.Image.Marker.TextPopover=WCF.Popover.extend({init:function(){this._super(".galleryImageTextMarker")}
1,_loadContent:function(){var e=$("#"+this._activeElementID);this._insertContent(this._activeElementID,e.data("description"),!0)}}),Gallery.Map={},Gallery.Map.LargeMap=WCF.Location.GoogleMaps.LargeMap.extend({init:function(e,t,i,a,s){t||(t={}),t.stringifyExcludedObjectIds=!0,this._super(e,t,i,a,s)},_success:function(e,t,i){var a,s,n;if(e.returnValues&&e.returnValues.markers)for(a=0,s=e.returnValues.markers.length;a<s;a++)n=e.returnValues.markers[a],this.addMarker(n.latitude,n.longitude,n.title,null,n.infoWindow,n.dialog,n.location,n.items),n.objectID?this._objectIDs.push(n.objectID):n.objectIDs&&(this._objectIDs=this._objectIDs.concat(n.objectIDs))},addMarker:function(e,t,i,a,s,n,r,o){var l=$(s).get(0),g=this._super(e,t,i,a,l);return n&&google.maps.event.addListener(g.infoWindow,"domready",$.proxy((function(){new Gallery.Map.InfoWindowImageListDialog($(l).find(".jsGalleryLocationDialogImageListButton"),n,r)}),this)),o&&(o>=100?g.setLabel("+"):g.setLabel(o.toString())),g.infoWindow}}),Gallery.Map.InfoWindowImageListDialog=Class.extend({_dialog:null,_dialogContent:"",_imageData:[],init:function(e,t,i){this._dialogContent=t,this._location=i,e.click($.proxy(this._click,this))},_click:function(){null===this._dialog?this._dialog=$("<div />").append(this._dialogContent).hide().appendTo(document.body).wcfDialog({title:WCF.Language.get(this._location)}):this._dialog.wcfDialog("open")}});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.