/*******************************************************************************
*	billboard.js
*
*	Copyright 2010 Guidance Software, LLC
*	All Rights Reserved Worldwide
*
*	Javascript functions to run the billboard slideshow. 
*
*   Dependecny:
*       
*       - Prototype.js
*       - effects.js
*       - builder.js
*       - common.js
*       - preload.js
*
*	History:
*
*	12-29-10  Stephen Andekian	First
******************************************************************************/
Billboard=Class.create();Billboard.prototype={images:null,settings:null,processingUI:false,active:0,processingThumbClickPause:false,timer:null,time:null,initialize:function(a){this.cleanUp();this.images=a.images;this.settings=a.settings;if(this.images.length==1){this.insertBillboardImg(0,this.getImgPathLg(0));this.showBillboard(0)}else{this.randomizeSlides();this.setFirst();this.preloadImages();this.observerContainer()}Event.observe(window,"unload",function(){this.stopRotate();this.cleanUp();for(var b in Element.cache){Element.cache[b]=null}})},cleanUp:function(){this.images=null;this.settings=null;this.processingUI=false;this.active=0;this.processingThumbClickPause=false;this.timer=null;this.time=null},randomizeSlides:function(){var c=new Array();var b=new Array();for(var a=0;a<this.images.length;a++){if(this.images[a].isFirst){c.push(this.images[a])}else{b.push(this.images[a])}}c.shuffle();b.shuffle();this.images=array_merge(c,b);if(this.reverse){this.images.reverse()}},setFirst:function(){this.active=(this.reverse)?this.images.length:0},secondaryPreload:function(a){if(a.length>0){for(i=0;i<a.length;i++){Preloader.add(this.settings.imgFlLg+this.images[a[i]].img);Preloader.add(this.settings.imgFlSm+this.images[a[i]].imgs)}Preloader.load()}},primaryPreload:function(d,a){if(!this.reverse){d.push((this.images.length-1))}else{d.push(0)}if(d.length>0){var c=new Array();var b=new Array();for(i=0;i<d.length;i++){b.push(this.settings.imgFlLg+this.images[d[i]].img);c.push(this.settings.imgFlSm+this.images[d[i]].imgs)}Preloader.add(array_merge(c,b));Preloader.onFinish(function(){new Effect.Fade(this.settings.loadingId,{duration:this.settings.fadeSpeed,afterFinish:function(){this.createBillboard(this.active);this.loadBillboardImgs();this.startRotate();this.secondaryPreload(a)}.bind(this)})}.bind(this));Preloader.load()}},preloadImages:function(){var c=new Array();var a=new Array();for(var b=0;b<this.images.length;b++){if(this.images[b].img){if(this.settings.minImgPreload>0){if(b<this.settings.minImgPreload){c.push(b)}else{a.push(b)}}else{c.push(b)}}}this.primaryPreload(c,a)},getALinkForKey:function(a){if(this.getHref(a)!=""){var b=Builder.node("a",{href:this.getHref(a),target:this.getTarget(a)},[this.getImgAlt(a)]);return b}},showBillboard:function(a){if(a>=0){$("billboard_LGimg_"+a).show()}},insertBillboardImg:function(b,a){imgFile=(a)?a:this.getImgPathLg(b);var c=Builder.node("div",{className:"billboard-images",id:"billboard_LGimg_"+b,style:"background: url("+imgFile+") 0 0 transparent; display: none;"},[this.getALinkForKey(b)]);$(this.settings.id).insert(c)},loadBillboardImgs:function(){for(var a=0;a<this.images.length;a++){this.insertBillboardImg(a)}this.showBillboard(this.active)},getOpacitySetting:function(){opacity=this.settings.inActiveThumbOpacity;if((opacity>0)&&(opacity<1)){return opacity}return 0},getImgPathSm:function(a){return this.settings.imgFlSm+this.images[a].imgs},getImgPathLg:function(a){return this.settings.imgFlLg+this.images[a].img},getImgAlt:function(a){if(this.images[a].alt){return this.images[a].alt}return""},getHref:function(a){if(this.images[a].href){return this.images[a].href}return""},getTarget:function(a){if(this.images[a].target){return this.images[a].target}return""},getOnePrev:function(a){if((a-1)<0){return(this.images.length-1)}else{return a-1}},getOneNext:function(a){if((a+1)>=this.images.length){return 0}else{return a+1}},insertLI:function(h,j,c,k){var g=(j)?"width: 260px; height: 74px; text-align: right;":"width: 220px; height: 63px; text-align: right;";var d=(k)?"billboard_img_"+h:"";var e=(k)?"billboard_li_"+h:"";var f=this.getALinkForKey(h);var b=Builder.node("li",{id:e},[Builder.node("div",[Builder.node("span"),Builder.node("img",{src:this.getImgPathSm(h),style:g,id:d})])]);$(this.settings.imgCont).insert(b);if(k){$(d).setOpacity(c)}},animate:function(a,b,c){if(this.processingUI==false){this.processingUI=true;opacity=this.getOpacitySetting();new Effect.Parallel([new Effect.Move(this.settings.imgCont,{y:c,beforeStart:function(){this.stopObservers()}.bind(this)}),new Effect.Morph("billboard_img_"+a,{style:"width: 220px; height: 63px; text-align: right;"}),new Effect.Morph("billboard_img_"+b,{style:"width: 260px; height: 74px; text-align: right;",duration:this.settings.SlideSpeed}),new Effect.Opacity("billboard_img_"+a,{to:opacity,afterFinish:function(){this.createBillboard(b);this.active=b}.bind(this)})],{limit:1,beforeStart:function(){this.processingUI=true}.bind(this),afterFinish:function(){Effect.Fade("billboard_LGimg_"+a,{duration:this.settings.fadeSpeed,from:1,to:0,queue:{position:"end",scope:"bannerscopeFade",limit:1}});Effect.Appear("billboard_LGimg_"+b,{duration:this.settings.fadeSpeed,from:0,to:1,queue:{position:"end",scope:"bannerscopeAppear",limit:1},afterFinish:function(){this.processingUI=false}.bind(this)})}.bind(this),duration:this.settings.SlideSpeed})}},prev:function(){this.animate(this.active,this.getOneNext(this.active),"-"+this.settings.offset)},next:function(){this.animate(this.active,this.getOnePrev(this.active),this.settings.offset)},activePos:function(){var a=false;$$("#"+this.settings.imgCont+" li").each(function(c,b){var d=c.readAttribute("id");if(d=="billboard_li_"+this.active){a=b}}.bind(this));return a},thumbClick:function(c){var a=Event.findElement(c,"li");var d=a.previousSiblings().length;var b=this.activePos();if(b){if(this.timer!=null){this.stopRotate()}if(d<b){this.next()}if(d>b){this.prev()}}},observerContainer:function(){$("billboard-wrapper").observe("mouseover",function(){if(this.timer!=null){this.stopRotate()}}.bind(this));$("billboard-wrapper").observe("mouseout",function(){if(this.timer==null&&this.processingThumbClickPause==false){this.startRotate()}}.bind((this)))},startObservers:function(){$$("#"+this.settings.imgCont+" li").each(function(a){$(a).observe("click",this.thumbClick.bindAsEventListener(this))}.bind(this))},stopObservers:function(){$$("#"+this.settings.imgCont+" li").each(function(a){$(a).stopObserving("click")}.bind(this))},startRotate:function(){this.timer=new PeriodicalExecuter(function(){if(this.reverse){this.next()}else{this.prev()}}.bind(this),this.settings.rotateSpeed)},stopRotate:function(){if(this.timer!=null){this.timer.stop();this.timer=null}},createBillboard:function(b){$(this.settings.imgCont).innerHTML="";$(this.settings.imgCont).setStyle({top:"-"+this.settings.offset+"px"});var e=this.getOnePrev(b);var d=this.getOnePrev(e);var a=this.getOneNext(b);var c=this.getOneNext(a);this.insertLI(d,false,100,false);this.insertLI(e,false,this.getOpacitySetting(),true);this.insertLI(b,true,100,true);this.insertLI(a,false,this.getOpacitySetting(),true);this.insertLI(c,false,100,false);this.startObservers()}};
