').load(proxyPrefix+'/comics/?random=true'+" #group", function(){
$(makeSliderList('randomComics','Random Comics',proxyPrefix+'/comics/?random=true')).css("zIndex",4).insertAfter('#newComics');
$(this).find('.cellcontainer:lt('+homepageIssues+')').appendTo('#randomComics .list-content');
if($('#randomComics .cellcontainer').length){
initializeControls('randomComics');
homepageWrap('randomComics');
}else{
$('#randomComics').remove();
}
});
}
});
$('').insertAfter('#group');
}
if(settingsJSON['isBooksProviderEnabled']){
$('#latest-books').insertBefore('#books');
$(makeSliderList('newBooks','Latest Books',proxyPrefix+'/books/?latest=true')).css("zIndex",3).appendTo('.main_homepage_content');
if(seriesID){
$('
').load(proxyPrefix+'/books/?latest=true'+" #group", function(){
$(this).find('.cellcontainer:lt('+homepageIssues+')').appendTo('#newBooks .list-content');
if($('#newBooks .cellcontainer').length){
initializeControls('newBooks');
homepageWrap('newBooks');
}else{
$('#newBooks').remove();
}
if(showRandom){
$(makeSliderList('randomBooks','Random Books',proxyPrefix+'/books/?random=true')).css("zIndex",2).insertAfter('#newBooks');
$('
').load(proxyPrefix+'/books/?random=true'+" #group", function(){
$(this).find('.cellcontainer:lt('+homepageIssues+')').appendTo('#randomBooks .list-content');
if($('#randomBooks .cellcontainer').length){
initializeControls('randomBooks');
homepageWrap('randomBooks');
}else{
$('#randomBooks').remove();
}
});
}
});
$('').insertAfter('#group');
}
if((Bookmarks.length > 0)&&(Bookmarks != undefined)){
$(makeSliderList('bookmarks','Bookmarks',proxyPrefix+'/theme/mybooks.htm')).css("zIndex",1).appendTo('.main_homepage_content');
if(Bookmarks.length < homepageIssues){
var bookmarkLimit = Bookmarks.length;
}else{
var bookmarkLimit = homepageIssues;
}
for (i = 0; i < bookmarkLimit; i++) {
buildElement(Bookmarks[i][0],Bookmarks[i][1],Bookmarks[i][2],Bookmarks[i][3], i+1, '#bookmarks .list-content');
}
initializeControls('bookmarks');
homepageWrap('bookmarks');
}
if((showRecommended)&&(typeof sessionStorage.seeComics != "undefined")&&(!typeof sessionStorage.seeBooks != "undefined")){
$.ajax({
url:'theme/recommendations.json',
type:'GET',
error: function(jqXHR, exception){
if(jqXHR.status == 404) {
console.log('The above 404 just means there is no series.json in files/extras (or you do not have access to it), it can be ignored. - ScooterPSU');
}else if(jqXHR.status == 500) {
// Figure out better solution for 500's (disable series.json on root links?)
}else{
console.error('There is something wrong in the JSON formatting of this series.json. Probably an unescaped quote or special character.');
}
},
success: function(data, textStatus, xhr){
if(data.Issues){
$(makeSliderList('recommended',recommendedTitle,proxyPrefix+'/theme/recommendations.htm')).css("zIndex",6).insertBefore('#newComics');
if(data.Issues.length < homepageIssues){
var bookmarkLimit = data.Issues.length;
}else{
var bookmarkLimit = homepageIssues;
}
for (i = 0; i < data.Issues.length; i++) {
if(((sessionStorage.seeComics == "true")&&(data.Issues[i].type=="comic"))||((sessionStorage.seeBooks == "true")&&(data.Issues[i].type=="book"))){
buildElement("#","showHidePopupMenu('"+data.Issues[i].type+"details','searchbox','pageselector','settingsbox');load"+data.Issues[i].type.charAt(0).toUpperCase() + data.Issues[i].type.slice(1)+"Details("+data.Issues[i].dbnumber+",'"+ proxyPrefix +"/');return false;",proxyPrefix +"/"+data.Issues[i].type+"s/"+data.Issues[i].dbnumber+"/"+data.Issues[i].comicname+"?cover=true",data.Issues[i].label.substring(4),i,"#recommended .list-content");
}
}
if($('#recommended .list-content .cellcontainer').length){
homepageWrap('recommended');
initializeControls('recommended');
}else{
$('#recommended').hide();
}
}
}
});
}
if((settingsJSON['isFilesProviderEnabled'])&&(audiobookShare)){
$('
Audiobooks ').insertBefore('#files');
}
$("#group a").each(function(){
$(this).wrap('
');
$(this).parent().appendTo('#quickLinksUl');
});
$('
').insertAfter('#group');
/*< Books or Comics module >*/
}else if(($('head link:eq(0)').attr('href').split('/').pop() == "comics.css")||($('head link:eq(0)').attr('href').split('/').pop() == "books.css")){
/* Get module and book ID */
var locationParts = location.pathname.split('/');
var baseType;
if(location.pathname.startsWith(proxyPrefix+'/comics/')){
baseType = "comics";
}else if(location.pathname.startsWith(proxyPrefix+'/books/')){
baseType = "books";
}
var myID = 0;
/* If multiple base shares exist / No folders (Grouping: None) */
if((location.pathname== proxyPrefix+'/comics/')||(location.pathname== proxyPrefix+'/books/')){
$(' ').insertBefore('#group');
if($('.rootlink').length){
var rootLinks = $('.rootlink');
for (i = 0; i < rootLinks.length; i++) {
buildElement(rootLinks[i].href,'',rootLinks[i].href+'?cover=true',rootLinks[i].text, i+1, '#group');
}
$('.rootlink, br').remove();
}else if($('.cellcontainer').length){
if(location.search == ""){
$('.hinline').text('All '+baseType.charAt(0).toUpperCase()+baseType.slice(1));
}else if(location.search == "?random=true"){
$('.hinline').text('Random '+baseType.charAt(0).toUpperCase()+baseType.slice(1));
}else if(location.search == "?latest=true"){
$('.hinline').text('Latest '+baseType.charAt(0).toUpperCase()+baseType.slice(1));
}else if(location.search.startsWith('?search')){
if($('.searcharrowform').length !== 0){
var searchString = $('.searcharrowform input').attr('value');
if(searchString.endsWith("_")){
searchString = searchString.slice(0, -1) + '.';
if(uncommaAuthors){
searchString = searchString.split(",")[1]+' '+searchString.split(",")[0];
}
}
$('.hinline').text('Search for "'+searchString+'"');
}else{
$('.hinline').text('Search Results');
}
$('#group').addClass('searchPage');
}
containerWrap();
}
}else{
myID = locationParts[locationParts.indexOf(baseType)+1];
}
/*< Only Comics module >*/
if($('head link:eq(0)').attr('href').split('/').pop() == "comics.css"){
/* Publisher page */
if(myID==comicsBaseID){
$('#folderinfo').remove();
$('
').insertBefore('#group');
$('
').insertBefore('#group');
$('#group').addClass('scriptPage');
containerWrap();
if(featuredPublishers){
$('
').insertBefore('#group');
for (i = 0; i < featuredPublishers.length; i++) {
addFeatured(featuredPublishers[i], 0);
}
}
if(storyArcID){
hideID(storyArcID);
}
if(weeklyID){
hideID(weeklyID);
}
}
/* Story Arc pages */
if(storyArcID){
if(myID==storyArcID){
$('
').insertBefore('#group');
$('
').insertBefore('#group');
$('#group').addClass('scriptPage');
containerWrap('arc');
}
}
/* Release Date pages */
if(weeklyID){
if(myID==weeklyID){
$('
').insertBefore('#group');
$('#group').addClass('scriptPage');
containerWrap('weeks');
}
}
/*< Only Comics module >*/
/*< Only Books module >*/
}else if($('head link:eq(0)').attr('href').split('/').pop() == "books.css"){
/* Authors page */
if(myID==booksBaseID){
$('
').insertBefore('#group');
$('
').insertBefore('#group');
$('#group').addClass('scriptPage');
containerWrap('authors');
if(seriesID){
hideSeries();
}
}
/* Series pages */
if(seriesID){
if(myID==seriesID){
$('
').insertBefore('#group');
$('
').insertBefore('#group');
$('#group').addClass('scriptPage');
containerWrap('arc');
}
}
}
/* Only Books module >*/
/* Add header to #group. */
if((!$('#group header').length)&&(!$('#folderinfo').length)){
$('#group').prepend('
');
}
if(baseType=="comics" && myID==comicsBaseID){
if(featuredPublishers){
$('#group .list-title').text("All Publishers");
}else{
$('#group .list-title').text("Publishers");
}
}else if(baseType=="books" && myID==booksBaseID){
$('#group .list-title').text("Authors");
}else if(location.search.startsWith('?search')){
if(baseType=='comics'){
$('#group .list-title').text("Single Issues");
}else if(baseType=='books'){
$('#group .list-title').text("Books");
}
}else if($(".thumb a:not([href='#'])").length == 0){
if((baseType=="comics")&&(myID != 0)){
$('#group .list-title').text("Issues");
}
}
/* Copy #folderinfo to pages 2+. */
if((location.search.indexOf("?index=") != -1)&&(location.search.indexOf("?index=0") == -1)&&(location.search.indexOf("search") == -1)&&(myID != 0)){
$('
').load(location.pathname+" #folderinfo", function(){
var type;
if($(this).find('#folderinfo').length > 0){
$('#cmx_breadcrumb').remove();
$(this).find('#folderinfo').prependTo('#group');
if($('#folderinfo #cover').length){
$('#publisher, #publisher2').attr('href',$('#arrowup').attr('href'));
if($('#folderinfo #publisher2').length){
$("#group").addClass("seriesPage");
}else{
$("#group").addClass("arcPage");
type="arc";
}
}else{
$("#group").addClass("publisherPage");
}
}
containerWrap(type);
if($('#group header').length){
$('#group').prepend($('#group header'));
}
});
}
/* If no folder-info, check for series.json */
if(readSeriesJSON){
if((!$('#group #folderinfo').length)&&($('.cellcontainer').length)&&(settingsJSON['enableFolderMetadataDisplay'])&&!($('#group').hasClass('scriptPage'))&&(myID != 0)){
$.ajax({
url:'?folderinfo=series.json',
type:'GET',
error: function(jqXHR, exception){
if(jqXHR.status == 404) {
console.log('The above 404 just means there is no series.json for this page, it can be ignored. - ScooterPSU');
}else if(jqXHR.status == 500) {
// Figure out better solution for 500's (disable series.json on root links?)
}else{
console.error('There is something wrong in the JSON formatting of this series.json. Probably an unescaped quote or special character.');
}
},
success: function(data, textStatus, xhr){
if(data.metadata != undefined){
if ($.isArray(data.metadata)){
var metadata = data.metadata[0];
}else{
var metadata = data.metadata;
}
var type = metadata.type;
$('').insertBefore($('#group'));
if(type=="comicSeries"){
$('#group').addClass('seriesPage');
containerWrap();
}else if(type=="comicArc"){
$('#group').addClass('arcPage');
containerWrap('arc');
if(useSimpleArcTemplate){
type = "comicArcSimple";
}
}else if(type=="comicChar"){
$('#group').addClass('seriesPage');
containerWrap();
}else if(type=="authorBio"){
$('#group').addClass('authorPage');
containerWrap();
}
$('#group').addClass('scriptPage');
$('
').load(proxyPrefix+'/theme/templates/'+type+'.html', function(){
$(".headerSection").html($(this).contents().contents());
$('#cover').attr('src','?folderinfo=folder.jpg');
$('#publisher, #publisher2').attr('href', $('#arrowup').attr('href'));
if(type=="comicChar"){
if(comicCharHeader === null){
comicCharHeader=false;
}
if(comicCharHeader){
$('
').insertBefore($('.headerSection'));
$('#charHeaderImg').attr('src', '?folderinfo=header.jpg');
}else{
$(".headerSection").css('background-image','url(?folderinfo=header.jpg)');
$(".headerSection").addClass('embeddedHeader');
$(".social-links").css('cssText','background-color: rgba(0,0,0,.4) !important');
}
$('#group .list-title').text("Series");
}
if(type=="authorBio"){
$(".headerSection").addClass('topSection');
}
$('#pubImg').attr('src', $('#arrowup').attr('href')+'?folderinfo=folder.jpg');
$('#pubImg').on("error", function(){
var pub = metadata.publisher;
$(this).attr('src', '/theme/publishers/'+pub+'.jpg');
$(this).on("error", function(){
$(this).attr('src', proxyPrefix+'/theme/folder.png');
});
});
$('#cover').on("error", function(){
$(this).attr('src', proxyPrefix+'/theme/folder.png');
});
getSeriesJson('?folderinfo=series.json');
if($('.publisherContainer').length){
$(document).ajaxStop(function(){
var curloc = 2
if ($('#cmx_breadcrumb a:eq(0)').length > 0){
var curloc = $('#cmx_breadcrumb a').length - 1;
}
var publisher = $('#cmx_breadcrumb a:eq('+curloc+')').text();
publisher = publisher.replace('_', ' ');
$('.publisher').text(publisher);
$('#pubImg').attr('title',publisher);
})
}
});
}
if(data.oneshots != undefined){
if(!$('#oneshots').length){
$('
').insertAfter($('#group'));
}
for (i = 0; i < data.oneshots.length; i++) {
$(".cellcontainer:has(.label:contains('"+data.oneshots[i].replace(/'/g,'\\\'')+"'))").appendTo($('#oneshots'));
}
if($('#oneshots .cellcontainer').length){
$('#oneshots').show();
}
}
}
});
}
}
/* Story Arc/Series page with json.cbr/json.epub */
if($('.cellcontainer .label:contains("json")').length||(!($('.cellcontainer').length)&&location.search.startsWith('?index'))){
var pageURLparts = location.href.split('/');
if(pageURLparts.indexOf('comics') != -1){
var type = 'comics';
var targetID = pageURLparts[pageURLparts.indexOf('comics')+1];
var grepResult = $.grep(IDcache[type], function(e){ return e.bookID == targetID && e.parent == storyArcID; });
}
if(pageURLparts.indexOf('books') != -1){
var type = 'books';
var targetID = pageURLparts[pageURLparts.indexOf('books')+1];
var grepResult = $.grep(IDcache[type], function(e){ return e.bookID == targetID && e.parent == seriesID; });
}
if(grepResult.length){
if($('#group .cellcontainer .label:contains("json")').length){
var filename = $('#group .cellcontainer .label:contains("json")').parent().find('img').attr('src').split('?cover=true')[0];
}else{
$('
').load(location.pathname+" #group", function(){
var filename = $(this).find('.cellcontainer .label:contains("json")').parent().find('img').attr('src').split('?cover=true')[0];
arcRunner(filename);
});
}
arcRunner(filename);
}
}
/* Series Pages and Publisher Pages */
if(!($('#group').hasClass('wrapped'))){
if(($('#group').hasClass('seriesPage'))||($('#group').hasClass('publisherPage'))){
containerWrap();
}else if($('#group').hasClass('arcPage')){
containerWrap('arc');
}
}
/* Books or Comics module >*/
/*< Files and Audiobooks module >*/
}else if($('head link:eq(0)').attr('href').split('/').pop() == "rawfiles.css"){
$('body').contents().wrapAll($('
', {
id: 'group'
}));
if((location.href.indexOf("/"+audiobookShare+"/") != -1)&&(audiobookShare)){
$('#cmx_breadcrumb a:eq(0)').text('Audiobooks');
$('#group a').first().remove();
if(location.pathname== proxyPrefix+'/files/'+audiobookShare+'/'){
$('
').insertBefore('#group');
$('#group').addClass('scriptPage');
}else{
$('
').load("folder-info.html", function( response, status, xhr ) {
if (status != "error") {
$('#group').prepend('
');
$('#folderinfo').html($(this));
$('#group #folderinfo').append($('#cmx_breadcrumb'));
}else{
console.log('The above 404 just means there is no folder-info.html for this page, it can be ignored. - ScooterPSU');
}
});
}
if(($('#group a[href$=".mp3"]').length == 0)&&($('#group a[href$=".m4a"]').length == 0)&&($('#group a[href$=".m4b"]').length == 0)){
var rootLinks = $('#group a[href$="/"]');
for (i = 0; i < rootLinks.length; i++) {
buildElement(rootLinks[i].href,'',rootLinks[i].href+'folder.jpg',rootLinks[i].text.replace('/', ''), i+1, '#group');
}
$('.thumb a img').on("error", function(){
$(this).attr('src', proxyPrefix+'/theme/folder.png');
});
}else{
$('
').load(proxyPrefix+"/theme/templates/player.html #audiobooks", function(){
loadScript(proxyPrefix+"/theme/audiobook.js", function(){
loadScript(proxyPrefix+"/theme/js/jsmediatags.min.js", function(){
$('#audioPlayer .controlButton').show();
$('#group').addClass('audiobook');
checkAudio();
if(!autoPlayAudiobooks){
audio.pause();
}
if($('#playlist li').length < 22){
var addNum = 22 - $('#playlist li').length;
for (i = 0; i < addNum; i++) {
$('
').appendTo($('#playlist'));
}
}
});
});
$('head').append('
');
$("#group").append($(this).contents().contents());
})
}
}else{
$('#group').addClass('filePage');
$('#group a').each(function(){
$(this).wrap('
');
$(this).parent().appendTo('#group');
if($(this).attr('href').match("/$")){
$(this).text($(this).text().replace('/', ''));
$(this).prepend('
');
}else if($(this).attr('href').match(".cbz$")||$(this).attr('href').match(".cbr$")){
$(this).prepend('
');
}else if($(this).attr('href').match(".png$")||$(this).attr('href').match(".jpg$")||$(this).attr('href').match(".gif$")){
$(this).prepend('
');
}else if($(this).attr('href').match(".htm$")||$(this).attr('href').match(".html$")||$(this).attr('href').match(".css$")){
$(this).prepend('
');
}else if($(this).attr('href').match(".pdf$")){
$(this).prepend('
');
}else if($(this).attr('href').match(".epub$")){
$(this).prepend('
');
}else if($(this).attr('href').match("cvinfo$")){
$(this).prepend('
');
}else{
$(this).prepend('
');
}
});
$('#group a img').first().removeClass().addClass('openFolder');
if(audiobookShare){
$('a[href="'+proxyPrefix+'/files/'+audiobookShare+'/"]').parent().remove();
}
}
$('#group br').remove();
/* Files and Audiobooks module >*/
}
}else{
/* Add Register link to login form. */
if(registerLink){
$('body').prepend('
Register ');
}
}
/*< All page functions >*/
/* Add breadcrumb navigation. */
if(($('#cmx_breadcrumb').length === 0)&&((location.pathname != proxyPrefix+'/')||($('#loginform').length == 1))&&!($('body').hasClass('noBreadcrumb'))){
$("body").prepend('
');
if($('#loginform').length == 0){
if(location.href.indexOf("/files/") != -1){
var pathSplit;
if((location.href.indexOf("/files/"+audiobookShare+"/") != -1)&&(audiobookShare)){
$('#cmx_breadcrumb a').text('Audiobooks');
$('#cmx_breadcrumb a').attr('href', '/files/'+audiobookShare+'/');
pathSplit = '/files/'+audiobookShare+'/';
}else{
$('#cmx_breadcrumb a').text('File Browser');
$('#cmx_breadcrumb a').attr('href', '/files/');
pathSplit = '/files/';
}
var pathname = location.pathname.split(pathSplit)[1];
var folders = decodeURIComponent(pathname).slice(0,-1).split('/');
var hinlineText = folders.pop();
var pathFolders = "";
for (i = 0; i < folders.length; i++) {
pathFolders += encodeURIComponent(folders[i]) + "/";
$('.breadcrumb a:last-of-type').after(' >
'+folders[i]+' ');
}
$('.hinline').text(hinlineText);
}else if(location.href.indexOf("/books/") != -1){
$('#cmx_breadcrumb a:eq(0)').text('Books');
$('#cmx_breadcrumb a:eq(0)').attr('href', '/books/');
buildBreadcrumb(location.pathname);
if($('#cmx_breadcrumb').find('a[href*="'+seriesID+'"]').length){
containerWrap('arc');
}else{
containerWrap();
}
}else if(location.href.indexOf("/comics/") != -1){
$('#cmx_breadcrumb a:eq(0)').text('Comics');
$('#cmx_breadcrumb a:eq(0)').attr('href', '/comics/');
buildBreadcrumb(location.pathname);
if($('#cmx_breadcrumb').find('a[href*="'+storyArcID+'"]').length){
containerWrap('arc');
}else if($('#cmx_breadcrumb').find('a[href*="'+weeklyID+'"]').length){
containerWrap('weeks');
$('.hinline').text("Week of " + getWeekRange($('.hinline').text().split('-')[1],$('.hinline').text().split('-')[0]));
$('.list-title').text($('.hinline').text());
}else{
containerWrap();
}
}
}else{
$('.hinline').text('Sign In');
clearUsername();
}
fixPaths('#cmx_breadcrumb a','href');
}
/* Add and update navigation header. */
if($('.top-navigation').length === 0){
$('
').load(proxyPrefix+"/theme/templates/header.html #header", function(){
$("body").prepend($(this).contents());
$(".dropdown").mouseover(function(){
$(this).parent().find("ul").show('blind', 50);
});
if(settingsJSON['isUserManagementEnabled']){
if(sessionStorage.getItem("username") === null){
$('
').load(proxyPrefix+"/index.html", function(){
var connectedString = $(this).find('#userinfo').text();
sessionStorage.seeComics = Boolean($(this).find('#comics').length==1);
sessionStorage.seeBooks = Boolean($(this).find('#books').length==1);
settingsJSON['isComicsProviderEnabled'] = Boolean($(this).find('#comics').length==1);
settingsJSON['isBooksProviderEnabled'] = Boolean($(this).find('#books').length==1);
if(connectedString.indexOf('Connected') == -1){
$('#menuitem_login ul,.books,.booksOnly,.comics,.comicsOnly,.both,.files,#menuitem_browse,#searchForm').remove();
$('.topright-menu').remove();
}else{
sessionStorage.username = connectedString.split("-")[0].split("Connected as ")[1].trim();
$('#username').text(sessionStorage.username);
}
showHideNav();
});
}else{
showHideNav();
}
}else{
sessionStorage.username = defaultUsername;
$('#username').text(sessionStorage.username);
sessionStorage.seeComics = settingsJSON['isComicsProviderEnabled'];
sessionStorage.seeBooks = settingsJSON['isBooksProviderEnabled'];
showHideNav();
}
});
}
/* Reorganize/move page numbers/page arrows so they're in a common element. */
if($('.pagenumber').length > 1){
$("#group").append('');
$('#arrowleft10, #searchleft10').text('First');
$('#arrowright10, #searchright10').text('Last');
$('#arrowleft, #searchleft').text('<');
$('#arrowright, #searchright').text('>');
$(".pager").append($('#searchleft10').parent());
$(".pager").append($('#searchleft').parent());
$(".pager").append($('#arrowleft10'));
$("#arrowleft10").attr('href', '?index=0');
$(".pager").append($('#arrowleft'));
$(".pager").append($('.pagenumber'));
$('.pagenumber').hide();
if($('.pagenumber').index($('.currentpagenumber'))==2){
$('.pagenumber').slice(0, 5).show();
}else if($('.pagenumber').index($('.currentpagenumber'))+1==$('.pagenumber').length){
$('.pagenumber').slice(-5).show();
}else{
if($('.pagenumber').index($('.currentpagenumber')) != 0){
$('.pagenumber').eq($('.pagenumber').index($('.currentpagenumber'))-1).show();
}else{
$('.pagenumber').eq($('.pagenumber').index($('.currentpagenumber'))+4).show();
}
$('.currentpagenumber').show();
$('.pagenumber').eq($('.pagenumber').index($('.currentpagenumber'))+1).show();
if($('.pagenumber').index($('.currentpagenumber')) > 1){
$('.pagenumber').eq($('.pagenumber').index($('.currentpagenumber'))-2).show();
}else{
$('.pagenumber').eq($('.pagenumber').index($('.currentpagenumber'))+3).show();
}
if($('.pagenumber').index($('.currentpagenumber'))+1 != $('.pagenumber').length){
$('.pagenumber').eq($('.pagenumber').index($('.currentpagenumber'))+2).show();
}
if($('.pagenumber').index($('.currentpagenumber')) == $('.pagenumber').length-2){
$('.pagenumber').eq($('.pagenumber').index($('.currentpagenumber'))-3).show();
}
}
if($('.searcharrowform').length){
$(".pagenumber:not([style*='display: none'])").each(function(){
if($(this).hasClass('currentpagenumber')){
$(this).appendTo(".pager");
}else{
$form = $('