
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;}});
