(function(){if(window.bp==undefined){bp={}}if(bp.Carousel==undefined){bp.Carousel=function(F){if(!glow.dom.get(F).length){return }var B=F,V="previous",H="next",X="inactive",J=3,a=glow.dom,E=a.get,L=E(B),O=a.create("<a class='"+V+"' href='#'><span>previous</span></a>"),Q=a.create("<a class='"+H+"' href='#'><span>next</span></a>"),d=E(B+" ul"),U=d.get("li a").filter(function(){return !!E(this).parent().is("p")}),C,I=[],W=new glow.anim.Animation(2,{tween:glow.tweens.easeBoth(4)}),G=new glow.anim.Timeline([0.2,W]),e=U.parent(),D=e.width()+parseInt(e.css("margin-left"))+parseInt(e.css("margin-right")),f,S=U.length,b=(U.length>J),K=this;d.addClass("carousel-list");this.selectedIndex=C;this.items=U;this.numItems=U.length;this.THUMBS_PER_PAGE=J;var T=this.items.length%J;if(T!=0){var M=J-T;for(var Y=0;Y<M;Y++){var P=a.create("<li class='empty'><span></span></li>");this.items.push(P);d.append(P)}}this.carousel=null;if(b){this.carousel=new A(d,{visibleItems:J,loop:true,itemFilter:"li",anim:W})}if(b){glow.events.addListener(Q,"click",function(g){K.move(-1);g.preventDefault()});glow.events.addListener(O,"click",function(g){K.move(1);g.preventDefault()});L.prepend(O).append(Q)}var Z=a.create("<div class='bp-carousel-sliding-page'></div>"),c=a.create("<ul></ul>");if(b){Z.append(c);d.after(Z)}var N=function(){var j=K.carousel.getVisibleItemsIndexes()[0]/J;for(var h=0,g=I.length;h<g;h++){if(h!=j){I[h].removeClass("visible")}else{I[h].addClass("visible")}}};var R=0;this.items.each(function(k,g){var l=g.slice(k,k+1);if(!l.is("a")){return }var h=l.parent(),q=h.parent().get("h4"),m=h.get("img"),o=glow.dom.create("<span class='hover'></span>");m.after(o.html("<span>"+q.html()+"</span>"));q.remove();if(k%J==0){var n=k+1,r=a.create("<a href='' title='Skip to item "+n+"'><span></span>"+n+"</a>"),j=a.create("<li></li>");glow.events.addListener(r,"click",function(i){K.moveTo(k/J);i.preventDefault()});I.push(r);j.append(r);c.append(j);R+=j.width()}glow.events.addListener(l,"click",function(i){K.selectItem(k);i.preventDefault()})});this.selectItem(0);if(b){c.css("margin-left",((c.parent().width()-R)/2-6)+"px");glow.events.addListener(W,"complete",N);N()}};bp.Carousel.prototype={selectItem:function(B){if(B==this.selectedIndex){return }if(B>this.numItems-1){this.selectedIndex=B-this.numItems}else{if(B<0){this.selectedIndex=this.numItems+B}else{this.selectedIndex=B}}var D=new glow.events.Event();D.index=this.selectedIndex;glow.events.fire(this,"selected",D);var C=this;this.items.each(function(F,E){if(C.selectedIndex==F){E.slice(F,F+1).addClass("selected")}else{E.slice(F,F+1).removeClass("selected")}})},selectAndMoveToItem:function(B){this.selectItem(B);if(this.carousel){this.carousel.moveTo(this.selectedIndex,(this.selectedIndex%this.THUMBS_PER_PAGE))}},moveSelectionBy:function(B){this.selectItem(this.selectedIndex+B)},move:function(B){this.carousel.move(this.THUMBS_PER_PAGE*B);var C=this.items;var D=new glow.anim.css(C,1,{opacity:{to:0.3}}).start();glow.events.addListener(D,"complete",function(){glow.anim.css(C,1,{opacity:{to:1}}).start()})},moveTo:function(B){this.carousel.moveTo(this.THUMBS_PER_PAGE*B,0)}};function A(){this._init(A.arguments)}A.prototype={_init:function(C){this.vertical=false;this.loop=true;this.visibleItems=5;this.anim=new glow.anim.Animation(0.5);glow.lang.apply(this,C[1]);this.holder=glow.dom.get(C[0]);this.holder.addClass("visionAppsCarousel");this.items=(this.itemFilter)?this.holder.get(this.itemFilter):this.holder.children();var E=this.items.slice(0,0+1);var D=E.width()+parseInt(E.css("margin-left"))+parseInt(E.css("margin-right"));var B=E.height()+parseInt(E.css("margin-top"))+parseInt(E.css("margin-bottom"));this.axis=(this.vertical)?"top":"left";this.mult=(!this.vertical)?D:B;this.currentVisibleItems=[];this.everyOtherFrame=0;if(this.anim){this.distanceToMove=0;glow.events.addListener(this.anim,"frame",function(){if(this.everyOtherFrame==0){this.everyOtherFrame=0;var F=Math.round(this.distanceToMove*this.anim.value);this._moveItems(F);this.distanceToMove=this.distanceToMove-F}else{this.everyOtherFrame++}},this);glow.events.addListener(this.anim,"stop",function(){this._moveItems(this.distanceToMove);this.distanceToMove=0},this)}this._setDefaultPositions();this._moveItems(0)},_atEndPoint:function(E){if(this.loop){return false}var B=this.items[0].cache[this.axis]+E;var C=0;if(B>C){return"prev"}var D=this.items[this.items.length-1].cache[this.axis]+E;var F=(this.visibleItems*this.mult)-this.mult;if(D<F){return"next"}return false},_checkWrap:function(B){if(!this.loop){return false}if(B.cache[this.axis]<=(this.mult*-1)){B.cache[this.axis]=B.cache[this.axis]+(this.mult*this.items.length);return }if(B.cache[this.axis]>=(this.mult*(this.items.length-1))){B.cache[this.axis]=B.cache[this.axis]-(this.mult*this.items.length);return }},_distanceFrom:function(C,E){var B=this.items[C].cache[this.axis];var D=B-(E*this.mult);return D},_fireEndPointEvents:function(C){var B=this._atEndPoint(C);if(!B){glow.events.fire(this,"canDoPrevious");glow.events.fire(this,"canDoNext")}else{if(B=="next"){glow.events.fire(this,"cantDoNext")}else{if(B=="prev"){glow.events.fire(this,"cantDoPrevious")}}}},_getVisibleItems:function(){var C=this;var B=this.currentVisibleItems.sort(function(E,D){var E=C.items[E].cache[C.axis];var D=C.items[D].cache[C.axis];return E-D});return B},_getNonVisibleItems:function(G,E){if(G>0){var C=this._getVisibleItems();var B=(E>0)?C[C.length-1]:C[0];var J=[];for(var F=1;F<=G;F++){var H=(E>0)?B+F:B-F;var D;if(this.loop){var K=this.items.length;var I=H%K;D=(I<0)?K+I:I}else{if(H>=0&&H<this.items.length){D=H}else{D=null}}if(D!=undefined){J.push(D)}}return J}return[]},_moveItems:function(F){if(this._atEndPoint(F)){return }var E=this;var C=[];var D=0;var B=this.mult*this.visibleItems;this.items.each(function(G){E._updateAxis(this,this.cache[E.axis]+F);E._checkWrap(this);if(this.cache[E.axis]>=D&&this.cache[E.axis]<B){C.push(G)}var H=glow.dom.get(this);H.css(E.axis,this.cache[E.axis]+"px")});this.currentVisibleItems=C},_setDefaultPositions:function(){var B=this;this.items.each(function(C){this.cache={};glow.dom.get(this).css("position","absolute");B._updateAxis(this,B.mult*C)})},_updateAxis:function(B,C){B.cache[this.axis]=C},move:function(B,C){var C=C||{anim:true};var D=(C.usePixels)?B:B*this.mult;if(this.anim&&C.anim){this.anim.stop();this.distanceToMove=D;this.anim.start()}else{this._moveItems(D)}this._fireEndPointEvents(D)},moveTo:function(D,F,C){var C=C||{anim:true};var E=this._distanceFrom(D,F)*-1;if(this._atEndPoint(E)){var B=(D<F)?F-1:F+1;this.moveTo(D,B,C);return }else{this.move(E,{usePixels:true,anim:C.anim})}},resetPositions:function(){this._setDefaultPositions();this._moveItems(0)},getItems:function(){return this.items},getVisibleItemsIndexes:function(){return this._getVisibleItems()},getNextVisibleItemsIndexes:function(B){var B=(B)?B:this.visibleItems;return this._getNonVisibleItems(B,1)},getPrevVisibleItemsIndexes:function(B){var B=(B)?B:this.visibleItems;return this._getNonVisibleItems(B,-1)},addClass:function(C,B){if(C=="*"){this.items.addClass(B)}else{this.items.slice(C,C+1).addClass(B)}},removeClass:function(C,B){if(C=="*"){this.items.removeClass(B)}else{this.items.slice(C,C+1).removeClass(B)}},addItem:function(C,B){},removeItem:function(B){}}}})();