Arcadia=new JS.Class('Arcadia',{include:[JS.State,Ojay.Observable],initialize:function(d,e){var g=0,i=0,h,f,j;this._5=Ojay(d);this._9=Ojay(Ojay.HTML.div({className:'viewport'}));this._5.children().remove()._(this._5).insert(this._9,'after')._(this._9).setContent(this._5);this._3=0;this._7=Math.ceil((e.items.length+1)/2);h=e.items.map(function(a,b){a=new this.klass.Item(this,a);g+=a.getWidth();if(a.getHeight()>i){i=a.getHeight()}return a},this);this._6=new this.klass.ModNList(h);f=h.slice(this._7);j=h.slice(this._3,this._7);f.concat(j).forEach(function(b,c){this._5.insert(b.getHTML(),'bottom');b.representation().on('ready',function(a){if(b===this.getCentre()){a.show({animate:false})}},this)},this);this._9.setStyle({position:'relative',height:i+'px'});this._5.setStyle({width:g+'px',height:i+'px',position:'absolute',top:0,left:this.getLeftOffset()+'px'});Ojay(window).on('resize',this.fitToViewport,this);this.on('centreEnd',this.fireQueue,this);this.setState('READY')},addControls:function(a){return new(a||this.klass.Controls.Thumbnails)(this)},getItems:function(){return this._6},getCentre:function(){return this._6.at(this._3)},_v:function(b,c){var d,e,g,i,h,f,j;d=this._7;e=this._6.mod(d+b-this._3);f={};if(c){g=this._6.slice(e,d)}else{g=this._6.slice(d,e)}j=this.klass.getWidth(g);i=g.map(function(a){return a.representation()});h=g.map(function(a){return a.clone()});if(c){f.left=(this.getLeftOffset()-j)+'px';f.right='';this._k(h.reverse(),'top')}else{f.left='';f.right=(this.getRightOffset()-j)+'px';this._k(h,'bottom')}f.width=(this.getWidth()+j)+'px';this._5.setStyle(f);this._7=e;this._l=i;return this},_w:function(){this._l.forEach(function(a){a.remove()});this._l=[];this._5.setStyle({width:this.getWidth()+'px',left:this.getLeftOffset()+'px',right:''});return this},_k:function(b,c){b.forEach(function(a){this._5.insert(a.getHTML(),c)},this)},getOffset:function(a){var b=this._9.getWidth(),c=this.getCentre().getWidth();return 0-(a-((b-c)/2)).floor().abs()},getLeftOffset:function(){return this.getOffset(this.getLeftWidth())},getRightOffset:function(){return this.getOffset(this.getRightWidth())},getWidth:function(a,b){return this.klass.getWidth(this._6,a,b)},getLeftWidth:function(){return this.getWidth(this._7,this._3)},getRightWidth:function(){return this.getWidth(this._3+1,this._7)},getHTML:function(){return this._9},next:function(a){this.centreOn(this._6.add(this._3,1),a)},previous:function(a){this.centreOn(this._6.subtract(this._3,1),a)},states:{READY:{centreOn:function(a,b){var c,d;if(typeof a!=='number'){a=this._6.indexOf(a);if(a<0)return}if(a===this._3){if(this.getCentre().hasVideo()){this.notifyObservers('videoselect',this.getCentre().getVideo())}return}b=b||null;if(this._7>this._3){c=a<this._3||a>=this._7}else{c=a<this._3&&a>=this._7}this.setState('ANIMATING');this.notifyObservers('centreStart',this._6.at(a),b);this._v(a,c);this.getCentre().representation().hide();this._3=a;d={};d[c?'left':'right']={to:c?this.getLeftOffset():this.getRightOffset()};return this._5.animate(d,0.8)._(this)._w()._(this).setState('READY')._(this).notifyObservers('centre',this.getCentre(),b)._(this.getCentre()).representation().show()._(this).notifyObservers('centreEnd',this.getCentre(),b)},fitToViewport:function(){this._5.setStyle({left:this.getLeftOffset()+'px'})},fireQueue:function(){var a=this._g.shift();if(a){this.centreOn.apply(this,a)}}},ANIMATING:{centreOn:function(a,b){this._g=this._g||[];this._g.push([a,b])}}},extend:{getWidth:function(c,d,e){if(!(c.isA&&c.isA(this.ModNList))){c=new this.ModNList(c)}return c.slice(d||0,e).reduce(function(a,b){return a+b.getWidth()},0)},ModNList:new JS.Class('ModNList',{initialize:function(a){this._4=a||[]},n:function(){return this._4.length},at:function(a){return this._4[this.mod(a)]},mod:function(a){var b=this._4.length,c=a%b;return c<0?b+c:c},add:function(a,b){return this.mod(a+b)},subtract:function(a,b){return this.mod(a-b)},indexOf:function(a,b){return this._4.indexOf(a,b)},slice:function(a,b){var c,d,e;if(!(a||b))return this._4;a=this.mod(a);b=typeof b==='number'&&b!==this.n()?this.mod(b):this.n();if(a>b){c=this._4.slice(a);d=this._4.slice(0,b);e=c.concat(d)}else{e=this._4.slice(a,b)}return e},forEach:function(a,b){return this._4.forEach(a,b)},map:function(a,b){return this._4.map(a,b)},reduce:function(a,b){return this._4.reduce(a,b)}}),Item:new JS.Class({initialize:function(a,b){this._2=a;this._0=b;this._m=b.initialState;this._x=b.width||b.image.width;this._y=b.height||b.image.height},representation:function(){if(this._e)return this._e;this.clone();return this._e},clone:function(){this._e=new this.klass.Representation(this,{name:this._0.name,description:this._0.description,uri:this._0.image.uri,width:this._0.image.width,height:this._0.image.height,toggleText:this._0.toggleText,initialState:this._m});return this._e},getHTML:function(){return this.representation().getHTML()},hasDescription:function(){var a=this._0.description;return typeof a==='string'&&a.length>0},hasVideo:function(){var a=this._0.video,b=0,c;if(typeof a!=='object')return false;for(c in a)if(typeof a[c]==='object')b++;return b>0},getVideo:function(){return this._0.video||{}},getThumbnail:function(){if(this._h)return this._h;var b=this;b._h=Ojay(Ojay.HTML.div({className:'thumbnail'},function(a){if(b.hasVideo()){a.div({className:'video-button'},'Select video')}a.img({alt:b._0.name,src:b._0.thumbnail.uri});a.span({className:'thumbnail-label'},b._0.name)})).setStyle({width:b._0.thumbnail.width+'px',height:b._0.thumbnail.height+'px'});return this._h},getWidth:function(){return this._x},getHeight:function(){return this._y},getGallery:function(){return this._2},setState:function(a){this._m=a},extend:{Representation:new JS.Class({include:[Ojay.Observable,JS.State],extend:{TOGGLE_TEXT:{EXPANDED:'Collapse',COLLAPSED:'Expand'},TOGGLE_SPEED:0.3,FADE_SPEED:0.4},initialize:function(a,b){this._8=a;this._0=b;this._i=b.initialState||'EXPANDED';b.toggleText=b.toggleText||{};this._n={EXPANDED:b.toggleText.expanded||this.klass.TOGGLE_TEXT.EXPANDED,COLLAPSED:b.toggleText.collapsed||this.klass.TOGGLE_TEXT.COLLAPSED};this._z=b.toggleSpeed||this.klass.TOGGLE_SPEED;this._o=b.fadeSpeed||this.klass.FADE_SPEED;this._A()},setState:function(a){this._8.setState(a);this.callSuper(a);return this},getHTML:function(){return this._1},remove:function(){this._1.remove()},show:function(a){a=a||{};this.getHTML().addClass('current');if(a.animate!==false){this._a.show().animate({opacity:{from:0,to:1}},this._o)}else{this._a.setStyle({opacity:1}).show()}},hide:function(a){a=a||{};this.getHTML().removeClass('current');if(a.animate!==false){this._a.animate({opacity:{from:1,to:0}},this._o).hide()}else{this._a.setStyle({opacity:0}).hide()}},states:{EXPANDED:{toggle:function(){this._p('COLLAPSED')}},COLLAPSED:{toggle:function(){this._p('EXPANDED')}},ANIMATING:{}},_p:function(a){if(!this._8.hasDescription())return;var b=a==='EXPANDED'?'COLLAPSED':'EXPANDED';this.setState('ANIMATING');this._b.animate({height:{from:this._c[b],to:this._c[a]}},this._z)._(this._q).setContent(this._n[a])._(function(){this.setState(a)}.bind(this))},_A:function(){var d=this;d._1=Ojay(Ojay.HTML.div({className:'item'},function(c){d._a=Ojay(c.div({className:'content'},function(b){if(d._8.hasVideo()){d._F=Ojay(b.div({className:'video-button'},'Play video'))}if(d._8.hasDescription()){d._b=Ojay(b.div({className:'description-wrapper'},function(a){d._q=Ojay(a.div({className:'description-toggle'})).setContent(d._n[d._i]);d._r=Ojay(a.div({className:'description'})).setContent(d._0.description)}))}}))}));this._j=Ojay(Ojay.HTML.img({alt:this._0.name}));this._B();this._C();this._1.setStyle({width:this._0.width+'px',height:this._0.height+'px',overflow:'hidden',position:'relative'}).addClass(d._8.hasVideo()?'item-video':'item-image');this._a.setStyle({width:this._0.width+'px',height:this._0.height+'px',position:'absolute',top:0,left:0})},_C:function(){this._j.on('load')._(this._1).insert(this._j,'top');this._j.set({src:this._0.uri})},_B:function(){this._1.on('click')._(this._8.getGallery()).centreOn(this._8);if(this._8.hasDescription()){this._q.on('click')._(this).toggle();this._b.on('click',Ojay.stopPropagate)}setTimeout(function(){this._D()}.bind(this),10)},_D:function(){if(this._8.hasDescription()){this._c={};this._c.EXPANDED=this._b.getHeight();this._r.hide();this._c.COLLAPSED=this._b.getHeight();this._b.setStyle({position:'absolute',left:0,bottom:0,width:this._0.width+'px',height:this._c[this._i]+'px',overflow:'hidden'});this._r.show()}this.hide({animate:false});this.setState(this._i);this.notifyObservers('ready')}})}})}});Arcadia.Controls={Thumbnails:new JS.Class('Arcadia.Controls.Thumbnails',{initialize:function(a){this._2=a;this._f=null;this._2.on('centreStart',this.setCurrent,this)},setCurrent:function(a,b){var c=this._E.get(b);if(c===this._f)return;this._f.removeClass('selected');c.addClass('selected');this._f=c},getHTML:function(){if(this._1)return this._1;this._1=Ojay(Ojay.HTML.div({className:'arcadia-thumbnails'}));this._E=this._2.getItems().reduce(function(a,b){var c=b.getThumbnail();if(b===this._2.getCentre()){this._f=c;c.addClass('selected')}this._1.insert(c,'bottom');c.on('click',function(){this._2.centreOn(b,this)},this);a.store(b,c);return a}.bind(this),new JS.Hash());return this._1}}),Play:new JS.Class('Arcadia.Controls.Play',{initialize:function(d){this._2=d;this._d=false;this._s=null;this._2.on('centreStart',function(a,b,c){if(!(c&&c.isA(this.klass))){this.pause()}},this)},play:function(){this._s=setInterval(function(){this._2.next(this)}.bind(this),3000);this._2.next(this);if(this._1){this._1.replaceClass('paused','playing').setContent('Pause')}this._d=true},pause:function(){clearInterval(this._s);if(this._1){this._1.replaceClass('playing','paused').setContent('Play')}this._d=false},toggle:function(){this[this._d?'pause':'play']()},getHTML:function(){if(this._1)return this._1;this._1=Ojay(Ojay.HTML.div({className:'arcadia-play-button '+(this._d?'playing':'paused')},(this._d?'Pause':'Play')));this._1.on('click',this.toggle,this);return this._1}}),Next:new JS.Class('Arcadia.Controls.Next',{initialize:function(a){this._2=a},previous:function(){this._2.previous(this)},next:function(){this._2.next(this)},getHTML:function(){if(this._1)return this._1;var b=this;b._1=Ojay(Ojay.HTML.div({className:'arcadia-next-previous'},function(a){b._t=Ojay(a.span({className:'previous'},'Previous'));b._u=Ojay(a.span({className:'next'},'Next'))}));this._t.on('click',this.previous,this);this._u.on('click',this.next,this);return this._1},getPrevious:function(){return this._t},getNext:function(){return this._u},getGallery:function(){return this._2}})};
