Ox.getJSON('json/pandora.json', function(pandora) { $(function() { var $body = $('body'), $icon = $('#icon') .bind({ click: function() { $('#menu > div').removeClass('selected'); $page.empty() .append($('
').html('pan.do/ra')) .append( $('').attr({ src: 'http://0x2620.org/jpg/jpg/0xDB/Screenshots/IMG_0009.jpg' }) ) } }), $menu = $('
').attr({id: 'menu'}).appendTo($body), $page = $('
').attr({id: 'page'}).appendTo($body), $head = $('
').appendTo($page); $text = $('
').appendTo($page); $prevButton = $('') .addClass('button') .attr({id: 'prevButton', title: 'previous'}) .html('<='), $nextButton = $('') .addClass('button') .attr({id: 'nextButton', title: 'next'}) .html('=>'), tourIndex = 0; Ox.forEach(pandora.pages, function(data, page) { var $element, text; if (page == '') { $element = $('') .attr({id: 'icon', src: 'png/icon256.png'}) .appendTo($body); } else { $element = $('
') .addClass(page) .html(page) .appendTo($menu); } $element.bind({ click: function() { window.location.hash = page; } }); }); window.onhashchange = loadPage; loadPage(); function loadPage() { var page = window.location.hash.substr(1), text; if (pandora.pages[page]) { $('#menu > div').removeClass('selected'); page != '' && $('#menu > .' + page).addClass('selected'); if (page == 'news') { text = pandora.pages.news.map(function(item) { return '
' + item[0] + '
' + '
' + Ox.formatDate(item[1], '%A, %B %e, %Y') + '
' + '
' + item[2] + '
'; }).join(''); } else if (page == 'faq') { text = pandora.pages.faq.map(function(item) { return '
' + item[0] + '
' + '
' + item[1] + '
'; }).join(''); } else if (page == 'tour') { text = $('
') .append( $('').attr({src: pandora.pages.tour[tourIndex][0]}) ) .append($('
')) .append($('
')) .append( $('

').html(pandora.pages.tour[tourIndex][1]) ); } else { text = pandora.pages[page]; } $head.empty().append( page == '' ? 'pan.do/ra — open media archive' : page == 'tour' ? $('') .addClass('button disabled') .attr({title: 'first'}) .html('tour') .click(function() { loadTour(0); }) : page ); $text.addClass(page).empty().append(text); if (page == 'tour') { $prevButton .click(function() { loadTour(-1); }) .appendTo($head); $nextButton .click(function() { loadTour(1); }) .appendTo($head); if (tourIndex == 0) { $prevButton.addClass('disabled'); } else if (tourIndex == pandora.pages.tour.length - 1) { $nextButton.addClass('disabled'); } } } } function loadTour(delta) { tourIndex = delta == 0 ? 0 : Ox.mod(tourIndex + delta, pandora.pages.tour.length); $('.button').removeClass('disabled'); if (tourIndex == 0) { $prevButton.addClass('disabled'); } else if (tourIndex == pandora.pages.tour.length - 1) { $nextButton.addClass('disabled'); } var $img = $text.find('img'), $p = $text.find('p'), src = pandora.pages.tour[tourIndex][0] $('') .load(function() { $img.css({opacity: 1}).attr({src: src}); $p.css({opacity: 1}).html(pandora.pages.tour[tourIndex][1]); }) .attr({ src: src }); $img.css({opacity: 0.25}); $p.css({opacity: 0.25}); } }); });