chevereto-free/app/lib/chevereto.min.js

4 lines
99 KiB
JavaScript

$(function(){function e(e){e=e.originalEvent;var t=!1;if(e.dataTransfer.types)for(var a=0;a<e.dataTransfer.types.length;a++)if("Files"==e.dataTransfer.types[a]){t=!0;break}return t}function t(){if(!PF.fn.isDevice(["phone","phablet"])){var e,t,a=$(".top-bar-notifications-list ul",".top-bar:visible");a.css("height",""),e=a.height(),a.data("height",e).css("height","auto"),t=a.height(),t>e&&(a.height(e),a.closest(".antiscroll-wrap").antiscroll())}}function a(e){e.addClass("list-item-play-gif--loading");var t=e.closest(".list-item"),a=$(".image-container",t),o=$("img",a),i=o.attr("src"),r=".md",n=i.lastIndexOf(r);if(-1==n)r=".th",n=i.lastIndexOf(r);var s=i.substr(0,n)+i.substr(n+r.length,i.length);a.append(a.html()),$load=t.find(".image-container img").eq(1).attr("src",s).addClass("hidden"),$load.imagesLoaded(function(){e.remove(),o.remove(),$(this.elements).removeClass("hidden")})}if($(window).on("resize",function(){CHV.fn.uploader.boxSizer(),"function"==typeof user_background_full_fix&&user_background_full_fix(),CHV.fn.bindSelectableItems(),CHV.fn.listingViewer.placeholderSizing()}),window.opener&&($(window).on("load",function(e){window.opener.postMessage({id:window.name,requestAction:"postSettings"},"*")}),$(window).on("message",function(e){var t=e.originalEvent.data;void 0!==t.id&&void 0!==t.settings&&window.name===t.id&&(CHV.obj.opener.uploadPlugin[t.id]=t.settings)})),$("#home-cover, #maintenance-wrapper, #login").exists()){var o=$("#maintenance-wrapper").exists()?$("#maintenance-wrapper").css("background-image").slice(4,-1).replace(/^\"|\"$/g,""):$(".home-cover-img","#home-cover-slideshow").first().attr("data-src");function i(){$("body").addClass("load"),$("#maintenance-wrapper").exists()||$(".home-cover-img","#home-cover-slideshow").first().css("background-image","url("+o+")").addClass("animate-in--alt").removeAttr("data-src"),setTimeout(function(){setTimeout(function(){$("body").addClass("loaded")},1200),setTimeout(function(){n()},7e3)},600)}var r=function(){setTimeout(function(){n()},8e3)};function n(){var e=$(".home-cover-img[data-src]","#home-cover-slideshow").first(),t=$(".home-cover-img","#home-cover-slideshow");if(0==e.length){if(1==t.length)return;t.first().removeClass("animate-in"),$("#home-cover-slideshow").append(t.first()),setTimeout(function(){$(".home-cover-img:last","#home-cover-slideshow").addClass("animate-in")},20),setTimeout(function(){$(".home-cover-img:not(:last)","#home-cover-slideshow").removeClass("animate-in")},4e3),r()}else{var a=e.attr("data-src");$("<img/>").attr("src",a).on("load error",function(){$(this).remove(),e.css("background-image","url("+a+")").addClass("animate-in").removeAttr("data-src"),setTimeout(function(){$(".home-cover-img:not(:last)","#home-cover-slideshow").removeClass("animate-end animate-in--alt")},2e3),r()})}}o?$("<img/>").attr("src",o).on("load error",function(){$(this).remove(),i()}):i()}var s=CHV.fn.uploader.selectors.root,l=CHV.fn.uploader.selectors.queue,d=$(s),c=$(l);$(document).on("click","[data-action=top-bar-upload]",function(e){$("body").is("#upload")||1==$(this).data("link")||CHV.fn.uploader.toggle()});var u={tones:{light:{html:"tone-light top-bar-white",top:"white"},dark:{html:"tone-dark top-bar-black",top:"black"}},isDark:function(){return $("html").hasClass("tone-dark")},toggle:function(){var e=this.isDark()?"light":"dark";$("html").removeClass(this.tones.light.html+" "+this.tones.dark.html).addClass(this.tones[e].html),$("body#index").exists()||$("#top-bar").removeClass(this.tones.light.top+" "+this.tones.dark.top).addClass(this.tones[e].top)},save:function(){$.ajax({type:"POST",data:{action:"toggleTone"},cache:!1}),u.aux=u.isDark()},timeout:{},aux:{}};if(u.aux=u.isDark(),$(document).on("click","[data-action=top-bar-tone]",function(e){e.isPropagationStopped()||($("[data-action=top-bar-menu-full]").is(":visible")&&PF.fn.topMenu.hide(),clearTimeout(u.timeout),u.toggle(),u.timeout=setTimeout(function(){u.aux!==u.isDark()&&u.save()},750))}),$("[data-action=close-upload]",d).click(function(){d.is(":animated")||$("[data-action=top-bar-upload]","#top-bar").click()}),$("[data-action=reset-upload]",d).click(function(){CHV.fn.uploader.isUploading&&$("[data-action=cancel-upload-remaining], [data-action=cancel-upload]",d).trigger("click"),CHV.fn.uploader.reset()}),$("[data-action=cancel-upload-remaining], [data-action=cancel-upload]",d).click(function(){CHV.fn.uploader.isUploading=!1,$("[data-action=cancel]",c).click(),Object.size(CHV.fn.uploader.results.success)>0?CHV.fn.uploader.displayResults():CHV.fn.uploader.reset()}),$(document).on("click","[data-action=upload-privacy]:not(disabled)",function(e){e.isDefaultPrevented()||(current_privacy=$(this).data("privacy"),target_privacy="public"==current_privacy?"private":"public",this_lock=$(".icon",this).data("lock"),this_unlock=$(".icon",this).data("unlock"),$(".icon",this).removeClass(this_lock+" "+this_unlock).addClass("public"==current_privacy?this_lock:this_unlock),$(this).data("privacy",target_privacy),$("[data-action=upload-privacy-copy]").html($("[data-action=upload-privacy]").html()),$upload_button=$("[data-action=upload]",d),$upload_button.text($upload_button.data(target_privacy)),$(this).tipTip("hide"))}),$(CHV.fn.uploader.selectors.file+", "+CHV.fn.uploader.selectors.camera).on("change",function(e){$(CHV.fn.uploader.selectors.root).data("shown")?CHV.fn.uploader.add(e):CHV.fn.uploader.toggle({callback:function(e){CHV.fn.uploader.add(e)}},e)}).on("click",function(e){!$(this).data("login-needed")||PF.fn.is_user_logged()}),$(CHV.fn.uploader.selectors.root).exists()&&($("body").on({dragenter:function(t){if(t.preventDefault(),!e(t))return!1;$(CHV.fn.uploader.selectors.dropzone).exists()||$("body").append($('<div id="'+CHV.fn.uploader.selectors.dropzone.replace("#","")+'"/>').css({width:"100%",height:"100%",position:"fixed",zIndex:1e3,left:0,top:0}))}}),$(document).on({dragover:function(t){if(t.preventDefault(),!e(t))return!1;$(CHV.fn.uploader.selectors.root).data("shown")||CHV.fn.uploader.toggle({reset:!1})},dragleave:function(e){$(CHV.fn.uploader.selectors.dropzone).remove(),$.isEmptyObject(CHV.fn.uploader.files)&&CHV.fn.uploader.toggle()},drop:function(e){e.preventDefault(),CHV.fn.uploader.add(e),$(CHV.fn.uploader.selectors.dropzone).remove()}},CHV.fn.uploader.selectors.dropzone)),$(document).on("keyup change","[data-action=resize-combo-input]",function(e){var t=$(this).closest("[data-action=resize-combo-input]"),a=$("[name=form-width]",t),o=$("[name=form-height]",t),i=a.data("initial")/o.data("initial"),r={width:Math.round(a.prop("value")/i),height:Math.round(o.prop("value")*i)};$(e.target).is(a)?o.prop("value",Math.round(r.width)):a.prop("value",Math.round(r.height))}),$(document).on("click",l+" [data-action=edit]",function(){for(var e=$(this).closest("li"),t=(e.closest("ul"),e.data("id")),a=CHV.fn.uploader.files[t],o=PF.obj.modal.selectors.root,i=$.extend({},a.formValues||a.parsedMeta),r=["album_id","category_id","nsfw"],n=0;n<r.length;n++){var s=r[n];if(void 0===i[s]){var l=$("[name=upload-"+s.replace("_","-")+"]",CHV.fn.uploader.selectors.root),d=l.prop(l.is(":checkbox")?"checked":"value");i[s]=l.is(":checkbox")?d?"1":null:d}}PF.fn.modal.call({type:"html",template:$("#anywhere-upload-edit-item").html(),callback:function(){var e={width:0!=CHV.obj.config.image.max_width?CHV.obj.config.image.max_width:i.width,height:0!=CHV.obj.config.image.max_height?CHV.obj.config.image.max_height:i.height},r=$.extend({},e),n=i.width/i.height;r.width=Math.round(e.height*n),r.height=Math.round(e.width/n),r.height>e.height&&(r.height=e.height,r.width=Math.round(r.height*n)),r.width>e.width&&(r.width=e.width,r.height=Math.round(r.width/n)),$.each(i,function(e,t){var i="[name=form-"+e.replace(/_/g,"-")+"]",n=$(i,o);if(!n.exists())return!0;if(n.is(":checkbox"))n.prop("checked",n.attr("value")==t);else if(n.is("select")){var s=n.find("[value="+t+"]");s.exists()||(s=n.find("option:first")),s.prop("selected",!0)}else n.prop("value",t);if("width"==e||"height"==e){var l=r[e],d=a.parsedMeta[e]>l?l:a.parsedMeta[e];n.prop("max",d).data("initial",a.parsedMeta[e]).prop("value",d)}}),"image/gif"!==a.parsedMeta.mimetype&&$("[ data-content=animated-gif-warning]",o).remove(),$(".image-preview",o).append($("<canvas/>",{class:"canvas"}));var s=$(".queue-item[data-id="+t+"] .preview .canvas")[0],l=$(".image-preview .canvas",o)[0];l.width=s.width,l.height=s.height;var d=l.getContext("2d");d.drawImage(s,0,0)},confirm:function(){if(PF.fn.form_modal_has_changed()){var e=!1;return $.each(["width","height"],function(t,a){var i=$("[name=form-"+a+"]",o),r=parseInt(i.val()),n=parseInt(i.attr("min")),s=parseInt(i.attr("max"));if(r>s||r<n)return i.highlight(),e=!0,!0}),e?(PF.fn.growl.expirable(PF.fn._s("Check the errors in the form to continue.")),!1):(void 0===a.formValues&&(a.formValues={title:null,category_id:null,width:null,height:null,nsfw:null,expiration:null,description:null,album_id:null}),$(":input[name]",o).each(function(e,t){var o=$(this).attr("name").replace("form-","").replace(/-/g,"_");if(void 0===a.formValues[o])return!0;a.formValues[o]=$(this).is(":checkbox")?$(this).is(":checked")?$(this).prop("value"):null:$(this).prop("value")}),CHV.fn.uploader.files[t].formValues=a.formValues,!0)}PF.fn.modal.close()}})}),$(document).on("click",l+" [data-action=cancel]",function(){var e=$(this).closest("li"),t=e.closest("ul"),a=e.data("id"),o=t.height(),i=!1;if(!e.hasClass("completed")&&!e.hasClass("failed")){if($("#tiptip_holder").hide(),e.tipTip("destroy").remove(),o!==t.height()&&CHV.fn.uploader.boxSizer(),$("li",c).exists()||$("[data-group=upload-queue-ready], [data-group=upload-queue], [data-group=upload-queue-ready]",d).css("display",""),CHV.fn.uploader.files[a]&&void 0!==CHV.fn.uploader.files[a].xhr&&(CHV.fn.uploader.files[a].xhr.abort(),i=!0),void 0!==CHV.fn.uploader.files[a]&&void 0!==CHV.fn.uploader.files[a].fromClipboard){var r=CHV.fn.uploader.files[a].md5,n=CHV.fn.uploader.clipboardImages.indexOf(r);n>-1&&CHV.fn.uploader.clipboardImages.splice(n,1)}delete CHV.fn.uploader.files[a],CHV.fn.uploader.queueSize(),0==Object.size(CHV.fn.uploader.files)?"success"in CHV.fn.uploader&&"results"in CHV.fn.uploader&&(0!=Object.size(CHV.fn.uploader.results.success)||0!=Object.size(CHV.fn.uploader.results.error))||CHV.fn.uploader.reset():i&&0!==$("li.waiting",t).first().length&&CHV.fn.uploader.upload($("li.waiting",t).first())}}),$(document).on("click","[data-action=upload]",function(){$("[data-group=upload], [data-group=upload-queue-ready]",d).hide(),d.removeClass("queueReady").addClass("queueUploading").find("[data-group=uploading]").show(),CHV.fn.uploader.queueSize(),CHV.fn.uploader.canAdd=!1,$queue_items=$("li",c),$queue_items.addClass("uploading waiting"),CHV.fn.uploader.timestamp=(new Date).getTime(),CHV.fn.uploader.upload($queue_items.first("li"))}),$("body#user").exists()&&PF.obj.listing.query_string.page>1){var m=History.getState();if(m.data&&void 0!==m.data.scrollTop)$(window).scrollTop()!==m.data.scrollTop&&$(window).scrollTop(m.data.scrollTop);else{var f=$("#background-cover").height()-160;$("html, body").animate({scrollTop:f},0)}}$("#top-bar-shade").exists()&&$("#top-bar-shade").css("opacity")&&$("#top-bar-shade").data("initial-opacity",Number($("#top-bar-shade").css("opacity"))),PF.fn.isDevice("phone"),$(window).on("scroll resize",function(){var e=$(window).scrollTop();if(!(e<0)){var t=$("#top-bar"),a=Number(e/($("#background-cover, [data-content=follow-scroll-opacity]").height()-t.height()));a>1&&(a=1),$("#top-bar-shade").data("initial-opacity")&&(a+=$("#top-bar-shade").data("initial-opacity")),$("#top-bar-shade").css({opacity:a}),$("#background-cover-src").css({transform:"translate(0, "+.8*e+"px)"})}}),CHV.fn.bindSelectableItems(),$("body#image").exists()&&($(CHV.obj.image_viewer.selector+" [data-load=full]").length>0?($(document).on("click",CHV.obj.image_viewer.loader,function(e){CHV.fn.viewerLoadImage()}),$(CHV.obj.image_viewer.loader).data("size")>CHV.obj.config.image.load_max_filesize.getBytes()?$(CHV.obj.image_viewer.loader).css("display","block"):CHV.fn.viewerLoadImage(),$(document).bind("DOMSubtreeModified",function(){$("html").height()>$(window).innerHeight()&&!$("html").hasClass("scrollbar-y")&&($("html").addClass("scrollbar-y"),$(document).data({width:$(this).width(),height:$(this).height()}),CHV.fn.image_viewer_full_fix())}),$(window).on("resize",function(){CHV.fn.image_viewer_full_fix()}),$(document).on("keyup",function(e){var t=$(e.target),a=e.charCode||e.keyCode;if(!t.is(":input")&&CHV.obj.image_viewer.$navigation.exists()&&(37==a||39==a)){var o=$("[data-action="+(37==a?"prev":"next")+"]",CHV.obj.image_viewer.$navigation).attr("href");void 0!==o&&""!==o&&(window.location=$("[data-action="+(37==a?"prev":"next")+"]",CHV.obj.image_viewer.$navigation).attr("href"))}})):CHV.fn.viewerImageZoomClass()),$(document).on("click",CHV.obj.image_viewer.container,function(e){if($(this).hasClass("cursor-zoom-in")||$(this).hasClass("cursor-zoom-out")){var t=$(this).hasClass("cursor-zoom-in");if($(this).removeClass("cursor-zoom-in cursor-zoom-out"),t){var a,o=$(this)[0].getBoundingClientRect().width,i=$(this)[0].getBoundingClientRect().height,r=$("img",this).attr("width")/$("img",this).attr("height");void 0===$(this).data("dimentions")&&$(this).data({dimentions:{width:o,height:i},ratio:r}),$("img",this).attr("width")>$(window).width()?($(this).css({width:"100%"}),a=$(this).width(),$(this).css({width:o})):a=$("img",this).attr("width"),$(this).addClass("cursor-zoom-out").css({width:a,height:a/r+"px"})}else $(this).addClass("cursor-zoom-in").css($(this).data("dimentions"));e.preventDefault()}}).on("contextmenu",CHV.obj.image_viewer.container,function(e){if(!CHV.obj.config.image.right_click)return e.preventDefault(),!1}),$(document).on("contextmenu","html.device-mobile a.image-container",function(e){return e.preventDefault(),!1}),$(document).on("keyup","input[data-dashboard-tool]",function(e){if(13==e.keyCode){var t=$("[data-action="+$(this).data("dashboard-tool")+"]");t.click()}}),$(document).on("click","[data-action=dashboardTool]",function(e){e.preventDefault();var t=$(this).data("tool"),a=$(this).data("data"),o=$.extend({},a),i={};for(var r in o){var n=$(o[r]).val();if($(o[r]).prop("disabled")||!n)return;i[r]=$(o[r]),o[r]=n}o.action=t;var s={type:"GET",cache:!1};s.data=o;var l,d=$(this).closest(".input-label"),c=!0;if(0!=c){for(var r in i);PF.fn.loading.inline($(".loading",d),{size:"small",valign:"middle"}),d.find(".btn .text").hide(),$.ajax(s).complete(function(e){var t=e.responseJSON;$(".loading",d).empty(),d.find(".btn .text").show(),200!=t.status_code||void 0===t.success.redirURL?PF.fn.growl.call(t[200==t.status_code?"success":"error"].message):window.location.href=t.success.redirURL})}else PF.fn.growl.expirable(l)}),$(document).on("click","[data-action=openerPostMessage]",function(e){if(window.opener){e.preventDefault();var t="data-action-target",a=$($(this).is("["+t+"]")?$(this).attr(t):this),o=a[a.is(":input")?"val":"html"]();window.opener.postMessage({id:window.name,message:o},"*")}}),$(document).on("click","[data-action=list-tools] [data-action]",function(e){var t=$(e.target),a=t.closest("[data-id]");a&&a.find("[data-action=select]").exists()&&(e.ctrlKey||e.metaKey)&&e.altKey&&(CHV.fn.list_editor.toggleSelectItem(a,!a.hasClass("selected")),e.preventDefault(),e.stopPropagation())}),PF.fn.listing.ajax.callback=function(e){200===e.status&&CHV.fn.list_editor.listMassActionSet("select")},$(document).on("click","[data-action=list-select-all]",function(){CHV.fn.list_editor.selectItem($(".list-item:visible:not(.selected)")),CHV.fn.list_editor.listMassActionSet("clear")}),$(document).on("click","[data-action=list-clear-all]",function(){PF.fn.close_pops(),CHV.fn.list_editor.clearSelection()}),$(document).on("click","[data-action=list-tools] [data-action]",function(e){if(e.isPropagationStopped())return!1;var t=$(this).closest(PF.obj.listing.selectors.list_item+", .viewer"),a=t.data("id");if(void 0!==t.data("type")){o=t.data("type");var o,i=$("[data-type="+o+"][data-id="+a+"]");switch($(this).data("action")){case"select":CHV.fn.list_editor.toggleSelectItem(t,!t.hasClass("selected"));break;case"edit":var r="[data-modal=form-edit-single]";switch(o){case"image":$("[name=form-image-title]",r).attr("value",t.attr("data-title")),$("[name=form-image-description]",r).html(PF.fn.htmlEncode(t.data("description"))),$("[name=form-album-id]",r).find("option").removeAttr("selected"),$("[name=form-album-id]",r).find("[value="+t.data("image"==o?"album-id":"id")+"]").attr("selected",!0),$("[name=form-category-id]",r).find("option").removeAttr("selected"),$("[name=form-category-id]",r).find("[value="+t.data("category-id")+"]").attr("selected",!0),$("[name=form-nsfw]",r).attr("checked","unsafe"==t.data("flag")),$("[name=form-album-name]",r).attr("value",""),$("[name=form-album-description]",r).html(""),$("[name=form-privacy]",r).find("option").removeAttr("selected");break;case"album":$("[data-action=album-switch]",r).remove(),$("[name=form-album-name]",r).attr("value",t.data("name")),$("[name=form-album-description]",r).html(PF.fn.htmlEncode(t.data("description"))),$("[name=form-privacy]",r).find("option").removeAttr("selected"),$("[name=form-privacy]",r).find("[value="+t.data("privacy")+"]").attr("selected",!0),"password"==t.data("privacy")?($("[data-combo-value=password]").show(),$("[name=form-album-password]",r).attr("value",t.data("password"))):($("[data-combo-value=password]").hide(),$("[name=form-album-password]",r).attr("value",""))}PF.fn.modal.call({type:"html",template:$(r).html(),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){CHV.fn.list_editor.updateItem("[data-type="+o+"][data-id="+a+"]",e.responseJSON[o],"edit")}}},confirm:function(){var e=$(PF.obj.modal.selectors.root);if(("image"==o||"album"==o)&&$("[data-content=form-new-album]",e).is(":visible")&&""==$("[name=form-album-name]",e).val())return PF.fn.growl.call(PF.fn._s("You must enter the album name.")),$("[name=form-album-name]",e).highlight(),!1;if(PF.fn.form_modal_has_changed()){switch(PF.obj.modal.form_data={action:"edit",edit:t.data("type"),single:!0,owner:CHV.obj.resource.user.id,editing:{id:a,description:$("[name=form-"+o+"-description]",e).val()}},o){case"image":PF.obj.modal.form_data.editing.title=$("[name=form-image-title]",e).val(),PF.obj.modal.form_data.editing.category_id=$("[name=form-category-id]",e).val()||null,PF.obj.modal.form_data.editing.nsfw=$("[name=form-nsfw]",e).prop("checked")?1:0;break;case"album":PF.obj.modal.form_data.editing.name=$("[name=form-album-name]",e).val(),PF.obj.modal.form_data.editing.privacy=$("[name=form-privacy]",e).val(),"password"==PF.obj.modal.form_data.editing.privacy&&(PF.obj.modal.form_data.editing.password=$("[name=form-album-password]",e).val())}return PF.obj.modal.form_data.editing.new_album=$("[data-content=form-new-album]",e).is(":visible"),PF.obj.modal.form_data.editing.new_album?(PF.obj.modal.form_data.editing.album_name=$("[name=form-album-name]",e).val(),PF.obj.modal.form_data.editing.album_privacy=$("[name=form-privacy]",e).val(),"password"==PF.obj.modal.form_data.editing.album_privacy&&(PF.obj.modal.form_data.editing.album_password=$("[name=form-album-password]",e).val()),PF.obj.modal.form_data.editing.album_description=$("[name=form-album-description]",e).val()):PF.obj.modal.form_data.editing.album_id=$("[name=form-album-id]",e).val(),!0}PF.fn.modal.close()}});break;case"move":r="[data-modal=form-move-single]";$("[name=form-album-id]",r).find("option").removeAttr("selected"),$("[name=form-album-id]",r).find("[value="+t.data("image"==o?"album-id":"id")+"]").attr("selected",!0),$("[name=form-album-name]",r).attr("value",""),$("[name=form-album-description]",r).html(""),$("[name=form-privacy]",r).find("option").removeAttr("selected"),PF.fn.modal.call({type:"html",template:$(r).html(),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){CHV.fn.list_editor.updateMoveItemLists(e.responseJSON,o,i)}}},load:function(){},confirm:function(){var e=$(PF.obj.modal.selectors.root);return $("[data-content=form-new-album]",e).is(":visible")&&""==$("[name=form-album-name]",e).val()?(PF.fn.growl.call(PF.fn._s("You must enter the album name.")),$("[name=form-album-name]",e).highlight(),!1):PF.fn.form_modal_has_changed()?(PF.obj.modal.form_data={action:"edit",edit:t.data("type"),single:!0,owner:CHV.obj.resource.user.id,editing:{id:a}},PF.obj.modal.form_data.editing.new_album=$("[data-content=form-new-album]",e).is(":visible"),PF.obj.modal.form_data.editing.new_album?(PF.obj.modal.form_data.editing.album_name=$("[name=form-album-name]",e).val(),PF.obj.modal.form_data.editing.album_privacy=$("[name=form-privacy]",e).val(),"password"==PF.obj.modal.form_data.editing.album_privacy&&(PF.obj.modal.form_data.editing.album_password=$("[name=form-album-password]",e).val()),PF.obj.modal.form_data.editing.album_description=$("[name=form-album-description]",e).val()):PF.obj.modal.form_data.editing.album_id=$("[name=form-album-id]",e).val(),!0):void PF.fn.modal.close()}});break;case"approve":PF.fn.modal.call({type:"html",template:$("[data-modal=form-approve-single]").html(),button_submit:PF.fn._s("Confirm"),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){CHV.fn.list_editor.removeFromList(t,PF.fn._s("The content has been approved."))}}},confirm:function(){return PF.obj.modal.form_data={action:"approve",single:!0,approve:t.data("type"),approving:{id:a}},!0}});break;case"delete":PF.fn.modal.call({type:"html",template:$("[data-modal=form-delete-single]").html(),button_submit:PF.fn._s("Confirm"),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){"album"==o&&($("[name=form-album-id]","[data-modal]").find("[value="+a+"]").remove(),CHV.fn.list_editor.updateUserCounters("image",e.responseJSON.success.affected,"-")),CHV.fn.list_editor.deleteFromList(t),CHV.fn.queuePixel()}}},confirm:function(){return PF.obj.modal.form_data={action:"delete",single:!0,delete:t.data("type"),deleting:{id:a}},!0}});break;case"flag":$.ajax({type:"POST",data:{action:"edit",edit:"image",single:!0,editing:{id:a,nsfw:"unsafe"==t.data("flag")?0:1}}}).complete(function(e){var t=e.responseJSON;if(200==t.status_code){var a=1==t.image.nsfw?"unsafe":"safe";i.attr("data-flag",a).data("flag",a)}else PF.fn.growl.call(t.error.message);CHV.fn.list_editor.selectionCount()})}}else console.log("Error: data-type not defined")}),$(".pop-box-menu a","[data-content=list-selection]").click(function(e){var t=$(PF.obj.listing.selectors.content_listing_visible);if(void 0!==t.data("list")){dealing_with=t.data("list");var a=$(PF.obj.listing.selectors.list_item+".selected",t),o=$.map(a,function(e,t){return $(e).data("id")});switch($(this).closest(".pop-btn").click(),$(this).data("action")){case"get-embed-codes":var i="[data-modal=form-embed-codes]",r=[];$("textarea",i).html(""),a.each(function(){var e={image:$.parseJSON(decodeURIComponent($(this).data("object")))};"url"in e.image&&r.push(e)}),CHV.fn.fillEmbedCodes(r,i,"html"),PF.fn.modal.call({type:"html",template:$(i).html(),buttons:!1});break;case"clear":CHV.fn.list_editor.clearSelection(),e.stopPropagation();break;case"move":case"create-album":i="move"==$(this).data("action")?"form-move-multiple":"form-create-album";var n="[data-modal="+i+"]",s=/image/.test(dealing_with)?"album-id":"id";$("[name=form-album-id]",n).find("[value=null]").remove(),$("[name=form-album-id]",n).find("option").removeAttr("selected"),$("[name=form-album-name]",n).attr("value",""),$("[name=form-album-description]",n).html(""),$("[name=form-privacy]",n).find("option").removeAttr("selected");var l=a.first().data(s),d=!0;a.each(function(){if($(this).data(s)!==l)return d=!1,!1}),d||$("[name=form-album-id]",n).prepend('<option value="null">'+PF.fn._s("Select existing album")+"</option>"),$("[name=form-album-id]",n).find("[value="+(d?a.first().data(s):"null")+"]").attr("selected",!0),PF.fn.modal.call({type:"html",template:$(n).html(),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){CHV.fn.list_editor.updateMoveItemLists(e.responseJSON,dealing_with,a)}}},load:function(){},confirm:function(){var e=$(PF.obj.modal.selectors.root),t=!1;if($("[data-content=form-new-album]",e).is(":visible")&&""==$("[name=form-album-name]",e).val())return PF.fn.growl.call(PF.fn._s("You must enter the album name.")),$("[name=form-album-name]",e).highlight(),!1;if($("[data-content=form-new-album]",e).is(":visible")&&(t=!0),PF.fn.form_modal_has_changed()){return PF.obj.modal.form_data={action:t?"create-album":"move",type:dealing_with,owner:CHV.obj.resource.user.id,multiple:!0,album:{ids:o,new:t}},t?(PF.obj.modal.form_data.album.name=$("[name=form-album-name]",e).val(),PF.obj.modal.form_data.album.privacy=$("[name=form-privacy]",e).val(),"password"==PF.obj.modal.form_data.album.privacy&&(PF.obj.modal.form_data.album.password=$("[name=form-album-password]",e).val()),PF.obj.modal.form_data.album.description=$("[name=form-album-description]",e).val()):PF.obj.modal.form_data.album.id=$("[name=form-album-id]",e).val(),!0}PF.fn.modal.close()}});break;case"approve":PF.fn.modal.call({template:$("[data-modal=form-approve-multiple]").html(),button_submit:PF.fn._s("Confirm"),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){CHV.fn.list_editor.removeFromList(a,PF.fn._s("The content has been approved."))}}},confirm:function(){return PF.obj.modal.form_data={action:"approve",from:"list",approve:dealing_with,multiple:!0,approving:{ids:o}},!0}});break;case"delete":PF.fn.modal.call({template:$("[data-modal=form-delete-multiple]").html(),button_submit:PF.fn._s("Confirm"),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){"albums"==dealing_with&&(a.each(function(){$("[name=form-album-id]","[data-modal]").find("[value="+$(this).data("id")+"]").remove()}),CHV.fn.list_editor.updateUserCounters("image",e.responseJSON.success.affected,"-")),CHV.fn.list_editor.deleteFromList(a),CHV.fn.queuePixel()}}},confirm:function(){return PF.obj.modal.form_data={action:"delete",from:"list",delete:dealing_with,multiple:!0,deleting:{ids:o}},!0}});break;case"assign-category":var c=a.first().data("category-id"),u=!0;a.each(function(){if($(this).data("category-id")!==c)return u=!1,!1}),PF.fn.modal.call({type:"html",template:$("[data-modal=form-assign-category]").html(),forced:!0,ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){a.each(function(){var t=e.responseJSON;$(this).data("category-id",t.category_id)}),CHV.fn.list_editor.clearSelection()}}},confirm:function(){var e=$(PF.obj.modal.selectors.root),t=$("[name=form-category-id]",e).val()||null;return u&&c==t?(PF.fn.modal.close(function(){CHV.fn.list_editor.clearSelection()}),!1):(PF.obj.modal.form_data={action:"edit-category",from:"list",multiple:!0,editing:{ids:o,category_id:t}},!0)}});break;case"flag-safe":case"flag-unsafe":var m=$(this).data("action"),f="flag-safe"==m?"safe":"unsafe";PF.fn.modal.call({template:$("[data-modal=form-"+m+"]").html(),button_submit:PF.fn._s("Confirm"),ajax:{url:PF.obj.config.json_api,deferred:{success:function(e){a.each(function(){$(this).removeClass("safe unsafe").addClass(f).removeAttr("data-flag").attr("data-flag",f).data("flag",f)}),CHV.fn.list_editor.clearSelection()}}},confirm:function(){return PF.obj.modal.form_data={action:m,from:"list",multiple:!0,editing:{ids:o,nsfw:"flag-safe"==m?0:1}},!0}})}return!PF.fn.isDevice(["phone","phablet"])&&void 0}console.log("Error: data-list not defined")}),$("body#image").exists()&&$(window).scroll(function(){CHV.obj.topBar.transparencyScrollToggle()}),$(document).on("click","[data-action=disconnect]",function(){var e=$(this),t=e.data("connection");PF.fn.modal.confirm({message:e.data("confirm-message"),ajax:{data:{action:"disconnect",disconnect:t,user_id:CHV.obj.resource.user.id},deferred:{success:function(e){var a=e.responseJSON;$("[data-connection="+t+"]").fadeOut(function(){$($("[data-connect="+t+"]")).fadeIn(),$(this).remove(),0==$("[data-connection]").length&&$("[data-content=empty-message]").show(),PF.fn.growl.expirable(a.success.message)})},error:function(e){var t=e.responseJSON;PF.fn.growl.call(t.error.message)}}}})}),$(document).on("click","[data-action=delete-avatar]",function(){var e=$(".user-settings-avatar"),t=$(".loading-placeholder",e),a=$("#top-bar");t.removeClass("hidden"),PF.fn.loading.inline(t,{center:!0}),$.ajax({type:"POST",data:{action:"delete",delete:"avatar",owner:CHV.obj.resource.user.id}}).complete(function(o){t.addClass("hidden").empty(),200==o.status?(CHV.obj.logged_user.id==CHV.obj.resource.user.id&&($("img.user-image",a).hide(),$(".default-user-image",a).removeClass("hidden")),$(".default-user-image",e).removeClass("hidden").css({opacity:0}),$(".btn-alt",e).closest("div").hide(),$("img.user-image",e).fadeOut(function(){$(".default-user-image",e).animate({opacity:1})})):PF.fn.growl.expirable(PF.fn._s("An error occurred. Please try again later."))})}),$(document).on("change","[data-content=user-avatar-upload-input]",function(e){e.preventDefault(),e.stopPropagation();var t=$(this),a=$(".user-settings-avatar"),o=$(".loading-placeholder",".user-settings-avatar"),i=$("#top-bar"),r=$(this)[0].files[0];if(!t.data("uploading"))if(0!=/^image\/.*$/.test(r.type))if(r.size>CHV.obj.config.user.avatar_max_filesize.getBytes())PF.fn.growl.call(PF.fn._s("Please select a picture of at most %s size.",CHV.obj.config.user.avatar_max_filesize));else{o.removeClass("hidden"),PF.fn.loading.inline(o,{center:!0}),t.data("uploading",!0);var n=new FormData;n.append("source",r),n.append("action","upload"),n.append("type","file"),n.append("what","avatar"),n.append("owner",CHV.obj.resource.user.id),n.append("auth_token",PF.obj.config.auth_token),avatarXHR=new XMLHttpRequest,avatarXHR.open("POST",PF.obj.config.json_api,!0),avatarXHR.send(n),avatarXHR.onreadystatechange=function(){if(4==this.readyState){var e="json"!==this.responseType?JSON.parse(this.response):this.response,r=e.success.image;o.addClass("hidden").empty(),200==this.status?(change_avatar=function(e){$("img.user-image",e).attr("src",r.url).removeClass("hidden").show()},hide_default=function(e){$(".default-user-image",e).addClass("hidden")},hide_default(a),$(".btn-alt",a).closest("div").show(),change_avatar(a),CHV.obj.logged_user.id==CHV.obj.resource.user.id&&(change_avatar(i),hide_default(i)),PF.fn.growl.expirable(PF.fn._s("Profile image updated."))):PF.fn.growl.expirable(PF.fn._s("An error occurred. Please try again later.")),t.data("uploading",!1)}}}else PF.fn.growl.call(PF.fn._s("Please select a valid image file type."))}),$(document).on("change","[data-content=user-background-upload-input]",function(e){e.preventDefault(),e.stopPropagation();var t=$(this),a=$("[data-content=user-background-cover]"),o=$("[data-content=user-background-cover-src]"),i=$(".loading-placeholder",a),r=($("#top-bar"),$(this)[0].files[0]);if(!t.data("uploading"))if(0!=/^image\/.*$/.test(r.type))if(r.size>CHV.obj.config.user.background_max_filesize.getBytes())PF.fn.growl.call(PF.fn._s("Please select a picture of at most %s size.",CHV.obj.config.user.background_max_filesize));else{i.removeClass("hidden"),PF.fn.loading.inline(i,{center:!0,size:"big",color:"#FFF"}),t.data("uploading",!0);var n=new FormData;n.append("source",r),n.append("action","upload"),n.append("type","file"),n.append("what","background"),n.append("owner",CHV.obj.resource.user.id),n.append("auth_token",PF.obj.config.auth_token),avatarXHR=new XMLHttpRequest,avatarXHR.open("POST",PF.obj.config.json_api,!0),avatarXHR.send(n),avatarXHR.onreadystatechange=function(){if(4==this.readyState){var e="json"!==this.responseType?JSON.parse(this.response):this.response,r=e.success.image;if(200==this.status){var n=$("<img/>");n.attr("src",r.url).imagesLoaded(function(){i.addClass("hidden").empty(),o.css("background-image","url("+r.url+")").hide().fadeIn(),$("[data-content=user-change-background]",a).removeClass("hidden"),a.removeClass("no-background"),$("[data-content=user-upload-background]").hide(),
$("[data-content=user-change-background]").show(),PF.fn.growl.expirable(PF.fn._s("Profile background image updated.")),n.remove(),"function"==typeof user_background_full_fix&&user_background_full_fix()})}else i.addClass("hidden").empty(),PF.fn.growl.expirable(PF.fn._s("An error occurred. Please try again later."));t.data("uploading",!1)}}}else PF.fn.growl.call(PF.fn._s("Please select a valid image file type."))}),CHV.fn.user_background={delete:{submit:function(){return PF.obj.modal.form_data={action:"delete",delete:"background",owner:CHV.obj.resource.user.id},!0},deferred:{success:{before:function(e){$("[data-content=user-background-cover-src]").css("background-image","none"),$("[data-content=user-background-cover]").addClass("no-background").height(""),$("[data-content=user-upload-background]").removeClass("hidden").show(),$("[data-content=user-change-background]").hide(),$("#top-bar-shade").remove()},done:function(e){PF.fn.modal.close(function(){PF.fn.growl.expirable(PF.fn._s("Profile background image deleted."))})}},error:function(e){PF.fn.growl.expirable(PF.fn._s("Error deleting profile background image."))}}}},CHV.str.mainform="[data-content=main-form]",CHV.obj.timezone={selector:"[data-content=timezone]",input:"#timezone-region"},$(document).on("keyup change",CHV.str.mainform+" :input",function(){$(this).is("[name=username]")&&$("[data-text=username]").text($(this).val())}),$(document).on("change",CHV.obj.timezone.input,function(){var e=$(this).val(),t=$("#timezone-combo-"+e);t.find("option:first").prop("selected",!0),$(CHV.obj.timezone.selector).val(t.val()).change()}),$(document).on("change","[id^=timezone-combo-]",function(){var e=$(this).val();$(CHV.obj.timezone.selector).val(e).change()}),$(document).on("keyup change blur","[name^=new-password]",function(){var e=$("[name=new-password]"),t=$("[name=new-password-confirm]"),a=e.val()==t.val(),o=t.closest(".input-password").find(".input-warning");0==o.exists()&&(o=$("[data-message=new-password-confirm]")),$(this).is(t)&&t.data("touched",!0),t.data("touched")&&o.text(a?"":o.data("text"))[a?"addClass":"removeClass"]("hidden-visibility")}),$(document).on("submit",CHV.obj.mainform,function(){switch($(this).data("type")){case"password":var e=$("[name=new-password]",this),t=$("[name=new-password-confirm]",this);if((""!==e.val()||""!==t.val())&&e.val()!==t.val())return e.highlight(),t.highlight(),PF.fn.growl.expirable(PF.fn._s("Passwords don't match")),!1}}),$(document).on("click","[data-action=check-for-updates]",function(){PF.fn.loading.fullscreen(),CHV.fn.system.checkUpdates(function(e){if(PF.fn.loading.destroy("fullscreen"),200===e.status){var t=e.responseJSON.software;-1==PF.fn.versionCompare(CHV.obj.system_info.version,t.current_version)?PF.fn.modal.simple({title:PF.fn._s("Update available v%s",t.current_version),message:"<p>"+PF.fn._s("There is an update available for your system. You can automatic download and install this update or go to %s to proceed to download the file.",'<a href="'+CHEVERETO.source.url+'" target="_blank">'+CHEVERETO.source.label+"</a>")+"<p>"+PF.fn._s("The release notes for this update are:")+'</p><textarea class="r4 resize-vertical">'+t.release_notes+'</textarea><div class="btn-container margin-bottom-0"><a href="'+PF.obj.config.base_url+"/update/?auth_token="+PF.obj.config.auth_token+'" class="btn btn-input default">'+PF.fn._s("Update now")+'</a> <span class="btn-alt">'+PF.fn._s("or")+' <a data-action="cancel">'+PF.fn._s("cancel")+"</a></span></div>",html:!0}):PF.fn.growl.call(PF.fn._s("This website is running latest %s version",CHEVERETO.edition))}else PF.fn.growl.call(PF.fn._s("An error occurred. Please try again later."))})}),void 0!==PF.fn.get_url_var("checkUpdates")&&$("[data-action=check-for-updates]").click(),$("body#image").exists()&&window.scrollY>0&&$("#top-bar").removeClass("transparent"),$(document).on("click","[data-action=toggle-storage-https]",function(){CHV.fn.storage.toggleHttps($(this).closest("[data-content=storage]").data("storage-id"))}),$(document).on("click","[data-action=toggle-storage-active]",function(){CHV.fn.storage.toggleActive($(this).closest("[data-content=storage]").data("storage-id"))}),$(CHV.fn.uploader.selectors.root).exists()&&(CHV.fn.uploader.$pasteCatcher=$("<div />",{contenteditable:"true",id:CHV.fn.uploader.selectors.paste.replace(/#/,"")}),$("body").append(CHV.fn.uploader.$pasteCatcher),$(document).keydown(function(e){var t=e.keyCode,a=e.ctrlKey||e.metaKey;a&&86==t&&!$(e.target).is(":input")&&CHV.fn.uploader.$pasteCatcher.focus(e)}),window.addEventListener("paste",CHV.fn.uploader.pasteImageHandler)),$(document).on("click","[data-action=like]",function(){if(PF.fn.is_user_logged()){var e=$(this);if(!e.data("XHR")){e.data("XHR",!0);var t=$(this).is("[data-liked]")?$(this):$(this).closest("[data-liked]"),a=!t.closest("[data-list], .viewer").exists()&&void 0!==CHV.obj.resource,o=t.is("[data-liked=1]"),i=o?"dislike":"like",r={id:a?CHV.obj.resource.id:$(this).closest("[data-id]").attr("data-id"),type:a?CHV.obj.resource.type:$(this).closest("[data-type]").attr("data-type")},n=a?e:$("[data-type="+r.type+"][data-id="+r.id+"]"),s={type:"POST",data:{action:i},cache:!1};s.data[i]={object:r.type,id:r.id},$.ajax(s).complete(function(t){var i=t.responseJSON;e.data("XHR",!1),200===i.status_code?(a&&void 0!==i.content&&$("[data-text=likes-count]").html(i.content.likes),n.attr("data-liked",o?0:1)):PF.fn.growl.expirable(PF.fn._s("An error occurred. Please try again later."))})}}else window.location.href=CHV.obj.vars.urls.login}),$(document).on("click","[data-action=follow]",function(){if(PF.fn.is_user_logged()){var e=$(this);if(!e.data("XHR")){e.data("XHR",!0);var t=$(this).is("[data-followed]")?$(this):$(this).closest("[data-followed]"),a=void 0!==CHV.obj.resource,o=t.is("[data-followed=1]"),i=o?"unfollow":"follow",r={id:a?CHV.obj.resource.id:$(this).closest("[data-id]").data("id"),type:a?CHV.obj.resource.type:$(this).closest("[data-type]").data("type")},n={type:"POST",data:{action:i},cache:!1};n.data[i]={object:r.type,id:r.id},$.ajax(n).complete(function(i){var r=i.responseJSON;if(e.data("XHR",!1),200===r.status_code){if(a&&void 0!==r.user_followed){var n=$("[data-text=followers-label]"),s={single:n.data("label-single"),plural:n.data("label-plural")};$("[data-text=followers-count]").html(r.user_followed.followers),n.html(PF.fn._n(s.single,s.plural,r.user_followed.followers))}t.attr("data-followed",o?0:1)}else PF.fn.growl.expirable(PF.fn._s("An error occurred. Please try again later."))})}}else PF.fn.modal.call({type:"login"})}),$(document).on("click","[data-action=top-bar-notifications]",function(e){var a=this,o=$(this),i=$(".top-bar-notifications-container",o),r=$(".top-bar-notifications-list",o),n=$("ul",r),s=$(".loading",i);o.data("XHR")||(s.removeClass("hidden"),PF.fn.loading.inline(s,{size:"small",message:PF.fn._s("loading")}),$.ajax({type:"POST",data:{action:"notifications"},cache:!1}).complete(function(e){var l=e.responseJSON;if(200!==l.status_code)return PF.fn.growl.expirable(PF.fn._s("An error occurred. Please try again later.")),o.data("XHR",!1),void s.addClass("hidden").html("");if(o.data("XHR",!0),s.remove(),l.html){r.removeClass("hidden"),n.html(l.html),t();var d=$("li.new",n);d.addClass("transition"),setTimeout(function(){d.removeClass("new"),$("[data-content=notifications-counter]",a).removeClass("on").html("0"),setTimeout(function(){d.removeClass("transition")},150)},1500)}else $(".empty",i).removeClass("hidden")}))}),$("#g-recaptcha").is(":empty")&&CHV.obj.config.recaptcha.enabled&&CHV.obj.config.recaptcha.sitekey&&(reCaptchaCallback=function(){0!=$("#g-recaptcha").is(":empty")&&grecaptcha.render("g-recaptcha",{sitekey:CHV.obj.config.recaptcha.sitekey})},$.getScript("https://www.google.com/recaptcha/api.js?onload=reCaptchaCallback&render=explicit")),$(document).on("click",".list-item a.image-container",function(e){var t=$(this).closest(".list-item"),o=t.find("[data-action=load-image]");o.length>0&&(a(o),e.preventDefault())}),$(document).on("click",".list-item [data-action=load-image]",function(e){a($(this)),e.preventDefault(),e.stopPropagation()}),$(document).on("click","#album [data-tab=tab-codes]",function(){var e=$(".content-listing-loading","#tab-codes");if(e.exists()){var t=$("#embed-codes");$.ajax({type:"POST",data:{action:"get-album-contents",albumid:CHV.obj.resource.id},cache:!1}).always(function(a){PF.fn.loading.destroy(e),200==a.status_code&&(CHV.fn.fillEmbedCodes(a.contents,"#tab-codes"),t.removeClass("soft-hidden"))})}}),$("body").is("#upload")&&CHV.fn.uploader.toggle({show:!0}),$(document).on("keyup",function(e){if(!$(PF.obj.modal.selectors.root).exists()&&$(".viewer").exists()&&e.which in CHV.fn.listingViewer.keys){var t=[88,37,39],a=CHV.fn.listingViewer.keys[e.which];-1==t.indexOf(e.which)?$("[data-action="+a+"]",CHV.fn.listingViewer.selectors.root).click():a in CHV.fn.listingViewer&&CHV.fn.listingViewer[a]()}}),$(document).on("click",CHV.fn.listingViewer.selectors.root+" [data-action^=viewer-]",function(){var e=$(this).data("action").substring("viewer-".length);e in CHV.fn.listingViewer&&CHV.fn.listingViewer[e]()}),$(document).on("click","a[data-href]:not([rel=popup-link]):not(.popup-link)",function(){var e=$(this).attr("data-href"),t=$(this).attr("href");(e||t)&&(location.href=t||e)}),void 0!==CHV.obj.config&&CHV.obj.config.listing.viewer&&$(document).on("click",PF.obj.listing.selectors.list_item+"[data-type=image] a.image-container",function(e){e.preventDefault(),e.stopPropagation();var t=$(this).closest(PF.obj.listing.selectors.list_item);t.exists()&&CHV.fn.listingViewer.open(t)}),$(document).on("contextmenu",CHV.fn.listingViewer.selectors.src,function(e){return e.preventDefault(),!1});var p=PF.fn.deparam(window.location.search);if(p&&"viewer"in p){var g=$(PF.obj.listing.selectors.content_listing_visible);if("images"==g.data("list")){var h=$(PF.obj.listing.selectors.list_item,g)["next"==p.viewer?"first":"last"]();CHV.fn.listingViewer.open(h)}}}),"undefined"==typeof CHV&&(CHV={obj:{},fn:{},str:{}}),window.opener&&(CHV.obj.opener={uploadPlugin:{}}),CHV.fn.listingViewer={selectors:{bodyShown:".--viewer-shown",template:"#viewer-template",root:".viewer",rootShow:".viewer--show",rootHide:".viewer--hide",rootZero:".viewer--zero",rootNavPrev:".viewer--nav-prev",rootNavNext:".viewer--nav-next",src:".viewer-src",tools:".viewer-tools",loader:".viewer-loader",owner:".viewer-owner",ownerGuest:".viewer-owner--guest",ownerUser:".viewer-owner--user",inputMap:".viewer-kb-input"},keys:{83:"select",76:"like",70:"flag",69:"edit",65:"move",75:"approve",46:"delete",88:"close",37:"prev",39:"next"},keymap:{select:["S",PF.fn._s("Toggle select")],like:["L",PF.fn._s("Like")],flag:["F",PF.fn._s("Toggle flag")],edit:["E",PF.fn._s("Edit")],move:["A",PF.fn._s("Album")],approve:["K",PF.fn._s("Approve")],delete:["Del",PF.fn._s("Delete")],close:["X",PF.fn._s("Close")],prev:["◀",PF.fn._s("Previous")],next:["▶",PF.fn._s("Next")]},loading:null,idleTimer:0,$item:null,show:function(){this.getEl("root").removeClass(this.selectors.rootHide.substring(1)).addClass(this.selectors.rootShow.substring(1)),$("body").addClass(this.selectors.bodyShown.substring(1));var e=new Hammer($(CHV.fn.listingViewer.selectors.root).get(0),{direction:Hammer.DIRECTION_VERTICAL});e.on("swipeleft swiperight",function(e){var t="left"==e.type.substring("swipe".length)?"next":"prev";CHV.fn.listingViewer[t]()})},getItem:function(){return this.$item},getEl:function(e){var t=!e.startsWith("template")&&!e.startsWith("root")&&this.selectors.root;return t?$(this.selectors[e],t):$(this.selectors[e])},getObject:function(e){if(e||void 0===this.object){var t=decodeURIComponent(this.getItem().attr("data-object"));this.object=JSON&&JSON.parse(t)||$.parseJSON(t)}return this.object},placeholderSizing:function(){if(this.getEl("root").exists()){var e=Math.max(document.documentElement.clientWidth,window.innerWidth||0),t=Math.max(document.documentElement.clientHeight,window.innerHeight||0),a=e/t,o=this.getEl("src")[0],i=o.getAttribute("width"),r=o.getAttribute("height"),n=i/r,s=a<n;o.classList.remove("--width-auto","--height-auto"),o.classList.add("--"+(s?"height":"width")+"-auto")}},filler:function(e){var t=this,a=this.getEl("root");if(e){var o=$(this.getParsedTemplate());a.html(o.html())}a[(this.getItem().hasClass("selected")?"add":"remove")+"Class"]("selected");var i=["prev","next"];$.each(i,function(e,o){var i=t.selectors["rootNav"+(o.charAt(0).toUpperCase()+o.slice(1).toLowerCase())],r=$(PF.obj.listing.selectors.content_listing_pagination+":visible").length>0?"add":t.getItem()[o]().exists()?"add":"remove";a[r+"Class"](i.substring(1))}),$.each(this.getItem().get(0).attributes,function(e,t){if(!t.name.startsWith("data-"))return!0;a.attr(t.name,t.value)});var r=void 0===this.object.user?"user":"guest";r="owner"+(r.charAt(0).toUpperCase()+r.slice(1).toLowerCase()),this.getEl(r).remove(),void 0!==this.object.user&&$(this.object.user.avatar?".default-user-image":"img.user-image",this.getEl("ownerUser")).remove();var n=this.getItem().find(".list-item-image-tools");this.getEl("tools").append(n.html()),$.each(n.find("[data-action]"),function(e,a){var o=$(this).attr("data-action"),i=t.keymap[o];$('<div class="viewer-kb-key" data-key="'+i[0]+'"><kbd>'+i[0]+"</kbd><span>"+PF.fn._s(i[1])+"</span></div>").appendTo(t.getEl("inputMap"))}),this.placeholderSizing(),this.trickyLoad()},remove:function(){this.getEl("root").remove()},getParsedTemplate:function(){var e=this.getObject(!0),t=this.getEl("template").html(),a=t.match(/%(\S+)%/g);return a&&$.each(a,function(a,o){var i,r=o.slice(1,-1).split(".");r.map(function(t){var a=i||e;t in a&&(i=a[t])});var n=new RegExp(o,"g");t=t.replace(n,i)}),t},insertEl:function(){var e=this.getParsedTemplate();this.getEl("rootZero").remove(),$(e).appendTo("body")},toggleIdle:function(e,t){var a=this;t=void 0===t||t;$("html")[(e?"add":"remove")+"Class"]("--idle"),e||(clearTimeout(a.idleTimer),t&&(a.idleTimer=setTimeout(function(){var e=$(".fullscreen"),t=a.getEl("root");a.toggleIdle(t.length>0&&0==e.length)},5e3)))},open:function(e){this.setItem(e),this.insertEl(),this.filler(),this.show(),this.toggleIdle(!1);var t=this;this.getEl("root").on("mousemove mouseout",function(){t.toggleIdle(!1)})},setItem:function(e){this.$item=e},trickyLoad:function(){var e=this.getEl("loader");if(this.object.image.url!=this.object.display_url){var t=this.getEl("src").parent().html(),a=$(t).attr("src",this.object.image.url);a.insertBefore(this.getEl("src")),PF.fn.loading.inline(e,{color:"white",size:"small",center:!0,valign:!0}),e.hide().fadeIn("slow"),a.imagesLoaded(function(){a.next().remove(),PF.fn.loading.destroy(e)})}else e.remove()},close:function(){var e=this;$(this.selectors.root).removeClass(this.selectors.rootShow.substring(1)).addClass(this.selectors.rootHide.substring(1)),$("body").removeClass(this.selectors.bodyShown.substring(1)),this.toggleIdle(!1,!1),setTimeout(function(){e.remove()},200)},browse:function(e){var t=this.getItem()[e]();if(t.exists()){this.setItem(t),this.filler(!0);var a=$(PF.obj.listing.selectors.content_listing_visible).find("[data-action=load-more]"),o=t[e+"All"]().length;a.length>0&&o<=5&&!PF.obj.listing.calling&&"next"==e&&$("[data-action=load-more]").click()}else{var i=$("[data-pagination="+e+"]",PF.obj.listing.selectors.content_listing_pagination+":visible"),r=i.attr("href");if(!r)return;PF.fn.deparam(window.location.search);window.location.href=r+"&viewer="+e}},prev:function(){this.browse("prev")},next:function(){this.browse("next")}},CHV.obj.image_viewer={selector:"#image-viewer",container:"#image-viewer-container",navigation:".image-viewer-navigation",loading:"#image-viewer-loading",loader:"#image-viewer-loader"},CHV.obj.image_viewer.$container=$(CHV.obj.image_viewer.container),CHV.obj.image_viewer.$navigation=$(CHV.obj.image_viewer.navigation),CHV.obj.image_viewer.$loading=$(CHV.obj.image_viewer.loading),CHV.fn.system={checkUpdates:function(e){$.ajax({url:CHEVERETO.api.get.info+"/",data:{id:CHEVERETO.id},cache:!1}).always(function(t,a,o){"function"==typeof e&&e(o)})}},CHV.fn.bindSelectableItems=function(){var e="content-listing-wrapper",t="#"+e;$(t).exists()?$(t).hasClass("ui-selectable")&&$(t).selectable("destroy"):$("[data-content=list-selection]").closest(".content-width").wrap("<div id='"+e+"' />"),$("[data-content=list-selection]").exists()&&$("html.device-nonmobile "+t).selectable({delay:150,filter:PF.obj.listing.selectors.list_item,cancel:".content-empty, .header, #tab-share, #tab-full-info, .viewer-title, .header-link, .top-bar, .content-listing-pagination *, #fullscreen-modal, #top-user, #background-cover, .list-item-desc, .list-item-image-tools, [data-action=load-image], #tab-codes",selecting:function(e,t){var a=$(t.selecting),o=a.hasClass("selected");CHV.fn.list_editor[(o?"unselect":"select")+"Item"](a)},unselecting:function(e,t){CHV.fn.list_editor.unselectItem($(t.unselecting))}})},CHV.fn.isCachedImage=function(e){var t=new Image;return t.src=e,t.complete||t.width+t.height>0},CHV.fn.viewerImageZoomClass=function(){CHV.obj.image_viewer.$container.hasClass("jscursor-zoom-in")&&CHV.obj.image_viewer.$container.addClass("cursor-zoom-in").removeClass("jscursor-zoom-in")},CHV.fn.viewerLoadImage=function(){CHV.obj.image_viewer.$loading.exists()&&(CHV.obj.image_viewer.$loading.removeClass("soft-hidden").css({zIndex:2}),PF.fn.loading.inline(CHV.obj.image_viewer.$loading,{color:"white",size:"small",center:!0,valign:!0}),CHV.obj.image_viewer.$loading.hide().fadeIn("slow")),$(CHV.obj.image_viewer.loader).remove(),CHV.obj.image_viewer.image.html=CHV.obj.image_viewer.$container.html(),CHV.obj.image_viewer.$container.prepend($(CHV.obj.image_viewer.image.html).css({top:0,zIndex:0})),CHV.obj.image_viewer.$container.find("img").eq(0).css("zIndex",1),CHV.obj.image_viewer.$container.find("img").eq(1).attr("src",CHV.obj.image_viewer.image.url).css({width:"100%",height:"auto"}),CHV.obj.image_viewer.$container.find("img").eq(1).imagesLoaded(function(){CHV.obj.image_viewer.$container.find("img").eq(1).css({width:"",height:""}),CHV.obj.image_viewer.$container.find("img").eq(0).remove(),PF.fn.loading.destroy(CHV.obj.image_viewer.$loading)})},CHV.obj.embed_tpl={},CHV.obj.topBar={transparencyScrollToggle:function(){var e=$(window).scrollTop();$("#top-bar")[(e>0?"remove":"add")+"Class"]("transparent")}},CHV.obj.uploaderReset={isUploading:!1,canAdd:!0,queueStatus:"ready",uploadThreads:0,uploadParsedIds:[],uploadProcessedIds:[],files:{},results:{success:{},error:{}},toggleWorking:0,filesAddId:0,clipboardImages:[]},CHV.fn.uploader={selectors:{root:"#anywhere-upload",show:".upload-box--show",queue:"#anywhere-upload-queue",queue_complete:".queue-complete",queue_item:".queue-item",close_cancel:"[data-button=close-cancel]",file:"#anywhere-upload-input",camera:"#anywhere-upload-input-camera",upload_item_template:"#anywhere-upload-item-template",item_progress_bar:"[data-content=progress-bar]",item_progress_percent:"[data-text=progress-percent]",failed_result:"[data-content=failed-upload-result]",fullscreen_mask:"#fullscreen-uploader-mask",dropzone:"#uploader-dropzone",paste:"#anywhere-upload-paste",input:"[data-action=anywhere-upload-input]"},toggle:function(e,t){this.queueSize();var a=$("[data-action=top-bar-upload]",".top-bar"),o=!$(CHV.fn.uploader.selectors.root).data("shown");e=$.extend({callback:null,reset:!0},e);if(void 0!==e.show&&e.show&&(o=!0),PF.fn.growl.close(!0),PF.fn.close_pops(),!(1==this.toggleWorking||$(CHV.fn.uploader.selectors.root).is(":animated")||CHV.fn.uploader.isUploading||a.data("login-needed")&&!PF.fn.is_user_logged())){this.toggleWorking=1;var i={time:500,easing:null},r=function(){!o&&e.reset&&CHV.fn.uploader.reset(),PF.obj.follow_scroll.$node.exists()&&(PF.obj.follow_scroll.$node.removeClass("fixed"),PF.obj.follow_scroll.set()),PF.fn.topMenu.hide(),"function"==typeof e.callback&&e.callback(t),CHV.fn.uploader.boxSizer(),CHV.fn.uploader.toggleWorking=0};if($(CHV.fn.uploader.selectors.root)[(o?"add":"remove")+"Class"](this.selectors.show.substring(1)),o){if(!$("body").is("#upload")&&PF.fn.isDevice(["phone","phablet"])&&$("html").addClass("overflow-hidden"),$("html").data({"followed-scroll":$("html").hasClass("followed-scroll"),"top-bar-box-shadow-prevent":!0}).removeClass("followed-scroll").addClass("top-bar-box-shadow-none"),$("#top-bar").data({stock_classes:$("#top-bar").attr("class")}),$(".current[data-nav]",".top-bar").each(function(){$(this).is("[data-action=top-bar-menu-full]")||$(this).removeClass("current").attr("data-current",1)}),PF.fn.isDevice("mobile")){var n=$(".upload-box-heading",$(CHV.fn.uploader.selectors.root));n.css({position:"relative",top:.5*($(window).height()-n.height())+"px"})}CHV.fn.uploader.focus(function(){setTimeout(function(){r()},i.time)})}else{$("[data-nav][data-current=1]",".top-bar").each(function(){$(this).addClass("current")}),$(CHV.fn.uploader.selectors.fullscreen_mask).css({opacity:0}),setTimeout(function(){$(CHV.fn.uploader.selectors.fullscreen_mask).remove(),$("html").data("followed-scroll")&&$("html").addClass("followed-scroll")},250);var s=$(CHV.fn.uploader.selectors.root).outerHeight(),l=s-parseInt($(CHV.fn.uploader.selectors.root).data("initial-height"))+"px";$(CHV.fn.uploader.selectors.root).css({transform:"translate(0,-"+l+")"}),setTimeout(function(){$("#top-bar").attr("class",$("#top-bar").data("stock_classes")),$("html").removeClass($(".follow-scroll-wrapper.position-fixed").exists()?"":"top-bar-box-shadow-none")},1*i.time/3),setTimeout(function(){$(CHV.fn.uploader.selectors.root).css({top:""}),$("body#image").exists()&&CHV.obj.topBar.transparencyScrollToggle(),r(),$("html,body").removeClass("overflow-hidden").data({"top-bar-box-shadow-prevent":!1})},i.time)}$(CHV.fn.uploader.selectors.root).data("shown",o),a.toggleClass("current").removeClass("opened")}},reset:function(){$.extend(this,$.extend(!0,{},CHV.obj.uploaderReset)),$("li",this.selectors.queue).remove(),$(this.selectors.root).height("").css({"overflow-y":"","overflow-x":""}),$(this.selectors.queue).addClass("queueEmpty").removeClass(this.selectors.queue_complete.substring(1)),$(this.selectors.input,this.selectors.root).each(function(){$(this).prop("value",null)}),$("[data-group=upload-result] textarea",this.selectors.root).prop("value",""),$.each(["upload-queue-ready","uploading","upload-result","upload-queue-ready","upload-queue"],function(e,t){$("[data-group="+t+"]").hide()}),$("[data-group=upload]",this.selectors.root).show(),$("[name=upload-album-id]",this.selectors.root).prop("value",function(){var e=$("option[selected]",this);if(e.exists())return e.attr("value")}),$(this.selectors.root).removeClass("queueCompleted queueReady queueHasResults").addClass("queueEmpty").attr("data-queue-size",0),$("[name=upload-category-id]",this.selectors.root).prop("value",""),$("[name=upload-nsfw]",this.selectors.root).prop("checked",this.defaultChecked),this.boxSizer(!0)},focus:function(e){$(this.selectors.fullscreen_mask).exists()||($("body").is("#upload")||$("body").append($("<div/>",{id:this.selectors.fullscreen_mask.replace("#",""),class:"fullscreen soft-black"}).css({top:PF.fn.isDevice("phone")?0:$(CHV.fn.uploader.selectors.root).data("top")})),setTimeout(function(){$("body").is("#upload")||$(CHV.fn.uploader.selectors.fullscreen_mask).css({opacity:1}),setTimeout(function(){"function"==typeof e&&e()},PF.fn.isDevice(["phone","phablet"])?0:250)},1))},boxSizer:function(e){var t=$(this.selectors.root).is(this.selectors.show),a=t||e;t&&!$("body").is("#upload")&&$("html")[(PF.fn.isDevice(["phone","phablet"])?"add":"remove")+"Class"]("overflow-hidden"),a&&($(this.selectors.root).height(""),!$("body").is("#upload")&&$(this.selectors.root).height()>$(window).height()?($(this.selectors.root).height($(window).height()).css({"overflow-y":"scroll","overflow-x":"auto"}),$("body").addClass("overflow-hidden")):($(this.selectors.root).css("overflow-y",""),$("body").removeClass("overflow-hidden")))},pasteURL:function(){var e=$("[name=urls]","#fullscreen-modal").val();e&&(CHV.fn.uploader.toggle({show:!0}),CHV.fn.uploader.add({},e))},pasteImageHandler:function(e){if(!$(e.target).is(":input")){if(void 0!==e.clipboardData&&e.clipboardData.items)var t=e.clipboardData.items;else setTimeout(function(){return e.clipboardData={},e.clipboardData.items=[],$.each($("img",CHV.fn.uploader.$pasteCatcher),function(t,a){e.clipboardData.items.push(PF.fn.dataURItoBlob($(this).attr("src")))}),$(CHV.fn.uploader.selectors.paste).html(""),CHV.fn.uploader.pasteImageHandler(e)},1);if(t)for(var a=0;a<t.length;a++)if(-1!==t[a].type.indexOf("image")){var o=t[a]instanceof Blob?t[a]:t[a].getAsFile(),i=new FileReader;i.onload=function(e){var t=$(CHV.fn.uploader.selectors.root).data("shown");o.name=PF.fn._s("Clipboard image")+" "+PF.fn.getDateTime();var a={originalEvent:{dataTransfer:{files:[o]},preventDefault:function(){},stopPropagation:function(){},clipboard:!0,dataURL:e.target.result,name:o.name}};t?CHV.fn.uploader.add(a):CHV.fn.uploader.toggle({callback:function(){CHV.fn.uploader.add(a)}})},i.readAsDataURL(o)}}},add:function(e,t){function a(e){if(void 0===e)e=0;if(e in r){var t=r[e];$(CHV.fn.uploader.selectors.queue_item+":not([data-id]) .load-url",CHV.fn.uploader.selectors.queue)[void 0!==t.url?"show":"remove"](),loadImage.parseMetaData(t.url?t.url:t,function(o){$(CHV.fn.uploader.selectors.queue_item+":not([data-id]) .preview:empty",CHV.fn.uploader.selectors.queue).first().closest("li").attr("data-id",t.uid),loadImage(t.url?t.url:t,function(e){++g;var a=$(CHV.fn.uploader.selectors.queue_item+"[data-id="+t.uid+"]",CHV.fn.uploader.selectors.queue);if("error"===e.type)n.push({uid:t.uid,name:t.name.truncate_middle()});else{$("[data-group=upload-queue]",CHV.fn.uploader.selectors.root).is(":visible")||$("[data-group=upload-queue]",CHV.fn.uploader.selectors.root).css("display","block");var i="image/jpeg";if(void 0!==o.buffer){for(var s=new Uint8Array(o.buffer).subarray(0,4),l="",d=0;d<s.length;d++)l+=s[d].toString(16);var c={"89504e47":"image/png",47494638:"image/gif",ffd8ffe0:"image/jpeg"};$.each(["ffd8ffe1","ffd8ffe2"],function(e,t){c[t]=c.ffd8ffe0}),void 0!==c[l]&&(i=c[l])}var u=null;if(void 0!==t.name){var m=PF.fn.baseName(t.name);u=$.trim(m.substring(0,100).capitalizeFirstLetter())}CHV.fn.uploader.files[t.uid].parsedMeta={title:u,width:e.originalWidth,height:e.originalHeight,mimetype:i},a.show(),$(CHV.fn.uploader.selectors.root).addClass("queueReady").removeClass("queueEmpty"),$("[data-group=upload-queue-ready]",CHV.fn.uploader.selectors.root).show(),$("[data-group=upload]",CHV.fn.uploader.selectors.root).hide(),a.find(".load-url").remove(),a.find(".preview").removeClass("soft-hidden").show().append(e),$img=a.find(".preview").find("img,canvas"),$img.attr("class","canvas"),queue_item_h=a.height(),queue_item_w=a.width();var f=parseInt($img.attr("width"))||$img.width(),h=parseInt($img.attr("height"))||$img.height(),b=f/h;if($img.hide(),f>h||f==h){var v=h<queue_item_h?h:queue_item_h;f>h&&$img.height(v).width(v*b)}if(f<h||f==h){var _=f<queue_item_w?f:queue_item_w;f<h&&$img.width(_).height(_/b)}f==h&&$img.height(v).width(_),$img.css({marginTop:-$img.height()/2,marginLeft:-$img.width()/2}).show(),CHV.fn.uploader.boxSizer()}if(g==r.length){if(void 0!==p&&(n=n.concat(p)),PF.fn.loading.destroy("fullscreen"),n.length>0){var C="";for(d=0;d<n.length;d++)C+="<li>"+PF.fn.htmlEncode(n[d].name)+"</li>",delete CHV.fn.uploader.files[n[d].uid],$("li[data-id="+n[d].uid+"]",CHV.fn.uploader.selectors.queue).find("[data-action=cancel]").click();PF.fn.modal.simple({title:PF.fn._s("Some files couldn't be added"),message:"<ul>"+C+"</ul>"})}else CHV.fn.uploader.focus();CHV.fn.uploader.boxSizer()}},$.extend({},h,{orientation:o.exif?o.exif.get("Orientation"):1})),setTimeout(function(){a(e+1)},25)})}else PF.fn.loading.destroy("fullscreen")}var o;if(!this.canAdd){e=e.originalEvent;return e.preventDefault(),e.stopPropagation(),!1}$fileinput=$(this.selectors.file),$fileinput.replaceWith($fileinput=$fileinput.clone(!0));var i=$(this.selectors.upload_item_template).html(),r=[];if(void 0===t){e=e.originalEvent;if(e.preventDefault(),e.stopPropagation(),r=e.dataTransfer||e.target,r=$.makeArray(r.files),e.clipboard){if(o=PF.fn.md5(e.dataURL),-1!=$.inArray(o,this.clipboardImages))return null;this.clipboardImages.push(o)}for(var n=[],s=0;s<r.length;s++){var l,d=r[s];l=void 0===d.type||""==d.type?d.name.substr(d.name.lastIndexOf(".")+1).toLowerCase():d.type.replace("image/",""),d.size>CHV.obj.config.image.max_filesize.getBytes()?n.push({uid:s,name:d.name.truncate_middle()+" - "+PF.fn._s("File too big.")}):-1!=CHV.obj.config.upload.image_types.indexOf(l)||0!=/android/i.test(navigator.userAgent)?(o&&(d.md5=o),d.fromClipboard=1==e.clipboard,d.uid=s):n.push({uid:s,name:d.name.truncate_middle()+" - "+PF.fn._s("Invalid or unsupported file format.")})}for(s=0;s<n.length;s++){var c=n[s];r.splice(c.id,1)}if(n.length>0&&0==r.length){var u="";for(s=0;s<n.length;s++)u+="<li>"+PF.fn.htmlEncode(n[s].name)+"</li>";return void PF.fn.modal.simple({title:PF.fn._s("Some files couldn't be added"),message:"<ul><li>"+u+"</ul>"})}if(0==r.length)return}else{if(t=t.replace(/(<([^>]+)>)/g,"").replace(/(\[([^\]]+)\])/g,""),r=t.match_urls(),!r)return;r=r.array_unique(),r=$.map(r,function(e,t){return{uid:t,name:e,url:e}})}if($.isEmptyObject(this.files))for(s=0;s<r.length;s++)this.files[r[s].uid]=r[s],this.filesAddId++;else{var m=[];for(var f in this.files)void 0!==this.files[f]&&"function"!=typeof this.files[f]&&m.push(encodeURI(this.files[f].name));r=$.map(r,function(e,t){return-1!=$.inArray(encodeURI(e.name),m)?null:(e.uid=CHV.fn.uploader.filesAddId,CHV.fn.uploader.filesAddId++,e)});for(s=0;s<r.length;s++)this.files[r[s].uid]=r[s]}$(this.selectors.queue,this.selectors.root).append(i.repeat(r.length)),$(this.selectors.queue+" "+this.selectors.queue_item+":not([data-id])",this.selectors.root).hide();var p=n,g=(n=[],0),h={canvas:!0,maxWidth:590};PF.fn.loading.fullscreen(),a(),this.queueSize()},queueSize:function(){$(this.selectors.root).attr("data-queue-size",Object.size(this.files)),$("[data-text=queue-objects]",this.selectors.root).text(PF.fn._n("image","images",Object.size(this.files))),$("[data-text=queue-size]",this.selectors.root).text(Object.size(this.files))},queueProgress:function(e,t){var a=Object.size(this.files);this.files[t].progress=e.loaded/e.total;for(var o=0,i=0;i<a;i++)void 0!==this.files[i]&&"progress"in this.files[i]&&(o+=this.files[i].progress);$("[data-text=queue-progress]",this.selectors.root).text(parseInt(100*o/a))},upload:function(e){var t=e.data("id"),a=!!e.next().exists()&&e.next().data("id");if(-1===$.inArray(t,this.uploadParsedIds)){var o=this;this.uploadParsedIds.push(t);var i=this.files[t];if(void 0!==i){var r=void 0!==i.url,n=r?i.url:i,s=void 0!==i.formValues;if(void 0!==i){this.uploadThreads+=1,this.uploadThreads<CHV.obj.config.upload.threads&&a&&this.upload(e.next()),this.isUploading=!0;var l=new FormData,d={source:null,type:r?"url":"file",action:"upload",privacy:$("[data-privacy]",this.selectors.root).first().data("privacy"),timestamp:this.timestamp,auth_token:PF.obj.config.auth_token,category_id:$("[name=upload-category-id]",this.selectors.root).val()||null,nsfw:$("[name=upload-nsfw]",this.selectors.root).prop("checked")?1:0,album_id:$("[name=upload-album-id]",this.selectors.root).val()||null};r?d.source=n:l.append("source",n,i.name),s&&$.each(i.formValues,function(e,t){d[e.replace(/image_/g,"")]=t}),$.each(d,function(e,t){if(null===t)return!0;l.append(e,t)}),this.files[t].xhr=new XMLHttpRequest,e.removeClass("waiting"),$(".block.edit, .queue-item-button.edit",e).remove(),r?(this.queueSize(),this.queueProgress({loaded:1,total:1},t),this.itemLoading(e)):this.files[t].xhr.upload.onprogress=function(a){a.lengthComputable&&(CHV.fn.uploader.queueProgress(a,t),percentComplete=parseInt(a.loaded/a.total*100),$(CHV.fn.uploader.selectors.item_progress_percent,e).text(percentComplete),$(CHV.fn.uploader.selectors.item_progress_bar,e).width(100-percentComplete+"%"),
100==percentComplete&&($(CHV.fn.uploader.selectors.item_progress_percent,e).text(""),CHV.fn.uploader.itemLoading(e)))},this.files[t].xhr.onreadystatechange=function(){var i=!1;if(4==this.readyState&&void 0!==CHV.fn.uploader.files[t].xhr&&0!==CHV.fn.uploader.files[t].xhr.status){o.uploadProcessedIds.push(t),o.uploadThreads-=1,$(".loading-indicator",e).remove(),e.removeClass("waiting uploading");try{var r="json"!==this.responseType?JSON.parse(this.response):this.response;void 0!==r&&200==this.status?$("[data-group=image-link]",e).attr("href",r.image.url_viewer):("PDOException"==r.error.context&&(r.error.message="Database error"),r.error.message=CHV.fn.uploader.files[t].name.truncate_middle()+" - "+r.error.message),CHV.fn.uploader.results[200==this.status?"success":"error"][t]=r,200!==this.status&&(i=!0)}catch(e){var n;i=!0,n=void 0===r?{status:500,statusText:"Internal server error"}:{status:400,statusText:r.error.message},r={status_code:n.status,error:{message:CHV.fn.uploader.files[t].name.truncate_middle()+" - Server error ("+n.statusText+")",code:n.status,context:"XMLHttpRequest"},status_txt:n.statusText};var s=Object.size(CHV.fn.uploader.results.error)+1;CHV.fn.uploader.results.error[s]=r}e.addClass(i?"failed":"completed"),void 0!==r.error&&void 0!==r.error.message&&(e.attr("rel","tooltip").data("tiptip","top").attr("title",r.error.message),PF.fn.bindtipTip(e)),o.uploadThreads<CHV.obj.config.upload.threads&&a&&(CHV.fn.uploader.upload(e.next()),$(CHV.fn.uploader.selectors.root).addClass("queueHasResults")),o.uploadProcessedIds.length==Object.size(o.files)&&CHV.fn.uploader.displayResults(),$(".done",e).fadeOut()}},this.files[t].xhr.open("POST",PF.obj.config.json_api,!0),this.files[t].xhr.setRequestHeader("Accept","application/json"),this.files[t].xhr.send(l)}else e.next().exists()&&this.upload(e.next())}}else e.next().exists()&&this.upload(e.next())},itemLoading:function(e){PF.fn.loading.inline($(".progress",e),{color:"#FFF",size:"normal",center:!0,position:"absolute",shadow:!0}),$("[data-action=cancel], [data-action=edit]",e).hide()},displayResults:function(){CHV.fn.uploader.isUploading=!1;for(var e="[data-group=upload-result][data-result=%RESULT%]",t=["error","mixed","success"],a={},o=0;o<t.length;o++)a[t[o]]=e.replace("%RESULT%",t[o]);if(Object.size(this.results.error)>0){var i=[];for(var o in this.results.error)"object"==typeof this.results.error[o]&&(i[o]=this.results.error[o].error.message);i.length>0&&$(this.selectors.failed_result).html("<li>"+i.join("</li><li>")+"</li>")}else $(a.error,this.selectors.root).hide();if(!window.opener&&0==CHV.obj.config.upload.moderation&&CHV.obj.config.upload.redirect_single_upload&&1==Object.size(this.results.success)&&0==Object.size(this.results.error))return window.location.href=this.results.success[0].image.url_viewer,!1;if($("[data-text=queue-progress]",this.selectors.root).text(100),$("[data-group=uploading]",this.selectors.root).hide(),$(this.selectors.root).removeClass("queueUploading queueHasResults").addClass("queueCompleted"),$(this.selectors.queue).addClass(this.selectors.queue_complete.substring(1)),Object.size(this.results.success)>0&&$("[data-group=upload-result] textarea",this.selectors.root).exists()&&CHV.fn.fillEmbedCodes(this.results.success,CHV.fn.uploader.selectors.root,"val"),Object.size(this.results.success)>0&&Object.size(this.results.error)>0?$(a.mixed+", "+a.success,this.selectors.root).show():Object.size(this.results.success)>0?$(a.success,this.selectors.root).show():Object.size(this.results.error)>0&&$(a.error,this.selectors.root).show(),$(a.success,this.selectors.root).is(":visible")){$(a.success,this.selectors.root).find("[data-group^=user], [data-group=guest]").hide(),$(a.success,this.selectors.root).find("[data-group="+(PF.fn.is_user_logged()?"user":"guest")+"]").show();var r=Object.keys(this.results.success)[0];if(void 0!==this.results.success[r].image.album){var n=[];for(var s in this.results.success){var l=this.results.success[s].image;l.album&&l.album.id_encoded&&-1==n.indexOf(l.album.id_encoded)&&n.push(l.album.id_encoded)}var d={link:null,text:null};if(n.length<=1?(d.link=this.results.success[r].image.album.url,d.text=this.results.success[r].image.album.name):(d.link=this.results.success[r].image.user.url_albums,d.text=PF.fn._s("%s's Albums",this.results.success[r].image.user.name_short_html)),$("[data-text=upload-target]",this.selectors.root).text(d.text),$("[data-link=upload-target]",this.selectors.root).attr("href",d.link),PF.fn.is_user_logged()){var c=n.length>0?"album":"stream";$("[data-group=user-"+c+"]",this.selectors.root).show()}}}if(this.boxSizer(),this.queueStatus="done",window.opener&&void 0!==CHV.obj.opener.uploadPlugin[window.name]){if($('[data-action="copy"]',this.selectors.root).remove(),CHV.obj.opener.uploadPlugin[window.name].hasOwnProperty("autoInsert")&&CHV.obj.opener.uploadPlugin[window.name].autoInsert){var u=$(':input[name="'+CHV.obj.opener.uploadPlugin[window.name].autoInsert+'"]',CHV.fn.uploader.selectors.root),m=u.val();if(m)return window.opener.postMessage({id:window.name,message:m},"*"),void window.close()}}else $('[data-action="openerPostMessage"]',this.selectors.root).remove()}},$.extend(CHV.fn.uploader,$.extend(!0,{},CHV.obj.uploaderReset)),CHV.fn.fillEmbedCodes=function(e,t,a){void 0===a&&(a="val"),$.each(e,function(e,o){if(void 0!==o){var i="id_encoded"in o?o:o.image;if(!i.medium){i.medium={};for(var r=["filename","name","width","height","extension","size","size_formatted","url"],n=0;n<r.length;n++)i.medium[r[n]]=i[r[n]]}var s=Object.flatten(i);$.each(CHV.obj.embed_tpl,function(e,o){$.each(o.options,function(e,o){var i=o,r=$("textarea[name="+e+"]",t),n=i.template;for(var l in s)s.hasOwnProperty(l)&&(n=n.replace(new RegExp("%"+l.toUpperCase()+"%","g"),s[l]));r[a](r.val()+n+("thumb"==r.data("size")?" ":"\n"))})})}}),$.each(CHV.obj.embed_tpl,function(e,o){$.each(o.options,function(e,o){var i=$("textarea[name="+e+"]",t);i[a]($.trim(i.val()))})})},CHV.fn.resource_privacy_toggle=function(e){e||(e="public"),$("[data-content=privacy-private]").hide(),"public"!==e&&$("[data-content=privacy-private]").show()},CHV.fn.submit_create_album=function(){var e=$(PF.obj.modal.selectors.root);return""==$("[name=form-album-name]",e).val()?(PF.fn.growl.call(PF.fn._s("You must enter the album name.")),$("[name=form-album-name]",e).highlight(),!1):(PF.obj.modal.form_data={action:"create-album",type:"album",album:{name:$("[name=form-album-name]",e).val(),description:$("[name=form-album-description]",e).val(),privacy:$("[name=form-privacy]",e).val(),password:"password"==$("[name=form-privacy]",e).val()?$("[name=form-album-password]",e).val():null,new:!0}},!0)},CHV.fn.complete_create_album={success:function(e){var t=e.responseJSON.album;window.location=t.url},error:function(e){var t=e.responseJSON;PF.fn.growl.call(PF.fn._s(t.error.message))}},CHV.fn.submit_upload_edit=function(){var e=$(PF.obj.modal.selectors.root),t=!1;return $("[data-content=form-new-album]",e).is(":visible")&&""==$("[name=form-album-name]",e).val()?(PF.fn.growl.call(PF.fn._s("You must enter the album name.")),$("[name=form-album-name]",e).highlight(),!1):($("[data-content=form-new-album]",e).is(":visible")&&(t=!0),PF.obj.modal.form_data={action:t?"create-album":"move",type:"images",album:{ids:$.map(CHV.fn.uploader.results.success,function(e){return e.image.id_encoded}),new:t}},t?(PF.obj.modal.form_data.album.name=$("[name=form-album-name]",e).val(),PF.obj.modal.form_data.album.description=$("[name=form-album-description]",e).val(),PF.obj.modal.form_data.album.privacy=$("[name=form-privacy]",e).val(),"password"==PF.obj.modal.form_data.album.privacy&&(PF.obj.modal.form_data.album.password=$("[name=form-album-password]",e).val())):PF.obj.modal.form_data.album.id=$("[name=form-album-id]",e).val(),!0)},CHV.fn.complete_upload_edit={success:function(e){var t=e.responseJSON.album;window.location=t.url},error:function(e){var t=e.responseJSON;PF.fn.growl.call(PF.fn._s(t.error.message))}},CHV.fn.before_image_edit=function(){var e=$("[data-ajax-deferred='CHV.fn.complete_image_edit']");$("[data-content=form-new-album]",e).hide(),$("#move-existing-album",e).show()},CHV.fn.submit_image_edit=function(){var e=$(PF.obj.modal.selectors.root),t=!1;return $("[data-content=form-new-album]",e).is(":visible")&&""==$("[name=form-album-name]",e).val()?(PF.fn.growl.call(PF.fn._s("You must enter the album name.")),$("[name=form-album-name]",e).highlight(),!1):($("[data-content=form-new-album]",e).is(":visible")&&(t=!0),PF.obj.modal.form_data={action:"edit",edit:"image",editing:{id:CHV.obj.resource.id,category_id:$("[name=form-category-id]",e).val()||null,title:$("[name=form-image-title]",e).val()||null,description:$("[name=form-image-description]",e).val()||null,nsfw:$("[name=form-nsfw]",e).prop("checked")?1:0,new_album:t}},t?(PF.obj.modal.form_data.editing.album_privacy=$("[name=form-privacy]",e).val(),"password"==PF.obj.modal.form_data.editing.album_privacy&&(PF.obj.modal.form_data.editing.album_password=$("[name=form-album-password]",e).val()),PF.obj.modal.form_data.editing.album_name=$("[name=form-album-name]",e).val(),PF.obj.modal.form_data.editing.album_description=$("[name=form-album-description]",e).val()):PF.obj.modal.form_data.editing.album_id=$("[name=form-album-id]",e).val(),!0)},CHV.fn.complete_image_edit={success:function(e){var t=e.responseJSON.image;if(t.album.id_encoded||(t.album.id_encoded=""),CHV.obj.image_viewer.album.id_encoded!==t.album.id_encoded){CHV.obj.image_viewer.album.id_encoded=t.album.id_encoded;var a={html:t.album.slice&&t.album.slice.html?t.album.slice.html:null,prev:t.album.slice&&t.album.slice.prev?t.album.slice.prev:null,next:t.album.slice&&t.album.slice.next?t.album.slice.next:null};$("[data-content=album-slice]").html(a.html),$("[data-content=album-panel-title]")[a.html?"show":"hide"](),$("a[data-action=prev]").attr("href",a.prev),$("a[data-action=next]").attr("href",a.next),$("a[data-action]",".image-viewer-navigation").each(function(){$(this)[void 0===$(this).attr("href")?"addClass":"removeClass"]("hidden")})}CHV.fn.resource_privacy_toggle(t.album.privacy),$.each(["description","title"],function(e,a){var o=$("[data-text=image-"+a+"]");o.html(PF.fn.nl2br(PF.fn.htmlEncode(t[a]))),""!==o.html()&&o.show()}),CHV.fn.common.updateDoctitle(t.title),PF.fn.growl.expirable(PF.fn._s("Image edited successfully.")),CHV.fn.list_editor.addAlbumtoModals(t.album);var o=$("[data-submit-fn='CHV.fn.submit_image_edit']");$.each(["description","name","password"],function(e,t){var a=$("[name=form-album-"+t+"]",o);a.is("textarea")?a.val("").html(""):a.val("").attr("value","")}),$("[name=form-privacy] option",o).each(function(){$(this).removeAttr("selected")}),$("[data-combo-value=password]",o).hide(),$("[name=form-album-id]",o).find("option").removeAttr("selected"),$("[name=form-album-id]",o).find("[value="+t.album.id_encoded+"]").attr("selected",!0)}},CHV.fn.before_album_edit=function(e){var t="[data-before-fn='CHV.fn.before_album_edit']";$("[data-action=album-switch]",t).remove()},CHV.fn.submit_album_edit=function(){var e=$(PF.obj.modal.selectors.root);return $("[name=form-album-name]",e).val()?(PF.obj.modal.form_data={action:"edit",edit:"album",editing:{id:CHV.obj.resource.id,name:$("[name=form-album-name]",e).val(),privacy:$("[name=form-privacy]",e).val(),description:$("[name=form-album-description]",e).val()}},"password"==PF.obj.modal.form_data.editing.privacy&&(PF.obj.modal.form_data.editing.password=$("[name=form-album-password]",e).val()),!0):(PF.fn.growl.call(PF.fn._s("You must enter the album name.")),$("[name=form-album-name]",e).highlight(),!1)},CHV.fn.complete_album_edit={success:function(e){var t=e.responseJSON.album;$("[data-text=album-name]").html(PF.fn.htmlEncode(t.name)),$("[data-text=album-description]").html(PF.fn.htmlEncode(t.description)),CHV.fn.resource_privacy_toggle(t.privacy);var a=CHV.obj.resource.type;CHV.obj.resource.type=null,CHV.fn.list_editor.updateItem($(".list-item"),e.responseJSON),CHV.obj.resource.type=a,$("[data-modal]").each(function(){$("option[value="+t.id_encoded+"]",this).text(t.name+("public"!==t.privacy?" ("+PF.fn._s("private")+")":""))}),CHV.fn.common.updateDoctitle(t.name),PF.fn.growl.expirable(PF.fn._s("Album edited successfully."))}},CHV.fn.category={formFields:["id","name","url_key","description"],validateForm:function(e){var t=PF.obj.modal.selectors.root,a=!1;return!!CHV.fn.common.validateForm(t)&&(!1===/^[-\w]+$/.test($("[name=form-category-url_key]",t).val())?(PF.fn.growl.call(PF.fn._s("Invalid URL key.")),$("[name=form-category-url_key]",t).highlight(),!1):(Object.size(CHV.obj.categories)>0&&$.each(CHV.obj.categories,function(o,i){return void 0!==e&&i.id==e||(i.url_key==$("[name=form-category-url_key]",t).val()?(a=!0,!1):void 0)}),!a||(PF.fn.growl.call(PF.fn._s("Category URL key already being used.")),$("[name=form-category-url_key]",t).highlight(),!1)))},edit:{before:function(e){var t=$(e.target),a=t.data("category-id"),o=CHV.obj.categories[a],i="[data-modal="+t.data("target")+"]";$.each(CHV.fn.category.formFields,function(e,t){e="form-category-"+t,t=o[t];var a=$("[name="+e+"]",i);a.is("textarea")?a.html(PF.fn.htmlEncode(t)):a.attr("value",t)})},submit:function(){var e=PF.obj.modal.selectors.root,t=$("[name=form-category-id]",e).val();return!!CHV.fn.category.validateForm(t)&&(PF.obj.modal.form_data={action:"edit",edit:"category",editing:{}},$.each(CHV.fn.category.formFields,function(t,a){PF.obj.modal.form_data.editing[a]=$("[name=form-category-"+a+"]",e).val()}),!0)},complete:{success:function(e){var t=e.responseJSON.category,a="[data-content=category][data-category-id="+t.id+"]";$.each(t,function(e,t){$("[data-content=category-"+e+"]",a).html(PF.fn.htmlEncode(t))}),$("[data-link=category-url]").attr("href",t.url),CHV.obj.categories[t.id]=t}}},delete:{before:function(e){var t=$(e.target),a=t.data("category-id"),o=CHV.obj.categories[a];t.attr("data-confirm",t.attr("data-confirm").replace("%s",'"'+o.name+'"'))},submit:function(e){return PF.obj.modal.form_data={action:"delete",delete:"category",deleting:{id:e}},!0},complete:{success:function(e){PF.fn.growl.expirable(PF.fn._s("Category successfully deleted."));var t=e.responseJSON.request.deleting.id;$("[data-content=category][data-category-id="+t+"]").remove(),delete CHV.obj.categories[t]}}},add:{submit:function(){var e=PF.obj.modal.selectors.root;return!!CHV.fn.category.validateForm()&&(PF.obj.modal.form_data={action:"add-category",category:{}},$.each(CHV.fn.category.formFields,function(t,a){"id"!=a&&(PF.obj.modal.form_data.category[a]=$("[name=form-category-"+a+"]",e).val())}),!0)},complete:{success:function(e){var t=e.responseJSON.category,a="[data-content=dashboard-categories-list]",o=$("[data-content=category-dashboard-template]").html();$.each(t,function(e,t){o=o.replace(new RegExp("%"+e.toUpperCase()+"%","g"),t||"")}),$(a).append(o),0==Object.size(CHV.obj.categories)&&(CHV.obj.categories={}),CHV.obj.categories[t.id]=t,PF.fn.growl.call(PF.fn._s("Category %s added.",'"'+t.name+'"'))}}}},CHV.fn.ip_ban={formFields:["id","ip","expires","message"],validateForm:function(e){var t=PF.obj.modal.selectors.root,a=!1,o=$("[name=form-ip_ban-ip]",t).val();return!!CHV.fn.common.validateForm(t)&&(""!==$("[name=form-ip_ban-expires]",t).val()&&0==/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test($("[name=form-ip_ban-expires]",t).val())?(PF.fn.growl.call(PF.fn._s("Invalid expiration date.")),$("[name=form-ip_ban-expires]",t).highlight(),!1):(Object.size(CHV.obj.ip_bans)>0&&$.each(CHV.obj.ip_bans,function(t,i){return void 0!==e&&i.id==e||(i.ip==o?(a=!0,!1):void 0)}),!a||(PF.fn.growl.call(PF.fn._s("IP %s already banned.",o)),$("[name=form-ip_ban-ip]",t).highlight(),!1)))},add:{submit:function(){var e=PF.obj.modal.selectors.root;return!!CHV.fn.ip_ban.validateForm()&&(PF.obj.modal.form_data={action:"add-ip_ban",ip_ban:{}},$.each(CHV.fn.ip_ban.formFields,function(t,a){"id"!=a&&(PF.obj.modal.form_data.ip_ban[a]=$("[name=form-ip_ban-"+a+"]",e).val())}),!0)},complete:{success:function(e){var t=e.responseJSON.ip_ban,a="[data-content=dashboard-ip_bans-list]",o=$("[data-content=ip_ban-dashboard-template]").html();void 0!==o&&($.each(t,function(e,t){o=o.replace(new RegExp("%"+e.toUpperCase()+"%","g"),t||"")}),$(a).append(o)),0==Object.size(CHV.obj.ip_bans)&&(CHV.obj.ip_bans={}),CHV.obj.ip_bans[t.id]=t,$("[data-content=ban_ip]").hide(),$("[data-content=banned_ip]").show(),PF.fn.growl.call(PF.fn._s("IP %s banned.",t.ip))},error:function(e){var t=e.responseJSON.error;PF.fn.growl.call(PF.fn._s(t.message))}}},edit:{before:function(e){var t=$(e.target),a=t.data("ip_ban-id"),o=CHV.obj.ip_bans[a],i="[data-modal="+t.data("target")+"]";$.each(CHV.fn.ip_ban.formFields,function(e,t){e="form-ip_ban-"+t,t=o[t];var a=$("[name="+e+"]",i);a.is("textarea")?a.html(PF.fn.htmlEncode(t)):a.attr("value",t)})},submit:function(){var e=PF.obj.modal.selectors.root,t=$("[name=form-ip_ban-id]",e).val();return!!CHV.fn.ip_ban.validateForm(t)&&(PF.obj.modal.form_data={action:"edit",edit:"ip_ban",editing:{}},$.each(CHV.fn.ip_ban.formFields,function(t,a){PF.obj.modal.form_data.editing[a]=$("[name=form-ip_ban-"+a+"]",e).val()}),!0)},complete:{success:function(e){var t=e.responseJSON.ip_ban,a="[data-content=ip_ban][data-ip_ban-id="+t.id+"]";$.each(t,function(e,t){$("[data-content=ip_ban-"+e+"]",a).html(PF.fn.htmlEncode(t))}),CHV.obj.ip_bans[t.id]=t},error:function(e){var t=e.responseJSON.error;PF.fn.growl.call(PF.fn._s(t.message))}}},delete:{before:function(e){var t=$(e.target),a=t.data("ip_ban-id"),o=CHV.obj.ip_bans[a];t.attr("data-confirm",t.attr("data-confirm").replace("%s",o.ip))},submit:function(e){return PF.obj.modal.form_data={action:"delete",delete:"ip_ban",deleting:{id:e}},!0},complete:{success:function(e){PF.fn.growl.expirable(PF.fn._s("IP ban successfully deleted."));var t=e.responseJSON.request.deleting.id;$("[data-content=ip_ban][data-ip_ban-id="+t+"]").remove(),delete CHV.obj.ip_bans[t]}}}},CHV.fn.storage={formFields:["id","name","api_id","bucket","server","service","capacity","region","key","secret","url","account_id","account_name"],calling:!1,validateForm:function(){var e=PF.obj.modal.selectors.root,t=$("[name=form-storage-id]",e).val(),a=!0;if($.each($(":input",e),function(e,t){$(this).is(":hidden")?$(this).attr("required")&&$(this).removeAttr("required").attr("data-required",1):1==$(this).attr("data-required")&&$(this).attr("required","required"),$(this).is(":visible")&&""==$(this).val()&&$(this).attr("required")&&($(this).highlight(),a=!1)}),!a)return PF.fn.growl.call(PF.fn._s("Please fill all the required fields.")),!1;var o,i=$("[name=form-storage-capacity]",e),r=i.val();return""!==r&&(0==/^[\d\.]+\s*[A-Za-z]{2}$/.test(r)||void 0===r.getBytes()?o=PF.fn._s("Invalid storage capacity value. Make sure to use a valid format."):void 0!==CHV.obj.storages[t]&&r.getBytes()<CHV.obj.storages[t].space_used&&(o=PF.fn._s("Storage capacity can't be lower than its current usage (%s).",CHV.obj.storages[t].space_used.formatBytes())),o)?(PF.fn.growl.call(o),i.highlight(),!1):0!=/^https?:\/\/.+$/.test($("[name=form-storage-url]",e).val())||(PF.fn.growl.call(PF.fn._s("Invalid URL.")),$("[name=form-storage-url]",e).highlight(),!1)},toggleHttps:function(e){this.toggleBool(e,"https")},toggleActive:function(e){this.toggleBool(e,"active")},toggleBool:function(e,t){if(!this.calling){this.calling=!0;var a=$("[data-storage-id="+e+"]"),o=$("[data-content=storage-"+t+"]",a),i=$("[data-checkbox]",o),r=CHV.obj.storages[e]["is_"+t],n=0==r?1:0,s={action:"edit",edit:"storage",editing:{id:e}};s.editing["is_"+t]=n,"https"==t&&(s.editing.url=CHV.obj.storages[e].url),PF.fn.loading.fullscreen(),$.ajax({type:"POST",data:s}).always(function(e,o,r){if(CHV.fn.storage.calling=!1,PF.fn.loading.destroy("fullscreen"),void 0!==e.storage){var s=e.storage;switch(CHV.obj.storages[s.id]=s,PF.fn.growl.expirable(PF.fn._s("Storage successfully edited.")),t){case"https":$("[data-content=storage-url]",a).html(s.url)}CHV.fn.storage.toggleBoolDisplay(i,n),CHV.fn.queuePixel()}else PF.fn.growl.call(e.responseJSON.error.message)})}},edit:{before:function(e){var t=$(e.target),a=t.data("storage-id"),o=CHV.obj.storages[a],i="[data-modal="+t.data("target")+"]",r="[data-combo-value~="+o.api_id+"]";$.each(CHV.fn.storage.formFields,function(e,t){e="form-storage-"+t,t=o[t];var a=$(r+" [name="+e+"]",i),n=$("[name="+e+"]",i),s=a.exists()?a:n;s.is("textarea")?s.html(PF.fn.htmlEncode(t)):s.is("select")?($("option",s).removeAttr("selected"),$("option",s).each(function(){if($(this).attr("value")==t)return $(this).attr("selected","selected"),!1})):(s.is("[name=form-storage-capacity]")&&void 0!==t&&t>0&&(t=t.formatBytes(2)),s.attr("value",t))}),$("[data-combo-value]").addClass("soft-hidden"),$(r).removeClass("soft-hidden")},submit:function(){var e=PF.obj.modal.selectors.root;$("[name=form-storage-id]",e).val();return!!CHV.fn.storage.validateForm()&&(PF.obj.modal.form_data={action:"edit",edit:"storage",editing:{}},$.each(CHV.fn.storage.formFields,function(t,a){var o;o="[name=form-storage-"+a+"]","hidden"!==$(o,e).attr("type")&&(o+=":visible"),PF.obj.modal.form_data.editing[a]=$(o,e).val()}),!0)},complete:{success:function(e){var t=e.responseJSON.storage,a="[data-content=storage][data-storage-id="+t.id+"]",o=$("[data-action=toggle-storage-https]",a);$.each(t,function(e,t){$("[data-content=storage-"+e+"]",a).html(PF.fn.htmlEncode(t))}),CHV.obj.storages[t.id]=t,CHV.fn.storage.toggleBoolDisplay(o,1==t.is_https),CHV.fn.queuePixel()},error:function(e){var t=e.responseJSON,a=t.error.message;PF.fn.growl.call(a)}}},add:{submit:function(){if(!CHV.fn.storage.validateForm())return!1;var e=PF.obj.modal.selectors.root;return PF.obj.modal.form_data={action:"add-storage",storage:{}},$.each(CHV.fn.storage.formFields,function(t,a){var o;"id"!=a&&(o="[name=form-storage-"+a+"]","hidden"!==$(o,e).attr("type")&&(o+=":visible"),PF.obj.modal.form_data.storage[a]=$(o,e).val())}),!0},complete:{success:function(e){var t=e.responseJSON.storage,a="[data-content=dashboard-storages-list]",o=$("[data-content=storage-dashboard-template]").html();$.each(t,function(e,t){var a=e.toUpperCase();if("is_https"==e||"is_active"==e)t=CHV.obj.storageTemplate.icon.replace("%TITLE%",CHV.obj.storageTemplate.messages[e]).replace("%ICON%",CHV.obj.storageTemplate.checkboxes[t]).replace("%PROP%",e.replace("is_",""));o=o.replace(new RegExp("%"+a+"%","g"),t||"")}),$(a).append(o),PF.fn.bindtipTip($("[data-storage-id="+t.id+"]")),0==CHV.obj.storages.length&&(CHV.obj.storages={}),CHV.obj.storages[t.id]=t,CHV.fn.queuePixel()},error:function(e){var t=e.responseJSON,a=t.error.message;PF.fn.growl.call(a)}}},toggleBoolDisplay:function(e,t){var a={0:e.data("unchecked-icon"),1:e.data("checked-icon")};e.removeClass(a[0]+" "+a[1]).addClass(a[t?1:0])}},CHV.fn.common={validateForm:function(e){if(void 0===e)e=PF.obj.modal.selectors.root;var t=!0;return $.each($(":input:visible",e),function(e,a){""==$(this).val()&&$(this).attr("required")&&($(this).highlight(),t=!1)}),!!t||(PF.fn.growl.call(PF.fn._s("Please fill all the required fields.")),!1)},updateDoctitle:function(e){void 0!==CHV.obj.page_info&&(CHV.obj.page_info.pre_doctitle=e,CHV.obj.page_info.doctitle=CHV.obj.page_info.pre_doctitle+CHV.obj.page_info.pos_doctitle,document.title=CHV.obj.page_info.doctitle)}},CHV.fn.user={add:{submit:function(){var e=$(PF.obj.modal.selectors.root),t=!0;return $.each($(":input",e),function(e,a){""==$(this).val()&&$(this).attr("required")&&($(this).highlight(),t=!1)}),t?(PF.obj.modal.form_data={action:"add-user",user:{username:$("[name=form-username]",e).val(),email:$("[name=form-email]",e).val(),password:$("[name=form-password]",e).val(),role:$("[name=form-role]",e).val()}},!0):(PF.fn.growl.call(PF.fn._s("Please fill all the required fields.")),!1)},complete:{success:function(e){e.responseJSON;PF.fn.growl.expirable(PF.fn._s("User added successfully."))},error:function(e){var t=e.responseJSON;PF.fn.growl.call(PF.fn._s(t.error.message))}}},delete:{submit:function(){return PF.obj.modal.form_data={action:"delete",delete:"user",owner:CHV.obj.resource.user.id,deleting:CHV.obj.resource.user},!0}}},CHV.fn.submit_resource_approve=function(){return PF.obj.modal.form_data={action:"approve",approve:CHV.obj.resource.type,from:"resource",owner:void 0!==CHV.obj.resource.user?CHV.obj.resource.user.id:null,approving:CHV.obj.resource},!0},CHV.fn.complete_resource_approve={success:function(e){e.responseJSON;$("body").fadeOut("normal",function(){redir=CHV.obj.resource.url,window.location=redir})}},CHV.fn.submit_resource_delete=function(){return PF.obj.modal.form_data={action:"delete",delete:CHV.obj.resource.type,from:"resource",owner:void 0!==CHV.obj.resource.user?CHV.obj.resource.user.id:null,deleting:CHV.obj.resource},!0},CHV.fn.complete_resource_delete={success:function(e){e.responseJSON;$("body").fadeOut("normal",function(){var e;e="album"==CHV.obj.resource.type||"image"==CHV.obj.resource.type?CHV.obj.resource.parent_url:CHV.obj.resource.user?CHV.obj.resource.user.url:CHV.obj.resource.url,void 0!==e&&(window.location=e+"?deleted")})}},CHV.fn.list_editor={selectionCount:function(){var e=$(PF.obj.listing.selectors.content_listing);e.each(function(){var t=$("[data-content=pop-selection]","[data-content=list-selection][data-tab="+$(this).attr("id")+"]"),a=$(PF.obj.listing.selectors.list_item+".selected",this).length;if(all_count=$(PF.obj.listing.selectors.list_item,this).length,t[a>0?"removeClass":"addClass"]("disabled"),$("[data-text=selection-count]",t).text(a>0?a:""),"images"==e.data("list")&&a>0){var o=$(PF.obj.listing.selectors.list_item+".selected[data-flag=safe]",this).length>0,i=$(PF.obj.listing.selectors.list_item+".selected[data-flag=unsafe]",this).length>0;$("[data-action=flag-safe]",t)[(i?"remove":"add")+"Class"]("hidden"),$("[data-action=flag-unsafe]",t)[(o?"remove":"add")+"Class"]("hidden")}$(this).is(":visible")&&CHV.fn.list_editor.listMassActionSet(all_count==a?"clear":"select")})},removeFromList:function(e,t){if(void 0!==e){e=e instanceof jQuery==0?$(e):e;var a=$(PF.obj.listing.selectors.content_listing_visible),o=e.length;e.fadeOut("fast");var i=e.first().data("type"),r=parseInt($("[data-text="+i+"-count]").text())-o;CHV.fn.list_editor.updateUserCounters(e.first().data("type"),o,"-"),e.promise().done(function(){$(document).removeClass(CHV.fn.listingViewer.selectors.bodyShown.substr(1));var i={};if(e.each(function(){$("[data-id="+$(this).data("id")+"]").each(function(){var e=$(this).closest(PF.obj.listing.selectors.content_listing).attr("id");i[e]||(i[e]=0),i[e]+=1})}),1==o?$("[data-id="+$(this).data("id")+"]").remove():e.each(function(){$("[data-id="+$(this).data("id")+"]").remove()}),PF.fn.listing.columnizerQueue(),PF.fn.listing.refresh(),CHV.fn.list_editor.selectionCount(),void 0!==t&&"string"==typeof t&&PF.fn.growl.expirable(t),$(PF.obj.listing.selectors.content_listing_pagination,a).exists()||0!=$(".list-item",a).length||(r=0),0==r)a.html(PF.obj.listing.template.empty),$(PF.obj.listing.selectors.content_listing+":not("+PF.obj.listing.selectors.content_listing_visible+")").data({empty:null,load:"ajax"}),$("[data-content=list-selection][data-tab="+a.attr("id")+"]").addClass("disabled");else if(0==$(PF.obj.listing.selectors.list_item,a).length){if($(PF.obj.listing.selectors.pad_content).height(0),$("[data-action=load-more]",a).exists())return $(PF.obj.listing.selectors.content_listing_visible).data("page",0),$("[data-action=load-more]",a).click(),void(PF.obj.listing.recolumnize=!0);var n=$("[data-pagination=next]",a);if(n.exists()){var s=n.attr("href"),l=PF.fn.deparam(s);return"page"in l&&l.page>1&&(s=s.changeURLParameterValue("page",l.page-1)),void(window.location=s)}}})}},deleteFromList:function(e){if(void 0===t)var t=!0;e=e instanceof jQuery==0?$(e):e;this.removeFromList(e,t?PF.fn._s("The content has been deleted."):null)},moveFromList:function(e,t){if(void 0===t)t=!0;e=e instanceof jQuery==0?$(e):e;this.removeFromList(e,t?PF.fn._s("The content has been moved."):null)},toggleSelectItem:function(e,t){if("boolean"!=typeof t)t=!0;var a,o,i,r=$(".viewer").is(":visible")?$("[data-type=image][data-id="+e.attr("data-id")+"]"):e,n=$("[data-action=select] .btn-icon",r);t?(r.addClass("selected"),a=n.data("icon-selected"),o=n.data("icon-unselected"),i=PF.fn._s("Unselect")):(r.removeClass("selected"),a=n.data("icon-unselected"),o=n.data("icon-selected"),i=PF.fn._s("Select")),n.removeClass(o).addClass(a),$("[data-action=select] .label",r).text(i),CHV.fn.list_editor.selectionCount()},selectItem:function(e){this.toggleSelectItem(e,!0)},unselectItem:function(e){this.toggleSelectItem(e,!1)},clearSelection:function(e){var t=$(PF.obj.listing.selectors.list_item+".selected",PF.obj.listing.selectors[e?"content_listing":"content_listing_visible"]);this.unselectItem(t),this.listMassActionSet("select")},listMassActionSet:function(e){var t="select"==e?"clear":"select",a=$("[data-action=list-"+t+"-all]:visible"),o=a.data("text-"+e+"-all");a.text(o).attr("data-action","list-"+e+"-all")},updateItem:function(e,t,a,o){if(e instanceof jQuery==0)e=$(e);var i=e.data("type"),r="image"==i?t.album:t;if(console.log(e,r,i),this.addAlbumtoModals(r),$("option[value="+r.id_encoded+"]","[name=form-album-id]").html(PF.fn.htmlEncode(r.name_with_privacy_readable_html)),void 0===a)a="edit";if("edit"==a||"move"==a){if("move"==a&&"album"==CHV.obj.resource.type)return void CHV.fn.list_editor.moveFromList(e,o);e.attr("data-description",t.description),"image"==i?(void 0!==t.title&&(e.attr("data-title",t.title),e.find("[title]").attr("title",t.title),$("[data-text=image-title]",e).html(PF.fn.htmlEncode(t.title))),void 0!==t.title_truncated&&$("[data-text=image-title-truncated]",e).html(PF.fn.htmlEncode(t.title_truncated)),void 0!==t.category_id&&e.attr("data-category-id",t.category_id),e.attr({"data-album-id":r.id_encoded,"data-flag":1==t.nsfw?"unsafe":"safe"}),$("[data-content=album-link]",e).attr("href",r.url)):e.attr({"data-privacy":r.privacy,"data-password":r.password,"data-name":r.name}),e.attr("data-privacy",r.privacy),$("[data-text=album-name]",e).html(PF.fn.htmlEncode(r.name)),PF.fn.growl.expirable("edit"==a?PF.fn._s("The content has been edited."):PF.fn._s("The content has been moved."))}},addAlbumtoModals:function(e){var t=!1;$("[name=form-album-id]","[data-modal]").each(function(){e.id_encoded&&!$("option[value="+e.id_encoded+"]",this).exists()&&($(this).append('<option value="'+e.id_encoded+'">'+e.name_with_privacy_readable_html+"</option>"),t=!0)}),t&&CHV.fn.list_editor.updateUserCounters("album",1,"+")},updateAlbum:function(e){$("[data-id="+e.id_encoded+"]").each(function(){""!==e.html&&($(this).after(e.html),$(this).remove())})},updateUserCounters:function(e,t,a){if(void 0===a)a="+";var o,i,r=$("[data-text="+e+"-count]"),n=$("[data-text="+e+"-label]"),s=(t=parseInt(t),parseInt(r.html()));switch(a){case"+":o=s+t;break;case"-":o=s-t;break;case"=":o=t}i=o-s;var l=$("[data-text=total-"+r.data("text")+"]"),d=$("[data-text="+l.data("text")+"-label]"),c=parseInt(l.html()),u=c+i;r.text(o),l.text(u),n.text(n.data(1==o?"label-single":"label-plural")),d.text(n.data(1==u?"label-single":"label-plural"))},updateMoveItemLists:function(e,t,a){if(CHV.fn.list_editor.clearSelection(),/image/.test(t))"image"==t?CHV.fn.list_editor.updateItem("[data-type=image][data-id="+a.data("id")+"]",e.image,"move"):(a.each(function(){CHV.fn.list_editor.updateItem("[data-type=image][data-id="+$(this).data("id")+"]",e,"move",!1)}),PF.fn.growl.expirable(PF.fn._s("The content has been moved.")));else{if("album"==CHV.obj.resource.type?CHV.fn.list_editor.moveFromList(a):PF.fn.growl.expirable(PF.fn._s("The content has been moved.")),void 0!==e.albums_old)for(var o=0;o<e.albums_old.length;o++)CHV.fn.list_editor.updateAlbum(e.albums_old[o]);else CHV.fn.list_editor.updateAlbum(e.old_album);if(e.album)if(void 0!==e.albums_old?"true"==e.request.album.new:"true"==e.request.editing.new_album){CHV.fn.list_editor.addAlbumtoModals(e.album);var i=parseInt($("[data-text=album-count]").text())-1
;$(PF.obj.listing.selectors.pad_content).each(function(){var t=$(this).find(PF.obj.listing.selectors.list_item).length;if(0!=t){var a=PF.fn.deparam($(this).closest(PF.obj.listing.selectors.content_listing).data("params"));"date_desc"!=a.sort&&i!=t||$(this)["date_desc"==a.sort?"prepend":"append"](e.album.html)}})}else CHV.fn.list_editor.updateAlbum(e.album);PF.fn.listing.columnizerQueue(),PF.fn.listing.refresh(0)}}},CHV.fn.queuePixel=function(){var e='<img data-content="queue-pixel" src="'+PF.obj.config.base_url+"/?queue&r="+PF.fn.generate_random_string(32)+'" width="1" height="1" alt="" style="display: none;">';$("body").append(e)},CHV.fn.import={errorHandler:function(e){PF.fn.growl.call(e.error.message)},reset:function(e){e=parseInt(e);CHV.obj.import.working[e].stats=$.ajax({type:"POST",data:{action:"importReset",id:e}}),CHV.obj.import.working[e].stats.complete(function(t){var a=t.responseJSON;if(a){var o=CHV.fn.import.parseTemplate(a.import);$("[data-id="+a.import.id+"]",CHV.obj.import.sel.root).replaceWith(o),"working"!=a.import.status&&clearInterval(CHV.obj.import.working[e].interval)}})},updateStats:function(e){e=parseInt(e);"readyState"in CHV.obj.import.working[e].stats&&4!=CHV.obj.import.working[e].stats.readyState?console.log("Aborting stats timeout call (previous call is still not ready)"):(CHV.obj.import.working[e].stats=$.ajax({type:"POST",data:{action:"importStats",id:e}}),CHV.obj.import.working[e].stats.complete(function(t){var a=t.responseJSON;if(a){var o=CHV.fn.import.parseTemplate(a.import);$("[data-id="+a.import.id+"]",CHV.obj.import.sel.root).replaceWith(o),"working"!=a.import.status&&clearInterval(CHV.obj.import.working[e].interval)}}))},add:{submit:function(){var e=PF.obj.modal.selectors.root;return PF.obj.modal.form_data={action:"importAdd",path:$("[name=form-path]",e).val(),options:{root:$("[name=form-structure]",PF.obj.modal.selectors.root).val()}},!0},deferred:{success:function(e){var t=e.responseJSON;PF.fn.growl.expirable(PF.fn._s("Import job ID %s added successfully, you can process the import now",t.import.id));var a=CHV.fn.import.parseTemplate(t.import);a.insertAfter(CHV.obj.import.sel.header,CHV.obj.import.sel.root),$(CHV.obj.import.sel.root).removeClass("hidden")},error:function(e){CHV.fn.import.errorHandler(e.responseJSON)}}},process:{abortAll:function(e){e=parseInt(e);if(e in CHV.obj.import.working){for(var t in CHV.obj.import.aborted.push(e),CHV.obj.import.working[e].threads)CHV.obj.import.working[e].threads[t].abort();PF.fn.growl.expirable("Aborted all threads for import job ID "+e+", changing status now"),"interval"in CHV.obj.import.working[e]&&(clearInterval(CHV.obj.import.working[e].interval),"abort"in CHV.obj.import.working[e].stats&&CHV.obj.import.working[e].stats.abort())}},xhr:function(e,t){e=parseInt(e);console.log("New XHR for thread #"+t+" for import job ID"),e in CHV.obj.import.working==0&&(CHV.obj.import.working[e]={threads:{},interval:{},stats:{}}),CHV.obj.import.working[e].threads[t]=$.ajax({type:"POST",data:{action:"importProcess",id:e,thread:t}}),CHV.obj.import.working[e].threads[t].complete(function(a){if(400!=a.status){$("[data-id="+e+"]",CHV.obj.import.sel.root).data("status");-1==$.inArray(e,CHV.obj.import.aborted)&&CHV.fn.import.process.xhr(e,t)}else CHV.fn.import.errorHandler(a.responseJSON)})},load:function(){return $("html").data("modal-form-values",""),!0},submit:function(e){var t=PF.obj.modal.selectors.root,a=$("[name=form-threads]",t).val();return 0==a?(PF.fn.growl.expirable(PF.fn._s("Select number of threads")),!1):(PF.obj.modal.form_data={action:"importEdit",id:e,threads:a,values:{status:"working"}},!0)},deferred:{success:function(e){var t=e.responseJSON;PF.fn.growl.expirable(PF.fn._s("Import job ID %s is being processed now",t.import.id));var a=CHV.fn.import.parseTemplate(t.import);$("[data-id="+t.import.id+"]",CHV.obj.import.sel.root).replaceWith(a);for(var o=parseInt(t.request.threads),i=1;i<=o;i++)CHV.fn.import.process.xhr(t.import.id,i);CHV.obj.import.working[t.import.id].interval=setInterval(function(){CHV.fn.import.updateStats(t.import.id)},5e3)},error:function(e){var t=e.responseJSON;900==t.error.code?(console.log("Aborting current working process (status changed)"),CHV.fn.import.process.abortAll(t.id)):CHV.fn.import.errorHandler()}}},delete:{submit:function(e){return PF.obj.modal.form_data={action:"importDelete",id:e},!0},deferred:{success:function(e){var t=e.responseJSON;PF.fn.growl.call(PF.fn._s("Import ID %s removed",t.import.id)),$("[data-id="+t.import.id+"]",CHV.obj.import.sel.root).remove(),1==$("li",CHV.obj.import.sel.root).size()&&$(CHV.obj.import.sel.root).addClass("hidden")},error:function(e){CHV.fn.import.errorHandler(e.responseJSON)}}},parseTemplate:function(e,t){var a=CHV.obj.import.rowTpl;for(var o in CHV.obj.import.importTr)void 0!==e[o]&&(a=a.replaceAll("%"+o+"%",e[o]));a=a.replaceAll("%parse%",e.options.root),a=a.replaceAll("%shortParse%",e.options.root.charAt(0)),a=a.replaceAll("%displayStatus%",CHV.obj.import.statusesDisplay[e.status]);var i=$($.parseHTML(a)).attr("data-object",JSON.stringify(e));return i}};