//MooTools, <http://mootools.net>, My Object Oriented (JavaScript) Tools. Copyright (c) 2006-2009 Valerio Proietti, <http://mad4milk.net>, MIT Style License.
//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
/**
 * HistoryManager
 * @license		MIT License
 * @author		Harald Kirschner <mail [at] digitarald.de>
 * @copyright	2007 Author
 */
var HistoryManagerX=new Class({Implements:[Options,Events],options:{observeDelay:100,stateSeparator:";",iframeSrc:"blank.html",onStart:Class.empty,onRegister:Class.empty,onUnregister:Class.empty,onStart:Class.empty,onUpdate:Class.empty,onStateChange:Class.empty,onObserverChange:Class.empty},dataOptions:{skipDefaultMatch:true,defaults:[],regexpParams:""},initialize:function(a){if(this.modules){return this}this.setOptions(a);this.modules=$H({});this.count=history.length;this.states=[];this.states[this.count]=this.getHash();this.state=null;return this},start:function(){this.observe.periodical(this.options.observeDelay,this);this.started=true;this.observe();this.update();this.fireEvent("onStart",[this.state]);return this},register:function(b,g,c,f,e,a){if(!this.modules){this.initialize()}var d=$merge(this.dataOptions,a||{},{defaults:g,onMatch:c,onGenerate:f,regexp:e});d.regexp=d.regexp||b+"-([\\w_-]*)";if(typeof d.regexp=="string"){d.regexp=new RegExp(d.regexp,d.regexpParams)}d.onGenerate=d.onGenerate||function(h){return b+"-"+h[0]};d.values=d.defaults.copy();this.modules.set(b,d);this.fireEvent("onUnregister",[b,d]);return{setValues:function(h){return this.setValues(b,h)}.bind(this),setValue:function(h,i){return this.setValue(b,h,i)}.bind(this),generate:function(h){return this.generate(b,h)}.bind(this),unregister:function(){return this.unregister(b)}.bind(this)}},unregister:function(a){this.fireEvent("onRegister",[a]);this.modules.remove(a)},setValues:function(b,a){var c=this.modules.get(b);if(!c||c.values.isSimilar(a)){return this}c.values=a;this.update();return this},setValue:function(b,a,d){var c=this.modules.get(b);if(!c||c.values[a]==d){return this}c.values[a]=d;this.update();return this},generate:function(b,a){var d=this.modules.get(b);var e=d.values.copy();d.values=a;var c=this.generateState();d.values=e;return"#"+c},observe:function(){if(this.timeout){return}var a=this.getState();if(this.state==a){return}if(((Browser.Engine.trident&&(!document.querySelectorAll)))&&(this.state!==null)){this.setState(a,true)}else{this.state=a}this.modules.each(function(d,b){var c=a.match(d.regexp);if(c){c.splice(0,1);c.complement(d.defaults);if(!c.isSimilar(d.defaults)){d.values=c}}else{d.values=d.defaults.copy()}d.onMatch(d.values,d.defaults)});this.fireEvent("onStateChange",[a]).fireEvent("onObserverChange",[a])},generateState:function(){var a=[];this.modules.each(function(c,b){if(c.skipDefaultMatch&&c.values.isSimilar(c.defaults)){return}a.push(c.onGenerate(c.values))});return a.join(this.options.stateSeparator)},update:function(){if(!this.started){return this}var a=this.generateState();if((!this.state&&!a)||(this.state==a)){return this}this.setState(a);this.fireEvent("onStateChange",[a]).fireEvent("onUpdate",[a]);return this},observeTimeout:function(){if(this.timeout){this.timeout=$clear(this.timeout)}else{this.timeout=this.observeTimeout.delay(200,this)}},getHash:function(){var a=top.location.href;var b=a.indexOf("#")+1;return(b)?a.substr(b):""},getState:function(){var b=this.getHash();if(this.iframe){var c=this.iframe.contentWindow.document;if(c&&c.body.id=="state"){var a=c.body.innerText;if(this.state==b){return a}this.istateOld=true}else{return this.istate}}return b},setState:function(b,a){b=$pick(b,"");top.location.hash=b||"#";if(Browser.Engine.trident&&(!document.querySelectorAll)&&(!a||this.istateOld)){if(!this.iframe){this.iframe=new Element("iframe",{src:this.options.iframeSrc,style:"visibility: hidden;height:1px;"}).injectInside(document.body);this.istate=this.state}try{var d=this.iframe.contentWindow.document;d.open();d.write('<html><body id="state">'+b+"</body></html>");d.close();this.istateOld=false}catch(c){}}this.state=b},extend:$extend});Array.implement({isSimilar:function(a){return(this.toString()==a.toString())},complement:function(c){for(var b=0,a=this.length;b<a;b++){this[b]=$pick(this[b],c[b]||null)}return this},copy:function(d,c){d=d||0;if(d<0){d=this.length+d}c=c||(this.length-d);var a=[];for(var b=0;b<c;b++){a[b]=this[d++]}return a}});var HistoryManager;window.addEvent("domready",function(){HistoryManager=new HistoryManagerX()});window.addEvent("domready",function(){new Fx.SmoothScroll({links:$$("a[href^=#]")});var a=document.getElement("ul.expander");if(a){(function(){var g=a.hasClass("hover-expander");var k=$$("ul.expander > li");var l=new Fx.Elements(k,{link:"cancel",transition:"quad:in:out"});var d=function(n,m){var p={};k.each(function(o,q){p[q]=j[q]});if(n!=-1){p[n]=h[n]}if(!g){i.setValue(0,parseInt(n)+1)}if(m==true){l.set(p)}else{l.start(p)}};if(!g){var i=HistoryManager.register("expanders",[false],function(m){d(parseInt(m[0]-1),true)},function(m){return"_"+m[0]},"_([a-z0-9-]+)")}var j={};var f={};var h={};if(g){var e=10;k.each(function(n){var m=n.getFirst();var o=m.getStyle("height").toInt();e=Math.max(e,m.setStyle("height","auto").getSize().y);m.setStyle("height",o)})}k.each(function(n,m){if(g){j[m]={height:e,opacity:0.3,color:"#232323"};h[m]={height:250,opacity:1,color:"#232323"}}else{j[m]={height:n.getElement(".body").getPosition(n).y+n.getElement(".body").getStyle("padding-top").toInt(),opacity:0.3,color:"#232323",cursor:"pointer"};h[m]={height:n.getStyle("height"),opacity:1,color:"#232323",cursor:"auto"}}n.setStyles(j).addEvents((g?{mouseenter:d.pass(m),mouseleave:d.pass(-1)}:{click:d.pass(m)}))});d((g?-1:0),true)})()}var c=document.getElement("ul.project-grid");if(c){(function(){var e=$$("ul.sub-navigation li");var f=c.getElements("li");var l=function(n){var m=n.get("class").split(" ");return m.filter(function(o){return(o.indexOf("work-")==0)})};f.each(function(q,n){var m=q.getElement("img");var o=q.getElement("span");var p=-o.getSize().y;m.set({styles:{opacity:0.3},tween:{duration:250}});o.set({styles:{bottom:p},tween:{duration:250}});q.addEvents({mouseenter:function(){m.tween("opacity",1);o.tween("bottom",0)},mouseleave:function(){m.tween("opacity",0.3);o.tween("bottom",p)},focus:function(){q.fireEvent("mouseenter")},blur:function(){q.fireEvent("mouseleave")}})});if(e.length){var d=new Fx.Elements(f,{link:"chain"});if(Browser.Engine.trident6){var k=new Fx.Elements(c.getElements("li img"),{link:"chain"})}var g=[];var j="work-all";c.setStyle("height",c.getParent().getParent().getSize().y);var i=HistoryManager.register("project-grid",["all"],function(m){m.each(function(p,o){m[o]="work-"+p});var n=document.getElement("ul.sub-navigation li."+m[0]+" a");if(n){n.fireEvent("click")}},function(m){var n="";m.each(function(o){n=n+"_"+o.substring(5)});return n},"(?:_([a-z0-9-]+))+");f.each(function(n,m){n.store("classes",l(n));var o=n.getPosition(c);g[m]={left:o.x-n.getStyle("margin-left").toInt(),top:o.y}});f.each(function(n,m){n.setStyles(g[m]).setStyle("position","absolute")});e.each(function(m){m.store("classes",l(m)).getElement("a").addEvent("click",function(n){if(n){n.stop()}e.each(function(o){if(o!=m){o.removeClass("selected")}});m.addClass("selected");if(i){i.setValues(m.retrieve("classes"))}h(m.retrieve("classes"));Cookie.write("lastworkpage",window.location)})});var h=function(t){var q={};var s={};var r={};var m={};var p={};var o={};if(t.contains("work-all")){f.each(function(v,u){q[u]=g[u];s[u]={opacity:1}})}else{var n=0;f.each(function(x,v){var w=false;for(var u in t){if(x.hasClass(t[u])){w=true;break}}q[v]=(w?{}:{opacity:0});s[v]=(w?g[n++]:{});r[v]={opacity:(w?1:0)};if(k){m[v]=(w?{}:{opacity:0});p[v]={};o[v]={opacity:(w?0.3:0)}}})}d.start(q).start(s).start(r);if(k){k.start(m).start(p).start(o)}j=t[0]}}})()}var b=$$("ul.portfolio li[class^=video-]");if(b.length){(function(){b.each(function(f){var g="/videos/"+(f.get("class").split(" "))[0].substring(6)+".flv";var e=new Swiff("/flash/portfolio-video-player.swf",{width:728,height:540,params:{wmode:"transparent",bgcolor:"#232323"},vars:{videoFile:g}});var d=new Element("li");var h=false;f.getParent().getElements("li").each(function(j,l){if(h){var k=l+2;j.getElement("span em").set("html",(k<10?"0"+k:k)+"/")}else{if(j==f){h=l+2}}});d.adopt(new Element("span",{html:" Video"}).grab(new Element("em",{html:(h<10?"0"+h:h)+"/"}),"top"),e).inject(f,"after")})})()}HistoryManager.start()});


	var c,Fun=Function;
	with(o=document.getElementById("top-msg")){ innerHTML+=innerHTML; onmouseover=Fun("c=1"); onmouseout=Fun("c=0");}
	(F=Fun("if(#%18||!c)#++,#%=o.scrollHeight>>1;setTimeout(F,#%18?10:1500);".replace(/#/g,"o.scrollTop")))();
