1/*! 2 * jQuery Scrollbox 3 * (c) 2009-2013 Hunter Wu <[email protected]> 4 * MIT Licensed. 5 * 6 * http://github.com/wmh/jquery-scrollbox 7 */ 8$.noConflict();jQuery(document).ready(function($){(function($){$.fn.scrollbox=function(config){var defConfig={linear:!1,startDelay:2,delay:3,step:5,speed:32,switchItems:1,direction:'vertical',distance:'auto',autoPlay:!1,onMouseOverPause:!0,paused:!1,queue:null,listElement:'ul',listItemElement:'li',infiniteLoop:!0,switchAmount:0,afterForward:null,afterBackward:null,triggerStackable:!1};config=$.extend(defConfig,config);config.scrollOffset=config.direction==='vertical'?'scrollTop':'scrollLeft';if(config.queue){config.queue=$('#'+config.queue)} 9return this.each(function(){var container=$(this),containerUL,scrollingId=null,nextScrollId=null,paused=!1,releaseStack,backward,forward,resetClock,scrollForward,scrollBackward,forwardHover,pauseHover,switchCount=0,stackedTriggerIndex=0;if(config.onMouseOverPause){container.bind('mouseover',function(){paused=!0});container.bind('mouseout',function(){paused=!1})} 10containerUL=container.children(config.listElement+':first-child');if(config.infiniteLoop===!1&&config.switchAmount===0){config.switchAmount=containerUL.children().length} 11scrollForward=function(){if(paused){return} 12var curLi,i,newScrollOffset,scrollDistance,theStep;curLi=containerUL.children(config.listItemElement+':first-child');scrollDistance=config.distance!=='auto'?config.distance:config.direction==='vertical'?curLi.outerHeight(!0):curLi.outerWidth(!0);if(!config.linear){theStep=Math.max(3,parseInt((scrollDistance-container[0][config.scrollOffset])*0.3,10));newScrollOffset=Math.min(container[0][config.scrollOffset]+theStep,scrollDistance)}else{newScrollOffset=Math.min(container[0][config.scrollOffset]+config.step,scrollDistance)} 13container[0][config.scrollOffset]=newScrollOffset;if(newScrollOffset>=scrollDistance){for(i=0;i<config.switchItems;i++){if(config.queue&&config.queue.find(config.listItemElement).length>0){containerUL.append(config.queue.find(config.listItemElement)[0]);containerUL.children(config.listItemElement+':first-child').remove()}else{containerUL.append(containerUL.children(config.listItemElement+':first-child'))} 14++switchCount} 15container[0][config.scrollOffset]=0;clearInterval(scrollingId);scrollingId=null;if($.isFunction(config.afterForward)){config.afterForward.call(container,{switchCount:switchCount,currentFirstChild:containerUL.children(config.listItemElement+':first-child')})} 16if(config.triggerStackable&&stackedTriggerIndex!==0){releaseStack();return} 17if(config.infiniteLoop===!1&&switchCount>=config.switchAmount){return} 18if(config.autoPlay){nextScrollId=setTimeout(forward,config.delay*1000)}}};scrollBackward=function(){if(paused){return} 19var curLi,i,newScrollOffset,scrollDistance,theStep;if(container[0][config.scrollOffset]===0){for(i=0;i<config.switchItems;i++){containerUL.children(config.listItemElement+':last-child').insertBefore(containerUL.children(config.listItemElement+':first-child'))} 20curLi=containerUL.children(config.listItemElement+':first-child');scrollDistance=config.distance!=='auto'?config.distance:config.direction==='vertical'?curLi.height():curLi.width();container[0][config.scrollOffset]=scrollDistance} 21if(!config.linear){theStep=Math.max(3,parseInt(container[0][config.scrollOffset]*0.3,10));newScrollOffset=Math.max(container[0][config.scrollOffset]-theStep,0)}else{newScrollOffset=Math.max(container[0][config.scrollOffset]-config.step,0)} 22container[0][config.scrollOffset]=newScrollOffset;if(newScrollOffset===0){--switchCount;clearInterval(scrollingId);scrollingId=null;if($.isFunction(config.afterBackward)){config.afterBackward.call(container,{switchCount:switchCount,currentFirstChild:containerUL.children(config.listItemElement+':first-child')})} 23if(config.triggerStackable&&stackedTriggerIndex!==0){releaseStack();return} 24if(config.autoPlay){nextScrollId=setTimeout(forward,config.delay*1000)}}};releaseStack=function(){if(stackedTriggerIndex===0){return} 25if(stackedTriggerIndex>0){stackedTriggerIndex--;nextScrollId=setTimeout(forward,0)}else{stackedTriggerIndex++;nextScrollId=setTimeout(backward,0)}};forward=function(){clearInterval(scrollingId);scrollingId=setInterval(scrollForward,config.speed)};backward=function(){clearInterval(scrollingId);scrollingId=setInterval(scrollBackward,config.speed)};forwardHover=function(){config.autoPlay=!0;paused=!1;clearInterval(scrollingId);scrollingId=setInterval(scrollForward,config.speed)};pauseHover=function(){paused=!0};resetClock=function(delay){config.delay=delay||config.delay;clearTimeout(nextScrollId);if(config.autoPlay){nextScrollId=setTimeout(forward,config.delay*1000)}};if(config.autoPlay){nextScrollId=setTimeout(forward,config.startDelay*1000)} 26container.bind('resetClock',function(delay){resetClock(delay)});container.bind('forward',function(){if(config.triggerStackable){if(scrollingId!==null){stackedTriggerIndex++}else{forward()}}else{clearTimeout(nextScrollId);forward()}});container.bind('backward',function(){if(config.triggerStackable){if(scrollingId!==null){stackedTriggerIndex--}else{backward()}}else{clearTimeout(nextScrollId);backward()}});container.bind('pauseHover',function(){pauseHover()});container.bind('forwardHover',function(){forwardHover()});container.bind('speedUp',function(event,speed){if(speed==='undefined'){speed=Math.max(1,parseInt(config.speed/2,10))} 27config.speed=speed});container.bind('speedDown',function(event,speed){if(speed==='undefined'){speed=config.speed*2} 28config.speed=speed});container.bind('updateConfig',function(event,options){config=$.extend(config,options)})})}}(jQuery))})
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.