1 line
4.1 KiB
JavaScript

(function(a){a(function(){a.h5ai=new H5ai()});H5ai=function(m){var c={columnClasses:["icon","name","date","size"],defaultSortOrder:"C=N;O=A",viewmodes:["details","icons"],store:{viewmode:"h5ai.viewmode"},icons:{crumb:"/h5ai/images/crumb.png",ascending:"/h5ai/images/ascending.png",descending:"/h5ai/images/descending.png"},customHeader:"h5ai.header.html",customFooter:"h5ai.footer.html",callbacks:{folderClick:[],fileClick:[]}};this.folderClick=function(n){if(typeof n==="function"){c.callbacks.folderClick.push(n)}return this};this.fileClick=function(n){if(typeof n==="function"){c.callbacks.fileClick.push(n)}return this};var l=function(){b();f();j();i()};var k=function(n){for(idx in c.callbacks.folderClick){c.callbacks.folderClick[idx].call(window,n)}};var e=function(n){for(idx in c.callbacks.fileClick){c.callbacks.fileClick[idx].call(window,n)}};var g=function(){var n=localStorage.getItem(c.store.viewmode);if(a.inArray(n,c.viewmodes)){return n}return c.viewmodes[0]};var b=function(n){a("#table").hide();if(n!==undefined){localStorage.setItem(c.store.viewmode,n)}if(g()==="icons"){a("#extended").removeClass("details-view").addClass("icons-view").show()}else{a("#extended").addClass("details-view").removeClass("icons-view").show()}};var f=function(){a("#domain span").text(document.domain);var r=decodeURI(document.location.pathname);var q=r.split("/");var p="/";var o=a("nav ul");for(idx in q){var n=q[idx];if(n!==""){p+=n+"/";o.append(a("<li class='crumb'><a href='"+p+"'><img src='"+c.icons.crumb+"' alt='>' />"+n+"</a></li>"))}}document.title=document.domain+r};var h=function(){function n(o){if(o>=0&&o<c.columnClasses.length){return c.columnClasses[o]}return"unknown"}a("#table td").removeAttr("align").removeAttr("valign");a("#table tr").each(function(){var o=0;a(this).find("th,td").each(function(){a(this).addClass(n(o++))})})};var d=function(){var r=a("<ul/>");var t=a("<li class='header' />").appendTo(r);a("<a class='icon'></a>").appendTo(t);var p=a("th.name a");var s=a("th.date a");var o=a("th.size a");a("<a class='label' href='"+p.attr("href")+"'>"+p.text()+"</a>").appendTo(t);a("<a class='date' href='"+s.attr("href")+"'>"+s.text()+"</a>").appendTo(t);a("<a class='size' href='"+o.attr("href")+"'>"+o.text()+"</a>").appendTo(t);var n=document.location.search;if(n===""){n=c.defaultSortOrder}var q;if(n.indexOf("O=A")>=0){q=a("<img src='"+c.icons.ascending+"' class='sort' alt='ascending' />")}else{q=a("<img src='"+c.icons.descending+"' class='sort' alt='descending' />")}if(n.indexOf("C=N")>=0){t.find("a.label").append(q)}else{if(n.indexOf("C=M")>=0){t.find("a.date").prepend(q)}else{if(n.indexOf("C=S")>=0){t.find("a.size").prepend(q)}}}a("#table td.name a").closest("tr").each(function(){var B=a(this);var u=B.find("td.icon img");var v=u.attr("src");var x=v.replace("16x16","48x48");var A=u.attr("alt");var C=B.find("td.name a");var E=C.text();var w=C.attr("href");var z=B.find("td.date").text();var F=B.find("td.size").text();var D=a("<li class='entry' />").appendTo(r);if(A==="[DIR]"){D.addClass("folder")}else{D.addClass("file")}var y=a("<a href='"+w+"' />").appendTo(D);a("<span class='icon small'><img src='"+v+"' alt='"+A+"' /></span>").appendTo(y);a("<span class='icon big'><img src='"+x+"' alt='"+A+"' /></span>").appendTo(y);a("<span class='label'>"+E+"</span>").appendTo(y);a("<span class='date'>"+z+"</span>").appendTo(y);a("<span class='size'>"+F+"</span>").appendTo(y)});a("#extended").append(r);$entries=a("#extended .entry");if($entries.size()===0||$entries.size()===1&&$entries.find(".label").text()==="Parent Directory"){a("#extended").append(a("<div class='empty'>empty</div>"))}a("#extended").append(a("<div class='clearfix' />"));a("#extended .entry.folder").click(function(){k(a(this).find(".label").text())});a("#extended .entry.file").click(function(){e(a(this).find(".label").text())})};var j=function(){h();d();a("#viewdetails").closest("li").click(function(){b("details")});a("#viewicons").closest("li").click(function(){b("icons")})};var i=function(){a.ajax({url:c.customHeader,dataType:"html",success:function(n){a("#content > header").append(a(n)).show()}});a.ajax({url:c.customFooter,dataType:"html",success:function(n){a("#content > footer").prepend(a(n)).show()}})};l()}})(jQuery);