{"version":3,"sources":["coda-slider.js","jquery.localscroll-1.2.5.js","jquery.scrollTo-1.3.3.js","jquery.serialScroll-1.2.1.js"],"names":["$","document","ready","selectNav","this","parents","find","removeClass","end","addClass","trigger","data","el","id","get","call","$panels","$container","horizontal","css","float","position","offsetWidth","length","$scroll","before","after","click","window","location","hash","substr","offset","parseInt","scrollOptions","target","items","navigation","prev","next","axis","onAfter","duration","easing","serialScroll","localScroll","scroll","e","link","settings","slice","elem","getElementById","getElementsByName","preventDefault","$target","scrollTo","lock","is","onBefore","stop","queue","URI","href","replace","$localScroll","defaults","event","extend","setTimeout","fn","filter","persistent","lazy","bind","a","parentNode","jQuery","both","val","top","left","$scrollTo","browser","safari","speed","over","each","animate","callback","$elem","attr","max","Dim","win","opera","body","documentElement","toff","t","test","style","split","i","Pos","pos","toLowerCase","key","act","dim","margin","Math","min","onAfterFirst","$serialScroll","start","step","cycle","constant","move","active","jump","button","isNaN","pane","n","real","type","$items","exclude","getItems","limit","auto","clear","timer","interval","$pane","abs","clearTimeout","index","context","nav","force","ssbound","round"],"mappings":"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","file":"app.min.js","sourcesContent":["$(document).ready(function () {\r\n var $panels = $('#slider .scrollContainer > div');\r\n var $container = $('#slider .scrollContainer');\r\n var horizontal = true;\r\n if (horizontal) {\r\n $panels.css({\r\n 'float' : 'left',\r\n 'position' : 'relative' // IE fix to ensure overflow is hidden\r\n });\r\n $container.css('width', $panels[0].offsetWidth * $panels.length);\r\n }\r\n var $scroll = $('#slider .scroll').css('overflow', 'hidden');\r\n $scroll\r\n .before('')\r\n .after('');\r\n function selectNav() {\r\n $(this)\r\n .parents('ul:first')\r\n .find('a')\r\n .removeClass('selected')\r\n .end()\r\n .end()\r\n .addClass('selected');\r\n }\r\n $('#slider .navigation').find('a').click(selectNav);\r\n function trigger(data) {\r\n var el = $('#slider .navigation').find('a[href$=\"' + data.id + '\"]').get(0);\r\n selectNav.call(el);\r\n }\r\n if (window.location.hash) {\r\n trigger({ id : window.location.hash.substr(1) });\r\n } else {\r\n $('ul.navigation a:first').click();\r\n }\r\n var offset = parseInt((horizontal ? \r\n $container.css('paddingTop') : \r\n $container.css('paddingLeft')) \r\n || 0) * -1;\r\n var scrollOptions = {\r\n target: $scroll, // the element that has the overflow\r\n items: $panels,\r\n navigation: '.navigation a',\r\n prev: 'img.left', \r\n next: 'img.right',\r\n axis: 'xy',\r\n onAfter: trigger, // our final callback\r\n offset: offset,\r\n duration: 500,\r\n easing: 'swing'\r\n };\r\n $('#slider').serialScroll(scrollOptions);\r\n $.localScroll(scrollOptions);\r\n scrollOptions.duration = 1;\r\n $.localScroll.hash(scrollOptions);\r\n\r\n});","/**\r\n * jQuery.LocalScroll\r\n * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com\r\n * Dual licensed under MIT and GPL.\r\n * Date: 3/10/2008\r\n *\r\n * @projectDescription Animated scrolling navigation, using anchors.\r\n * http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html\r\n * @author Ariel Flesler\r\n * @version 1.2.5\r\n *\r\n * @id jQuery.fn.localScroll\r\n * @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required.\r\n * @return {jQuery} Returns the same jQuery object, for chaining.\r\n *\r\n * @example $('ul.links').localScroll();\r\n *\r\n * @example $('ul.links').localScroll({ filter:'.animated', duration:400, axis:'x' });\r\n *\r\n * @example $.localScroll({ target:'#pane', axis:'xy', queue:true, event:'mouseover' });\r\n *\r\n * Notes:\r\n *\t- The plugin requires jQuery.ScrollTo.\r\n *\t- The hash of settings, is passed to jQuery.ScrollTo, so the settings are valid for that plugin as well.\r\n *\t- jQuery.localScroll can be used if the desired links, are all over the document, it accepts the same settings.\r\n * - If the setting 'lazy' is set to true, then the binding will still work for later added anchors.\r\n * - The setting 'speed' is deprecated, use 'duration' instead.\r\n *\t- If onBefore returns false, the event is ignored.\r\n **/\r\n;(function( $ ){\r\n\tvar URI = location.href.replace(/#.*/,'');//local url without hash\r\n\r\n\tvar $localScroll = $.localScroll = function( settings ){\r\n\t\t$('body').localScroll( settings );\r\n\t};\r\n\r\n\t//Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option.\r\n\t//@see http://www.freewebs.com/flesler/jQuery.ScrollTo/\r\n\t$localScroll.defaults = {//the defaults are public and can be overriden.\r\n\t\tduration:1000, //how long to animate.\r\n\t\taxis:'y',//which of top and left should be modified.\r\n\t\tevent:'click',//on which event to react.\r\n\t\tstop:true//avoid queuing animations \r\n\t\t/*\r\n\t\tlock:false,//ignore events if already animating\r\n\t\tlazy:false,//if true, links can be added later, and will still work.\r\n\t\ttarget:null, //what to scroll (selector or element). Keep it null if want to scroll the whole window.\r\n\t\tfilter:null, //filter some anchors out of the matched elements.\r\n\t\thash: false//if true, the hash of the selected link, will appear on the address bar.\r\n\t\t*/\r\n\t};\r\n\r\n\t//if the URL contains a hash, it will scroll to the pointed element\r\n\t$localScroll.hash = function( settings ){\r\n\t\tsettings = $.extend( {}, $localScroll.defaults, settings );\r\n\t\tsettings.hash = false;//can't be true\r\n\t\tif( location.hash )\r\n\t\t\tsetTimeout(function(){ scroll( 0, location, settings ); }, 0 );//better wrapped with a setTimeout\r\n\t};\r\n\r\n\t$.fn.localScroll = function( settings ){\r\n\t\tsettings = $.extend( {}, $localScroll.defaults, settings );\r\n\r\n\t\treturn ( settings.persistent || settings.lazy ) \r\n\t\t\t\t? this.bind( settings.event, function( e ){//use event delegation, more links can be added later.\r\n\t\t\t\t\tvar a = $([e.target, e.target.parentNode]).filter(filter)[0];//if a valid link was clicked.\r\n\t\t\t\t\ta && scroll( e, a, settings );//do scroll.\r\n\t\t\t\t})\r\n\t\t\t\t: this.find('a')//bind concretely, to each matching link\r\n\t\t\t\t\t\t.filter( filter ).bind( settings.event, function(e){\r\n\t\t\t\t\t\t\tscroll( e, this, settings );\r\n\t\t\t\t\t\t}).end()\r\n\t\t\t\t\t.end();\r\n\r\n\t\tfunction filter(){//is this a link that points to an anchor and passes a possible filter ? href is checked to avoid a bug in FF.\r\n\t\t\treturn !!this.href && !!this.hash && this.href.replace(this.hash,'') == URI && (!settings.filter || $(this).is( settings.filter ));\r\n\t\t};\r\n\t};\r\n\r\n\tfunction scroll( e, link, settings ){\r\n\t\tvar id = link.hash.slice(1),\r\n\t\t\telem = document.getElementById(id) || document.getElementsByName(id)[0];\r\n\t\tif ( elem ){\r\n\t\t\te && e.preventDefault();\r\n\t\t\tvar $target = $( settings.target || $.scrollTo.window() );//if none specified, then the window.\r\n\r\n\t\t\tif( settings.lock && $target.is(':animated') ||\r\n\t\t\tsettings.onBefore && settings.onBefore.call(link, e, elem, $target) === false ) return;\r\n\r\n\t\t\tif( settings.stop )\r\n\t\t\t\t$target.queue('fx',[]).stop();//remove all its animations\r\n\r\n\t\t\t$target\r\n\t\t\t\t.scrollTo( elem, settings )//do scroll\r\n\t\t\t\t.trigger('notify.serialScroll',[elem]);//notify serialScroll about this change\r\n\t\t\tif( settings.hash )\r\n\t\t\t\t$target.queue(function(){\r\n\t\t\t\t\tlocation = link.hash;\r\n\t\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n})( jQuery );","/**\r\n * jQuery.ScrollTo\r\n * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com\r\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\r\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\r\n * Date: 2/19/2008\r\n *\r\n * @projectDescription Easy element scrolling using jQuery.\r\n * Tested with jQuery 1.2.1. On FF 2.0.0.11, IE 6, Opera 9.22 and Safari 3 beta. on Windows.\r\n *\r\n * @author Ariel Flesler\r\n * @version 1.3.3\r\n *\r\n * @id jQuery.scrollTo\r\n * @id jQuery.fn.scrollTo\r\n * @param {String, Number, DOMElement, jQuery, Object} target Where to scroll the matched elements.\r\n *\t The different options for target are:\r\n *\t\t- A number position (will be applied to all axes).\r\n *\t\t- A string position ('44', '100px', '+=90', etc ) will be applied to all axes\r\n *\t\t- A jQuery/DOM element ( logically, child of the element to scroll )\r\n *\t\t- A string selector, that will be relative to the element to scroll ( 'li:eq(2)', etc )\r\n *\t\t- A hash { top:x, left:y }, x and y can be any kind of number/string like above.\r\n * @param {Number} duration The OVERALL length of the animation, this argument can be the settings object instead.\r\n * @param {Object} settings Hash of settings, optional.\r\n *\t @option {String} axis Which axis must be scrolled, use 'x', 'y', 'xy' or 'yx'.\r\n *\t @option {Number} duration The OVERALL length of the animation.\r\n *\t @option {String} easing The easing method for the animation.\r\n *\t @option {Boolean} margin If true, the margin of the target element will be deducted from the final position.\r\n *\t @option {Object, Number} offset Add/deduct from the end position. One number for both axes or { top:x, left:y }.\r\n *\t @option {Object, Number} over Add/deduct the height/width multiplied by 'over', can be { top:x, left:y } when using both axes.\r\n *\t @option {Boolean} queue If true, and both axis are given, the 2nd axis will only be animated after the first one ends.\r\n *\t @option {Function} onAfter Function to be called after the scrolling ends. \r\n *\t @option {Function} onAfterFirst If queuing is activated, this function will be called after the first scrolling ends.\r\n * @return {jQuery} Returns the same jQuery object, for chaining.\r\n *\r\n * @example $('div').scrollTo( 340 );\r\n *\r\n * @example $('div').scrollTo( '+=340px', { axis:'y' } );\r\n *\r\n * @example $('div').scrollTo( 'p.paragraph:eq(2)', 500, { easing:'swing', queue:true, axis:'xy' } );\r\n *\r\n * @example var second_child = document.getElementById('container').firstChild.nextSibling;\r\n *\t\t\t$('#container').scrollTo( second_child, { duration:500, axis:'x', onAfter:function(){\r\n *\t\t\t\talert('scrolled!!');\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \r\n *\t\t\t}});\r\n *\r\n * @example $('div').scrollTo( { top: 300, left:'+=200' }, { offset:-20 } );\r\n *\r\n * Notes:\r\n * - jQuery.scrollTo will make the whole window scroll, it accepts the same arguments as jQuery.fn.scrollTo.\r\n *\t- If you are interested in animated anchor navigation, check http://jquery.com/plugins/project/LocalScroll.\r\n *\t- The options margin, offset and over are ignored, if the target is not a jQuery object or a DOM element.\r\n *\t- The option 'queue' won't be taken into account, if only 1 axis is given.\r\n */\r\n;(function( $ ){\r\n\r\n\tvar $scrollTo = $.scrollTo = function( target, duration, settings ){\r\n\t\t$scrollTo.window().scrollTo( target, duration, settings );\r\n\t};\r\n\r\n\t$scrollTo.defaults = {\r\n\t\taxis:'y',\r\n\t\tduration:1\r\n\t};\r\n\r\n\t//returns the element that needs to be animated to scroll the window\r\n\t$scrollTo.window = function(){\r\n\t\treturn $( $.browser.safari ? 'body' : 'html' );\r\n\t};\r\n\r\n\t$.fn.scrollTo = function( target, duration, settings ){\r\n\t\tif( typeof duration == 'object' ){\r\n\t\t\tsettings = duration;\r\n\t\t\tduration = 0;\r\n\t\t}\r\n\t\tsettings = $.extend( {}, $scrollTo.defaults, settings );\r\n\t\tduration = duration || settings.speed || settings.duration;//speed is still recognized for backwards compatibility\r\n\t\tsettings.queue = settings.queue && settings.axis.length > 1;//make sure the settings are given right\r\n\t\tif( settings.queue )\r\n\t\t\tduration /= 2;//let's keep the overall speed, the same.\r\n\t\tsettings.offset = both( settings.offset );\r\n\t\tsettings.over = both( settings.over );\r\n\r\n\t\treturn this.each(function(){\r\n\t\t\tvar elem = this, $elem = $(elem),\r\n\t\t\t\tt = target, toff, attr = {},\r\n\t\t\t\twin = $elem.is('html,body');\r\n\t\t\tswitch( typeof t ){\r\n\t\t\t\tcase 'number'://will pass the regex\r\n\t\t\t\tcase 'string':\r\n\t\t\t\t\tif( /^([+-]=)?\\d+(px)?$/.test(t) ){\r\n\t\t\t\t\t\tt = both( t );\r\n\t\t\t\t\t\tbreak;//we are done\r\n\t\t\t\t\t}\r\n\t\t\t\t\tt = $(t,this);// relative selector, no break!\r\n\t\t\t\tcase 'object':\r\n\t\t\t\t\tif( t.is || t.style )//DOM/jQuery\r\n\t\t\t\t\t\ttoff = (t = $(t)).offset();//get the real position of the target \r\n\t\t\t}\r\n\t\t\t$.each( settings.axis.split(''), function( i, axis ){\r\n\t\t\t\tvar Pos\t= axis == 'x' ? 'Left' : 'Top',\r\n\t\t\t\t\tpos = Pos.toLowerCase(),\r\n\t\t\t\t\tkey = 'scroll' + Pos,\r\n\t\t\t\t\tact = elem[key],\r\n\t\t\t\t\tDim = axis == 'x' ? 'Width' : 'Height',\r\n\t\t\t\t\tdim = Dim.toLowerCase();\r\n\r\n\t\t\t\tif( toff ){//jQuery/DOM\r\n\t\t\t\t\tattr[key] = toff[pos] + ( win ? 0 : act - $elem.offset()[pos] );\r\n\r\n\t\t\t\t\tif( settings.margin ){//if it's a dom element, reduce the margin\r\n\t\t\t\t\t\tattr[key] -= parseInt(t.css('margin'+Pos)) || 0;\r\n\t\t\t\t\t\tattr[key] -= parseInt(t.css('border'+Pos+'Width')) || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tattr[key] += settings.offset[pos] || 0;//add/deduct the offset\r\n\t\t\t\t\t\r\n\t\t\t\t\tif( settings.over[pos] )//scroll to a fraction of its width/height\r\n\t\t\t\t\t\tattr[key] += t[dim]() * settings.over[pos];\r\n\t\t\t\t}else\r\n\t\t\t\t\tattr[key] = t[pos];//remove the unnecesary 'px'\r\n\r\n\t\t\t\tif( /^\\d+$/.test(attr[key]) )//number or 'number'\r\n\t\t\t\t\tattr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max(Dim) );//check the limits\r\n\r\n\t\t\t\tif( !i && settings.queue ){//queueing each axis is required\t\t\t\t\t\r\n\t\t\t\t\tif( act != attr[key] )//don't waste time animating, if there's no need.\r\n\t\t\t\t\t\tanimate( settings.onAfterFirst );//intermediate animation\r\n\t\t\t\t\tdelete attr[key];//don't animate this axis again in the next iteration.\r\n\t\t\t\t}\r\n\t\t\t});\t\t\t\r\n\t\t\tanimate( settings.onAfter );\t\t\t\r\n\r\n\t\t\tfunction animate( callback ){\r\n\t\t\t\t$elem.animate( attr, duration, settings.easing, callback && function(){\r\n\t\t\t\t\tcallback.call(this, target);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\tfunction max( Dim ){\r\n\t\t\t\tvar el = win ? $.browser.opera ? document.body : document.documentElement : elem;\r\n\t\t\t\treturn el['scroll'+Dim] - el['client'+Dim];\r\n\t\t\t};\r\n\t\t});\r\n\t};\r\n\r\n\tfunction both( val ){\r\n\t\treturn typeof val == 'object' ? val : { top:val, left:val };\r\n\t};\r\n\r\n})( jQuery );","/**\r\n * jQuery.serialScroll\r\n * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com\r\n * Dual licensed under MIT and GPL.\r\n * Date: 3/20/2008\r\n *\r\n * @projectDescription Animated scrolling of series.\r\n * @author Ariel Flesler\r\n * @version 1.2.1\r\n *\r\n * @id jQuery.serialScroll\r\n * @id jQuery.fn.serialScroll\r\n * @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required.\r\n * @return {jQuery} Returns the same jQuery object, for chaining.\r\n *\r\n * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html\r\n *\r\n * Notes:\r\n *\t- The plugin requires jQuery.ScrollTo.\r\n *\t- The hash of settings, is passed to jQuery.ScrollTo, so its settings can be used as well.\r\n */\r\n;(function( $ ){\r\n\r\n\tvar $serialScroll = $.serialScroll = function( settings ){\r\n\t\t$.scrollTo.window().serialScroll( settings );\r\n\t};\r\n\r\n\t//Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option.\r\n\t//@see http://flesler.webs/jQuery.ScrollTo/\r\n\t$serialScroll.defaults = {//the defaults are public and can be overriden.\r\n\t\tduration:1000, //how long to animate.\r\n\t\taxis:'x', //which of top and left should be scrolled\r\n\t\tevent:'click', //on which event to react.\r\n\t\tstart:0, //first element (zero-based index)\r\n\t\tstep:1, //how many elements to scroll on each action\r\n\t\tlock:true,//ignore events if already animating\r\n\t\tcycle:true, //cycle endlessly ( constant velocity )\r\n\t\tconstant:true //use contant speed ?\r\n\t\t/*\r\n\t\tnavigation:null,//if specified, it's a selector a collection of items to navigate the container\r\n\t\ttarget:null, //if specified, it's a selector to the element to be scrolled.\r\n\t\tinterval:0, //it's the number of milliseconds to automatically go to the next\r\n\t\tlazy:false,//go find the elements each time (allows AJAX or JS content, or reordering)\r\n\t\tstop:false, //stop any previous animations to avoid queueing\r\n\t\tforce:false,//force the scroll to the first element on start ?\r\n\t\tjump: false,//if true, when the event is triggered on an element, the pane scrolls to it\r\n\t\titems:null, //selector to the items (relative to the matched elements)\r\n\t\tprev:null, //selector to the 'prev' button\r\n\t\tnext:null, //selector to the 'next' button\r\n\t\tonBefore: function(){}, //function called before scrolling, if it returns false, the event is ignored\r\n\t\texclude:0 //exclude the last x elements, so we cannot scroll past the end\r\n\t\t*/\r\n\t};\r\n\r\n\t$.fn.serialScroll = function( settings ){\r\n\t\tsettings = $.extend( {}, $serialScroll.defaults, settings );\r\n\t\tvar event = settings.event, //this one is just to get shorter code when compressed\r\n\t\t\tstep = settings.step, // idem\r\n\t\t\tlazy = settings.lazy;//idem\r\n\r\n\t\treturn this.each(function(){\r\n\t\t\tvar \r\n\t\t\t\tcontext = settings.target ? this : document, //if a target is specified, then everything's relative to 'this'.\r\n\t\t\t\t$pane = $(settings.target || this, context),//the element to be scrolled (will carry all the events)\r\n\t\t\t\tpane = $pane[0], //will be reused, save it into a variable\r\n\t\t\t\titems = settings.items, //will hold a lazy list of elements\r\n\t\t\t\tactive = settings.start, //active index\r\n\t\t\t\tauto = settings.interval, //boolean, do auto or not\r\n\t\t\t\tnav = settings.navigation, //save it now to make the code shorter\r\n\t\t\t\ttimer; //holds the interval id\r\n\r\n\t\t\tif( !lazy )//if not lazy, go get the items now\r\n\t\t\t\titems = getItems();\r\n\r\n\t\t\tif( settings.force )\r\n\t\t\t\tjump( {}, active );//generate an initial call\r\n\r\n\t\t\t// Button binding, optionall\r\n\t\t\t$(settings.prev||[], context).bind( event, -step, move );\r\n\t\t\t$(settings.next||[], context).bind( event, step, move );\r\n\r\n\t\t\t// Custom events bound to the container\r\n\t\t\tif( !pane.ssbound )//don't bind more than once\r\n\t\t\t\t$pane\r\n\t\t\t\t\t.bind('prev.serialScroll', -step, move ) //you can trigger with just 'prev'\r\n\t\t\t\t\t.bind('next.serialScroll', step, move ) //for example: $(container).trigger('next');\r\n\t\t\t\t\t.bind('goto.serialScroll', jump ); //for example: $(container).trigger('goto', [4] );\r\n\t\t\tif( auto )\r\n\t\t\t\t$pane\r\n\t\t\t\t\t.bind('start.serialScroll', function(e){\r\n\t\t\t\t\t\tif( !auto ){\r\n\t\t\t\t\t\t\tclear();\r\n\t\t\t\t\t\t\tauto = true;\r\n\t\t\t\t\t\t\tnext();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t })\r\n\t\t\t\t\t.bind('stop.serialScroll', function(){//stop a current animation\r\n\t\t\t\t\t\tclear();\r\n\t\t\t\t\t\tauto = false;\r\n\t\t\t\t\t});\r\n\t\t\t$pane.bind('notify.serialScroll', function(e, elem){//let serialScroll know that the index changed externally\r\n\t\t\t\tvar i = index(elem);\r\n\t\t\t\tif( i > -1 )\r\n\t\t\t\t\tactive = i;\r\n\t\t\t});\r\n\t\t\tpane.ssbound = true;//avoid many bindings\r\n\r\n\t\t\tif( settings.jump )//can't use jump if using lazy items and a non-bubbling event\r\n\t\t\t\t(lazy ? $pane : getItems()).bind( event, function( e ){\r\n\t\t\t\t\tjump( e, index(e.target) );\r\n\t\t\t\t});\r\n\r\n\t\t\tif( nav )\r\n\t\t\t\tnav = $(nav, context).bind(event, function( e ){\r\n\t\t\t\t\te.data = Math.round(getItems().length / nav.length) * nav.index(this);\r\n\t\t\t\t\tjump( e, this );\r\n\t\t\t\t});\r\n\r\n\t\t\tfunction move( e ){\r\n\t\t\t\te.data += active;\r\n\t\t\t\tjump( e, this );\r\n\t\t\t};\r\n\t\t\tfunction jump( e, button ){\r\n\t\t\t\tif( !isNaN(button) ){//initial or special call from the outside $(container).trigger('goto',[index]);\r\n\t\t\t\t\te.data = button;\r\n\t\t\t\t\tbutton = pane;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar\r\n\t\t\t\t\tpos = e.data, n,\r\n\t\t\t\t\treal = e.type, //is a real event triggering ?\r\n\t\t\t\t\t$items = settings.exclude ? getItems().slice(0,-settings.exclude) : getItems(),//handle a possible exclude\r\n\t\t\t\t\tlimit = $items.length,\r\n\t\t\t\t\telem = $items[pos],\r\n\t\t\t\t\tduration = settings.duration;\r\n\r\n\t\t\t\tif( real )//real event object\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif( auto ){\r\n\t\t\t\t\tclear();//clear any possible automatic scrolling.\r\n\t\t\t\t\ttimer = setTimeout( next, settings.interval ); \r\n\t\t\t\t}\r\n\r\n\t\t\t\tif( !elem ){ //exceeded the limits\r\n\t\t\t\t\tn = pos < 0 ? 0 : limit - 1;\r\n\t\t\t\t\tif( active != n )//we exceeded for the first time\r\n\t\t\t\t\t\tpos = n;\r\n\t\t\t\t\telse if( !settings.cycle )//this is a bad case\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tpos = limit - n - 1;//invert, go to the other side\r\n\t\t\t\t\telem = $items[pos];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif( !elem || real && active == pos || //could happen, save some CPU cycles in vain\r\n\t\t\t\t\tsettings.lock && $pane.is(':animated') || //no animations while busy\r\n\t\t\t\t\treal && settings.onBefore && //callback returns false ?\r\n\t\t\t\t\tsettings.onBefore.call(button, e, elem, $pane, getItems(), pos) === false ) return;\r\n\r\n\t\t\t\tif( settings.stop )\r\n\t\t\t\t\t$pane.queue('fx',[]).stop();//remove all its animations\r\n\r\n\t\t\t\tif( settings.constant )\r\n\t\t\t\t\tduration = Math.abs(duration/step * (active - pos ));//keep constant velocity\r\n\r\n\t\t\t\t$pane\r\n\t\t\t\t\t.scrollTo( elem, duration, settings )//do scroll\r\n\t\t\t\t\t.trigger('notify.serialScroll',[pos]);//in case serialScroll was called on this elem more than once.\r\n\t\t\t};\r\n\t\t\tfunction next(){//I'll use the namespace to avoid conflicts\r\n\t\t\t\t$pane.trigger('next.serialScroll');\r\n\t\t\t};\r\n\t\t\tfunction clear(){\r\n\t\t\t\tclearTimeout(timer);\r\n\t\t\t};\r\n\t\t\tfunction getItems(){\r\n\t\t\t\treturn $( items, pane );\r\n\t\t\t};\r\n\t\t\tfunction index( elem ){\r\n\t\t\t\tif( !isNaN(elem) ) return elem;//number\r\n\t\t\t\tvar $items = getItems(), i;\r\n\t\t\t\twhile(( i = $items.index(elem)) == -1 && elem != pane )//see if it matches or one of its ancestors\r\n\t\t\t\t\telem = elem.parentNode;\r\n\t\t\t\treturn i;\r\n\t\t\t};\r\n\t\t});\r\n\t};\r\n\r\n})( jQuery );"],"sourceRoot":"/source/"}