
var Index=new Class({className:'Index',initialize:function(){this.projects=$('projects').getChildren('div.project');this.notes=$('notes').getChildren('.note');this.headlines=$('headlines').getChildren('div.headline');this.fx=new Fx.Elements($$(this.projects,this.notes,this.headlines));this.createItems();this.items={};},createItems:function(){Asset.images([this.headlines.getElement('img').get('src'),this.projects.getElement('img').get('src')].flatten(),{onComplete:this.imagesLoaded.bind(this)});new Request.JSON({url:BASE_URL+'project/deppos',method:'GET',onSuccess:this.catchDependants.bind(this),onFailure:this.depError.bind(this),onException:this.depError.bind(this)}).send();return this;},imagesLoaded:function(){this.loadedImages=true;this.loaded();},catchDependants:function(response){this.dependants=response.dependant;this.loaded();},depError:function(){Asset.javascript(BASE_URL+'js/Index.Item.Dependant.js',{onload:function(){this.depImpl=true;this.loaded();}.bind(this)});},loaded:function(){if(!this.loadedImages||(!this.dependants&&!this.depImpl))
return;this.items={projects:[],notes:[],projectheadlines:[]};this.maxWidth=0;this.projects.each(function(project){project=new Index.Project(project,this.fx);this.items.projects.push(project);if(project._coords.left+project._coords.width>this.maxWidth)
this.maxWidth=project._coords.left+project._coords.width;},this);this.headlines.each(function(headline){headline=new Index.HeadLine(headline,this.fx);this.items.projectheadlines.push(headline);if(headline._coords.left+headline._coords.width>this.maxWidth)
this.maxWidth=headline._coords.left+headline._coords.width;},this);this.notes.each(function(note){note=new Index.Note(note);this.items.notes.push(note);if(note._coords.left+note._coords.width>this.maxWidth)
this.maxWidth=note._coords.left+note._coords.width;},this);this.items.all=this.items.projects.filter($lambda(true)).extend(this.items.notes).extend(this.items.projectheadlines);this.items.all.each(function(item){item.setItems(this.items,this.maxWidth);if(this.dependants&&this.dependants[item.type][item.id])
item.setDependant(this.dependants[item.type][item.id]);else if(this.depImpl&&item.type=='project')
item.getDependants();},this);this._loaded=true;delete this.loadedImages;delete this.dependants;}});Index.Item=new Class({type:'item',Implements:[Options,Events],initialize:function(element,options){this.setOptions(options);this.element=element;this._dependant={};this.closing=false;this._coords=this.element.getCoordinates();this._coords.opacity=1;delete this._coords.right;delete this._coords.bottom;this.element.addEvents({mouseenter:this.highlight.bind(this),mouseleave:this.deHighlight.bind(this)});},setItems:function(items,maxWidth){this.items=items;this.smallWidth=maxWidth/160;this._small=$merge(this._coords);this._small.left=this._small.left/this.smallWidth+800;this._small.width=0;this._small.height=0;this._small.top=this._small.top/this.smallWidth+400;this._small.opacity=0;return this;},setDependant:function(dep){this._dependant=dep;return this;},toElement:function(){return this.element;}});Index.Project=new Class({Extends:Index.Item,type:'project',initialize:function(element,fx,options){this.parent(element,options);this.element.removeClass('no-script-content');this.img=element.getElement('img');this.fx=fx;this.element.setStyles({width:this.img.getSize().x,height:this.img.getSize().y});this.img.setStyles({height:'100%',width:'100%'});this.link=this.element.getElement('a').addEvent('click',this.load.bind(this));this.id=this.link.get('href').replace(/.*?(\d+)$/,'$1');this.fireEvent('ready',this);},load:function(evt){return;evt.stop();if(Project.saved[this.id])
Project.saved[this.id].open();else new Project(this.id,this.link.get('href'),true);this.fx.cancel();var grr={};this.items.all.each(function(item,index){item.closing=true;if($defined(item.id)&&item.id==this.id)grr[index]=this._projectCoords;else grr[index]=item._small;if(item.type=='project')
item.noblur();},this);this.fx.start(grr);},setItems:function(items,maxWidth){this.parent(items,maxWidth);this._projectCoords={top:45,left:0,height:180,width:360,opacity:0};},highlight:function(){if(this.closing)return;this.fx.cancel();var grr={};this.items.all.each(function(item,index){if($defined(item._dependant[this.id]))
grr[index]=item._dependant[this.id];else grr[index]=item._coords;},this);this.fx.start(grr);},deHighlight:function(){if(this.closing)return;this.fx.cancel();var grr={};this.items.all.each(function(item,index){grr[index]=item._coords;},this);this.fx.start(grr);},blur:function(){if(!this.blurred)
this.blurred=this.img.clone().setStyles({position:'absolute',top:0,left:0,opacity:0}).inject(this.img.getParent()).set('src',this.img.get('src').replace(/main.jpg/,'blur.jpg'));this.blurred.fade('in');},noblur:function(){if(this.blurred)
this.blurred.fade('out');}});Index.Note=new Class({Extends:Index.Item,type:'note',initialize:function(element,options){this.parent(element,options);this.content=this.element.getElement('div.content').removeClass('no-script-content');this.content.set('morph',{transition:'linear'});this.id=element.get('name').replace(/^.*-/,'').toInt();},setItems:function(items,maxWidth){this.parent(items,maxWidth);this._coords.height=this.element.getElement('div.image').getSize().y;this._coords.width=this.element.getElement('div.image').getSize().x;this._contenHeight=this.content.getScrollSize().y;this._contenWidth=this.content.getScrollSize().x;this.content.setStyles({height:0});this.delay=0;},highlight:function(){$clear(this.delay);this.delay=this.execHighlight.delay(400,this);},deHighlight:function(){$clear(this.delay);this.items.projects.each(function(project){project.noblur();});this.items.projectheadlines.each(function(headline){headline.noblur();});this.content.morph({height:0});},execHighlight:function(){$$(this.items.all.map(function(item){return item.element;})).setStyle('zIndex',100);this.element.setStyle('zIndex',101);this.items.projectheadlines.each(function(headline){headline.blur();});this.items.projects.each(function(project){project.blur();});this.content.morph({height:this._contenHeight});}});Index.HeadLine=new Class({Extends:Index.Item,type:'projectheadline',initialize:function(element,options){this.parent(element,options);this.img=element.getElement('img');this.element.setStyles({width:this.img.getSize().x,height:this.img.getSize().y});this.id=element.get('name').replace(/^.*-/,'').toInt();},blur:function(){if(!this.blurred)
this.blurred=this.img.clone().setStyles({position:'absolute',top:0,left:0,opacity:0}).inject(this.img.getParent()).set('src',this.img.get('src').replace(/(\?.*)?$/,'?type=blur'));this.blurred.fade('in');},noblur:function(){if(this.blurred)
this.blurred.fade('out');},highlight:$empty,deHighlight:$empty});var Site={init:function(){Site.container=document.getElement('div.layout-content');var first=Site.container.getFirst();if(first.get('class').test('project-page'))
new Project();else new Index();}};window.addEvent('domready',Site.init);