Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(B,A){this.element=this.subject=$(B);this.parent(A);var D=this.cancel.bind(this,false);if($type(this.element)!="element"){this.element=$(this.element.getDocument().body);}var C=this.element;if(this.options.wheelStops){this.addEvent("start",function(){C.addEvent("mousewheel",D);},true);this.addEvent("complete",function(){C.removeEvent("mousewheel",D);},true);}},set:function(){var A=Array.flatten(arguments);this.element.scrollTo(A[0],A[1]);},compute:function(E,D,C){var B=[];var A=2;A.times(function(F){B.push(Fx.compute(E[F],D[F],C));});return B;},start:function(C,H){if(!this.check(arguments.callee,C,H)){return this;}var E=this.element.getSize(),F=this.element.getScrollSize();var B=this.element.getScroll(),D={x:C,y:H};for(var G in D){var A=F[G]-E[G];if($chk(D[G])){D[G]=($type(D[G])=="number")?D[G].limit(0,A):A;}else{D[G]=B[G];}D[G]+=this.options.offset[G];}return this.parent([B.x,B.y],[D.x,D.y]);},toTop:function(){return this.start(false,0);},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start("right",false);},toBottom:function(){return this.start(false,"bottom");},toElement:function(B){var A=$(B).getPosition(this.element);return this.start(A.x,A.y);}});window.addEvent('domready',function(){var bodyScroll=new Fx.Scroll(document.body);var size=document.getSize();window.addEvent('resize',function(e){size=document.getSize();});var scrollSize=document.getScrollSize();var cseImage='http://www.google.com/coop/intl/en/images/google_custom_search_watermark.gif';var cseInput=$$('#cse-search-box input[name="q"]')[0];if(cseInput){cseInput.setStyle('background','#fff url('+cseImage+') no-repeat scroll 10px center').addEvents({focus:function(e){if(!this.get('value').trim())this.setStyle('background-position','-999px');},blur:function(e){if(!this.get('value').trim())this.setStyle('background-position','10px center');}});if(cseInput.get('value').trim())cseInput.setStyle('background-position','-999px');}
$$('.artwork, .photo, .screenshot, .figure, .illustration').each(function(el){var elWidth=el.getSize().x;var parentEl;do{parentEl=el.getParent('.section');}
while(!parentEl);var parentWidth=parentEl.getStyle('width').toInt();if(parentWidth-elWidth<220){if(el.get('tag')=='div'){var standaloneDiv=new Element('div',{'class':'standalone'});standaloneDiv.wraps(el);}
else{var innerDiv=new Element('div',{'class':el.get('class'),html:el.get('html')});el.empty().removeProperty('class').addClass('standalone').grab(innerDiv);}}});$$('blockquote[cite]').each(function(el){var cite=el.getProperty('cite').trim();if(!cite)return;var citeText=new Element('p',{'class':'blockquote-cite',html:'Source: <a href="'+cite+'" class="cite-link">'+cite+'</a>'});citeText.inject(el);});if(!Browser.Engine.trident4&&!Browser.Engine.trident5){$$('pre.blockcode code').each(function(el){var preContainer=new Element('div',{'class':'blockcode-container'});var preEl=el.getParent();var elContent=el.get('html');var elLines=elContent.split('\n');var preOl=new Element('ol',{'class':'blockcode'});var preOlContent='';for(var i=0;i<elLines.length;i++){var code=elLines[i].replace(/(\t)/g,'&nbsp;&nbsp;');if(code=='')code='&nbsp;';preOlContent+='<li><code>'+code+'</code></li>';}
preContainer.wraps(preEl);preOl.set('html',preOlContent).inject(preEl,'after').getElements('li:even').addClass('alt');preEl.hide();var viewLink=new Element('a',{'class':'view-code',href:'#',text:'Switch Code View',events:{click:function(e){e.stop();preEl.toggle();preOl.toggle();viewLink.fade('hide');}}}).fade('hide');viewLink.inject(preEl,'before');$$(preEl,preOl,viewLink).addEvents({mouseenter:function(e){viewLink.fade(1);},mouseleave:function(e){viewLink.fade(0);}});})}
var hash=$(document.location.hash.slice(1));if(hash)bodyScroll.toElement(hash);$$('.main-content table').each(function(el){var oddRows=el.getElements('tbody tr:odd');var oddRowCells=oddRows.getElements('td, th').flatten();$$(oddRowCells).addClass('alt');});var footerDiv=$('footer');var footerWidth=footerDiv.getStyle('width').toInt();var footerStick=function(){var containerHeight=$('container').getSize().y;if(containerHeight<size.y)footerDiv.setStyles({position:'absolute',bottom:0,width:footerWidth});};footerStick();window.addEvent('resize',function(e){footerDiv.setStyle('position','static');footerStick();});var archivesUl=$$('.aside .archives ul')[0];if(archivesUl){var archivesLis=archivesUl.getElements('li');for(var i=0;i<10;i++)archivesLis.pop();archivesLis.hide();var archivesP=new Element('p');var archivesSeeAll=new Element('a',{href:'#',text:'see all...',events:{click:function(e){e.stop();archivesLis.show();archivesSeeAll.hide();}}}).inject(archivesP);archivesP.inject(archivesUl,'after');}
var peopleUl=$$('.aside .people ul')[0];if(peopleUl){var peopleLis=peopleUl.getElements('li');for(var i=0;i<10;i++)peopleLis.erase(peopleLis.getRandom());peopleLis.hide();var peopleP=new Element('p');var peopleSeeAll=new Element('a',{href:'#',text:'see all...',events:{click:function(e){e.stop();peopleLis.show();peopleSeeAll.hide();}}}).inject(peopleP);peopleP.inject(peopleUl,'after');}
var cheeaunBar=new Element('div',{id:'cheeaunbar',tween:{'duration':100}}).inject(document.body);var backToTop=new Element('a',{text:'Back to top',href:'#','class':'back-to-top',tween:{duration:100},events:{click:function(e){e.stop();showBar=false;cheeaunBar.tween('height',0);this.fade('out');bodyScroll.toTop();this.blur();}}}).fade('hide').inject(cheeaunBar);var showBar=false;document.addEvent('mousemove',function(e){if(scrollSize.y<=size.y)return;var topBarHidden=false;var hoverTop=false;var hoverRight=false;var scroll=document.getScroll();if(scroll.y>60)topBarHidden=true;if(e.client.y<100)hoverTop=true;if(e.client.x>size.x-100)hoverRight=true;if(topBarHidden&&hoverRight){if(!showBar){cheeaunBar.tween('height',12);backToTop.fade('in');showBar=true;}}
else{if(showBar){cheeaunBar.tween('height',0);backToTop.fade('out');showBar=false;}}});});Element.implement({show:function(){if(this.hidden())this.setStyle('display','');return this;},hide:function(){if(!this.hidden())this.setStyle('display','none');return this;},toggle:function(){return this.setStyle('display',this.hidden()?'':'none');},hidden:function(){return(this.getStyle('display')=='none');}});