var Slideshow=new function(){var a=false;var c={manualTrump:false,before:function(h,f,g){Slideshow.animated=true;Slideshow.currentSlide=$(this).trigger("render.slide");var e="";if(projects[Slideshow.currentSlide.data("opts").project].title){e+='<div class="info_title">'+projects[Slideshow.currentSlide.data("opts").project].title+"</div>"}if(projects[Slideshow.currentSlide.data("opts").project].info){e+='<div class="info_details">'+projects[Slideshow.currentSlide.data("opts").project].info+"</div>"}DOM.info.html(e)},after:function(g,e,f){Slideshow.animated=false;Slideshow.currentSlideIndex=f.currSlide}};var b=function(){var e=$(this);switchTheme(e.data("opts").theme,1000);var f=e.data("opts").large,h=Math.min(1,Math.max(DOM.slideshow.width()/f.width,DOM.slideshow.height()/f.height)),g={width:f.width*h,height:f.height*h};g.left=(DOM.slideshow.width()-g.width)/2;g.top=(DOM.slideshow.height()-g.height)/2;e.find("img").css(g)};var d=function(e){if(!Slideshow.animated){switch(e.keyCode){case 32:Slideshow.toggleInfo();break;case 37:Slideshow.prevSlide();break;case 39:Slideshow.nextSlide();break}}};this.animated=false;this.currentSlide=null;this.currentSlideIndex=0;this.init=function(){if(!a){a=true;$.each(slides,function(f,g){queue.push(f);var e=$('<div class="slide loading">').appendTo(DOM.slideshow).bind("render.slide",b).data("opts",g)});loadImage(queue[0]);DOM.window.resize(function(){DOM.slideshow.width(DOM.window.width()).height(DOM.window.height()).children(".slide:visible").trigger("render.slide")}).trigger("resize");DOM.slideshow.bind("hide.page",function(){DOM.document.unbind("keyup",d);DOM.info.fadeOut("fast");DOM.slideshow.cycle("pause")}).click(Slideshow.toggleInfo)}};this.show=function(){this.init();DOM.pages.filter("#work, #blog, #about").filter(":visible").trigger("hide.page").fadeOut("fast");DOM.info.fadeOut("fast");setTimeout(function(){if($.address.parameter("index")){Slideshow.currentSlideIndex=$.address.parameter("index")-1;Slideshow.currentSlide=$(".slide:eq("+Slideshow.currentSlideIndex+")");switchTheme(Slideshow.currentSlide.data("opts").theme,"fast");DOM.slideshow.cycle($.extend(c,{startingSlide:Slideshow.currentSlideIndex,backwards:false})).cycle("pause");DOM.info.fadeIn("fast")}else{DOM.slideshow.cycle($.extend(c,{startingSlide:Slideshow.currentSlideIndex,backwards:false}))}DOM.slideshow.fadeIn("fast");DOM.document.keyup(d)},200)};this.hide=function(){};this.toggleInfo=function(){if($("#info").css("display")=="block"){DOM.info.hide();DOM.slideshow.cycle("resume")}else{DOM.info.fadeIn("fast");DOM.slideshow.cycle("pause")}};this.goToSlide=function(e){DOM.slideshow.cycle(e)};this.prevSlide=function(){if(!DOM.info.is(":visible")){DOM.slideshow.cycle($.extend(c,{startingSlide:Slideshow.currentSlideIndex,backwards:true}))}DOM.slideshow.cycle("prev")};this.nextSlide=function(){if(!DOM.info.is(":visible")){DOM.slideshow.cycle($.extend(c,{startingSlide:Slideshow.currentSlideIndex,backwards:false}))}DOM.slideshow.cycle("next")}};var Work=new function(){var a=false;var b=[];this.init=function(){if(!a){a=true;var c=null;$.each(slides,function(f,g){var d=$('<a href="#" class="slide slide_secondary" />').appendTo(DOM.work).data("opts",g).click(function(i){i.preventDefault();if(queue!==undefined&&queue.length>0){queue.move(queue.indexOf(f+1),0)}$.address.value("?index="+(f+1))});var h=b.push({slide:d,img:e,opts:g});var e=$("<img />").appendTo(d).hide().error(function(){d.remove();b.remove(h)}).load(function(){e.fadeIn("fast")}).attr("src",g.thumb.src);if(c!=g.project){c=g.project;$('<h2 class="slide_title" />').html(projects[c].title).appendTo(d);d.removeClass("slide_secondary").addClass("slide_primary")}})}};this.show=function(){this.init();DOM.pages.filter("#slideshow, #blog, #about").filter(":visible").trigger("hide.page").fadeOut("fast");DOM.info.hide();DOM.intro.fadeOut("fast");DOM.slideshowNav.empty();switchTheme("theme_light","fast");setTimeout(function(){DOM.work.fadeIn("fast")},200)}};var Blog=new function(){var a=false,c=false,b=function(){if(!a){a=true;DOM.blog.load("/blog #main",function(){c=true;DOM.blog.fadeIn("fast");DOM.intro.fadeIn("fast")})}};this.show=function(){DOM.pages.filter("#slideshow, #work, #about").filter(":visible").trigger("hide.page").fadeOut("fast");DOM.info.hide();DOM.slideshowNav.empty();switchTheme("theme_dark","fast");setTimeout(function(){if(c){DOM.blog.fadeIn("fast");DOM.intro.fadeIn("fast")}else{b()}},200)}};var About=new function(){this.show=function(){DOM.pages.filter("#slideshow, #work, #blog").filter(":visible").trigger("hide.page").fadeOut("fast");DOM.slideshowNav.empty();DOM.info.fadeOut("fast").hide();DOM.intro.fadeOut("fast");switchTheme("theme_light","fast");setTimeout(function(){DOM.about.fadeIn("fast")},200)}};var DOM={},queue=[],loaded=[],max=slides.length;Array.prototype.move=function(c,a){if(a>=this.length){var b=a-this.length;while((b--)+1){this.push(undefined)}}this.splice(a,0,this.splice(c,1)[0]);return this};Array.prototype.remove=function(a){this.splice(a,1)};function switchTheme(c,a){var b=DOM.body.data("theme");if(c!=b){DOM.body.stop(true,true).data("theme",c).switchClass(b,c,a)}}function loadImage(c){if(c==undefined){return}if(loaded.length==max){return}if(loaded[c]){queue.remove(0);loadImage(queue[0])}if(c<max){var a=$("#slideshow .slide:eq("+c+")"),b=new Image();b.onload=function(){$(b).hide();a.removeClass("loading").append(b);$(b).fadeIn();loaded[c]=this;queue.remove(0);loadImage(queue[0])};b.onerror=function(){b.src="";$(b).remove();queue.push(c)};b.src="."+slides[c].large.src}}(function(a){DOM.window=a(window);DOM.document=a(document);a(function(){DOM.body=a("body");DOM.nav=DOM.body.children("#nav");DOM.pages=DOM.body.children("#slideshow, #work, #blog, #about");DOM.slideshow=DOM.pages.filter("#slideshow").hide();DOM.info=DOM.body.children("#info").hide();DOM.work=DOM.pages.filter("#work").hide();DOM.blog=DOM.pages.filter("#blog").hide();DOM.about=DOM.pages.filter("#about").hide();DOM.intro=DOM.body.children("#header_intro").hide();DOM.slideshowNav=DOM.body.find("#slideshow-nav").empty();DOM.body.data("theme","theme_light");a("#nav a").click(function(b){a.address.value(a(this).attr("href").replace(/^#/,""));return false});a.address.change(function(b){switch(a.address.pathNames()[0]){case"work":Work.show();break;case"blog":Blog.show();break;case"about":About.show();break;default:if(DOM.slideshow.is(":hidden")){Slideshow.show()}break}})})})(window.jQuery);
