window.innerShiv=function(){var d,r,IE=top.execScript?1:0;return function(h,u){if(!d){d=document.createElement("div");r=document.createDocumentFragment();if(IE)d.style.display="none"}var e=d.cloneNode(true);if(IE)document.body.appendChild(e);e.innerHTML=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(IE)document.body.removeChild(e);if(u===false)return e.childNodes;var f=r.cloneNode(true),i=e.childNodes.length;while(i--)f.appendChild(e.firstChild);return f}}();var DOF=DOF||{};
(function(){var $self=DOF,DEATH_OF_FIELD,QUEUE=[],CACHE={},PHOTOS,HEADER,NAV,FIGURE,ASIDE,INFO,YEAR,MONTH,DAY,PREV,NEXT,IFRAME,CURRENT_IMAGE,TRANSITION_END_EVENT,TAP_EVENT,MOVE_EVENT,MOVE_LISTENER,ORIGINAL_DATE,SRC_TYPE,SMALL_SCREEN,ANIMATION_TIMER=500,HEIGHT="height",ACTIVE="active",VALUE_ATTR="data-value",SELECTED_ATTR="data-selected",SELECTED_CLASS=".selected",DIRECTIONAL_CLASS=".directional",LOADING_CLASS="loading",TRANSITIONAL_CLASS="keyframe",CLOSE_CLASS=".close",TOGGLE_CLASS=".toggle",SELECT_CLASS=
".select",SELECT_MARKUP='<div class="select"><span class="selected"></span><ul></ul></div>',PHOTO_JSON="/photos/";$self.legacy={backgroundSize:function(target,data){var url,aspectRatio,win=$(window),winHeight,winWidth,imgOffset,img;target.find("img").remove();img=$("<img />").css({position:"fixed","z-index":-1}).appendTo(target);if(!target.data("resizeEvent")){win.bind("resize",function(){if(target.css("background-image")&&target.css("background-image")!=="none"){url=target.css("background-image").replace(/^url\(("|')?|("|')?\);?$/g,
"");if(url){img.attr("src",url);target.css("background-image","none")}}aspectRatio=data.width/data.height;winHeight=win.height();winWidth=win.width();img.width(winWidth);img.height(winWidth/aspectRatio);img.css({top:-(img.height()-winHeight)/2,left:0});if(img.height()<winHeight){img.height(winHeight);img.width(winHeight*aspectRatio);img.css({top:0,left:-(img.width()-winWidth)/2})}});target.data("resizeEvent",true)}win.trigger("resize")}};$self.utils={ieCheck:function(){$.extend($.browser,{ie6:function(){return!!($.browser.msie&&
$.browser.version==6)}()})}(),queue:function(object){QUEUE.push(object)},init:function(){$.each(QUEUE,function(i,object){for(var key in object)if(object.hasOwnProperty(key)&&typeof object[key]==="function")object[key]()})},getJSONObject:function(update){var rand="?"+Math.floor(Math.random()*9999999);$.getJSON(PHOTO_JSON+rand,function(data){PHOTOS=data;$self.utils.setupEnvironment()})},setupEnvironment:function(){$.each($self.ondemand,function(key,func){func.call($self.utils,func)})},preloadImage:function(data){if(IFRAME)IFRAME.remove();
IFRAME=$("<iframe></iframe>").attr("src","/preload/?x="+data[SRC_TYPE]).appendTo(document.body);IFRAME.bind("load",function(e){window.setTimeout(function(){IFRAME.remove();IFRAME=null},0);$self.utils.preloadComplete(data,SRC_TYPE)})},preloadComplete:function(data,src){$(document.body).addClass("enabled");$self.utils.addScalableImage(data);if(Modernizr.csstransitions)FIGURE.removeClass(LOADING_CLASS);else{CURRENT_IMAGE.stop().animate({opacity:1},ANIMATION_TIMER);FIGURE.find("figcaption div").animate({width:"100%"},
ANIMATION_TIMER);window.setTimeout(function(){FIGURE.find("figcaption span").animate({width:"100%"},ANIMATION_TIMER)},ANIMATION_TIMER*0.5)}},updateCache:function(year,month,day){year=year||(YEAR?YEAR.attr(VALUE_ATTR):null);month=month||(MONTH?MONTH.attr(VALUE_ATTR):null);day=day||(DAY?DAY.attr(VALUE_ATTR):null);$self.utils.cacheMetadata(year,month,day)},cacheMetadata:function(year,month,day){var current,previous,next;var currObj={y:-1,m:-1,d:-1},prevObj,nextObj;$.each(PHOTOS,function(i,obj){if(obj.year===
year){currObj.y=i;$.each(obj.months,function(j,obj){if(obj.month===month){currObj.m=j;$.each(obj.days,function(k,obj){if(obj.day===day){current=obj;currObj=$.extend(currObj,{d:k,data:current});return false}});return false}});return false}});prevObj=$.extend({},currObj);while(!previous){if(!PHOTOS[prevObj.y].months[prevObj.m])break;prevObj.d-=1;if(!PHOTOS[prevObj.y].months[prevObj.m].days[prevObj.d]){prevObj.m-=1;if(!PHOTOS[prevObj.y].months[prevObj.m]){prevObj.y-=1;if(!PHOTOS[prevObj.y])break;prevObj.m=
PHOTOS[prevObj.y].months.length-1}prevObj.d=PHOTOS[prevObj.y].months[prevObj.m].days.length-1}previous=PHOTOS[prevObj.y].months[prevObj.m].days[prevObj.d]}if(previous)previous=$.extend(previous,{year:PHOTOS[prevObj.y].year,month:PHOTOS[prevObj.y].months[prevObj.m].month});nextObj=$.extend({},currObj);while(!next){if(!PHOTOS[nextObj.y].months[nextObj.m])break;nextObj.d+=1;if(!PHOTOS[nextObj.y].months[nextObj.m].days[nextObj.d]){nextObj.m+=1;if(!PHOTOS[nextObj.y].months[nextObj.m]){nextObj.y+=1;if(!PHOTOS[nextObj.y])break;
nextObj.m=0}nextObj.d=0}next=PHOTOS[nextObj.y].months[nextObj.m].days[nextObj.d]}if(next)next=$.extend(next,{year:PHOTOS[nextObj.y].year,month:PHOTOS[nextObj.y].months[nextObj.m].month});CACHE={year:year?PHOTOS[currObj.y]:null,month:month?PHOTOS[currObj.y].months[currObj.m]:null,current:day?current:null,previous:previous,next:next}},buildFigure:function(data){var _timer;var onTransitionEnd=function(e){if(_timer)window.clearTimeout(_timer);FIGURE.remove();var FIGURE_SHELL=["<figure>","<figcaption>",
"<div><p><span>{{description}}</span></p></div>","</figcaption>",'<div class="image">','<div class="flickr">','<a href="http://flickr.com/{{url}}">{{title}}</a>',"</div>","</div>","</figure>"].join("");$.each(data,function(key,value){FIGURE_SHELL=FIGURE_SHELL.replace(new RegExp("{{"+key+"}}","g"),value)});FIGURE=$(innerShiv(FIGURE_SHELL,false));FIGURE.insertAfter(HEADER);CURRENT_IMAGE=FIGURE.find(".image");if(Modernizr.csstransitions)FIGURE.addClass(LOADING_CLASS);else{CURRENT_IMAGE.css("opacity",
0);FIGURE.find("figcaption").find("div, span").width(0)}$self.utils.preloadImage(data)};var div=FIGURE.find("figcaption div");if(div.length)if(Modernizr.csstransitions){CURRENT_IMAGE.bind(TRANSITION_END_EVENT,function(e){if(e.target===this){CURRENT_IMAGE.unbind(TRANSITION_END_EVENT);onTransitionEnd.call(this,e)}});window.setTimeout(function(){FIGURE.addClass(LOADING_CLASS)},0);_timer=window.setTimeout(onTransitionEnd,ANIMATION_TIMER*2)}else{CURRENT_IMAGE.animate({opacity:0},ANIMATION_TIMER);FIGURE.find("figcaption span").animate({width:0},
ANIMATION_TIMER);window.setTimeout(function(){FIGURE.find("figcaption div").animate({width:0},ANIMATION_TIMER,onTransitionEnd)},ANIMATION_TIMER*0.5)}else window.setTimeout(onTransitionEnd,ANIMATION_TIMER)},addScalableImage:function(data){CURRENT_IMAGE.css("background-image","url("+data[SRC_TYPE]+")");if(!Modernizr.backgroundsize)$self.legacy.backgroundSize(CURRENT_IMAGE,data)},updateView:function(){var year=YEAR.attr(VALUE_ATTR),month=MONTH.attr(VALUE_ATTR),day=DAY.attr(VALUE_ATTR),date=["",year,
month,day,""].join("/");if(Modernizr.history&&!FIGURE.attr("title")){window.history.pushState({date:[year,month,day]},document.title,date);GOOGLE.Analytics.track({categories:"Photos",actions:"Viewed",labels:[year,month,day].join(" ")})}$self.utils.buildFigure(CACHE.current.data);$self.utils.sendDataToDirectionalNav()},setActive:function(el,parent){el.attr(SELECTED_ATTR,"selected");el.siblings().removeAttr(SELECTED_ATTR);parent.attr(VALUE_ATTR,el.attr(VALUE_ATTR));parent.find(SELECTED_CLASS).text(el.text())},
createHTMLFragment:function(frag){var dummy=$("<div></div>").html(frag),child=dummy.children();dummy.remove();return child},buildSelectElement:function(id){var select=$self.utils.createHTMLFragment(SELECT_MARKUP).attr("id",id);return select},buildInformationElement:function(){var item,infoText=SMALL_SCREEN?"Info":"Information";INFO=$self.utils.buildSelectElement("information");NAV.append(INFO);INFO.find(SELECTED_CLASS).text(DEATH_OF_FIELD);item=$("<li></li>");item.attr(VALUE_ATTR,"information").text(infoText);
INFO.find("ul").append(item);item=$("<li></li>");item.attr(VALUE_ATTR,"contact").text("Contact");INFO.find("ul").append(item);$self.utils.buildYearElement()},buildYearElement:function(){if(YEAR)YEAR.remove();YEAR=$self.utils.buildSelectElement("years");NAV.append(YEAR);$.each(PHOTOS,function(i,obj){var item=$("<li></li>");item.attr(VALUE_ATTR,obj.year).text(obj.year);YEAR.find("ul").append(item)});$self.utils.setActive(YEAR.find($self.utils.buildDataValueSelector(CACHE.year.year)),YEAR);$self.utils.buildMonthElement()},
buildMonthElement:function(){var active=CACHE.year.months;if(MONTH)MONTH.remove();MONTH=$self.utils.buildSelectElement("months");NAV.append(MONTH);$.each(active,function(i,obj){var item=$("<li></li>"),text=SMALL_SCREEN?obj.month.substring(0,3):obj.month;item.attr(VALUE_ATTR,obj.month).text(text);MONTH.find("ul").append(item)});if(CACHE.month)$self.utils.setActive(MONTH.find($self.utils.buildDataValueSelector(CACHE.month.month)),MONTH);$self.utils.buildDayElement()},buildDayElement:function(){if(DAY)DAY.remove();
DAY=$self.utils.buildSelectElement("days");NAV.append(DAY);if(!CACHE.month)$self.utils.clearSelectValues(DAY);else{var active=CACHE.month.days;$.each(active,function(i,obj){var item=$("<li></li>");item.attr(VALUE_ATTR,obj.day).text(obj.day);DAY.find("ul").append(item)});if(SMALL_SCREEN&&active.length>15)DAY.addClass("small-screen");if(CACHE.current)$self.utils.setActive(DAY.find($self.utils.buildDataValueSelector(CACHE.current.day)),DAY)}},clearSelectValues:function(target,remove){if(remove)target.find("ul").remove();
target.find("["+SELECTED_ATTR+"]").removeAttr(SELECTED_ATTR);target.find(SELECTED_CLASS).text("-")},buildDataValueSelector:function(attr){return"li["+VALUE_ATTR+"='"+attr+"']"},sendDataToDirectionalNav:function(){if(CACHE.previous)PREV.removeClass("none").attr({"data-day":CACHE.previous.day,"data-month":CACHE.previous.month,"data-year":CACHE.previous.year});else{PREV.addClass("none");PREV.removeAttr("data-day").removeAttr("data-month").removeAttr("data-year")}if(CACHE.next)NEXT.removeClass("none").attr({"data-day":CACHE.next.day,
"data-month":CACHE.next.month,"data-year":CACHE.next.year});else{NEXT.addClass("none");NEXT.removeAttr("data-day").removeAttr("data-month").removeAttr("data-year")}},sendDataToSelectionalNav:function(year,month,day){var selector=$self.utils.buildDataValueSelector;if(YEAR.attr(VALUE_ATTR)!==year)YEAR.find(selector(year)).trigger(TAP_EVENT);if(MONTH.attr(VALUE_ATTR)!==month)MONTH.find(selector(month)).trigger(TAP_EVENT);if(DAY.attr(VALUE_ATTR)!==day)DAY.find(selector(day)).trigger(TAP_EVENT);$(SELECT_CLASS).removeClass(ACTIVE)},
scrollToTop:function(e){window.setTimeout(function(){window.scrollTo(0,1)},0)},orientationChange:function(e){if(e&&"orientation"in window){var html=$("html");if(Math.abs(window.orientation)===90)html.addClass("landscape");else html.removeClass("landscape");$("ul",SELECT_CLASS).trigger("touchend");$self.utils.scrollToTop()}}};$self.ondemand={initialMarkup:function(){var HEADER_SHELL=["<header>","<nav></nav>",'<div class="toggle"></div>',"</header>"].join("");HEADER=$(innerShiv(HEADER_SHELL,false)).insertBefore(FIGURE);
NAV=$("nav",HEADER);ASIDE.find("div").append('<span class="close"></span>')},initialMetadata:function(){$self.utils.updateCache.apply($self.utils,ORIGINAL_DATE)},addEventListeners:function(){var touchMoveEventFired;$("li",SELECT_CLASS).live(TAP_EVENT,function(e){if(touchMoveEventFired)return;var el=$(this),triggered=!(e.pageX||e.pageY),parent=el.closest(SELECT_CLASS);if(!el.attr(SELECTED_ATTR)){$self.utils.setActive(el,parent);$self.utils.updateCache();switch(parent.attr("id")){case "years":$self.utils.buildMonthElement();
$self.utils.clearSelectValues(MONTH);$self.utils.clearSelectValues(DAY,true);break;case "months":$self.utils.buildDayElement();$self.utils.clearSelectValues(DAY);break;case "days":$self.utils.updateView();break;case "information":$(window).trigger("information",el.attr(VALUE_ATTR))}}el.closest(SELECT_CLASS).removeClass(ACTIVE)});if(Modernizr.touch)$(SELECTED_CLASS).live(TAP_EVENT,function(){$(this).parent().toggleClass(ACTIVE).siblings().removeClass(ACTIVE)});else{$(SELECTED_CLASS).live("mouseenter",
function(){$(this).parent().addClass(ACTIVE)});$(SELECT_CLASS).live("mouseleave",function(){$(this).removeClass(ACTIVE)})}$(DIRECTIONAL_CLASS).live(TAP_EVENT,function(e){var el=$(this),year=el.attr("data-year"),month=el.attr("data-month"),day=el.attr("data-day");if(el.data("year"))$self.utils.sendDataToSelectionalNav(year,month,day)});$(CLOSE_CLASS).live(TAP_EVENT,function(){var onTransitionEnd=function(e){if(!e||e.target===this)ASIDE.attr("class","")};ASIDE.addClass("fade-out");if(Modernizr.csstransitions)ASIDE.one(TRANSITION_END_EVENT,
onTransitionEnd);else onTransitionEnd()});$(TOGGLE_CLASS).live(TAP_EVENT,function(e){e.preventDefault();var el=$(this).toggleClass("closed");if(MOVE_LISTENER)window.clearTimeout(MOVE_LISTENER);if(el.hasClass("closed")){$(document.body).addClass("closed");MOVE_LISTENER=window.setTimeout(function(){el.addClass("fade-out")},ANIMATION_TIMER)}else{el.removeClass("fade-out");$(document.body).removeClass("closed")}});$(document).bind("keydown",function(e){if(!e.shiftKey&&!e.metaKey&&!e.altKey&&!e.ctrlKey)switch(e.keyCode){case 32:$(TOGGLE_CLASS).trigger(TAP_EVENT);
break;case 37:PREV.trigger(TAP_EVENT);break;case 39:NEXT.trigger(TAP_EVENT);break}});$(document).bind("touchmove",function(e){e.preventDefault()});$(document).bind(MOVE_EVENT,function(e){var el=$(TOGGLE_CLASS);if(MOVE_LISTENER)window.clearTimeout(MOVE_LISTENER);if(el.hasClass("closed")){el.removeClass("fade-out");MOVE_LISTENER=window.setTimeout(function(){el.addClass("fade-out")},ANIMATION_TIMER)}});$(window).bind("popstate",function(e){var o=e.originalEvent,state=o.state,date;date=state?state.date:
ORIGINAL_DATE;$self.utils.sendDataToSelectionalNav.apply($self.utils,date);GOOGLE.Analytics.track({categories:"Photos",actions:"Viewed",labels:date.join(" ")})});$(window).bind("information",function(e,type){switch(type){case "information":ASIDE.toggleClass(ACTIVE);if(!Modernizr.csstransforms)if(ASIDE.hasClass(ACTIVE))ASIDE.css({opacity:0}).animate({opacity:1},{duration:ANIMATION_TIMER*2});else ASIDE.css({visibility:"visible",opacity:1}).animate({opacity:0},{duration:ANIMATION_TIMER*2,complete:function(){ASIDE.css("visibility",
"hidden")}});break;case "contact":window.location.href="mailto:patrick@deathoffield.com";break}INFO.find("["+SELECTED_ATTR+"]").removeAttr(SELECTED_ATTR);INFO.find(SELECTED_CLASS).text(DEATH_OF_FIELD)});if(Modernizr.touch){$(window).bind("orientationchange",$self.utils.orientationChange);$(window).bind("setupcomplete",function(){window.setTimeout($self.utils.scrollToTop,100)})}},buildSelectionalNav:function(){$self.utils.buildInformationElement();$(window).one("setupcomplete",function(){window.setTimeout(function(){DAY.find($self.utils.buildDataValueSelector(ORIGINAL_DATE[2])).removeAttr(SELECTED_ATTR).trigger(TAP_EVENT)},
100)})},buildDirectionalNav:function(){PREV=$self.utils.createHTMLFragment('<div class="directional prev"><span></span></div>');NEXT=$self.utils.createHTMLFragment('<div class="directional next"><span></span></div>');NAV.append(PREV).append(NEXT);$self.utils.sendDataToDirectionalNav()},triggerLoadComplete:function(){$(window).trigger("setupcomplete")}};$self.global=function(){if($.browser.msie)try{document.execCommand("BackgroundImageCache",false,true)}catch(ex){}$.easing.def="easeInOutExpo"};$self.google=
function(){window.GOOGLE=window.GOOGLE||{};GOOGLE.Analytics=GOOGLE.Analytics||{track:function(obj){var array=["_trackEvent"],key;for(key in obj)array.push(obj[key]);return _gaq.push(array)}}};$self.init=function(){TRANSITION_END_EVENT=function(){var event="transitionend";if($.browser.webkit)event="webkitTransitionEnd";return event}();TAP_EVENT=Modernizr.touch?"touchend":"click";MOVE_EVENT=Modernizr.touch?"touchmove":"mousemove";FIGURE=$("figure").css({"background-image":"none",visibility:"hidden"});
CURRENT_IMAGE=FIGURE.find(".image");ASIDE=$("aside");PREV=$(".directional.prev");NEXT=$(".directional.next");ORIGINAL_DATE=FIGURE.attr("title").split(" ");SRC_TYPE=Modernizr.touch?"src_m":"src";SMALL_SCREEN=$(window).width()<=480;DEATH_OF_FIELD=SMALL_SCREEN?"DoF":"Death of Field";$self.utils.getJSONObject()};$self.utils.queue($self);$(document).ready($self.utils.init)}).call(DOF);

