Fool.Widgets.Panels=(function(){var F={isBusy:false,element:null,shield:null,mediaElement:null,promoElement:null,panelTemplate:new Template('<div class="panel #{PanelType}"><div class="media column">#{MediaHtml}</div>#{PromoHtml}</div>'),promoTemplate:null,mediaTemplate:null,initialize:Prototype.emptyFunction,toHtml:function(){this.MediaHtml=this.mediaTemplate.evaluate(this);this.PromoHtml=this.promoTemplate.evaluate(this);return this.panelTemplate.evaluate(this)},getElement:function(){if(!this.element){var G=new Element("DIV");G.innerHTML=this.toHtml();Fool.Util.AddQueryParamsToLinks(G);this.setElement(G.firstChild)}return this.element},setElement:function(G){this.element=$(G);this.mediaElement=this.element.select(".media")[0];this.promoElement=this.element.select(".promo")[0];if(!this.CollectionUrl||this.CollectionUrl=="#"){this.promoElement.down(0).innerHTML=this.CollectionUrlDescription}this.shield=new Fx.Shield(this.element,{wait:false,duration:150})},hide:function(G){this.shield.options.onComplete=function(){this.onHide();if(G){G()}}.bind(this);this.shield.set(0);this.shield.start(0,1)},show:function(G){this.shield.options.onComplete=function(){this.onShow();if(G){G()}}.bind(this);this.shield.set(1);this.shield.start(1,0);this.element.style.visibility="visible"}};var E={construct:function(G){var H=function(I){Object.extend(this,I);Fool.Event.initialize(this)};H.prototype=Object.extend(Object.extend({},F),G);return H}};var D=E.construct({promoTemplate:new Template('<div class="promo column span-8 last"><h4 class="collection"><a href="#{CollectionUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}tclcp#{SourceToken}0000001">#{CollectionUrlDescription}</a></h4><h1><a href="#{TargetUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}tclhp#{SourceToken}0000001">#{Headline}</a></h1><p class="large">#{PromoCopy} <a href="#{TargetUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}tcltp#{SourceToken}0000001">Continue reading &#187;</a></p></div>'),mediaTemplate:new Template('<a href="#{TargetUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}tclip#{SourceToken}0000001"><img /></a>'),onShow:function(){var H=this.mediaElement.down(),G=H.firstChild;if(G.src==""){G.onload=function(){G.style.visibility="visible"};G.style.visibility="hidden";G.title=G.alt=this.Headline;G.src=this.MediaUrl}},onHide:Prototype.emptyFunction});var C=E.construct({promoTemplate:new Template('<div class="promo column"><h1><a href="#{TargetUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}tclhp#{SourceToken}0000001">#{Headline}</a></h1></div>'),mediaTemplate:D.prototype.mediaTemplate,onShow:D.prototype.onShow,onHide:D.prototype.onHide});var A=E.construct({promoTemplate:D.prototype.promoTemplate,mediaTemplate:new Template('<iframe width="300" height="225" scrolling="no" frameborder="0" src="/Controls/Centers/Carousel/VideoPlayer.aspx?fr_story=#{MediaUrl}"></iframe>'),onClick:function(G){this.isBusy=true},onShow:function(H){var G=this.mediaElement.down().contentWindow;if(G){G.panel=this}},onHide:function(G){this.isBusy=false}});var B=E.construct({panelTemplate:new Template('<div class="panel #{PanelType} column span-5">#{PromoHtml}</div>'),promoTemplate:new Template('<div class="promo"><span class="media">#{MediaHtml}</span><h4 class="collection"><a href="#{CollectionUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}cspcp#{SourceToken}0000001">#{CollectionUrlDescription}</a></h4><h2><a href="#{TargetUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}csphl#{SourceToken}0000001">#{Headline}</a></h2><p>#{PromoCopy}</p></div>'),mediaTemplate:new Template('<a href="#{TargetUrl}" class="qsAdd qs-source-#{CenterSourcePrefix}cspim#{SourceToken}0000001"><img /></a>'),onShow:D.prototype.onShow,onHide:D.prototype.onHide,onLoaderComplete:D.prototype.onLoaderComplete});return{StandardImage:D,WholeImage:C,Video:A,ArticleStrip:B}}());Fool.Widgets.PanelSet=function(A){Fool.Event.initialize(this);this.panels=[];for(var B=0;B<A.length;B++){this.panels.push(new Fool.Widgets.Panels[A[B].PanelType](A[B]))}};Fool.Widgets.PanelSet.prototype={panels:[],isReady:true,isBusy:function(){var A=!!this.panels.find(function(B){return B.isBusy});return(!this.isReady||A)},replace:function(D,C){if(this.isBusy()){return }var A=this.panels.length,C=(C!=undefined)?C:1;function B(){if(!--A){var F=(C>0)?0:this.panels.length-1;var E=0;var I=100;var G=this.panels[F],H;while(G){H=D.panels[F];G.getElement().style.visibility="hidden";G.mediaElement.className=H.mediaElement.className;G.element.className=H.element.className.replace(new RegExp(H.PanelType),G.PanelType);H.element.parentNode.replaceChild(G.element,H.element);window.setTimeout(function(){this.show()}.bind(G),E);E+=I;F+=C;G=this.panels[F]}this.isReady=true}}this.isReady=false;D.panels.invoke("hide",B.bind(this))}};Fool.Widgets.Carousel=function(A){if(!A.element||(!A.url&&!A.json)){throw"Fool.Widgets.Carousel requires 'element' and 'url' or 'json' options"}Fool.Widgets.Widget.call(this,A);this.layout=$(this.options.element);this.layout.parentNode.insertBefore(this.container,this.layout);this.layout.previousSibling.appendChild(this.layout);if(this.options.url){this.load(this.options.url,this.onLoad.bind(this))}else{if(this.options.json){this.onLoad({responseJSON:this.options.json})}else{throw new Error("Carousel requires a URL or JSON data argument")}}};Fool.Widgets.Carousel.prototype=Object.extend(Object.extend({},Fool.Widgets.Widget.prototype),{type:"Carousel",sets:[],index:0,options:{url:null,element:null,delay:8000,autoPlay:false},onLoad:function(G){this.sets=[];var F=this.layout.select("div.panel");var E=G.responseJSON.eachSlice(F.length),H;for(var D=0;D<E.length;D++){H=new Fool.Widgets.PanelSet(E[D]);H.addListener(this);this.sets.push(H)}for(var D=0;D<F.length;D++){this.sets[0].panels[D].setElement(F[D])}this.layout.observe("mouseover",this.controller.bindAsEventListener(this));this.layout.observe("mouseout",this.controller.bindAsEventListener(this));var A=this.layout.select(".controls")[0];if(A){var B=new Fool.Widgets.Carousel.Controls(this.sets);B.addListener(this);this.addListener(B);A.appendChild(B.element);new Fx.Style(A.firstChild,"margin-top",{duration:800,transition:Fx.Transitions.bounceOut}).start(0)}A=this.layout.getElementsBySelector("p.preview a")[0];if(A){this.addListener(new Fool.Widgets.Carousel.Preview(A))}if(this.options.autoPlay){var C=new Fool.Widgets.Playback({delay:this.options.delay});C.addListener(this);this.addListener(C);C.start()}},onControlsNext:function(){this.next()},onControlsPrevious:function(){this.previous()},onControlsPage:function(A){this.display(A)},onPlaybackInterval:function(){var A=this.sets[this.index];if(!A||A.isBusy()){return }this.next()},controller:function(A){switch(A.type){case"mouseover":this.dispatch("onMouseOver");break;case"mouseout":if(A.relatedTarget&&A.relatedTarget!=this.layout&&A.relatedTarget.descendantOf(this.layout)==false){this.dispatch("onMouseOut")}break;default:}},display:function(A,D){if(A==this.index){return }if(D==undefined){D=(this.index<A)?1:-1}var B=this.sets[this.index],C=this.sets[A];if(C){C.replace(B,D);this.index=A;this.dispatch("onDisplay",this)}},next:function(){var A=1;this.display(this.nextIndex(1),-A)},previous:function(){var A=-1;this.display(this.nextIndex(A),-A)},nextIndex:function(B){var A=this.index;if(B>0){A=A+1;if(A>=this.sets.length){A=0}}else{if(B<0){A=this.index-1;if(A<0){A=this.sets.length-1}}}return A}});Fool.Widgets.Playback=function(A){this.options=Object.extend(this.options,A||{});Fool.Event.initialize(this)};Fool.Widgets.Playback.prototype={interval:null,options:{delay:2000},onInterval:function(){this.dispatch("onPlaybackInterval")},start:function(){this.interval=window.setInterval(this.onInterval.bind(this),this.options.delay)},stop:function(){if(this.interval){window.clearInterval(this.interval);this.interval=null}},onMouseOut:function(){this.start()},onMouseOver:function(){this.stop()}};Fool.Widgets.Carousel.Controls=function(C){Fool.Event.initialize(this);this.element=new Element("UL");this.element.observe("mousedown",this.controller.bind(this));var B="";for(var A=0;A<C.length;A++){B+='<a href="javascript:void(0);">#</a>'.replace(/#/g,A+1)}this.element.innerHTML='<li class="btnPrevious"><a href="javascript:void(0);" title="Previous">Previous</a></li><li class="btnPages">'+B+'</li><li class="btnNext"><a href="javascript:void(0);" title="Next">Next</a></li>';this.pager=this.element.childNodes[1];this.onDisplay({index:0})};Fool.Widgets.Carousel.Controls.prototype={controller:function(B){var A=B.target;A.blur();B.stop();var C=new Date().getTime();if((C-this.throttle.last)<=this.throttle.delay){return }this.throttle.last=C;switch(A.parentNode.className){case"btnNext":this.dispatch("onControlsNext");break;case"btnPrevious":this.dispatch("onControlsPrevious");break;case"btnPages":this.dispatch("onControlsPage",A.firstChild.nodeValue-1);break;default:break}},index:0,throttle:{delay:800,last:0},onDisplay:function(B){var A=B.index;this.pager.childNodes[this.index].className="";this.pager.childNodes[A].className="active";this.index=A}};Fool.Widgets.Carousel.Preview=function(A){this.element=A};Fool.Widgets.Carousel.Preview.prototype={onDisplay:function(A){var B=A.sets[A.nextIndex(1)].panels[0];this.element.href=B.TargetUrl;this.element.innerHTML=B.Headline;this.element.title=B.Headline;this.element.className=this.element.className.replace(/(qsAdd qs-source-.{8}).{1}(0000001)/,"$1"+B.SourceToken+"$2");Fool.Util.AddQueryParamsToLinks(this.element.parentNode)}};