ips.templates.set('gallery.notes.wrapper'," <div class='cGalleryNote' data-controller='gallery.front.view.note' data-noteID='{{id}}' data-note=\"{{note}}\" {{#editable}}data-editable{{/editable}} data-posLeft='{{left}}' data-posTop='{{top}}' data-dimWidth='{{width}}' data-dimHeight='{{height}}'> <div class='cGalleryNote_border'></div> <div class='cGalleryNote_note' style='display: none'>  {{note}} </div></div>");ips.templates.set('gallery.notes.delete',"  <a href='#' data-action='delete' class='cGalleryNote_delete' data-ipsTooltip title='{{#lang}}delete_note{{/lang}}'>&times;</a>");ips.templates.set('gallery.notes.edit',"  <textarea>{{note}}</textarea> <ul class='ipsList_inline'>  <li><button data-action='save' class='ipsButton ipsButton_light ipsButton_verySmall'>{{#lang}}save_note{{/lang}}</button></li>  <li><a href='#' data-action='cancel'>{{#lang}}cancel_note{{/lang}}</a></li> </ul>");;
;(function($,_,undefined){"use strict";ips.controller.register('gallery.front.view.image',{_sizeBuffer:80,_ajaxObj:null,_scrolling:false,_rtl:false,initialize:function(){this.on('click','[data-action="setAsCover"]',this.setAsCover);this.on('click','[data-action="setAsProfile"]',this.setAsProfile);this.on('click','[data-action="nextImage"]',this.nextImage);this.on('click','[data-action="prevImage"]',this.prevImage);this.on('click','[data-role="collection"] [data-imageID]',this.clickImage);this.on(document,'keydown',this.keyDown);this.on(window,'resize',this.windowResize);this.on('click','[data-action="next"]:not( [data-disabled] )',this.nextCollection);this.on('click','[data-action="prev"]:not( [data-disabled] )',this.prevCollection);History.Adapter.bind(window,'statechange',_.bind(this.stateChange,this));this.setup();},setup:function(){if($('html').attr('dir')=='rtl'){this._rtl=true;}
this._setUpSizing();this._setUpLightboxEvents();},_setUpLightboxEvents:function(){var self=this;$(document).on('lightboxImageShown',function(){if(self.scope.find('[data-action="prevImage"]').length)
{$(document).trigger('lightboxEnable_prev');}
else
{$(document).trigger('lightboxDisable_prev');}
if(self.scope.find('[data-action="nextImage"]').length)
{$(document).trigger('lightboxEnable_next');}
else
{$(document).trigger('lightboxDisable_next');}});$(document).on('lightboxNextImage',function(){self.scope.find('[data-action="nextImage"]').click();});$(document).on('lightboxPrevImage',function(){self.scope.find('[data-action="prevImage"]').click();});},stateChange:function(){var state=History.getState();if(state.data.controller!='gallery.front.view.image'){return;}
ips.utils.analytics.trackPageView(state.url);this._scrollPage();this._loadURL(state.url);this._scrollToImage(state.data.imageID);},_scrollPage:function(){if(this._scrolling){return;}
var self=this;var elemPosition=ips.utils.position.getElemPosition(this.scope);var viewportHeight=$(window).height();var docScrollTop=$(document).scrollTop();Debug.log(elemPosition.absPos.top);Debug.log("Top: "+(elemPosition.absPos.top-docScrollTop));Debug.log("Bottom: "+(viewportHeight+docScrollTop));if((elemPosition.absPos.top-docScrollTop<0)||elemPosition.absPos.top>viewportHeight+docScrollTop){this._scrolling=true;$('html, body').animate({scrollTop:elemPosition.absPos.top+'px'},function(){self._scrolling=false;});}},keyDown:function(e){if($(e.target).closest('input, textarea, .ipsComposeArea, .ipsComposeArea_editor').length){return;}
switch(e.keyCode){case ips.ui.key.LEFT:this.scope.find('[data-action="prevImage"]').click();break;case ips.ui.key.RIGHT:this.scope.find('[data-action="nextImage"]').click();break;}},clickImage:function(e){e.preventDefault();var link=$(e.currentTarget).find('a');var url=link.attr('href');var id=$(e.currentTarget).attr('data-imageID');var title=link.attr('title');History.pushState({controller:'gallery.front.view.image',imageID:id},title,url);},_scrollToImage:function(imageID){var self=this;var collection=this.scope.find('[data-role="collection"]');var collectionItems=collection.find('li');var toLoad=0;var newItems=[];var item=collectionItems.filter('[data-imageID="'+imageID+'"]');if(!item.length){Debug.error("Couldn't find the image in the slider");return;}
var currentlyActive=collection.find('.cGalleryAlbumSlider_active');var index=collectionItems.index(item.get(0));var toLoadPrev=0;var toLoadNext=0;var newPrevItems=[];var newNextItems=[];var newPrevID=0;var newNextID=0;if(index<3){newPrevItems=this._addPlaceholders('start',3-index);collectionItems=collection.find('li');collection.css({left:((collection.position().left+(newPrevItems.length*50))*-1)+'px'});for(var i=index;i>=0;i--){var id=$(collectionItems[i]).attr('data-imageID');if(!_.isUndefined(id)){newPrevID=id;}else{break;}}
if(newPrevID){this._loadAndReplace(newPrevID,'prev',newPrevItems.length,newPrevItems).done(function(response){self._updateNavButton('prev',response.moreResults);});}}
if(collectionItems.length<(index+4)){newNextItems=this._addPlaceholders('end',(index+4)-collectionItems.length);collectionItems=collection.find('li');for(var i=index;i<collectionItems.length;i++){var id=$(collectionItems[i]).attr('data-imageID');if(!_.isUndefined(id)){newNextID=id;}else{break;}}
if(newNextID){this._loadAndReplace(newNextID,'next',10,newNextItems).done(function(response){self._updateNavButton('next',response.moreResults);});}}
var newLeftPos=item.position().left;var leftPos=parseInt(collection.css('left'))*-1;var leftIdx=((leftPos)/ 50);var middleLI=collectionItems.slice(leftIdx+3,leftIdx+4);var middleLeftPos=middleLI.position().left;var difference=newLeftPos-middleLeftPos;collection.animate({left:"-="+difference+'px'});collectionItems.removeClass('cGalleryAlbumSlider_active');item.addClass('cGalleryAlbumSlider_active');},prevCollection:function(e){e.preventDefault();var self=this;var collection=this.scope.find('[data-role="collection"]');var collectionItems=collection.find('li');var toLoad=0;var newItems=[];if(this._rtl){var edgePos=parseInt(collection.css('right'))*-1;}else{var edgePos=parseInt(collection.css('left'))*-1;}
var leftIdx=((edgePos)/ 50);var leftMostLI=collectionItems.slice(leftIdx,leftIdx+1);var leftMostID=leftMostLI.attr('data-imageID');if(leftIdx<6){toLoad=6-leftIdx;}
var newEdgePos=edgePos*-1;if(toLoad>0){newItems=this._addPlaceholders('start',toLoad);newEdgePos=(edgePos+(newItems.length*50))*-1;if(this._rtl){collection.css({right:newEdgePos+'px'});}else{collection.css({left:newEdgePos+'px'});}}
if(this._rtl){collection.animate({right:(newEdgePos+300)+'px'});}else{collection.animate({left:(newEdgePos+300)+'px'});}
if(toLoad>0){this._loadAndReplace(leftMostID,'prev',6,newItems).done(function(response){self._updateNavButton('prev',response.moreResults);self._updateNavButton('next',true);});}else{self._updateNavButton('next',true);}},nextCollection:function(e){e.preventDefault();var self=this;var collection=this.scope.find('[data-role="collection"]');var collectionItems=collection.find('li');var toLoad=0;var newItems=[];if(this._rtl){var edgePos=parseInt(collection.css('right'))*1;}else{var edgePos=parseInt(collection.css('left'))*1;}
var edgeIdx=((350-edgePos)/ 50)-1;var rightMostLI=collectionItems.slice(edgeIdx,edgeIdx+1);var rightMostID=rightMostLI.attr('data-imageID');var rightPos=rightMostLI.position();if(collectionItems.length<(edgeIdx+6)){toLoad=(collectionItems.length+5)-edgeIdx;}
if(toLoad>0){newItems=this._addPlaceholders('end',toLoad);}
if(this._rtl){collection.animate({right:(parseInt(collection.css('right'))-300)+'px'});}else{collection.animate({left:(rightPos.left*-1)+'px'});}
if(toLoad>0){this._loadAndReplace(rightMostID,'next',6,newItems).done(function(response){self._updateNavButton('next',response.moreResults);self._updateNavButton('prev',true);});}else{self._updateNavButton('prev',true);}},_addPlaceholders:function(location,count){var collection=this.scope.find('[data-role="collection"]');var newItems=[];for(var i=0;i<count;i++){var item=$('<li/>').addClass('cGalleryTrimmedImage ipsAreaBackground ipsLoading_tiny');newItems.push(item);if(location=='end'){collection.append(item);}else{collection.prepend(item);}}
return newItems;},_updateNavButton:function(direction,moreResults){var elem=this.scope.find('[data-role="collectionNav"] [data-action="'+direction+'"]');if(moreResults){elem.removeAttr('data-disabled');}else{elem.attr('data-disabled',true);}},_loadAndReplace:function(fromID,direction,count,itemsArray){var deferred=$.Deferred();this.scope.find('[data-role="collectionNav"] [data-action]').attr('data-disabled',true);ips.getAjax()(ips.getSetting('baseURL')+'index.php?app=gallery&module=gallery&controller=browse&do=getImages&image='+fromID+'&direction='+direction+'&count='+(count+1)).done(function(response){for(var i=0;i<itemsArray.length;i++){if(response[i]){itemsArray[i].replaceWith(response[i]);}}
deferred.resolve({moreResults:!(response.length<=count)});});return deferred.promise();},nextImage:function(e){e.preventDefault();var url=$(e.currentTarget).attr('href');var id=$(e.currentTarget).attr('data-imageID');var title=$(e.currentTarget).attr('title');History.pushState({controller:'gallery.front.view.image',imageID:id},title,url);},prevImage:function(e){e.preventDefault();var url=$(e.currentTarget).attr('href');var id=$(e.currentTarget).attr('data-imageID');var title=$(e.currentTarget).attr('title');History.pushState({controller:'gallery.front.view.image',imageID:id},title,url);},setAsProfile:function(e){e.preventDefault();var url=$(e.currentTarget).attr('href');ips.ui.alert.show({type:'confirm',icon:'question',message:ips.getString('set_as_photo_confirm'),callbacks:{ok:function(){ips.getAjax()(url,{showLoading:true}).done(function(response){ips.ui.flashMsg.show(response.message);}).fail(function(){window.location=url;});}}});},setAsCover:function(e){e.preventDefault();var url=$(e.currentTarget).attr('href');ips.getAjax()(url,{showLoading:true}).done(function(response){ips.ui.flashMsg.show(response.message);}).fail(function(){window.location=url;});},windowResize:function(){this._setUpSizing();},_loadURL:function(url){var self=this;this._setImageLoading(true);if(this._ajaxObj&&_.isFunction(this._ajaxObj.abort)){this._ajaxObj.abort();}
this._ajaxObj=ips.getAjax();this._ajaxObj(url,{dataType:'json'}).done(function(response){self._updateImage(response);}).fail(function(jqXHR,textStatus,errorThrown){if(Debug.isEnabled()){Debug.error(errorThrown);}else{window.location=url;}});},_updateImage:function(response){this.cleanContents();this.scope.find('[data-role="imageInfo"]').html(response.info);this.scope.find('[data-role="imageFrame"]').replaceWith(response.image);if(response.slider){this.scope.find('#elGalleryNav > ul').html(response.slider);}
if(response.image.match(/<video /ig)){var thisOptions=$('video[data-role="video"]').attr('data-setup')?$.parseJSON($('video[data-role="video"]').attr('data-setup')):{};var newId='elGalleryVideo_'+Math.random().toString(36).substr(2,9);$('video[data-role="video"]').attr('id',newId);if(_.isUndefined(window.videojs)){ips.loader.get(['gallery/interface/videojs/video.min.js']).then(function(){var thisOptions=$('video[data-role="video"]').attr('data-setup')?$.parseJSON($('video[data-role="video"]').attr('data-setup')):{};videojs(newId,thisOptions,function(){});});}else{videojs.players={};videojs(newId,thisOptions,function(){});}}
if(response.comments){this.scope.find('[data-role="imageComments"]').html(response.comments);}else{this.scope.find('[data-role="imageComments"]').html('');}
$('nav.ipsBreadcrumb [data-role="breadcrumbList"] > li:last-child').html(response.title);$(document).trigger('contentChange',[this.scope.find('[data-role="imageInfo"]')]).trigger('contentChange',[this.scope.find('[data-role="imageFrame"]')]).trigger('contentChange',[this.scope.find('[data-role="imageComments"]')]);$(document).trigger('imageUpdated',[{closeLightbox:(response.image.match(/<video /ig)||response.image.match(/<embed /ig))?true:false,updateImage:{imageElem:null,largeImage:(response.image.match(/<video /ig)||response.image.match(/<embed /ig))?null:this.scope.find('[data-role="theImage"]')[0].src,commentsURL:null,meta:null}}]);if(this.scope.find('[data-action="prevImage"]').length)
{$(document).trigger('lightboxEnable_prev');}
else
{$(document).trigger('lightboxDisable_prev');}
if(this.scope.find('[data-action="nextImage"]').length)
{$(document).trigger('lightboxEnable_next');}
else
{$(document).trigger('lightboxDisable_next');}
this._setUpSizing();},_setImageLoading:function(loading){if(loading){var description=this.scope.find('[data-role="imageDescription"]');var stats=this.scope.find('[data-role="imageStats"]');description.css({height:description.outerHeight()+'px'}).html('').addClass('ipsLoading');stats.css({height:stats.outerHeight()+'px'}).html('').addClass('ipsLoading');$(document).trigger('imageLoading',[]);}else{}},_setUpSizing:function(){var frame=this.scope.find('[data-role="imageFrame"]');var viewportHeight=$(window).height();var scopeTop=ips.utils.position.getElemPosition(this.scope);var navHeight=this.scope.find('[data-role="collectionNav"]').outerHeight();var maxHeight=viewportHeight-scopeTop.absPos.top-navHeight-this._sizeBuffer;var imageData=frame.attr('data-imageSizes');var ratio=1;if(maxHeight<400){maxHeight=400;}
frame.css({height:maxHeight+'px'});if(imageData){imageData=$.parseJSON(imageData);ratio=imageData['large'][0]/ imageData['large'][1];var innerHeight=frame.innerHeight()-parseInt(frame.css('padding-top'))-parseInt(frame.css('padding-bottom'));var innerWidth=frame.innerWidth()-parseInt(frame.css('padding-left'))-parseInt(frame.css('padding-right'));var marginTop=0;var imageSize={width:imageData['large'][0],height:imageData['large'][1]};if(imageSize['width']>innerWidth){imageSize['width']=innerWidth;imageSize['height']=Math.round(imageSize['width']/ ratio);}
if(imageSize['height']>innerHeight){imageSize['height']=innerHeight;imageSize['width']=Math.round(imageSize['height']*ratio);}
var padding=parseInt(frame.css('paddingTop'))+parseInt(frame.css('paddingBottom'));var marginTop=(maxHeight-padding-imageSize['height'])/ 2;this.scope.find('[data-role="notesWrapper"], [data-role="theImage"]').css({width:imageSize['width']+'px',height:imageSize['height']+'px',}).show().filter('[data-role="notesWrapper"]').css({marginTop:(marginTop>0)?marginTop:0+'px'});}}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('gallery.front.view.note',{_editing:false,_editable:false,_draggingNotEditing:false,_hoverTimerOn:null,_hoverTimerOff:null,_note:'',initialize:function(){this.on('click','.cGalleryNote_border',this.startEditing);this.on('click','[data-action="save"]',this.saveNote);this.on('click','[data-action="cancel"]',this.cancelNote);this.on('click','[data-action="delete"]',this.deleteNote);this.on('mousedown','.cGalleryNote_note',this.mouseDown);this.on('mouseenter',this.mouseEnter);this.on('mouseleave',this.mouseLeave);this.setup();},setup:function(){var self=this;if(!_.isUndefined(this.scope.attr('data-editable'))){this._editable=true;}
this._note=this.scope.attr('data-note');this._baseURL=ips.getSetting('baseURL')+'index.php?app=gallery&module=gallery&controller=notes&imageId='+this.scope.closest('.cGalleryViewImage').attr('data-imageID');this._buildNote();this._setUpEditable();this._initialPosition();if(this.scope.attr('data-noteID')=='new'){this.scope.find('.cGalleryNote_border').click();}},saveNote:function(e){e.preventDefault();var self=this;var note=this.scope.find('.cGalleryNote_note textarea').val();var savePosition=false;this.scope.draggable('enable');if(!$.trim(note)){return;}
if(this.scope.attr('data-noteID')=='new'){savePosition=true;}
this._saveNote(note,savePosition).done(function(){self._note=note;self._stopEditing();});},cancelNote:function(e){e.preventDefault();this.scope.draggable('enable');this._stopEditing();},deleteNote:function(e){e.preventDefault();var self=this;ips.ui.alert.show({type:'confirm',icon:'question',message:ips.getString('delete_note_confirm'),callbacks:{ok:function(){self._doDeleteNote();}}});},mouseEnter:function(){var self=this;if(this._hoverTimerOn){clearTimeout(this._hoverTimerOn);}
if(!this._editing){this._hoverTimerOn=setTimeout(function(){if(!self.scope.find('.cGalleryNote_note').is(':visible')){ips.utils.anim.go('fadeIn fast',self.scope.find('.cGalleryNote_note'));}});}},mouseLeave:function(){var self=this;if(this._hoverTimerOff){clearTimeout(this._hoverTimerOff);}
if(!this._editing){this._hoverTimerOff=setTimeout(function(){if(self.scope.find('.cGalleryNote_note').is(':visible')){ips.utils.anim.go('fadeOut fast',self.scope.find('.cGalleryNote_note'));}});}},mouseDown:function(){this.scope.draggable('disable');},startEditing:function(){if(!this._editable||this._draggingNotEditing){return;}
this._editing=true;this.scope.addClass('cGalleryNote_editing').append(ips.templates.render('gallery.notes.delete')).find('.cGalleryNote_note').html(ips.templates.render('gallery.notes.edit',{note:this._note})).find('textarea').focus();},_doDeleteNote:function(){var url=this._baseURL;var self=this;ips.getAjax()(url+'&delete=1&id='+this.scope.attr('data-noteID')).done(function(){ips.utils.anim.go('fadeOutDown',self.scope).done(function(){self.scope.remove();});})},_saveNote:function(noteContent,savePosition){var deferred=$.Deferred();var self=this;var url=this._baseURL;var position='';var note='';if(this.scope.attr('data-noteID')=='new'){url+='&add=1';}else{url+='&edit=1&id='+this.scope.attr('data-noteID');}
if(savePosition){position=this._getPosition();}
if(noteContent){note=noteContent;}
if(this.scope.find('[data-action="save"]').length&&note){this.scope.find('[data-action="save"]').prop('disabled',true).text(ips.getString('saving_note'));}
ips.getAjax()(url,{data:{note:note,position:position}}).done(function(response){if(self.scope.find('[data-action="save"]').length&&note){self.scope.find('[data-action="save"]').prop('disabled',false).text('Save');}
if(_.isObject(response)&&response.id){self.scope.attr('data-noteID',response.id);}
deferred.resolve();}).fail(function(){deferred.reject();});return deferred.promise();},_getPosition:function(){var position=[];var parent=this.scope.closest('.cGalleryViewImage');var notePos=this.scope.position();position[0]=(notePos['left']/ parent.width())*100;position[1]=(notePos['top']/ parent.height())*100;position[2]=(this.scope.width()/ parent.width())*100;position[3]=(this.scope.height()/ parent.height())*100;return position.join(',');},_stopEditing:function(){this._editing=false;this._draggingNotEditing=false;this.scope.removeClass('cGalleryNote_editing').find('.cGalleryNote_note').text(this._note).end().find('.cGalleryNote_delete').remove();},_buildNote:function(){this.scope.find('.cGalleryNote_note').text(this._note);},_setUpEditable:function(){if(!this._editable){return;}
var self=this;ips.loader.get(['core/interface/jquery/jquery-ui.js']).then(function(){self.scope.resizable({containment:self.scope.closest('.cGalleryViewImage'),handles:'se',stop:self._updatePosition.bind(self)});self.scope.draggable({containment:self.scope.closest('.cGalleryViewImage'),start:self._startDragging.bind(self),stop:self._updatePosition.bind(self)});self.scope.find('.ui-resizable-handle').on('mouseover',function(){self.scope.closest('.cGalleryViewImage').css({height:self.scope.closest('.cGalleryViewImage').height()+'px'});});});},_startDragging:function(){if(!this._editing){this._draggingNotEditing=true;}},_updatePosition:function(){var self=this;if(this.scope.attr('data-noteID')=='new'){return;}
this._saveNote(false,true).done(function(){if(!self._editing){self._stopEditing();}});},_initialPosition:function(){var left=this.scope.attr('data-posLeft');var top=this.scope.attr('data-posTop');var width=this.scope.attr('data-dimWidth');var height=this.scope.attr('data-dimHeight');this.scope.css({left:left+'%',top:top+'%',width:width+'%',height:height+'%'});}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('gallery.front.view.notes',{_inAddingState:false,initialize:function(){this.on(document,'click','[data-action="addNote"]',this.startAddNote);this.setup();},setup:function(){var notes;try{notes=$.parseJSON(this.scope.attr('data-notesData'));}catch(err){}
if(notes&&notes.length){this._buildNotes(notes);}},startAddNote:function(e){e.preventDefault();this.scope.append(ips.templates.render('gallery.notes.wrapper',{id:'new',left:50,top:50,width:(100 / this.scope.width())*100,height:(100 / this.scope.height())*100,editable:true}));$(document).trigger('contentChange',[this.scope]);},_buildNotes:function(notes){if(notes.length){for(var i=0;i<notes.length;i++){this.scope.append(ips.templates.render('gallery.notes.wrapper',{id:notes[i].ID,left:notes[i].LEFT,top:notes[i].TOP,width:notes[i].WIDTH,height:notes[i].HEIGHT,note:notes[i].NOTE,editable:!_.isUndefined(this.scope.attr('data-editable'))?true:false}));}
$(document).trigger('contentChange',[this.scope]);}}});}(jQuery,_));;