jQuery.extend({Dims:{body:{h:function(){return $("body").outerHeight(true);},w:function(){return $("body").outerWidth(true);}},viewport:{h:function(){return $(window).height();},w:function(){return $(window).width();}},scroll:function(){var verticalDistScrolled=0;var horizontalDistScrolled=0;if(typeof(window.pageYOffset)=="number"){verticalDistScrolled=window.pageYOffset;horizontalDistScrolled=window.pageXOffset;}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){verticalDistScrolled=document.body.scrollTop;horizontalDistScrolled=document.body.scrollLeft;}else{if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){verticalDistScrolled=document.documentElement.scrollTop;horizontalDistScrolled=document.documentElement.scrollLeft;}}}return{x:horizontalDistScrolled,y:verticalDistScrolled};}}});var ProjectSidebar={init:function(ul){var sublists=ul.find("ul");if(sublists.length>0){this.accordion(sublists);var detailsTopPos=$("div.projectDetails:first").offset().top;var viewportHeight=$.Dims.viewport.h();if(detailsTopPos>viewportHeight){window.scrollTo(0,detailsTopPos);}}},accordion:function(sublists){sublists.each(function(){var sublist=$(this);sublist.prev().addClass("clickable").attr("tabindex","0").bind("click",function(){sublist.toggle("fast");sublist.parent().toggleClass("expanded");});sublist.prev().bind("focus",function(e){$(this).bind("keypress",function(e){if(e.keyCode==0||e.keyCode==13){sublist.toggle("fast");}});});sublist.prev().bind("blur",function(e){$(this).unbind("keypress");});});},ajaxMenus:{init:function(a){var that=this;this.h1=$("h1");this.detailsDiv=$("div.projectDetails");a.click(function(e){var link=$(this);that.selected=link.wrapInner("<strong></strong>");that.aClicked(link);e.preventDefault();});},aClicked:function(link){console.log(this.includeFromHref(link));var that=this;$.get(this.includeFromHref(link),{isAjax:"true"},function(data){that.h1.text(link.text());that.detailsDiv.html(data);});},includeFromHref:function(link){if(link.data("includeUrl")){return link.data("includeUrl");}else{var includeUrl;var urlArr=link.attr("href").split("details=");var detailsParam=urlArr[urlArr.length-1];var loc=window.location.href;var domain=loc.split("/projects/")[0]+"/projects/";if(urlArr.length>1){var detailsVal=detailsParam.split("&")[0];includeUrl=domain+detailsVal+"/"+"details.html";}else{includeUrl=domain+"introduction.html";}link.data("includeUrl",includeUrl);return includeUrl;}}}};var Lightbox={callingElement:"",initialize:function(){var launchLinks=$("a[target*='lightbox']");if(launchLinks.length>0){this.mask.create();this.lightbox.build();var parentThis=this;launchLinks.bind("click",function(){parentThis.mask.on();parentThis.interstitial.show();parentThis.lightbox.showImage(this);parentThis.callingElement=this;return false;});}},interstitial:{element:$("#interstitial"),textWrapper:"",dotsNum:"",show:function(){if(this.element.length<1){$("<div id='interstitial'><span>.&nbsp;&nbsp;</span></div>").appendTo(document.body);this.element=$("#interstitial");this.textWrapper=$("#interstitial span:first");this.dotsNum=1;this.fauxAnimate();}else{this.element.show();this.fauxAnimate();}var interstitial=this;var mask=Lightbox.mask;mask.element.unbind("click");mask.element.bind("click",function(){interstitial.hide();mask.off();});},hide:function(){window.clearTimeout(this.timer);this.timer=null;this.element.hide();},fauxAnimate:function(){var parentThis=this;this.timer=window.setTimeout(function(){parentThis.setText();},1100);},setText:function(){if(this.dotsNum<3){if(this.dotsNum<1){this.textWrapper.html(".&nbsp;&nbsp;");}else{if(this.dotsNum<2){this.textWrapper.html("..&nbsp;");}else{this.textWrapper.html("...");}}this.dotsNum=this.dotsNum+1;}else{this.textWrapper.html("");this.dotsNum=0;}this.fauxAnimate();}},mask:{element:$("#mask"),create:function(){if(this.element.length<1){$("<div id='mask'></div>").appendTo(document.body);this.element=$("#mask");this.size();}},size:function(itemHeight){var passedItemHeight=itemHeight||0;var height=Math.max($(document).height(),$(window).height(),passedItemHeight);this.element.height(height);},on:function(){if(!this.element.length){this.create();}$(document.body).addClass("masked");},off:function(){$(document.body).removeClass("masked");}},lightbox:{element:$("#lightbox"),contentArea:"",shell:"",firstCloseButton:"",build:function(){if(!this.element.length){$("<div id='lightbox'></div>").appendTo(document.body);this.element=$("#lightbox");var lightboxShell=$("<div class='lightboxShell'></div>");var closeButton=$("<button class='close'>Close</button>");var parentThis=this;closeButton.appendTo(lightboxShell).bind("click",function(){Lightbox.hide();}).clone(true).insertAfter(closeButton);closeButton.after("<div class='lightboxContent'><p class='loading'>Loading...</p></div>");lightboxShell.appendTo(this.element);this.contentArea=$("#lightbox p.loading:first");this.firstCloseButton=closeButton;this.shell=lightboxShell;}},showImage:function(imgLink){var href=imgLink.href;var currentImgSrc=this.contentArea[0].src;if(href&&(href!=currentImgSrc)){var parentThis=this;$("<img src='' alt='full size graphic' class='full' />").load(function(){var img=$(this);var height=img.height();parentThis.contentArea.replaceWith(img);parentThis.contentArea=img;parentThis.sizeShell(img);Lightbox.interstitial.hide();Lightbox.show();}).attr("src",href).appendTo(document.body);}else{this.sizeShell(this.contentArea);Lightbox.interstitial.hide();Lightbox.show();}},sizeShell:function(image){image.width("auto");if(image.width()<$(window).width()-100){this.shell.width(image.width());}else{this.shell.width($(window).width()-100);image.width("100%");}}},show:function(){this.interstitial.hide();var viewportHeight=$(window).height();var vertScroll=$.Dims.scroll().y;var contentHeight=this.lightbox.element.height();if(viewportHeight>=contentHeight){var top=((viewportHeight-contentHeight)/2)+vertScroll;this.mask.size();}else{var top=vertScroll;this.mask.size(contentHeight+vertScroll);}var closeButton=this.lightbox.firstCloseButton[0];this.lightbox.element.hide().css("top",top).slideDown("slow",function(){closeButton.focus();});var parentThis=this;this.mask.element.unbind("click");this.mask.element.bind("click",function(){parentThis.hide();});this.lightbox.element.bind("click",function(){parentThis.hide();});this.lightbox.shell.bind("click",function(){return false;});$("body").keyup(function(e){if(e.which==27){parentThis.hide();}});},hide:function(){var parentThis=this;this.lightbox.element.slideUp("slow",function(){parentThis.mask.off();parentThis.lightbox.element.removeAttr("style");});if(this.callingElement!=null){this.callingElement.focus();}this.mask.element.unbind("click");this.lightbox.element.unbind("click");this.lightbox.shell.unbind("click");$("body").unbind("keyup");}};var SmallScreenOverflow={overflowBeingBad:false,resizeTimer:null,init:function(){this.sidebar=$("div.sidebar:first");if(this.sidebar.length>0){this.mainContent=$("div.mainContent:first");this.mainContentMinWidth=parseInt(this.mainContent.css("min-width"));this.check();var that=this;$(window).bind("resize",function(){if(that.resizeTimer){clearTimeout(that.resizeTimer);}that.resizeTimer=setTimeout(function(){that.check();},400);});}},check:function(){if(this.overflowBeingBad){var containerRightPos=this.getRightPos(this.container,false);var sidebarRightPos=this.getRightPos(this.sidebar,true,true);if((containerRightPos-sidebarRightPos)>=this.mainContentMinWidth){this.mainContent.removeAttr("style");this.overflowBeingBad=false;}}else{if(this.mainContent.width()==this.mainContentMinWidth){if(!this.container){this.container=$("#content-innermost");}var mainContentRightPos=this.mainContent.offset().left+this.mainContentMinWidth;if(mainContentRightPos>this.getRightPos(this.container,false)){this.mainContent.css("clear","both");this.overflowBeingBad=true;}}}},getRightPos:function(elem,includePadding,includeMargin){var margin=(includeMargin)?parseInt(elem.css("margin-right")):0;var padding=includePadding?0:parseInt(elem.css("padding-right"));return(elem.offset().left+elem.innerWidth()-padding+margin);}};$(function(){Lightbox.initialize();ProjectSidebar.init($("#detailsNav"));try{HelpIE.initialize();}catch(e){}});