
var ImageGallery=new Class({Implements:[Options,Events],options:{currentPosition:1,prevLink:null,nextLink:null,currentClass:'current',clickSelector:'a',retrieveAll:$empty},initialize:function(element,options){this.setOptions(options);this.element=element;this.reached={last:false,first:false};this.scroll=new Fx.Scroll(this.element);if(this.element.getElement('li[class='+this.options.currentClass+']'))
this.current=this.element.getElement('li[class='+this.options.currentClass+']');else
this.current=this.element.getElement('li').addClass(this.options.currentClass);this.bounds={changeImage:this.changeImage.bind(this),};this.element.getElements(this.options.clickSelector).addEvent('click',this.bounds.changeImage);this.elements=this.element.getElements('li');this.scrollPos=0;this.scrollHeight=this.element.getScrollSize().y;this.height=this.element.getSize().y;if($(this.options.prevLink))
$(this.options.prevLink).addEvent('click',this.prevNext.bindWithEvent(this,'prev'));if($(this.options.nextLink))
$(this.options.nextLink).addEvent('click',this.prevNext.bindWithEvent(this,'next'));this.checkPrevNext();},changeImage:function(evt){evt.stop();this.current=$(evt.target);if(this.current.get('tag')!='li')
this.current=this.current.getParent('li');this.fireEvent('imageChange',this.current.getElement('img'));this.elements.removeClass('current');this.current.addClass('current');this.checkPrevNext();this.setScroll();},setScroll:function(){var scrollToNth=this.elements.indexOf(this.current)-this.options.currentPosition;if(scrollToNth<=0)scrollToNth=1;this.scrollPos=this.element.getElement('li:nth-child('+scrollToNth+')').offsetTop;if(!this._hasData&&(this.scrollPos>this.scrollHeight-this.height||this.scrollPos==0)){if(this.options.retrieveAll)
this.options.retrieveAll(this.current);}
else this.realScroll();},setData:function(images){try{if(!images)return;this.elements.each(function(el){el.store(':src',el.getElement('img').get('src'));});var after=null;images.each(function(img){if(this.elements.retrieve(':src').contains(img)){this.elements.each(function(element){if(element.retrieve(':src')==img)
after=element;});}
else{var el=(after?after:this.element);var where=(after?'after':'top');after=new Element('li').adopt(new Element('a',{href:img,events:{click:this.bounds.changeImage}}).adopt(new Element('img',{src:img}))).inject(el,where).store(':src',img);}},this);this.scrollHeight=this.element.getScrollSize().y;this.height=this.element.getSize().y;this.elements=this.element.getElements('li');this._hasData=true;this.setScroll();}catch(e){console.log(e);}},realScroll:function(){this.scroll.start(0,this.scrollPos);},checkPrevNext:function(){if(this.options.nextLink)
this.options.nextLink.removeClass('next-disabled');if(this.options.prevLink)
this.options.prevLink.removeClass('prev-disabled');if(this.current==this.element.getLast('li')&&this.options.nextLink)
this.options.nextLink.addClass('next-disabled');else if(this.current==this.elements[0]&&this.options.prevLink)
this.options.prevLink.addClass('prev-disabled');},prevNext:function(evt,type){evt.stop();evt.target=this.current[type=='next'?'getNext':'getPrevious']();if(evt.target)
this.changeImage(evt);},toElement:function(){return this.element;}});var Project=new Class({initialize:function(){this.node=document.getElement('div.project-page');this.id=this.node.get('name').replace(/\D/g,'');if(this.node.getElement('ul.image-list')){this.gallery=new ImageGallery(this.node.getElement('ul.image-list'),{nextLink:this.node.getElement('.next-image'),prevLink:this.node.getElement('.previous-image'),onImageChange:this.imageChanged.bind(this),retrieveAll:this.retrieveData.bind(this)});}
this.retrieved=false;this.loader=new Element('div',{'class':'image-loader'});if(this.node.getElement('div.image-big').getElement('div.sound-player'))
this.initializeSoundPlayer();this.request=new Request.HTML({method:'GET',onSuccess:this.changeImage.bind(this),link:'cancel'});},retrieveData:function(li){if(this.retrieved)return;this.retrieved=true;new Request.JSON({url:BASE_URL+'projectimage/allimages?projectId='+this.id,onSuccess:this.dataRetrieved.bind(this)}).send();},dataRetrieved:function(result){this.gallery.setData(result.images);this.retrieved=true;},imageChanged:function(img){this.node.getElement('div.image-big').empty();this.node.getElement('div.image-big').adopt(this.loader);if(this.player)
delete this.player;this.node.getElement('div.image-big').removeEvents();var id=img.get('src').replace(/^.*\/(\d+).*$/,'$1');this.request.setOptions({url:BASE_URL+'projectimage/html?ajax&id='+id}).send();new Request.JSON({method:'GET',url:BASE_URL+'projectimage/attributes?id='+id,onSuccess:this.changeAttributes.bind(this)}).send();},changeImage:function(nodes){this.node.getElement('div.image-big').adopt(nodes);if(this.node.getElement('div.image-big').getElement('div.sound-player'))
this.initializeSoundPlayer();this.loader.dispose();},changeAttributes:function(response){if(!response.success)return;this.node.getElement('div.image-attributes').getElement('div.image-name').set('text',response.name);this.node.getElement('div.image-attributes').getElement('div.image-description').set('html',response.description);},initializeSoundPlayer:function(){if(!$defined(window.SoundPlayer)){Asset.css(BASE_URL+'assets/css/soundplayer.css');return Asset.javascript(BASE_URL+'js/SoundPlayer.js,SoundPlayer.Interface.js',{onload:this.createPlayer.bind(this)});}
this.createPlayer();},createPlayer:function(){this.player=new SoundPlayer.Interface(this.node.getElement('div.sound-player').get('rel'),this.node.getElement('div.sound-player'));this.node.getElement('div.image-big').addEvents({mouseenter:function(){this.getElement('div.sound-player div.fader').fade('in');},mouseleave:function(){this.getElement('div.sound-player div.fader').fade('out');}});this.node.getElement('div.sound-player div.fader').fade('hide');}});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);
