const Actions={parseFunction:function(action){let actions=action.split("::");let fn=Actions[actions[0]];actions.splice(0,1);fn(...actions)},openWindow:function(wrapperID,windowClass,transferAnimation=false,callbackFn=undefined){let desktopDBItem=findDesktopDBItem(g_DesktopDB,"id",wrapperID);if(wrapperID===undefined||windowClass===undefined)return;if(g_openWindows.some(e=>e.id===wrapperID&&e.type===windowClass)){let $wrapper=$('.window-wrapper[data-id="'+wrapperID+'"]');$wrapper.find(".window."+windowClass).trigger("focus");if(callbackFn&&$wrapper){callbackFn($wrapper)}return $wrapper}else{let $wrapper=$('
').appendTo(".desktop");let $window=$('
').appendTo($wrapper);let windowViewFile="window."+windowClass+".html";$window.hide();g_openWindows.push({id:wrapperID,type:windowClass});$window.load(windowViewFile,function(){$window.children(".header").first().load("window.header.html",function(){$wrapper.attr("data-id",wrapperID);$wrapper.attr("data-type",windowClass);initWindow(wrapperID,windowClass);if(desktopDBItem){$wrapper.css("top",desktopDBItem.top);$wrapper.css("left",desktopDBItem.left)}if(transferAnimation){$('figure[data-id="'+wrapperID+'"]').find("img").transfer({to:$window.parent(".window-wrapper"),duration:SETTINGS_TRANSFER_ANIMATION_DURATION},function(){$window.show();let $jsp=$wrapper.find(".body");if($jsp.length){let jsp=$jsp.jScrollPane(g_jScrollPaneSettings);jsp.data("jsp").reinitialise()}$window.trigger("focus")})}else{$window.show();$window.trigger("focus")}if(callbackFn&&$wrapper){callbackFn($wrapper)}})});return $wrapper}},closeWindow:function($wrapper,animate=true){let wrapperID=$wrapper.attr("data-id");let wrapperType=$wrapper.attr("data-type");let $figure=$('figure[data-id="'+wrapperID+'"]');let $iconImg=$figure.find("img");let icon=$figure.attr("data-icon");let desktopDBItem=findDesktopDBItem(g_DesktopDB,"id",wrapperID);if(desktopDBItem){desktopDBItem.top=$wrapper.css("top");desktopDBItem.left=$wrapper.css("left")}if(($figure.hasClass("folder")||$figure.hasClass("application")||$figure.hasClass("trash"))&&$iconImg.length&&animate){$wrapper.transfer({to:$iconImg,duration:SETTINGS_TRANSFER_ANIMATION_DURATION},function(){g_openWindows.splice(g_openWindows.findIndex(e=>e.id===wrapperID&&e.type===wrapperType),1);$wrapper.remove();$iconImg.attr("src",SETTINGS_ICONS_LARGE_PATH+icon+".png");$figure.children("a").first().trigger("focus");if(g_openWindows.length)Actions.focusWindow(g_openWindows[g_openWindows.length-1])})}else{g_openWindows.splice(g_openWindows.findIndex(e=>e.id===wrapperID&&e.type===wrapperType),1);if(g_openWindows.length){$(".desktop figure.focus").removeClass("focus");Actions.focusWindow(g_openWindows[g_openWindows.length-1])}else{$(".desktop figure.focus > a").trigger("focus")}$wrapper.remove()}},focusWindow:function(objWrapper){let $wrapper=$('.window-wrapper[data-id="'+objWrapper.id+'"][data-type="'+objWrapper.type+'"]');let $window=$wrapper.children(".window");$window.trigger("focus")},getInfoOnFocusedFigure:function(){let $figure=$("figure.focus");let figureID=$figure.attr("data-id");if($figure.length>0){Actions.openWindow(figureID,"info",false)}},downloadFile:function(desktopDBItem){let startTime=(new Date).getTime();let desktopDBItemParentName=findDesktopDBItemParent(g_DesktopDB,"id",desktopDBItem.id).name;let $wrapper=Actions.openWindow(desktopDBItem.id,"download",false,function($wrapper){$wrapper.find("button").on("click",function(){$wrapper.data("jqXHR").abort()})});let jqXHR=$.ajax(desktopDBItem.url,{type:"GET",cache:false,xhrFields:{responseType:"blob"},success:function(data){let a=document.createElement("a");let url=window.URL.createObjectURL(data);a.href=url;a.download=desktopDBItem.name;document.body.append(a);a.click();a.remove();window.URL.revokeObjectURL(url);$wrapper.find(".progress .right").addClass("done");$wrapper.find(".download-calculated-remaining").html("Done");setTimeout(function(){Actions.closeWindow($wrapper)},2e3)},error:function(){$wrapper.find(".download-calculated-remaining").html("Cancelled");setTimeout(function(){Actions.closeWindow($wrapper)},2e3)},progress:function downloadProgress(e){if(e.lengthComputable){let currentTime=(new Date).getTime();let duration=(currentTime-startTime)/1e3;let estimatedSecondsRemaining=e.total/(e.loaded/duration)-duration;let percentage=e.loaded*100/e.total;$wrapper.find(".progress .middle").css("width",percentage+"%");$wrapper.find(".download-calculated-remaining").html(formatTimeRemaining(estimatedSecondsRemaining));$wrapper.find("td.download-filename").html(desktopDBItem.name);$wrapper.find("td.download-from").html(desktopDBItemParentName);$wrapper.find("td.download-bytes").html(formatBytes(e.loaded)+" of "+formatBytes(e.total))}}});$wrapper.data("jqXHR",jqXHR)},alert:function(id,parameter=undefined){let $wrapper=$(".alert-wrapper");let alertFile="alert."+id+".html";$wrapper.load(alertFile,function(){$(".modal").show();initAlert(id,parameter)})},openFigureID:function(figureID){let $figure=$('figure[data-id="'+figureID+'"] > a');$figure.trigger("dblclick")},openFocusedFigure:function(){let $figure=$("figure.focus");if($figure.length>0)$figure.find("> a").trigger("dblclick")},closeFocusedWindow:function(){let $wrapper=$(".window.focus").first().parent(".window-wrapper");if($wrapper.length>0)Actions.closeWindow($wrapper)},wake:function(callbackFn){let $sleep=$(".sleep");$sleep.fadeTo("slow",0,function(){$sleep.toggleClass("active");$sleep.hide();if(callbackFn){callbackFn()}})},sleep:function(callbackFn){let $sleep=$(".sleep");$sleep.toggleClass("active");$sleep.show();$sleep.fadeTo("slow",1,callbackFn)},reload:function(){location.reload()},restart:function(){Actions.sleep(Actions.reload)},shutdown:function(){window.location.href=SETTINGS_SHUTDOWN_URL}};