1define('fc/fccarousel',['hammer','jquery','velocity'],function(hammer,$){function init(container,options){options=options||{} 2options=$.extend({shadow:false,centeredTitle:null,wheel:true},options);var $eles=$('<div class="fccarousel-elements"></div>');container.children().each(function(){$(this).addClass('fccarousel-element').appendTo($eles);});container.append($('<div class="fccarousel-viewport"></div>').append($eles));container.addClass('fccarousel-container');if(options.wheel){container.append('<a class="back"></a><a class="next"></a>');} 3if(options.shadow){container.find('.fccarousel-viewport').append('<a class="next-shadow"></a><a class="back-shadow"></a>');} 4if(options.centeredTitle){container.find('.fccarousel-element '+options.centeredTitle).css({'visibility':'hidden','position':'absolute','top':0,'left':0,});}} 5function calculateState(container,options,state){var eles=container.find('.fccarousel-elements').children();state['viewport_width']=container.find('.fccarousel-viewport').width();state['first_width']=eles.eq(0).outerWidth();state['num_elements']=eles.length;state['title_height']=0;state['titles_height']=[];state['elements_height']=[];eles.each(function(){var $this=$(this);if(options.centeredTitle){var title=$this.find(options.centeredTitle);title.css({width:(state['viewport_width']-parseInt(title.css('margin-left'),10)-parseInt(title.css('margin-right'),10))+'px',});state['titles_height'].push(title.outerHeight(true));} 6state['elements_height'].push($this.outerHeight(true));});} 7function placeElements(container,index,options,state){var oldIndex=state['active-element'];var direction=0;var $viewport=container.find('.fccarousel-viewport');var $elements=container.find('.fccarousel-elements');var $elementsCollection=$elements.find('.fccarousel-element');var first_width=state['first_width'];var viewport_width=state['viewport_width'];var margin=(viewport_width-first_width)/2;var left_offset=margin-first_width*index;var old_left_offset=0;if(state['active-element']<index){direction=1;}else if(oldIndex>index){direction=-1;}else{direction=0;} 8if(state['left']){old_left_offset=state['left'];} 9if(options.centeredTitle){var $title=$elementsCollection.eq(index).find(options.centeredTitle);var $oldTitle=$elementsCollection.eq(oldIndex).find(options.centeredTitle);var titleHeight=state['titles_height'][index];if(Modernizr.csstransforms){$elements.velocity({'translateY':titleHeight},{queue:false});}else{$elements.css('top',titleHeight);} 10var translateY=(-1*titleHeight)+'px';var translateX=(-1*left_offset-direction*-1*viewport_width)+'px';if(Modernizr.csstransforms){$.Velocity.hook($title,"translateX",translateX);$.Velocity.hook($title,"translateY",translateY);$title.css({visibility:'',opacity:0}).velocity({translateX:-1*left_offset,opacity:1},{queue:false});}else{$title.css({visibility:'',left:-1*left_offset,top:translateY,opacity:1});} 11state['title_height']=titleHeight;if(oldIndex!=index&&viewport_width>first_width*1.3){if(Modernizr.csstransforms){$oldTitle.velocity({translateX:-1*(left_offset-first_width)-direction*viewport_width,opacity:0},{queue:false,complete:function(){$(this).css('visibility','hidden');},});}else{$oldTitle.css({left:-1*(left_offset-first_width)-direction*viewport_width,opacity:0,visibility:'hidden'});}}else if(oldIndex!=index&&viewport_width<=first_width*1.3){$oldTitle.css('visibility','hidden');}} 12if(Modernizr.csstransforms){$elements.velocity({'translateX':[left_offset,old_left_offset]});}else{$elements.css('left',left_offset+'px');} 13if(options.centeredTitle){if(Modernizr.csstransforms){$.Velocity.hook($viewport,"height",state['elements_height'][oldIndex]+state['titles_height'][oldIndex]);$viewport.velocity({'height':state['elements_height'][index]+state['titles_height'][index]});}else{$viewport.height(state['elements_height'][index]+state['titles_height'][index]);}}else{if(Modernizr.csstransforms){$.Velocity.hook($viewport,"height",state['elements_height'][oldIndex]);$viewport.velocity({'height':state['elements_height'][index]});}else{$viewport.height(state['elements_height'][index]);}} 14state['active-element']=index;state['left']=left_offset;container.trigger('changedElement',[index]);} 15function bindEvents(container,options,state){var hammertime;container.on('mousedown','.next, .back',function(e){e.preventDefault();});container.on('click','.next, .back',function(e){var active=state['active-element'],next_active;var $target=$(e.target);
15var $elements=container.find('.fccarousel-elements').children();if($target.hasClass('next')){next_active=active+1;if(next_active>(state['num_elements']-1)){next_active=0;}}else{next_active=active-1;if(next_active<0){next_active=state['num_elements']-1;}} 16placeElements(container,next_active,options,state);});container.on('mousedown',function(e){e.preventDefault();});if(options.wheel&&Modernizr.csstransforms){var eles=container.find('.fccarousel-elements');hammertime=container.hammer({dragLockToAxis:true,dragBlockHorizontal:true});hammertime.on("dragstart",function(e){e.preventDefault();state['start-left']=state['left']+e.gesture.deltaX;});hammertime.on("dragleft dragright",function(e){e.preventDefault();e.gesture.preventDefault();state['left']=state['start-left']+e.gesture.deltaX;$.Velocity.hook(eles,"translateX",state['left']+'px');});hammertime.on('dragend',function(e){e.preventDefault();var num_elements=state['num_elements'];var first_width=state['first_width'];var move=state['start-left']+e.gesture.deltaX;var left=move;var index=Math.ceil((-1)*move/first_width);state['left']=move;if(index>=num_elements){index=num_elements-1;}else if(index<0){index=0;} 17delete state['start-left'];placeElements(container,index,options,state);});} 18container.on('goTo',function(e,index){placeElements(container,index,options,state);});container.on('change-size',function(e){calculateState(container,options,state);placeElements(container,0,options,state);});} 19function applyCarousel(slider,options){var state={'window_size':$(window).width()};init(slider,options);bindEvents(slider,options,state);slider.trigger('change-size');setInterval(function(e){var new_window_size=$(window).width();if(state['window_size']!==new_window_size){state['window_size']=new_window_size;slider.trigger('change-size');}},300);} 20$.fn.fcCarousel=function(options){return this.each(function(){applyCarousel($(this),options);});};});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.