Files
Phraseanet/www/include/jslibs/yui2.8/docs/Carousel.js.html
2011-02-16 16:09:48 +01:00

4527 lines
540 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns:yui="http://yuilibrary.com/rdf/1.0/yui.rdf#">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>API: carousel Carousel.js (YUI Library)</title>
<link rel="stylesheet" type="text/css" href="assets/reset-fonts-grids-min.css" />
<link rel="stylesheet" type="text/css" href="assets/api.css" />
<script type="text/javascript" src="assets/api-js"></script>
<script type="text/javascript" src="assets/ac-js"></script>
</head>
<body id="yahoo-com">
<div id="doc3" class="yui-t2">
<div id="hd">
<h1><a href="http://developer.yahoo.com/yui/" title="Yahoo! UI Library">Yahoo! UI Library</a></h1>
<h3>Carousel Widget&nbsp; <span class="subtitle">2.8.2r1</span></h3>
<a href="./index.html" title="Yahoo! UI Library">Yahoo! UI Library</a>
&gt; <a href="./module_carousel.html" title="carousel">carousel</a>
&gt; Carousel.js (source view)
<form onsubmit="return false">
<div id="propertysearch">
Search: <input autocomplete="off" id="searchinput" />
<div id="searchresults">
&nbsp;
</div>
</div>
</form>
</div>
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<form action="#" name="yui-classopts-form" method="get" id="yui-classopts-form">
<fieldset>
<legend>Filters</legend>
<span class="classopts"><input type="checkbox" name="show_private" id="show_private" /> <label for="show_private">Show Private</label></span>
<span class="classopts"><input type="checkbox" name="show_protected" id="show_protected" /> <label for="show_protected">Show Protected</label></span>
<span class="classopts"><input type="checkbox" name="show_deprecated" id="show_deprecated" /> <label for="show_deprecated">Show Deprecated</label></span>
</fieldset>
</form>
<div id="srcout">
<style>
#doc3 .classopts { display:none; }
</style>
<div class="highlight"><pre><span class="cm">/**</span>
<span class="cm"> * The Carousel module provides a widget for browsing among a set of like</span>
<span class="cm"> * objects represented pictorially.</span>
<span class="cm"> *</span>
<span class="cm"> * @module carousel</span>
<span class="cm"> * @requires yahoo, dom, event, element</span>
<span class="cm"> * @optional animation</span>
<span class="cm"> * @namespace YAHOO.widget</span>
<span class="cm"> * @title Carousel Widget</span>
<span class="cm"> * @beta</span>
<span class="cm"> */</span>
<span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">WidgetName</span><span class="p">;</span> <span class="c1">// forward declaration</span>
<span class="cm">/**</span>
<span class="cm"> * The Carousel widget.</span>
<span class="cm"> *</span>
<span class="cm"> * @class Carousel</span>
<span class="cm"> * @extends YAHOO.util.Element</span>
<span class="cm"> * @constructor</span>
<span class="cm"> * @param el {HTMLElement | String} The HTML element that represents the</span>
<span class="cm"> * the container that houses the Carousel.</span>
<span class="cm"> * @param cfg {Object} (optional) The configuration values</span>
<span class="cm"> */</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">Carousel</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Component creation&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">Carousel</span><span class="p">.</span><span class="nx">superclass</span><span class="p">.</span><span class="nx">constructor</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">el</span><span class="p">,</span> <span class="nx">cfg</span><span class="p">);</span>
<span class="p">};</span>
<span class="cm">/*</span>
<span class="cm"> * Private variables of the Carousel component</span>
<span class="cm"> */</span>
<span class="cm">/* Some abbreviations to avoid lengthy typing and lookups. */</span>
<span class="kd">var</span> <span class="nx">Carousel</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">Carousel</span><span class="p">,</span>
<span class="nx">Dom</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">Dom</span><span class="p">,</span>
<span class="nx">Event</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">Event</span><span class="p">,</span>
<span class="nx">JS</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">lang</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * The widget name.</span>
<span class="cm"> * @private</span>
<span class="cm"> * @static</span>
<span class="cm"> */</span>
<span class="nx">WidgetName</span> <span class="o">=</span> <span class="s2">&quot;Carousel&quot;</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * The internal table of Carousel instances.</span>
<span class="cm"> * @private</span>
<span class="cm"> * @static</span>
<span class="cm"> */</span>
<span class="kd">var</span> <span class="nx">instances</span> <span class="o">=</span> <span class="p">{},</span>
<span class="cm">/*</span>
<span class="cm"> * Custom events of the Carousel component</span>
<span class="cm"> */</span>
<span class="cm">/**</span>
<span class="cm"> * @event afterScroll</span>
<span class="cm"> * @description Fires when the Carousel has scrolled to the previous or</span>
<span class="cm"> * next page. Passes back the index of the first and last visible items in</span>
<span class="cm"> * the Carousel. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">afterScrollEvent</span> <span class="o">=</span> <span class="s2">&quot;afterScroll&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event allItemsRemovedEvent</span>
<span class="cm"> * @description Fires when all items have been removed from the Carousel.</span>
<span class="cm"> * See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">allItemsRemovedEvent</span> <span class="o">=</span> <span class="s2">&quot;allItemsRemoved&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event beforeHide</span>
<span class="cm"> * @description Fires before the Carousel is hidden. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">beforeHideEvent</span> <span class="o">=</span> <span class="s2">&quot;beforeHide&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event beforePageChange</span>
<span class="cm"> * @description Fires when the Carousel is about to scroll to the previous</span>
<span class="cm"> * or next page. Passes back the page number of the current page. Note</span>
<span class="cm"> * that the first page number is zero. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">beforePageChangeEvent</span> <span class="o">=</span> <span class="s2">&quot;beforePageChange&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event beforeScroll</span>
<span class="cm"> * @description Fires when the Carousel is about to scroll to the previous</span>
<span class="cm"> * or next page. Passes back the index of the first and last visible items</span>
<span class="cm"> * in the Carousel and the direction (backward/forward) of the scroll. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">beforeScrollEvent</span> <span class="o">=</span> <span class="s2">&quot;beforeScroll&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event beforeShow</span>
<span class="cm"> * @description Fires when the Carousel is about to be shown. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">beforeShowEvent</span> <span class="o">=</span> <span class="s2">&quot;beforeShow&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event blur</span>
<span class="cm"> * @description Fires when the Carousel loses focus. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">blurEvent</span> <span class="o">=</span> <span class="s2">&quot;blur&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event focus</span>
<span class="cm"> * @description Fires when the Carousel gains focus. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">focusEvent</span> <span class="o">=</span> <span class="s2">&quot;focus&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event hide</span>
<span class="cm"> * @description Fires when the Carousel is hidden. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">hideEvent</span> <span class="o">=</span> <span class="s2">&quot;hide&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event itemAdded</span>
<span class="cm"> * @description Fires when an item has been added to the Carousel. Passes</span>
<span class="cm"> * back the content of the item that would be added, the index at which the</span>
<span class="cm"> * item would be added, and the event itself. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">itemAddedEvent</span> <span class="o">=</span> <span class="s2">&quot;itemAdded&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event itemRemoved</span>
<span class="cm"> * @description Fires when an item has been removed from the Carousel.</span>
<span class="cm"> * Passes back the content of the item that would be removed, the index</span>
<span class="cm"> * from which the item would be removed, and the event itself. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">itemRemovedEvent</span> <span class="o">=</span> <span class="s2">&quot;itemRemoved&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event itemReplaced</span>
<span class="cm"> * @description Fires when an item has been replaced in the Carousel.</span>
<span class="cm"> * Passes back the content of the item that was replaced, the content</span>
<span class="cm"> * of the new item, the index where the replacement occurred, and the event</span>
<span class="cm"> * itself. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">itemReplacedEvent</span> <span class="o">=</span> <span class="s2">&quot;itemReplaced&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event itemSelected</span>
<span class="cm"> * @description Fires when an item has been selected in the Carousel.</span>
<span class="cm"> * Passes back the index of the selected item in the Carousel. Note, that</span>
<span class="cm"> * the index begins from zero. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">itemSelectedEvent</span> <span class="o">=</span> <span class="s2">&quot;itemSelected&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event loadItems</span>
<span class="cm"> * @description Fires when the Carousel needs more items to be loaded for</span>
<span class="cm"> * displaying them. Passes back the first and last visible items in the</span>
<span class="cm"> * Carousel, and the number of items needed to be loaded. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">loadItemsEvent</span> <span class="o">=</span> <span class="s2">&quot;loadItems&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event navigationStateChange</span>
<span class="cm"> * @description Fires when the state of either one of the navigation</span>
<span class="cm"> * buttons are changed from enabled to disabled or vice versa. Passes back</span>
<span class="cm"> * the state (true/false) of the previous and next buttons. The value true</span>
<span class="cm"> * signifies the button is enabled, false signifies disabled. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">navigationStateChangeEvent</span> <span class="o">=</span> <span class="s2">&quot;navigationStateChange&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event pageChange</span>
<span class="cm"> * @description Fires after the Carousel has scrolled to the previous or</span>
<span class="cm"> * next page. Passes back the page number of the current page. Note</span>
<span class="cm"> * that the first page number is zero. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">pageChangeEvent</span> <span class="o">=</span> <span class="s2">&quot;pageChange&quot;</span><span class="p">,</span>
<span class="cm">/*</span>
<span class="cm"> * Internal event.</span>
<span class="cm"> * @event render</span>
<span class="cm"> * @description Fires when the Carousel is rendered. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">renderEvent</span> <span class="o">=</span> <span class="s2">&quot;render&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event show</span>
<span class="cm"> * @description Fires when the Carousel is shown. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">showEvent</span> <span class="o">=</span> <span class="s2">&quot;show&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event startAutoPlay</span>
<span class="cm"> * @description Fires when the auto play has started in the Carousel. See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">startAutoPlayEvent</span> <span class="o">=</span> <span class="s2">&quot;startAutoPlay&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * @event stopAutoPlay</span>
<span class="cm"> * @description Fires when the auto play has been stopped in the Carousel.</span>
<span class="cm"> * See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">stopAutoPlayEvent</span> <span class="o">=</span> <span class="s2">&quot;stopAutoPlay&quot;</span><span class="p">,</span>
<span class="cm">/*</span>
<span class="cm"> * Internal event.</span>
<span class="cm"> * @event uiUpdateEvent</span>
<span class="cm"> * @description Fires when the UI has been updated.</span>
<span class="cm"> * See</span>
<span class="cm"> * &lt;a href=&quot;YAHOO.util.Element.html#addListener&quot;&gt;Element.addListener&lt;/a&gt;</span>
<span class="cm"> * for more information on listening for this event.</span>
<span class="cm"> * @type YAHOO.util.CustomEvent</span>
<span class="cm"> */</span>
<span class="nx">uiUpdateEvent</span> <span class="o">=</span> <span class="s2">&quot;uiUpdate&quot;</span><span class="p">;</span>
<span class="cm">/*</span>
<span class="cm"> * Private helper functions used by the Carousel component</span>
<span class="cm"> */</span>
<span class="cm">/**</span>
<span class="cm"> * Set multiple styles on one element.</span>
<span class="cm"> * @method setStyles</span>
<span class="cm"> * @param el {HTMLElement} The element to set styles on</span>
<span class="cm"> * @param style {Object} top:&quot;10px&quot;, left:&quot;0px&quot;, etc.</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">setStyles</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">styles</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">which</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">which</span> <span class="k">in</span> <span class="nx">styles</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">styles</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">which</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">which</span><span class="p">,</span> <span class="nx">styles</span><span class="p">[</span><span class="nx">which</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Create an element, set its class name and optionally install the element</span>
<span class="cm"> * to its parent.</span>
<span class="cm"> * @method createElement</span>
<span class="cm"> * @param el {String} The element to be created</span>
<span class="cm"> * @param attrs {Object} Configuration of parent, class and id attributes.</span>
<span class="cm"> * If the content is specified, it is inserted after creation of the</span>
<span class="cm"> * element. The content can also be an HTML element in which case it would</span>
<span class="cm"> * be appended as a child node of the created element.</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">createElement</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">newEl</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="nx">attrs</span> <span class="o">=</span> <span class="nx">attrs</span> <span class="o">||</span> <span class="p">{};</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nx">className</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">newEl</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">className</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nx">styles</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">setStyles</span><span class="p">(</span><span class="nx">newEl</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">styles</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nx">parent</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">attrs</span><span class="p">.</span><span class="nx">parent</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">newEl</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">newEl</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nx">content</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nx">content</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">newEl</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nx">content</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">newEl</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">content</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">newEl</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Get the computed style of an element.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getStyle</span>
<span class="cm"> * @param el {HTMLElement} The element for which the style needs to be</span>
<span class="cm"> * returned.</span>
<span class="cm"> * @param style {String} The style attribute</span>
<span class="cm"> * @param type {String} &quot;int&quot;, &quot;float&quot;, etc. (defaults to int)</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">,</span> <span class="nx">type</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">value</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">val</span><span class="p">;</span>
<span class="cm">/*</span>
<span class="cm"> * XXX: Safari calculates incorrect marginRight for an element</span>
<span class="cm"> * which has its parent element style set to overflow: hidden</span>
<span class="cm"> * https://bugs.webkit.org/show_bug.cgi?id=13343</span>
<span class="cm"> * Let us assume marginLeft == marginRight</span>
<span class="cm"> */</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">style</span> <span class="o">==</span> <span class="s2">&quot;marginRight&quot;</span> <span class="o">&amp;&amp;</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">ua</span><span class="p">.</span><span class="nx">webkit</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginLeft&quot;</span><span class="p">),</span> <span class="mi">10</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">),</span> <span class="mi">10</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="o">?</span> <span class="nx">val</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nx">getStyleFloatVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">val</span><span class="p">;</span>
<span class="cm">/*</span>
<span class="cm"> * XXX: Safari calculates incorrect marginRight for an element</span>
<span class="cm"> * which has its parent element style set to overflow: hidden</span>
<span class="cm"> * https://bugs.webkit.org/show_bug.cgi?id=13343</span>
<span class="cm"> * Let us assume marginLeft == marginRight</span>
<span class="cm"> */</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">style</span> <span class="o">==</span> <span class="s2">&quot;marginRight&quot;</span> <span class="o">&amp;&amp;</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">env</span><span class="p">.</span><span class="nx">ua</span><span class="p">.</span><span class="nx">webkit</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nb">parseFloat</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginLeft&quot;</span><span class="p">));</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nb">parseFloat</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">));</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="o">?</span> <span class="nx">val</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">type</span> <span class="o">==</span> <span class="s2">&quot;undefined&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">type</span> <span class="o">=</span> <span class="s2">&quot;int&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">switch</span> <span class="p">(</span><span class="nx">style</span><span class="p">)</span> <span class="p">{</span>
<span class="k">case</span> <span class="s2">&quot;height&quot;</span><span class="o">:</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">offsetHeight</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">+=</span> <span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginTop&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginBottom&quot;</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">getStyleFloatVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginTop&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginBottom&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderTopWidth&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderBottomWidth&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingTop&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingBottom&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="s2">&quot;width&quot;</span><span class="o">:</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">offsetWidth</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">+=</span> <span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginLeft&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginRight&quot;</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">getStyleFloatVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginLeft&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginRight&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderLeftWidth&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderRightWidth&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingLeft&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingRight&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">default</span><span class="o">:</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">type</span> <span class="o">==</span> <span class="s2">&quot;int&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">getStyleIntVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">type</span> <span class="o">==</span> <span class="s2">&quot;float&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">getStyleFloatVal</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">style</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">value</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Compute and return the height or width of a single Carousel item</span>
<span class="cm"> * depending upon the orientation.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getCarouselItemSize</span>
<span class="cm"> * @param which {String} &quot;height&quot; or &quot;width&quot; to be returned. If this is</span>
<span class="cm"> * passed explicitly, the calculated size is not cached.</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">getCarouselItemSize</span><span class="p">(</span><span class="nx">which</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">child</span><span class="p">,</span>
<span class="nx">item</span><span class="p">,</span>
<span class="nx">size</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">first</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">),</span>
<span class="nx">vertical</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">first</span><span class="p">]</span> <span class="o">||</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">first</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">item</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">child</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">item</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">which</span> <span class="o">==</span> <span class="s2">&quot;undefined&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">vertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">vertical</span> <span class="o">=</span> <span class="nx">which</span> <span class="o">==</span> <span class="s2">&quot;height&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_itemAttrCache</span><span class="p">[</span><span class="nx">which</span><span class="p">])</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_itemAttrCache</span><span class="p">[</span><span class="nx">which</span><span class="p">];</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">vertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">getStyle</span><span class="p">(</span><span class="nx">child</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">getStyle</span><span class="p">(</span><span class="nx">child</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_itemAttrCache</span><span class="p">[</span><span class="nx">which</span><span class="p">]</span> <span class="o">=</span> <span class="nx">size</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">size</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Return the size of a part of the item (reveal).</span>
<span class="cm"> *</span>
<span class="cm"> * @method getRevealSize</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">getRevealSize</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">isVertical</span><span class="p">,</span> <span class="nx">sz</span><span class="p">;</span>
<span class="nx">isVertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">);</span>
<span class="nx">sz</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span>
<span class="nx">isVertical</span> <span class="o">?</span> <span class="s2">&quot;height&quot;</span> <span class="o">:</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="p">(</span><span class="nx">sz</span> <span class="o">*</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;revealAmount&quot;</span><span class="p">)</span> <span class="o">/</span> <span class="mi">100</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Compute and return the position of a Carousel item based on its</span>
<span class="cm"> * position.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getCarouselItemPosition</span>
<span class="cm"> * @param position {Number} The position of the Carousel item.</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">getCarouselItemPosition</span><span class="p">(</span><span class="nx">pos</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">itemsPerRow</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_cols</span><span class="p">,</span>
<span class="nx">itemsPerCol</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_rows</span><span class="p">,</span>
<span class="nx">page</span><span class="p">,</span>
<span class="nx">sz</span><span class="p">,</span>
<span class="nx">isVertical</span><span class="p">,</span>
<span class="nx">itemsCol</span><span class="p">,</span>
<span class="nx">itemsRow</span><span class="p">,</span>
<span class="nx">sentinel</span><span class="p">,</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">top</span><span class="p">,</span>
<span class="nx">left</span><span class="p">,</span>
<span class="nx">rsz</span><span class="p">,</span>
<span class="nx">styles</span> <span class="o">=</span> <span class="p">{},</span>
<span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">itemsTable</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">,</span>
<span class="nx">items</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">,</span>
<span class="nx">loading</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">;</span>
<span class="nx">isVertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">);</span>
<span class="nx">sz</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span>
<span class="nx">isVertical</span> <span class="o">?</span> <span class="s2">&quot;height&quot;</span> <span class="o">:</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="nx">rsz</span> <span class="o">=</span> <span class="nx">getRevealSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">);</span>
<span class="c1">// adjust for items not yet loaded</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&lt;</span> <span class="nx">pos</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">loading</span><span class="p">[</span><span class="nx">index</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">delta</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">index</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">pos</span> <span class="o">-=</span> <span class="nx">delta</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">itemsPerCol</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">page</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">getPageForItem</span><span class="p">(</span><span class="nx">pos</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">itemsRow</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">pos</span><span class="o">/</span><span class="nx">itemsPerRow</span><span class="p">);</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="nx">itemsRow</span><span class="p">;</span>
<span class="nx">top</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">*</span> <span class="nx">sz</span><span class="p">;</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">top</span> <span class="o">=</span> <span class="p">(</span><span class="nx">top</span> <span class="o">+</span> <span class="nx">rsz</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">;</span>
<span class="nx">sz</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="nx">itemsCol</span> <span class="o">=</span> <span class="nx">pos</span> <span class="o">%</span> <span class="nx">itemsPerRow</span><span class="p">;</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="nx">itemsCol</span><span class="p">;</span>
<span class="nx">left</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">*</span> <span class="nx">sz</span><span class="p">;</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">left</span> <span class="o">=</span> <span class="nx">left</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">itemsCol</span> <span class="o">=</span> <span class="nx">pos</span> <span class="o">%</span> <span class="nx">itemsPerRow</span><span class="p">;</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="p">(</span><span class="nx">page</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="nx">itemsPerRow</span><span class="p">;</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="nx">itemsCol</span> <span class="o">+</span> <span class="nx">sentinel</span><span class="p">;</span>
<span class="nx">left</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">*</span> <span class="nx">sz</span><span class="p">;</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">left</span> <span class="o">=</span> <span class="p">(</span><span class="nx">left</span> <span class="o">+</span> <span class="nx">rsz</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">;</span>
<span class="nx">sz</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">);</span>
<span class="nx">itemsRow</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">pos</span><span class="o">/</span><span class="nx">itemsPerRow</span><span class="p">);</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="p">(</span><span class="nx">page</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="nx">itemsPerCol</span><span class="p">;</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="nx">itemsRow</span> <span class="o">-</span> <span class="nx">sentinel</span><span class="p">;</span>
<span class="nx">top</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">*</span> <span class="nx">sz</span><span class="p">;</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">top</span> <span class="o">=</span> <span class="nx">top</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">left</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">top</span> <span class="o">=</span> <span class="p">((</span><span class="nx">pos</span> <span class="o">*</span> <span class="nx">sz</span><span class="p">)</span> <span class="o">+</span> <span class="nx">rsz</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">top</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">styles</span><span class="p">.</span><span class="nx">left</span> <span class="o">=</span> <span class="p">((</span><span class="nx">pos</span> <span class="o">*</span> <span class="nx">sz</span><span class="p">)</span> <span class="o">+</span> <span class="nx">rsz</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">styles</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Return the index of the first item in the view port for displaying item</span>
<span class="cm"> * in &quot;pos&quot;.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getFirstVisibleForPosition</span>
<span class="cm"> * @param pos {Number} The position of the item to be displayed</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">getFirstVisibleForPosition</span><span class="p">(</span><span class="nx">pos</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">num</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">pos</span> <span class="o">/</span> <span class="nx">num</span><span class="p">)</span> <span class="o">*</span> <span class="nx">num</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Return the scrolling offset size given the number of elements to</span>
<span class="cm"> * scroll.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getScrollOffset</span>
<span class="cm"> * @param delta {Number} The delta number of elements to scroll by.</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">getScrollOffset</span><span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">itemSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">size</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">itemSize</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">itemSize</span> <span class="o">*</span> <span class="nx">delta</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">size</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Scroll the Carousel by a page backward.</span>
<span class="cm"> *</span>
<span class="cm"> * @method scrollPageBackward</span>
<span class="cm"> * @param {Event} ev The event object</span>
<span class="cm"> * @param {Object} obj The context object</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">scrollPageBackward</span><span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">obj</span><span class="p">.</span><span class="nx">scrollPageBackward</span><span class="p">();</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">(</span><span class="nx">ev</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Scroll the Carousel by a page forward.</span>
<span class="cm"> *</span>
<span class="cm"> * @method scrollPageForward</span>
<span class="cm"> * @param {Event} ev The event object</span>
<span class="cm"> * @param {Object} obj The context object</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">scrollPageForward</span><span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">obj</span><span class="p">.</span><span class="nx">scrollPageForward</span><span class="p">();</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">(</span><span class="nx">ev</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Set the selected item.</span>
<span class="cm"> *</span>
<span class="cm"> * @method setItemSelection</span>
<span class="cm"> * @param {Number} newpos The index of the new position</span>
<span class="cm"> * @param {Number} oldpos The index of the previous position</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">setItemSelection</span><span class="p">(</span><span class="nx">newpos</span><span class="p">,</span> <span class="nx">oldpos</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">el</span><span class="p">,</span>
<span class="nx">firstItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span><span class="p">,</span>
<span class="nx">isCircular</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">),</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span>
<span class="nx">position</span> <span class="o">=</span> <span class="nx">oldpos</span><span class="p">,</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="nx">firstItem</span> <span class="o">+</span> <span class="nx">numVisible</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">position</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">position</span> <span class="o">&lt;</span> <span class="nx">numItems</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">position</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">position</span><span class="p">].</span><span class="nx">id</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">SELECTED_ITEM</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">newpos</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">newpos</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">newpos</span><span class="p">)</span> <span class="o">?</span> <span class="nx">newpos</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nx">firstItem</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">newpos</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nx">getFirstVisibleForPosition</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">newpos</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">newpos</span><span class="p">);</span> <span class="c1">// still loading the item</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">newpos</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">newpos</span><span class="p">].</span><span class="nx">id</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">SELECTED_ITEM</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">newpos</span> <span class="o">&lt;</span> <span class="nx">firstItem</span> <span class="o">||</span> <span class="nx">newpos</span> <span class="o">&gt;</span> <span class="nx">sentinel</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// out of focus</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nx">getFirstVisibleForPosition</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">newpos</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">newpos</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Fire custom events for enabling/disabling navigation elements.</span>
<span class="cm"> *</span>
<span class="cm"> * @method syncNavigation</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">syncNavigation</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">attach</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span>
<span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">i</span><span class="p">,</span>
<span class="nx">navigation</span><span class="p">,</span>
<span class="nx">sentinel</span><span class="p">;</span>
<span class="c1">// Don&#39;t do anything if the Carousel is not rendered</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">navigation</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;navigation&quot;</span><span class="p">);</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">+</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">prev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">)</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">)</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">||</span>
<span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">prev</span><span class="p">,</span> <span class="s2">&quot;click&quot;</span><span class="p">,</span>
<span class="nx">scrollPageBackward</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">prev</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">FIRST_NAV_DISABLED</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;disabled&quot;</span><span class="p">,</span>
<span class="s2">&quot;true&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_prevEnabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">attach</span> <span class="o">=</span> <span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_prevEnabled</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">attach</span> <span class="o">=</span> <span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_prevEnabled</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attach</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">prev</span><span class="p">,</span> <span class="s2">&quot;click&quot;</span><span class="p">,</span> <span class="nx">scrollPageBackward</span><span class="p">,</span>
<span class="nx">carousel</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">prev</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">FIRST_NAV_DISABLED</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">removeAttribute</span><span class="p">(</span><span class="s2">&quot;disabled&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_prevEnabled</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">attach</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sentinel</span> <span class="o">&gt;=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">next</span><span class="p">,</span> <span class="s2">&quot;click&quot;</span><span class="p">,</span>
<span class="nx">scrollPageForward</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">next</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">DISABLED</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;disabled&quot;</span><span class="p">,</span>
<span class="s2">&quot;true&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_nextEnabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">attach</span> <span class="o">=</span> <span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_nextEnabled</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">attach</span> <span class="o">=</span> <span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_nextEnabled</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">attach</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">next</span><span class="p">,</span> <span class="s2">&quot;click&quot;</span><span class="p">,</span> <span class="nx">scrollPageForward</span><span class="p">,</span>
<span class="nx">carousel</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">navigation</span><span class="p">.</span><span class="nx">next</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">DISABLED</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">removeAttribute</span><span class="p">(</span><span class="s2">&quot;disabled&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_nextEnabled</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">navigationStateChangeEvent</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">next</span><span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_nextEnabled</span><span class="p">,</span> <span class="nx">prev</span><span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_prevEnabled</span> <span class="p">});</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Synchronize and redraw the Pager UI if necessary.</span>
<span class="cm"> *</span>
<span class="cm"> * @method syncPagerUi</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">syncPagerUi</span><span class="p">(</span><span class="nx">page</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">numPages</span><span class="p">,</span> <span class="nx">numVisible</span><span class="p">;</span>
<span class="c1">// Don&#39;t do anything if the Carousel is not rendered</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">page</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">page</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">/</span> <span class="nx">numVisible</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">numPages</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">)</span> <span class="o">/</span> <span class="nx">numVisible</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">num</span> <span class="o">=</span> <span class="nx">numPages</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">cur</span> <span class="o">=</span> <span class="nx">page</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">numPages</span> <span class="o">&gt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CONFIG</span><span class="p">.</span><span class="nx">MAX_PAGER_BUTTONS</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_updatePagerMenu</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_updatePagerButtons</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Get full dimensions of an element.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getDimensions</span>
<span class="cm"> * @param {Object} el The element to get the dimensions of</span>
<span class="cm"> * @param {String} which Get the height or width of an element</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">getDimensions</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">which</span><span class="p">)</span> <span class="p">{</span>
<span class="k">switch</span> <span class="p">(</span><span class="nx">which</span><span class="p">)</span> <span class="p">{</span>
<span class="k">case</span> <span class="s1">&#39;height&#39;</span><span class="o">:</span>
<span class="k">return</span> <span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginTop&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginBottom&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingTop&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingBottom&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderTopWidth&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderBottomWidth&quot;</span><span class="p">);</span>
<span class="k">case</span> <span class="s1">&#39;width&#39;</span><span class="o">:</span>
<span class="k">return</span> <span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginLeft&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;marginRight&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingLeft&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;paddingRight&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderLeftWidth&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s2">&quot;borderRightWidth&quot;</span><span class="p">);</span>
<span class="k">default</span><span class="o">:</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">getStyle</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">which</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Handle UI update.</span>
<span class="cm"> * Call the appropriate methods on events fired when an item is added, or</span>
<span class="cm"> * removed for synchronizing the DOM.</span>
<span class="cm"> *</span>
<span class="cm"> * @method syncUi</span>
<span class="cm"> * @param {Object} o The item that needs to be added or removed</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">syncUi</span><span class="p">(</span><span class="nx">o</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isObject</span><span class="p">(</span><span class="nx">o</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">switch</span> <span class="p">(</span><span class="nx">o</span><span class="p">.</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">case</span> <span class="nx">itemAddedEvent</span><span class="o">:</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiForItemAdd</span><span class="p">(</span><span class="nx">o</span><span class="p">);</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="nx">itemRemovedEvent</span><span class="o">:</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiForItemRemove</span><span class="p">(</span><span class="nx">o</span><span class="p">);</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="nx">itemReplacedEvent</span><span class="o">:</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiForItemReplace</span><span class="p">(</span><span class="nx">o</span><span class="p">);</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="nx">loadItemsEvent</span><span class="o">:</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiForLazyLoading</span><span class="p">(</span><span class="nx">o</span><span class="p">);</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">uiUpdateEvent</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Update the state variables after scrolling the Carousel view port.</span>
<span class="cm"> *</span>
<span class="cm"> * @method updateStateAfterScroll</span>
<span class="cm"> * @param {Integer} item The index to which the Carousel has scrolled to.</span>
<span class="cm"> * @param {Integer} sentinel The last element in the view port.</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="kd">function</span> <span class="nx">updateStateAfterScroll</span><span class="p">(</span><span class="nx">item</span><span class="p">,</span> <span class="nx">sentinel</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">page</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;currentPage&quot;</span><span class="p">),</span>
<span class="nx">newPage</span><span class="p">,</span>
<span class="nx">numPerPage</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="nx">newPage</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">/</span> <span class="nx">numPerPage</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">newPage</span> <span class="o">!=</span> <span class="nx">page</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;currentPage&quot;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">value</span><span class="o">:</span> <span class="nx">newPage</span> <span class="p">});</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">pageChangeEvent</span><span class="p">,</span> <span class="nx">newPage</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectOnScroll&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">clearTimeout</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoPlayTimer</span><span class="p">);</span>
<span class="k">delete</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoPlayTimer</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">isAutoPlayOn</span><span class="p">())</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">startAutoPlay</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">afterScrollEvent</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">first</span><span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span><span class="p">,</span>
<span class="nx">last</span><span class="o">:</span> <span class="nx">sentinel</span> <span class="p">},</span>
<span class="nx">carousel</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/*</span>
<span class="cm"> * Static members and methods of the Carousel component</span>
<span class="cm"> */</span>
<span class="cm">/**</span>
<span class="cm"> * Return the appropriate Carousel object based on the id associated with</span>
<span class="cm"> * the Carousel element or false if none match.</span>
<span class="cm"> * @method getById</span>
<span class="cm"> * @public</span>
<span class="cm"> * @static</span>
<span class="cm"> */</span>
<span class="nx">Carousel</span><span class="p">.</span><span class="nx">getById</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">instances</span><span class="p">[</span><span class="nx">id</span><span class="p">]</span> <span class="o">?</span> <span class="nx">instances</span><span class="p">[</span><span class="nx">id</span><span class="p">].</span><span class="nx">object</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">};</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">extend</span><span class="p">(</span><span class="nx">Carousel</span><span class="p">,</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">Element</span><span class="p">,</span> <span class="p">{</span>
<span class="cm">/*</span>
<span class="cm"> * Internal variables used within the Carousel component</span>
<span class="cm"> */</span>
<span class="cm">/**</span>
<span class="cm"> * Number of rows for a multirow carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _rows</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_rows</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Number of cols for a multirow carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _cols</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_cols</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The Animation object.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _animObj</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_animObj</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The Carousel element.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _carouselEl</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_carouselEl</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The Carousel clipping container element.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _clipEl</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_clipEl</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The current first index of the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _firstItem</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_firstItem</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Does the Carousel element have focus?</span>
<span class="cm"> *</span>
<span class="cm"> * @property _hasFocus</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_hasFocus</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Is the Carousel rendered already?</span>
<span class="cm"> *</span>
<span class="cm"> * @property _hasRendered</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_hasRendered</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Is the animation still in progress?</span>
<span class="cm"> *</span>
<span class="cm"> * @property _isAnimationInProgress</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_isAnimationInProgress</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Is the auto-scrolling of Carousel in progress?</span>
<span class="cm"> *</span>
<span class="cm"> * @property _isAutoPlayInProgress</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_isAutoPlayInProgress</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The table of items in the Carousel.</span>
<span class="cm"> * The numItems is the number of items in the Carousel, items being the</span>
<span class="cm"> * array of items in the Carousel. The size is the size of a single</span>
<span class="cm"> * item in the Carousel. It is cached here for efficiency (to avoid</span>
<span class="cm"> * computing the size multiple times).</span>
<span class="cm"> *</span>
<span class="cm"> * @property _itemsTable</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_itemsTable</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The Carousel navigation buttons.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _navBtns</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_navBtns</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The Carousel navigation.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _navEl</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_navEl</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Status of the next navigation item.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _nextEnabled</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_nextEnabled</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The Carousel pages structure.</span>
<span class="cm"> * This is an object of the total number of pages and the current page.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _pages</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_pages</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The Carousel pagination structure.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _pagination</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_pagination</span><span class="o">:</span> <span class="p">{},</span>
<span class="cm">/**</span>
<span class="cm"> * Status of the previous navigation item.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _prevEnabled</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_prevEnabled</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Whether the Carousel size needs to be recomputed or not?</span>
<span class="cm"> *</span>
<span class="cm"> * @property _recomputeSize</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_recomputeSize</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Cache the Carousel item attributes.</span>
<span class="cm"> *</span>
<span class="cm"> * @property _itemAttrCache</span>
<span class="cm"> * @private</span>
<span class="cm"> */</span>
<span class="nx">_itemAttrCache</span><span class="o">:</span> <span class="p">{},</span>
<span class="cm">/*</span>
<span class="cm"> * CSS classes used by the Carousel component</span>
<span class="cm"> */</span>
<span class="nx">CLASSES</span><span class="o">:</span> <span class="p">{</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the Carousel navigation buttons.</span>
<span class="cm"> *</span>
<span class="cm"> * @property BUTTON</span>
<span class="cm"> * @default &quot;yui-carousel-button&quot;</span>
<span class="cm"> */</span>
<span class="nx">BUTTON</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-button&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the Carousel element.</span>
<span class="cm"> *</span>
<span class="cm"> * @property CAROUSEL</span>
<span class="cm"> * @default &quot;yui-carousel&quot;</span>
<span class="cm"> */</span>
<span class="nx">CAROUSEL</span><span class="o">:</span> <span class="s2">&quot;yui-carousel&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the container of the items in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property CAROUSEL_EL</span>
<span class="cm"> * @default &quot;yui-carousel-element&quot;</span>
<span class="cm"> */</span>
<span class="nx">CAROUSEL_EL</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-element&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the Carousel&#39;s container element.</span>
<span class="cm"> *</span>
<span class="cm"> * @property CONTAINER</span>
<span class="cm"> * @default &quot;yui-carousel-container&quot;</span>
<span class="cm"> */</span>
<span class="nx">CONTAINER</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-container&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the Carousel&#39;s container element.</span>
<span class="cm"> *</span>
<span class="cm"> * @property CONTENT</span>
<span class="cm"> * @default &quot;yui-carousel-content&quot;</span>
<span class="cm"> */</span>
<span class="nx">CONTENT</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-content&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a disabled navigation button.</span>
<span class="cm"> *</span>
<span class="cm"> * @property DISABLED</span>
<span class="cm"> * @default &quot;yui-carousel-button-disabled&quot;</span>
<span class="cm"> */</span>
<span class="nx">DISABLED</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-button-disabled&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the first Carousel navigation button.</span>
<span class="cm"> *</span>
<span class="cm"> * @property FIRST_NAV</span>
<span class="cm"> * @default &quot; yui-carousel-first-button&quot;</span>
<span class="cm"> */</span>
<span class="nx">FIRST_NAV</span><span class="o">:</span> <span class="s2">&quot; yui-carousel-first-button&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a first disabled navigation button.</span>
<span class="cm"> *</span>
<span class="cm"> * @property FIRST_NAV_DISABLED</span>
<span class="cm"> * @default &quot;yui-carousel-first-button-disabled&quot;</span>
<span class="cm"> */</span>
<span class="nx">FIRST_NAV_DISABLED</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-first-button-disabled&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a first page element.</span>
<span class="cm"> *</span>
<span class="cm"> * @property FIRST_PAGE</span>
<span class="cm"> * @default &quot;yui-carousel-nav-first-page&quot;</span>
<span class="cm"> */</span>
<span class="nx">FIRST_PAGE</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-nav-first-page&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the Carousel navigation button that has focus.</span>
<span class="cm"> *</span>
<span class="cm"> * @property FOCUSSED_BUTTON</span>
<span class="cm"> * @default &quot;yui-carousel-button-focus&quot;</span>
<span class="cm"> */</span>
<span class="nx">FOCUSSED_BUTTON</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-button-focus&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a horizontally oriented Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property HORIZONTAL</span>
<span class="cm"> * @default &quot;yui-carousel-horizontal&quot;</span>
<span class="cm"> */</span>
<span class="nx">HORIZONTAL</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-horizontal&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The element to be used as the progress indicator when the item</span>
<span class="cm"> * is still being loaded.</span>
<span class="cm"> *</span>
<span class="cm"> * @property ITEM_LOADING</span>
<span class="cm"> * @default The progress indicator (spinner) image CSS class</span>
<span class="cm"> */</span>
<span class="nx">ITEM_LOADING</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-item-loading&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name that will be set if the Carousel adjusts itself</span>
<span class="cm"> * for a minimum width.</span>
<span class="cm"> *</span>
<span class="cm"> * @property MIN_WIDTH</span>
<span class="cm"> * @default &quot;yui-carousel-min-width&quot;</span>
<span class="cm"> */</span>
<span class="nx">MIN_WIDTH</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-min-width&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The navigation element container class name.</span>
<span class="cm"> *</span>
<span class="cm"> * @property NAVIGATION</span>
<span class="cm"> * @default &quot;yui-carousel-nav&quot;</span>
<span class="cm"> */</span>
<span class="nx">NAVIGATION</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-nav&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the next Carousel navigation button.</span>
<span class="cm"> *</span>
<span class="cm"> * @property NEXT_NAV</span>
<span class="cm"> * @default &quot; yui-carousel-next-button&quot;</span>
<span class="cm"> */</span>
<span class="nx">NEXT_NAV</span><span class="o">:</span> <span class="s2">&quot; yui-carousel-next-button&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the next navigation link. This variable is</span>
<span class="cm"> * not only used for styling, but also for identifying the link</span>
<span class="cm"> * within the Carousel container.</span>
<span class="cm"> *</span>
<span class="cm"> * @property NEXT_PAGE</span>
<span class="cm"> * @default &quot;yui-carousel-next&quot;</span>
<span class="cm"> */</span>
<span class="nx">NEXT_PAGE</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-next&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name for the navigation container for prev/next.</span>
<span class="cm"> *</span>
<span class="cm"> * @property NAV_CONTAINER</span>
<span class="cm"> * @default &quot;yui-carousel-buttons&quot;</span>
<span class="cm"> */</span>
<span class="nx">NAV_CONTAINER</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-buttons&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name for an item in the pager UL or dropdown menu.</span>
<span class="cm"> *</span>
<span class="cm"> * @property PAGER_ITEM</span>
<span class="cm"> * @default &quot;yui-carousel-pager-item&quot;</span>
<span class="cm"> */</span>
<span class="nx">PAGER_ITEM</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-pager-item&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name for the pagination container</span>
<span class="cm"> *</span>
<span class="cm"> * @property PAGINATION</span>
<span class="cm"> * @default &quot;yui-carousel-pagination&quot;</span>
<span class="cm"> */</span>
<span class="nx">PAGINATION</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-pagination&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the focussed page navigation. This class is</span>
<span class="cm"> * specifically used for the ugly focus handling in Opera.</span>
<span class="cm"> *</span>
<span class="cm"> * @property PAGE_FOCUS</span>
<span class="cm"> * @default &quot;yui-carousel-nav-page-focus&quot;</span>
<span class="cm"> */</span>
<span class="nx">PAGE_FOCUS</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-nav-page-focus&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the previous navigation link. This variable</span>
<span class="cm"> * is not only used for styling, but also for identifying the link</span>
<span class="cm"> * within the Carousel container.</span>
<span class="cm"> *</span>
<span class="cm"> * @property PREV_PAGE</span>
<span class="cm"> * @default &quot;yui-carousel-prev&quot;</span>
<span class="cm"> */</span>
<span class="nx">PREV_PAGE</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-prev&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the selected item.</span>
<span class="cm"> *</span>
<span class="cm"> * @property SELECTED_ITEM</span>
<span class="cm"> * @default &quot;yui-carousel-item-selected&quot;</span>
<span class="cm"> */</span>
<span class="nx">SELECTED_ITEM</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-item-selected&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of the selected paging navigation.</span>
<span class="cm"> *</span>
<span class="cm"> * @property SELECTED_NAV</span>
<span class="cm"> * @default &quot;yui-carousel-nav-page-selected&quot;</span>
<span class="cm"> */</span>
<span class="nx">SELECTED_NAV</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-nav-page-selected&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a vertically oriented Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property VERTICAL</span>
<span class="cm"> * @default &quot;yui-carousel-vertical&quot;</span>
<span class="cm"> */</span>
<span class="nx">VERTICAL</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-vertical&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a multirow Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property MULTI_ROW</span>
<span class="cm"> * @default &quot;yui-carousel-multi-row&quot;</span>
<span class="cm"> */</span>
<span class="nx">MULTI_ROW</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-multi-row&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a row in a multirow Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property ROW</span>
<span class="cm"> * @default &quot;yui-carousel-new-row&quot;</span>
<span class="cm"> */</span>
<span class="nx">ROW</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-row&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a vertical Carousel&#39;s container element.</span>
<span class="cm"> *</span>
<span class="cm"> * @property VERTICAL_CONTAINER</span>
<span class="cm"> * @default &quot;yui-carousel-vertical-container&quot;</span>
<span class="cm"> */</span>
<span class="nx">VERTICAL_CONTAINER</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-vertical-container&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The class name of a visible Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property VISIBLE</span>
<span class="cm"> * @default &quot;yui-carousel-visible&quot;</span>
<span class="cm"> */</span>
<span class="nx">VISIBLE</span><span class="o">:</span> <span class="s2">&quot;yui-carousel-visible&quot;</span>
<span class="p">},</span>
<span class="cm">/*</span>
<span class="cm"> * Configuration attributes for configuring the Carousel component</span>
<span class="cm"> */</span>
<span class="nx">CONFIG</span><span class="o">:</span> <span class="p">{</span>
<span class="cm">/**</span>
<span class="cm"> * The offset of the first visible item in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property FIRST_VISIBLE</span>
<span class="cm"> * @default 0</span>
<span class="cm"> */</span>
<span class="nx">FIRST_VISIBLE</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The minimum width of the horizontal Carousel container to support</span>
<span class="cm"> * the navigation buttons.</span>
<span class="cm"> *</span>
<span class="cm"> * @property HORZ_MIN_WIDTH</span>
<span class="cm"> * @default 180</span>
<span class="cm"> */</span>
<span class="nx">HORZ_MIN_WIDTH</span><span class="o">:</span> <span class="mi">180</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The maximum number of pager buttons allowed beyond which the UI</span>
<span class="cm"> * of the pager would be a drop-down of pages instead of buttons.</span>
<span class="cm"> *</span>
<span class="cm"> * @property MAX_PAGER_BUTTONS</span>
<span class="cm"> * @default 5</span>
<span class="cm"> */</span>
<span class="nx">MAX_PAGER_BUTTONS</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The minimum width of the vertical Carousel container to support</span>
<span class="cm"> * the navigation buttons.</span>
<span class="cm"> *</span>
<span class="cm"> * @property VERT_MIN_WIDTH</span>
<span class="cm"> * @default 155</span>
<span class="cm"> */</span>
<span class="nx">VERT_MIN_WIDTH</span><span class="o">:</span> <span class="mi">115</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The number of visible items in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @property NUM_VISIBLE</span>
<span class="cm"> * @default 3</span>
<span class="cm"> */</span>
<span class="nx">NUM_VISIBLE</span><span class="o">:</span> <span class="mi">3</span>
<span class="p">},</span>
<span class="cm">/*</span>
<span class="cm"> * Internationalizable strings in the Carousel component</span>
<span class="cm"> */</span>
<span class="nx">STRINGS</span><span class="o">:</span> <span class="p">{</span>
<span class="cm">/**</span>
<span class="cm"> * The content to be used as the progress indicator when the item</span>
<span class="cm"> * is still being loaded.</span>
<span class="cm"> *</span>
<span class="cm"> * @property ITEM_LOADING_CONTENT</span>
<span class="cm"> * @default &quot;Loading&quot;</span>
<span class="cm"> */</span>
<span class="nx">ITEM_LOADING_CONTENT</span><span class="o">:</span> <span class="s2">&quot;Loading&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The next navigation button name/text.</span>
<span class="cm"> *</span>
<span class="cm"> * @property NEXT_BUTTON_TEXT</span>
<span class="cm"> * @default &quot;Next Page&quot;</span>
<span class="cm"> */</span>
<span class="nx">NEXT_BUTTON_TEXT</span><span class="o">:</span> <span class="s2">&quot;Next Page&quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The prefix text for the pager in case the UI is a drop-down.</span>
<span class="cm"> *</span>
<span class="cm"> * @property PAGER_PREFIX_TEXT</span>
<span class="cm"> * @default &quot;Go to page &quot;</span>
<span class="cm"> */</span>
<span class="nx">PAGER_PREFIX_TEXT</span><span class="o">:</span> <span class="s2">&quot;Go to page &quot;</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The previous navigation button name/text.</span>
<span class="cm"> *</span>
<span class="cm"> * @property PREVIOUS_BUTTON_TEXT</span>
<span class="cm"> * @default &quot;Previous Page&quot;</span>
<span class="cm"> */</span>
<span class="nx">PREVIOUS_BUTTON_TEXT</span><span class="o">:</span> <span class="s2">&quot;Previous Page&quot;</span>
<span class="p">},</span>
<span class="cm">/*</span>
<span class="cm"> * Public methods of the Carousel component</span>
<span class="cm"> */</span>
<span class="cm">/**</span>
<span class="cm"> * Insert or append an item to the Carousel.</span>
<span class="cm"> * E.g. if Object: ({content:&quot;Your Content&quot;, id:&quot;&quot;, className:&quot;&quot;}, index)</span>
<span class="cm"> *</span>
<span class="cm"> * @method addItem</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param item {String | Object | HTMLElement} The item to be appended</span>
<span class="cm"> * to the Carousel. If the parameter is a string, it is assumed to be</span>
<span class="cm"> * the content of the newly created item. If the parameter is an</span>
<span class="cm"> * object, it is assumed to supply the content and an optional class</span>
<span class="cm"> * and an optional id of the newly created item.</span>
<span class="cm"> * @param index {Number} optional The position to where in the list</span>
<span class="cm"> * (starts from zero).</span>
<span class="cm"> * @return {Boolean} Return true on success, false otherwise</span>
<span class="cm"> */</span>
<span class="nx">addItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">item</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">className</span><span class="p">,</span>
<span class="nx">content</span><span class="p">,</span>
<span class="nx">elId</span><span class="p">,</span>
<span class="nx">replaceItems</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">newIndex</span><span class="p">,</span> <span class="c1">// Add newIndex as workaround for undefined pos</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="o">||</span> <span class="nx">item</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">content</span> <span class="o">=</span> <span class="nx">item</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">?</span> <span class="nx">item</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">:</span> <span class="nx">item</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isObject</span><span class="p">(</span><span class="nx">item</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">content</span> <span class="o">=</span> <span class="nx">item</span><span class="p">.</span><span class="nx">content</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Invalid argument to addItem&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">className</span> <span class="o">=</span> <span class="nx">item</span><span class="p">.</span><span class="nx">className</span> <span class="o">||</span> <span class="s2">&quot;&quot;</span><span class="p">;</span>
<span class="nx">elId</span> <span class="o">=</span> <span class="nx">item</span><span class="p">.</span><span class="nx">id</span> <span class="o">?</span> <span class="nx">item</span><span class="p">.</span><span class="nx">id</span> <span class="o">:</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">generateId</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">index</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span>
<span class="nx">item</span> <span class="o">:</span> <span class="nx">content</span><span class="p">,</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">className</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">elId</span>
<span class="p">});</span>
<span class="c1">// Add newIndex as workaround for undefined pos</span>
<span class="nx">newIndex</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">index</span> <span class="o">&gt;</span> <span class="nx">numItems</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Index out of bounds&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// make sure we splice into the correct position</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">]){</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span>
<span class="nx">replaceItems</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">replaceItems</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">:</span> <span class="nx">content</span><span class="p">,</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">className</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">elId</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span><span class="o">++</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">numItems</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// Add newPos as workaround for undefined pos</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">itemAddedEvent</span><span class="p">,</span> <span class="p">{</span> <span class="nx">pos</span><span class="o">:</span> <span class="nx">index</span><span class="p">,</span> <span class="nx">ev</span><span class="o">:</span> <span class="nx">itemAddedEvent</span><span class="p">,</span> <span class="nx">newPos</span><span class="o">:</span><span class="nx">newIndex</span> <span class="p">});</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Insert or append multiple items to the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method addItems</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param items {Array} An array containing an array of new items each linked to the</span>
<span class="cm"> * index where the insertion should take place.</span>
<span class="cm"> * E.g. [[{content:&#39;&lt;img/&gt;&#39;}, index1], [{content:&#39;&lt;img/&gt;&#39;}, index2]]</span>
<span class="cm"> * NOTE: An item at index must already exist.</span>
<span class="cm"> * @return {Boolean} Return true on success, false otherwise</span>
<span class="cm"> */</span>
<span class="nx">addItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">items</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">rv</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">items</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">n</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">addItem</span><span class="p">(</span><span class="nx">items</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="nx">items</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> <span class="o">===</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">rv</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Remove focus from the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method blur</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">blur</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">.</span><span class="nx">blur</span><span class="p">();</span>
<span class="k">this</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">blurEvent</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Clears the items from Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method clearItems</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">clearItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">n</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">removeItem</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Item could not be removed - missing?&quot;</span><span class="p">,</span>
<span class="s2">&quot;warn&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/*</span>
<span class="cm"> For dynamic loading, the numItems may be much larger than</span>
<span class="cm"> the actual number of items in the table. So, set the</span>
<span class="cm"> numItems to zero, and break out of the loop if the table</span>
<span class="cm"> is already empty.</span>
<span class="cm"> */</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">n</span><span class="o">--</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">allItemsRemovedEvent</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set focus on the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method focus</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">focus</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">first</span><span class="p">,</span>
<span class="nx">focusEl</span><span class="p">,</span>
<span class="nx">isSelectionInvisible</span><span class="p">,</span>
<span class="nx">itemsTable</span><span class="p">,</span>
<span class="nx">last</span><span class="p">,</span>
<span class="nx">numVisible</span><span class="p">,</span>
<span class="nx">selectOnScroll</span><span class="p">,</span>
<span class="nx">selected</span><span class="p">,</span>
<span class="nx">selItem</span><span class="p">;</span>
<span class="c1">// Don&#39;t do anything if the Carousel is not rendered</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">isAnimating</span><span class="p">())</span> <span class="p">{</span>
<span class="c1">// this messes up real bad!</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">selItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">);</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="nx">selectOnScroll</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectOnScroll&quot;</span><span class="p">);</span>
<span class="nx">selected</span> <span class="o">=</span> <span class="p">(</span><span class="nx">selItem</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">?</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">getItem</span><span class="p">(</span><span class="nx">selItem</span><span class="p">)</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span>
<span class="nx">first</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">);</span>
<span class="nx">last</span> <span class="o">=</span> <span class="nx">first</span> <span class="o">+</span> <span class="nx">numVisible</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<span class="nx">isSelectionInvisible</span> <span class="o">=</span> <span class="p">(</span><span class="nx">selItem</span> <span class="o">&lt;</span> <span class="nx">first</span> <span class="o">||</span> <span class="nx">selItem</span> <span class="o">&gt;</span> <span class="nx">last</span><span class="p">);</span>
<span class="nx">focusEl</span> <span class="o">=</span> <span class="p">(</span><span class="nx">selected</span> <span class="o">&amp;&amp;</span> <span class="nx">selected</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="o">?</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">selected</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span>
<span class="nx">itemsTable</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">selectOnScroll</span> <span class="o">&amp;&amp;</span> <span class="nx">isSelectionInvisible</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">focusEl</span> <span class="o">=</span> <span class="p">(</span><span class="nx">itemsTable</span> <span class="o">&amp;&amp;</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span> <span class="o">&amp;&amp;</span>
<span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">first</span><span class="p">])</span> <span class="o">?</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">first</span><span class="p">].</span><span class="nx">id</span><span class="p">)</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">focusEl</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="nx">focusEl</span><span class="p">.</span><span class="nx">focus</span><span class="p">();</span>
<span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">ex</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// ignore focus errors</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">focusEvent</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Hide the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method hide</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">hide</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">beforeHideEvent</span><span class="p">)</span> <span class="o">!==</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">.</span><span class="nx">VISIBLE</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">hideEvent</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Initialize the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method init</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param el {HTMLElement | String} The html element that represents</span>
<span class="cm"> * the Carousel container.</span>
<span class="cm"> * @param attrs {Object} The set of configuration attributes for</span>
<span class="cm"> * creating the Carousel.</span>
<span class="cm"> */</span>
<span class="nx">init</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">elId</span> <span class="o">=</span> <span class="nx">el</span><span class="p">,</span> <span class="c1">// save for a rainy day</span>
<span class="nx">parse</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span>
<span class="nx">selected</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">el</span> <span class="o">+</span> <span class="s2">&quot; is neither an HTML element, nor a string&quot;</span><span class="p">,</span>
<span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">prev</span><span class="o">:</span> <span class="p">[],</span> <span class="nx">next</span><span class="o">:</span> <span class="p">[]</span> <span class="p">};</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">el</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">num</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">cur</span><span class="o">:</span> <span class="mi">0</span> <span class="p">};</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span> <span class="o">=</span> <span class="p">{};</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemAttrCache</span> <span class="o">=</span> <span class="p">{};</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">loading</span><span class="o">:</span> <span class="p">{},</span> <span class="nx">numItems</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">items</span><span class="o">:</span> <span class="p">[],</span> <span class="nx">size</span><span class="o">:</span> <span class="mi">0</span> <span class="p">};</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Component initialization&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">el</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">el</span> <span class="o">+</span> <span class="s2">&quot; is neither an HTML element, nor a string&quot;</span><span class="p">,</span>
<span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">Carousel</span><span class="p">.</span><span class="nx">superclass</span><span class="p">.</span><span class="nx">init</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">el</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">);</span>
<span class="c1">// check if we&#39;re starting somewhere in the middle</span>
<span class="nx">selected</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="nx">selected</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">){</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">,</span><span class="nx">getFirstVisibleForPosition</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span><span class="nx">selected</span><span class="p">));</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">el</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// in case the HTML element is passed</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">generateId</span><span class="p">());</span>
<span class="p">}</span>
<span class="nx">parse</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_parseCarousel</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">parse</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_createCarousel</span><span class="p">(</span><span class="nx">elId</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_createCarousel</span><span class="p">(</span><span class="nx">elId</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">elId</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">initEvents</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">parse</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_parseCarouselItems</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// add the selected class</span>
<span class="k">if</span><span class="p">(</span><span class="nx">selected</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">){</span>
<span class="nx">setItemSelection</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span><span class="nx">selected</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">attrs</span> <span class="o">||</span> <span class="k">typeof</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">isVertical</span> <span class="o">==</span> <span class="s2">&quot;undefined&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_parseCarouselNavigation</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setupCarouselNavigation</span><span class="p">();</span>
<span class="nx">instances</span><span class="p">[</span><span class="nx">elId</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">object</span><span class="o">:</span> <span class="nx">carousel</span> <span class="p">};</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_loadItems</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">)</span><span class="o">+</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">))</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Initialize the configuration attributes used to create the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method initAttributes</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param attrs {Object} The set of configuration attributes for</span>
<span class="cm"> * creating the Carousel.</span>
<span class="cm"> */</span>
<span class="nx">initAttributes</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">attrs</span> <span class="o">=</span> <span class="nx">attrs</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">Carousel</span><span class="p">.</span><span class="nx">superclass</span><span class="p">.</span><span class="nx">initAttributes</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute carouselEl</span>
<span class="cm"> * @description The type of the Carousel element.</span>
<span class="cm"> * @default OL</span>
<span class="cm"> * @type Boolean</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;carouselEl&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">carouselEl</span> <span class="o">||</span> <span class="s2">&quot;OL&quot;</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute carouselItemEl</span>
<span class="cm"> * @description The type of the list of items within the Carousel.</span>
<span class="cm"> * @default LI</span>
<span class="cm"> * @type Boolean</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;carouselItemEl&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">carouselItemEl</span> <span class="o">||</span> <span class="s2">&quot;LI&quot;</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute currentPage</span>
<span class="cm"> * @description The current page number (read-only.)</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;currentPage&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">readOnly</span> <span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute firstVisible</span>
<span class="cm"> * @description The index to start the Carousel from (indexes begin</span>
<span class="cm"> * from zero)</span>
<span class="cm"> * @default 0</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">method</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setFirstVisible</span><span class="p">,</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_validateFirstVisible</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span>
<span class="nx">attrs</span><span class="p">.</span><span class="nx">firstVisible</span> <span class="o">||</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CONFIG</span><span class="p">.</span><span class="nx">FIRST_VISIBLE</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute selectOnScroll</span>
<span class="cm"> * @description Set this to true to automatically set focus to</span>
<span class="cm"> * follow scrolling in the Carousel.</span>
<span class="cm"> * @default true</span>
<span class="cm"> * @type Boolean</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;selectOnScroll&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isBoolean</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">selectOnScroll</span> <span class="o">||</span> <span class="kc">true</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute numVisible</span>
<span class="cm"> * @description The number of visible items in the Carousel&#39;s</span>
<span class="cm"> * viewport.</span>
<span class="cm"> * @default 3</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">setter</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_numVisibleSetter</span><span class="p">,</span>
<span class="nx">method</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setNumVisible</span><span class="p">,</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_validateNumVisible</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">numVisible</span> <span class="o">||</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CONFIG</span><span class="p">.</span><span class="nx">NUM_VISIBLE</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute numItems</span>
<span class="cm"> * @description The number of items in the Carousel.</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">method</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setNumItems</span><span class="p">,</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_validateNumItems</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute scrollIncrement</span>
<span class="cm"> * @description The number of items to scroll by for arrow keys.</span>
<span class="cm"> * @default 1</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;scrollIncrement&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_validateScrollIncrement</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">scrollIncrement</span> <span class="o">||</span> <span class="mi">1</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute selectedItem</span>
<span class="cm"> * @description The index of the selected item.</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">setter</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItemSetter</span><span class="p">,</span>
<span class="nx">method</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setSelectedItem</span><span class="p">,</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="o">-</span><span class="mi">1</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute revealAmount</span>
<span class="cm"> * @description The percentage of the item to be revealed on each</span>
<span class="cm"> * side of the Carousel (before and after the first and last item</span>
<span class="cm"> * in the Carousel&#39;s viewport.)</span>
<span class="cm"> * @default 0</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;revealAmount&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">method</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setRevealAmount</span><span class="p">,</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_validateRevealAmount</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">revealAmount</span> <span class="o">||</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute isCircular</span>
<span class="cm"> * @description Set this to true to wrap scrolling of the contents</span>
<span class="cm"> * in the Carousel.</span>
<span class="cm"> * @default false</span>
<span class="cm"> * @type Boolean</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isBoolean</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">isCircular</span> <span class="o">||</span> <span class="kc">false</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute isVertical</span>
<span class="cm"> * @description True if the orientation of the Carousel is vertical</span>
<span class="cm"> * @default false</span>
<span class="cm"> * @type Boolean</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">method</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setOrientation</span><span class="p">,</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isBoolean</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">isVertical</span> <span class="o">||</span> <span class="kc">false</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute navigation</span>
<span class="cm"> * @description The set of navigation controls for Carousel</span>
<span class="cm"> * @default &lt;br&gt;</span>
<span class="cm"> * { prev: null, // the previous navigation element&lt;br&gt;</span>
<span class="cm"> * next: null } // the next navigation element</span>
<span class="cm"> * @type Object</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;navigation&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">method</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_setNavigation</span><span class="p">,</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_validateNavigation</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span>
<span class="nx">attrs</span><span class="p">.</span><span class="nx">navigation</span> <span class="o">||</span> <span class="p">{</span><span class="nx">prev</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span><span class="nx">next</span><span class="o">:</span> <span class="kc">null</span><span class="p">,</span><span class="nx">page</span><span class="o">:</span> <span class="kc">null</span><span class="p">}</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute animation</span>
<span class="cm"> * @description The optional animation attributes for the Carousel.</span>
<span class="cm"> * @default &lt;br&gt;</span>
<span class="cm"> * { speed: 0, // the animation speed (in seconds)&lt;br&gt;</span>
<span class="cm"> * effect: null } // the animation effect (like</span>
<span class="cm"> * YAHOO.util.Easing.easeOut)</span>
<span class="cm"> * @type Object</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;animation&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_validateAnimation</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">animation</span> <span class="o">||</span> <span class="p">{</span> <span class="nx">speed</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">effect</span><span class="o">:</span> <span class="kc">null</span> <span class="p">}</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute autoPlay</span>
<span class="cm"> * @description Set this to time in milli-seconds to have the</span>
<span class="cm"> * Carousel automatically scroll the contents.</span>
<span class="cm"> * @type Number</span>
<span class="cm"> * @deprecated Use autoPlayInterval instead.</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;autoPlay&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">autoPlay</span> <span class="o">||</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute autoPlayInterval</span>
<span class="cm"> * @description The delay in milli-seconds for scrolling the</span>
<span class="cm"> * Carousel during auto-play.</span>
<span class="cm"> * Note: The startAutoPlay() method needs to be invoked to trigger</span>
<span class="cm"> * automatic scrolling of Carousel.</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;autoPlayInterval&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">validator</span> <span class="o">:</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">:</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">autoPlayInterval</span> <span class="o">||</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute numPages</span>
<span class="cm"> * @description The number of pages in the carousel.</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;numPages&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">readOnly</span> <span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nx">getter</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getNumPages</span>
<span class="p">});</span>
<span class="cm">/**</span>
<span class="cm"> * @attribute lastVisible</span>
<span class="cm"> * @description The last item visible in the carousel.</span>
<span class="cm"> * @type Number</span>
<span class="cm"> */</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setAttributeConfig</span><span class="p">(</span><span class="s2">&quot;lastVisible&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">readOnly</span> <span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nx">getter</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getLastVisible</span>
<span class="p">});</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Initialize and bind the event handlers.</span>
<span class="cm"> *</span>
<span class="cm"> * @method initEvents</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">initEvents</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">focussedLi</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s2">&quot;keydown&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_keyboardEventHandler</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">afterScrollEvent</span><span class="p">,</span> <span class="nx">syncNavigation</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">itemAddedEvent</span><span class="p">,</span> <span class="nx">syncUi</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">itemRemovedEvent</span><span class="p">,</span> <span class="nx">syncUi</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">itemReplacedEvent</span><span class="p">,</span> <span class="nx">syncUi</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">itemSelectedEvent</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasFocus</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">focus</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">loadItemsEvent</span><span class="p">,</span> <span class="nx">syncUi</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">allItemsRemovedEvent</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="nx">syncNavigation</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">);</span>
<span class="nx">syncPagerUi</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">pageChangeEvent</span><span class="p">,</span> <span class="nx">syncPagerUi</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">renderEvent</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">===</span> <span class="kc">null</span> <span class="o">||</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">//in either case</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">));</span>
<span class="p">}</span>
<span class="nx">syncNavigation</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">ev</span><span class="p">);</span>
<span class="nx">syncPagerUi</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">ev</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_setClipContainerSize</span><span class="p">();</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">show</span><span class="p">();</span>
<span class="p">});</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s2">&quot;selectedItemChange&quot;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">setItemSelection</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">ev</span><span class="p">.</span><span class="nx">newValue</span><span class="p">,</span> <span class="nx">ev</span><span class="p">.</span><span class="nx">prevValue</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ev</span><span class="p">.</span><span class="nx">newValue</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_updateTabIndex</span><span class="p">(</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">getElementForItem</span><span class="p">(</span><span class="nx">ev</span><span class="p">.</span><span class="nx">newValue</span><span class="p">));</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">itemSelectedEvent</span><span class="p">,</span> <span class="nx">ev</span><span class="p">.</span><span class="nx">newValue</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">uiUpdateEvent</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">syncNavigation</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">ev</span><span class="p">);</span>
<span class="nx">syncPagerUi</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">ev</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s2">&quot;firstVisibleChange&quot;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectOnScroll&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ev</span><span class="p">.</span><span class="nx">newValue</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_updateTabIndex</span><span class="p">(</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">getElementForItem</span><span class="p">(</span><span class="nx">ev</span><span class="p">.</span><span class="nx">newValue</span><span class="p">));</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="c1">// Handle item selection on mouse click</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s2">&quot;click&quot;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">isAutoPlayOn</span><span class="p">())</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">stopAutoPlay</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemClickHandler</span><span class="p">(</span><span class="nx">ev</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagerClickHandler</span><span class="p">(</span><span class="nx">ev</span><span class="p">);</span>
<span class="p">});</span>
<span class="c1">// Restore the focus on the navigation buttons</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">onFocus</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;element&quot;</span><span class="p">),</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">target</span> <span class="o">=</span> <span class="nx">Event</span><span class="p">.</span><span class="nx">getTarget</span><span class="p">(</span><span class="nx">ev</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">target</span> <span class="o">&amp;&amp;</span> <span class="nx">target</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;A&quot;</span> <span class="o">&amp;&amp;</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">getAncestorByClassName</span><span class="p">(</span><span class="nx">target</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">NAVIGATION</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">focussedLi</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">focussedLi</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">PAGE_FOCUS</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">focussedLi</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">;</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">focussedLi</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">PAGE_FOCUS</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">focussedLi</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">focussedLi</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">PAGE_FOCUS</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">obj</span><span class="p">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nx">obj</span><span class="p">.</span><span class="nx">_updateNavButtons</span><span class="p">(</span><span class="nx">Event</span><span class="p">.</span><span class="nx">getTarget</span><span class="p">(</span><span class="nx">ev</span><span class="p">),</span> <span class="kc">true</span><span class="p">);</span>
<span class="p">},</span> <span class="nx">carousel</span><span class="p">);</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">onBlur</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;element&quot;</span><span class="p">),</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">obj</span><span class="p">.</span><span class="nx">_hasFocus</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="nx">obj</span><span class="p">.</span><span class="nx">_updateNavButtons</span><span class="p">(</span><span class="nx">Event</span><span class="p">.</span><span class="nx">getTarget</span><span class="p">(</span><span class="nx">ev</span><span class="p">),</span> <span class="kc">false</span><span class="p">);</span>
<span class="p">},</span> <span class="nx">carousel</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return true if the Carousel is still animating, or false otherwise.</span>
<span class="cm"> *</span>
<span class="cm"> * @method isAnimating</span>
<span class="cm"> * @return {Boolean} Return true if animation is still in progress, or</span>
<span class="cm"> * false otherwise.</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">isAnimating</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_isAnimationInProgress</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return true if the auto-scrolling of Carousel is &quot;on&quot;, or false</span>
<span class="cm"> * otherwise.</span>
<span class="cm"> *</span>
<span class="cm"> * @method isAutoPlayOn</span>
<span class="cm"> * @return {Boolean} Return true if autoPlay is &quot;on&quot;, or false</span>
<span class="cm"> * otherwise.</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">isAutoPlayOn</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_isAutoPlayInProgress</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return the carouselItemEl at index or null if the index is not</span>
<span class="cm"> * found.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getElementForItem</span>
<span class="cm"> * @param index {Number} The index of the item to be returned</span>
<span class="cm"> * @return {Element} Return the item at index or null if not found</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getElementForItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">index</span> <span class="o">&gt;=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Index out of bounds&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">])</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">id</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return the carouselItemEl for all items in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getElementForItems</span>
<span class="cm"> * @return {Array} Return all the items</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getElementForItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">els</span> <span class="o">=</span> <span class="p">[],</span> <span class="nx">i</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">els</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">getElementForItem</span><span class="p">(</span><span class="nx">i</span><span class="p">));</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">els</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return the item at index or null if the index is not found.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getItem</span>
<span class="cm"> * @param index {Number} The index of the item to be returned</span>
<span class="cm"> * @return {Object} Return the item at index or null if not found</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">index</span> <span class="o">&gt;=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Index out of bounds&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span> <span class="o">&gt;</span> <span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">]))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return all items as an array.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getItems</span>
<span class="cm"> * @return {Array} Return all items in the Carousel</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return all loading items as an array.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getLoadingItems</span>
<span class="cm"> * @return {Array} Return all items that are loading in the Carousel.</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getLoadingItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * For a multirow carousel, return the number of rows specified by user.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getItems</span>
<span class="cm"> * @return {Number} Number of rows</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getRows</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_rows</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * For a multirow carousel, return the number of cols specified by user.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getItems</span>
<span class="cm"> * @return {Array} Return all items in the Carousel</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getCols</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_cols</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return the position of the Carousel item that has the id &quot;id&quot;, or -1</span>
<span class="cm"> * if the id is not found.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getItemPositionById</span>
<span class="cm"> * @param index {Number} The index of the item to be returned</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getItemPositionById</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">n</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span>
<span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">items</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">,</span>
<span class="nx">item</span><span class="p">;</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">n</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">items</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">||</span> <span class="p">{};</span>
<span class="k">if</span><span class="p">(</span><span class="nx">item</span><span class="p">.</span><span class="nx">id</span> <span class="o">==</span> <span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">i</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">i</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return all visible items as an array.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getVisibleItems</span>
<span class="cm"> * @return {Array} The array of visible items</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">getVisibleItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">i</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">),</span>
<span class="nx">n</span> <span class="o">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span>
<span class="nx">r</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">n</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">r</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">getElementForItem</span><span class="p">(</span><span class="nx">i</span><span class="p">));</span>
<span class="nx">i</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">r</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Remove an item at index from the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method removeItem</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param index {Number} The position to where in the list (starts from</span>
<span class="cm"> * zero).</span>
<span class="cm"> * @return {Boolean} Return true on success, false otherwise</span>
<span class="cm"> */</span>
<span class="nx">removeItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">item</span><span class="p">,</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">index</span> <span class="o">&gt;=</span> <span class="nx">num</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Index out of bounds&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">&amp;&amp;</span> <span class="nx">item</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span><span class="o">--</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">,</span> <span class="nx">num</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">itemRemovedEvent</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">item</span><span class="o">:</span> <span class="nx">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nx">pos</span><span class="o">:</span> <span class="nx">index</span><span class="p">,</span> <span class="nx">ev</span><span class="o">:</span> <span class="nx">itemRemovedEvent</span> <span class="p">});</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Replace an item at index witin Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method replaceItem</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param item {String | Object | HTMLElement} The item to be appended</span>
<span class="cm"> * to the Carousel. If the parameter is a string, it is assumed to be</span>
<span class="cm"> * the content of the newly created item. If the parameter is an</span>
<span class="cm"> * object, it is assumed to supply the content and an optional class</span>
<span class="cm"> * and an optional id of the newly created item.</span>
<span class="cm"> * @param index {Number} The position to where in the list (starts from</span>
<span class="cm"> * zero).</span>
<span class="cm"> * @return {Boolean} Return true on success, false otherwise</span>
<span class="cm"> */</span>
<span class="nx">replaceItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">item</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">className</span><span class="p">,</span>
<span class="nx">content</span><span class="p">,</span>
<span class="nx">elId</span><span class="p">,</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span>
<span class="nx">oel</span><span class="p">,</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">item</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="o">||</span> <span class="nx">item</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">content</span> <span class="o">=</span> <span class="nx">item</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">?</span> <span class="nx">item</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">:</span> <span class="nx">item</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isObject</span><span class="p">(</span><span class="nx">item</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">content</span> <span class="o">=</span> <span class="nx">item</span><span class="p">.</span><span class="nx">content</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Invalid argument to replaceItem&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">index</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Index must be defined for replaceItem&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">index</span> <span class="o">&gt;=</span> <span class="nx">numItems</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Index out of bounds in replaceItem&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">oel</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">oel</span><span class="p">){</span>
<span class="nx">oel</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">:</span> <span class="nx">content</span><span class="p">,</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">className</span> <span class="o">||</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">generateId</span><span class="p">()</span>
<span class="p">});</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">itemReplacedEvent</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">newItem</span><span class="o">:</span> <span class="nx">el</span><span class="p">,</span> <span class="nx">oldItem</span><span class="o">:</span> <span class="nx">oel</span><span class="p">,</span> <span class="nx">pos</span><span class="o">:</span> <span class="nx">index</span><span class="p">,</span> <span class="nx">ev</span><span class="o">:</span> <span class="nx">itemReplacedEvent</span> <span class="p">});</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Replace multiple items at specified indexes.</span>
<span class="cm"> * NOTE: item at index must already exist.</span>
<span class="cm"> *</span>
<span class="cm"> * @method replaceItems</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param items {Array} An array containing an array of replacement items each linked to the</span>
<span class="cm"> * index where the substitution should take place.</span>
<span class="cm"> * E.g. [[{content:&#39;&lt;img/&gt;&#39;}, index1], [{content:&#39;&lt;img/&gt;&#39;}, index2]]</span>
<span class="cm"> * @return {Boolean} Return true on success, false otherwise</span>
<span class="cm"> */</span>
<span class="nx">replaceItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">items</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">rv</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">items</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">n</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">replaceItem</span><span class="p">(</span><span class="nx">items</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="nx">items</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> <span class="o">===</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">rv</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Render the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method render</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param appendTo {HTMLElement | String} The element to which the</span>
<span class="cm"> * Carousel should be appended prior to rendering.</span>
<span class="cm"> * @return {Boolean} Status of the operation</span>
<span class="cm"> */</span>
<span class="nx">render</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">appendTo</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">rows</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_rows</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">CAROUSEL</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_createCarouselClip</span><span class="p">();</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">appendTo</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">appendTo</span><span class="p">(</span><span class="nx">appendTo</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">inDocument</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;element&quot;</span><span class="p">)))</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Nothing to render. The container should be &quot;</span> <span class="o">+</span>
<span class="s2">&quot;within the document if appendTo is not &quot;</span> <span class="o">+</span>
<span class="s2">&quot;specified&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">rows</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">MULTI_ROW</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">VERTICAL</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">HORIZONTAL</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;No items in the Carousel to render&quot;</span><span class="p">,</span> <span class="s2">&quot;warn&quot;</span><span class="p">,</span>
<span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_refreshUi</span><span class="p">();</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Scroll the Carousel by an item backward.</span>
<span class="cm"> *</span>
<span class="cm"> * @method scrollBackward</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">scrollBackward</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">-</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;scrollIncrement&quot;</span><span class="p">));</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Scroll the Carousel by an item forward.</span>
<span class="cm"> *</span>
<span class="cm"> * @method scrollForward</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">scrollForward</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">+</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;scrollIncrement&quot;</span><span class="p">));</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Scroll the Carousel by a page backward.</span>
<span class="cm"> *</span>
<span class="cm"> * @method scrollPageBackward</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">scrollPageBackward</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">isVertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">),</span>
<span class="nx">cols</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_cols</span><span class="p">,</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">-</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// only account for multi-row when scrolling backwards from item 0</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cols</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">-</span> <span class="nx">cols</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectOnScroll&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getSelectedItem</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Scroll the Carousel by a page forward.</span>
<span class="cm"> *</span>
<span class="cm"> * @method scrollPageForward</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">scrollPageForward</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">+</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">&gt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectOnScroll&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getSelectedItem</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Scroll the Carousel to make the item the first visible item.</span>
<span class="cm"> *</span>
<span class="cm"> * @method scrollTo</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param item Number The index of the element to position at.</span>
<span class="cm"> * @param dontSelect Boolean True if select should be avoided</span>
<span class="cm"> */</span>
<span class="nx">scrollTo</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">item</span><span class="p">,</span> <span class="nx">dontSelect</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">animate</span><span class="p">,</span> <span class="nx">animCfg</span><span class="p">,</span> <span class="nx">isCircular</span><span class="p">,</span> <span class="nx">isVertical</span><span class="p">,</span>
<span class="nx">rows</span><span class="p">,</span> <span class="nx">delta</span><span class="p">,</span> <span class="nx">direction</span><span class="p">,</span> <span class="nx">firstItem</span><span class="p">,</span> <span class="nx">lastItem</span><span class="p">,</span> <span class="nx">itemsPerRow</span><span class="p">,</span>
<span class="nx">itemsPerCol</span><span class="p">,</span> <span class="nx">numItems</span><span class="p">,</span> <span class="nx">numPerPage</span><span class="p">,</span> <span class="nx">offset</span><span class="p">,</span> <span class="nx">page</span><span class="p">,</span> <span class="nx">rv</span><span class="p">,</span> <span class="nx">sentinel</span><span class="p">,</span>
<span class="nx">index</span><span class="p">,</span> <span class="nx">stopAutoScroll</span><span class="p">,</span>
<span class="nx">itemsTable</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">,</span>
<span class="nx">items</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">,</span>
<span class="nx">loading</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="o">||</span> <span class="nx">item</span> <span class="o">==</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">||</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">isAnimating</span><span class="p">())</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span> <span class="c1">// nothing to do!</span>
<span class="p">}</span>
<span class="nx">animCfg</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;animation&quot;</span><span class="p">);</span>
<span class="nx">isCircular</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">);</span>
<span class="nx">isVertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">);</span>
<span class="nx">itemsPerRow</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_cols</span><span class="p">;</span>
<span class="nx">itemsPerCol</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_rows</span><span class="p">;</span>
<span class="nx">firstItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span><span class="p">;</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">);</span>
<span class="nx">numPerPage</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="nx">page</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;currentPage&quot;</span><span class="p">);</span>
<span class="nx">stopAutoScroll</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">isAutoPlayOn</span><span class="p">())</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">stopAutoPlay</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isCircular</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">numItems</span> <span class="o">+</span> <span class="nx">item</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">stopAutoScroll</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">numItems</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">item</span> <span class="o">&gt;</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="nx">item</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">stopAutoScroll</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">isNaN</span><span class="p">(</span><span class="nx">item</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">direction</span> <span class="o">=</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">&gt;</span> <span class="nx">item</span><span class="p">)</span> <span class="o">?</span> <span class="s2">&quot;backward&quot;</span> <span class="o">:</span> <span class="s2">&quot;forward&quot;</span><span class="p">;</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="nx">firstItem</span> <span class="o">+</span> <span class="nx">numPerPage</span><span class="p">;</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="p">(</span><span class="nx">sentinel</span> <span class="o">&gt;</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">:</span> <span class="nx">sentinel</span><span class="p">;</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">beforeScrollEvent</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">dir</span><span class="o">:</span> <span class="nx">direction</span><span class="p">,</span> <span class="nx">first</span><span class="o">:</span> <span class="nx">firstItem</span><span class="p">,</span> <span class="nx">last</span><span class="o">:</span> <span class="nx">sentinel</span> <span class="p">});</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">rv</span> <span class="o">===</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// scrolling is prevented</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">beforePageChangeEvent</span><span class="p">,</span> <span class="p">{</span> <span class="nx">page</span><span class="o">:</span> <span class="nx">page</span> <span class="p">});</span>
<span class="c1">// call loaditems to check if we have all the items to display</span>
<span class="nx">lastItem</span> <span class="o">=</span> <span class="nx">item</span> <span class="o">+</span> <span class="nx">numPerPage</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_loadItems</span><span class="p">(</span><span class="nx">lastItem</span> <span class="o">&gt;</span> <span class="nx">numItems</span><span class="o">-</span><span class="mi">1</span> <span class="o">?</span> <span class="nx">numItems</span><span class="o">-</span><span class="mi">1</span> <span class="o">:</span> <span class="nx">lastItem</span><span class="p">);</span>
<span class="c1">// Calculate the delta relative to the first item, the delta is</span>
<span class="c1">// always negative.</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="mi">0</span> <span class="o">-</span> <span class="nx">item</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">itemsPerCol</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// offset calculations for multirow Carousel</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">delta</span> <span class="o">/</span> <span class="nx">itemsPerRow</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">delta</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">delta</span> <span class="o">/</span> <span class="nx">itemsPerCol</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// adjust for items not yet loaded</span>
<span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">delta</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">index</span> <span class="o">&lt;</span> <span class="nx">item</span><span class="o">+</span><span class="nx">numPerPage</span><span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="nx">index</span> <span class="o">&lt;</span> <span class="nx">numItems</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">items</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">loading</span><span class="p">[</span><span class="nx">index</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">delta</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">index</span> <span class="o">+=</span> <span class="nx">itemsPerCol</span> <span class="o">?</span> <span class="nx">itemsPerCol</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span> <span class="o">=</span> <span class="nx">item</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">,</span> <span class="nx">item</span><span class="p">);</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Scrolling to &quot;</span> <span class="o">+</span> <span class="nx">item</span> <span class="o">+</span> <span class="s2">&quot; delta = &quot;</span> <span class="o">+</span> <span class="nx">delta</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="nx">item</span> <span class="o">+</span> <span class="nx">numPerPage</span><span class="p">;</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="p">(</span><span class="nx">sentinel</span> <span class="o">&gt;</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">:</span> <span class="nx">sentinel</span><span class="p">;</span>
<span class="nx">offset</span> <span class="o">=</span> <span class="nx">getScrollOffset</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">delta</span><span class="p">);</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Scroll offset = &quot;</span> <span class="o">+</span> <span class="nx">offset</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="nx">animate</span> <span class="o">=</span> <span class="nx">animCfg</span><span class="p">.</span><span class="nx">speed</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">animate</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_animateAndSetCarouselOffset</span><span class="p">(</span><span class="nx">offset</span><span class="p">,</span> <span class="nx">item</span><span class="p">,</span> <span class="nx">sentinel</span><span class="p">,</span>
<span class="nx">dontSelect</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_setCarouselOffset</span><span class="p">(</span><span class="nx">offset</span><span class="p">);</span>
<span class="nx">updateStateAfterScroll</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">item</span><span class="p">,</span> <span class="nx">sentinel</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Get the page an item is on within carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getPageForItem</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param index {Number} Index of item</span>
<span class="cm"> * @return {Number} Page item is on</span>
<span class="cm"> */</span>
<span class="nx">getPageForItem</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">(</span>
<span class="p">(</span><span class="nx">item</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="nb">parseInt</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span><span class="mi">10</span><span class="p">)</span>
<span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Get the first visible item&#39;s index on any given page.</span>
<span class="cm"> *</span>
<span class="cm"> * @method getFirstVisibleOnpage</span>
<span class="cm"> * @public</span>
<span class="cm"> * @param page {Number} Page</span>
<span class="cm"> * @return {Number} First item&#39;s index</span>
<span class="cm"> */</span>
<span class="nx">getFirstVisibleOnPage</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">page</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="nx">page</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Select the previous item in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method selectPreviousItem</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">selectPreviousItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">selected</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">selected</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">_firstItem</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nx">selected</span> <span class="o">-</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getSelectedItem</span><span class="p">(</span><span class="nx">selected</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">newpos</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">-</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;scrollIncrement&quot;</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">,</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_getSelectedItem</span><span class="p">(</span><span class="nx">newpos</span><span class="p">));</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Select the next item in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method selectNextItem</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">selectNextItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">newpos</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">newpos</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;scrollIncrement&quot;</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getSelectedItem</span><span class="p">(</span><span class="nx">newpos</span><span class="p">));</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Display the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method show</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">show</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">beforeShowEvent</span><span class="p">)</span> <span class="o">!==</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">VISIBLE</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">showEvent</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Start auto-playing the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method startAutoPlay</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">startAutoPlay</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">timer</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoPlayTimer</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">timer</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;autoPlayInterval&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">timer</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_isAutoPlayInProgress</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">startAutoPlayEvent</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoPlayTimer</span> <span class="o">=</span> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoScroll</span><span class="p">();</span>
<span class="p">},</span> <span class="nx">timer</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Stop auto-playing the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method stopAutoPlay</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">stopAutoPlay</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoPlayTimer</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">clearTimeout</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoPlayTimer</span><span class="p">);</span>
<span class="k">delete</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_autoPlayTimer</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_isAutoPlayInProgress</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">stopAutoPlayEvent</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Update interface&#39;s pagination data within a registered template.</span>
<span class="cm"> *</span>
<span class="cm"> * @method updatePagination</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">updatePagination</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">pagination</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span><span class="p">;</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">pagination</span><span class="p">.</span><span class="nx">el</span><span class="p">){</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span> <span class="p">}</span>
<span class="kd">var</span> <span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;numItems&#39;</span><span class="p">),</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;numVisible&#39;</span><span class="p">),</span>
<span class="nx">firstVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;firstVisible&#39;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span>
<span class="nx">currentPage</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;currentPage&#39;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span>
<span class="nx">numPages</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;numPages&#39;</span><span class="p">),</span>
<span class="nx">replacements</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">&#39;numVisible&#39;</span> <span class="o">:</span> <span class="nx">numVisible</span><span class="p">,</span>
<span class="s1">&#39;numPages&#39;</span> <span class="o">:</span> <span class="nx">numPages</span><span class="p">,</span>
<span class="s1">&#39;numItems&#39;</span> <span class="o">:</span> <span class="nx">numItems</span><span class="p">,</span>
<span class="s1">&#39;selectedItem&#39;</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;selectedItem&#39;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span>
<span class="s1">&#39;currentPage&#39;</span> <span class="o">:</span> <span class="nx">currentPage</span><span class="p">,</span>
<span class="s1">&#39;firstVisible&#39;</span> <span class="o">:</span> <span class="nx">firstVisible</span><span class="p">,</span>
<span class="s1">&#39;lastVisible&#39;</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;lastVisible&quot;</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span>
<span class="p">},</span>
<span class="nx">cb</span> <span class="o">=</span> <span class="nx">pagination</span><span class="p">.</span><span class="nx">callback</span> <span class="o">||</span> <span class="p">{},</span>
<span class="nx">scope</span> <span class="o">=</span> <span class="nx">cb</span><span class="p">.</span><span class="nx">scope</span> <span class="o">&amp;&amp;</span> <span class="nx">cb</span><span class="p">.</span><span class="nx">obj</span> <span class="o">?</span> <span class="nx">cb</span><span class="p">.</span><span class="nx">obj</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">;</span>
<span class="nx">pagination</span><span class="p">.</span><span class="nx">el</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isFunction</span><span class="p">(</span><span class="nx">cb</span><span class="p">.</span><span class="nx">fn</span><span class="p">)</span> <span class="o">?</span> <span class="nx">cb</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="nx">scope</span><span class="p">,</span> <span class="p">[</span><span class="nx">pagination</span><span class="p">.</span><span class="nx">template</span><span class="p">,</span> <span class="nx">replacements</span><span class="p">])</span> <span class="o">:</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">lang</span><span class="p">.</span><span class="nx">substitute</span><span class="p">(</span><span class="nx">pagination</span><span class="p">.</span><span class="nx">template</span><span class="p">,</span> <span class="nx">replacements</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Register carousels pagination template, append to interface, and populate.</span>
<span class="cm"> *</span>
<span class="cm"> * @method registerPagination</span>
<span class="cm"> * @param template {String} Pagination template as passed to lang.substitute</span>
<span class="cm"> * @public</span>
<span class="cm"> */</span>
<span class="nx">registerPagination</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">tpl</span><span class="p">,</span> <span class="nx">pos</span><span class="p">,</span> <span class="nx">cb</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="nx">tpl</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span><span class="p">.</span><span class="nx">callback</span> <span class="o">=</span> <span class="nx">cb</span> <span class="o">||</span> <span class="p">{};</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span><span class="p">.</span><span class="nx">el</span><span class="p">){</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span><span class="p">.</span><span class="nx">el</span> <span class="o">=</span> <span class="nx">createElement</span><span class="p">(</span><span class="s1">&#39;DIV&#39;</span><span class="p">,</span> <span class="p">{</span><span class="nx">className</span><span class="o">:</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">.</span><span class="nx">PAGINATION</span><span class="p">});</span>
<span class="k">if</span><span class="p">(</span><span class="nx">pos</span> <span class="o">==</span> <span class="s2">&quot;before&quot;</span><span class="p">){</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navEl</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span><span class="p">.</span><span class="nx">el</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_navEl</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navEl</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagination</span><span class="p">.</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;itemSelected&#39;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">updatePagination</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;pageChange&#39;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">updatePagination</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">updatePagination</span><span class="p">();</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return the string representation of the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method toString</span>
<span class="cm"> * @public</span>
<span class="cm"> * @return {String}</span>
<span class="cm"> */</span>
<span class="nx">toString</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">WidgetName</span> <span class="o">+</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">get</span> <span class="o">?</span> <span class="s2">&quot; (#&quot;</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span> <span class="o">:</span> <span class="s2">&quot;&quot;</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/*</span>
<span class="cm"> * Protected methods of the Carousel component</span>
<span class="cm"> */</span>
<span class="cm">/**</span>
<span class="cm"> * Set the Carousel offset to the passed offset after animating.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _animateAndSetCarouselOffset</span>
<span class="cm"> * @param {Integer} offset The offset to which the Carousel has to be</span>
<span class="cm"> * scrolled to.</span>
<span class="cm"> * @param {Integer} item The index to which the Carousel will scroll.</span>
<span class="cm"> * @param {Integer} sentinel The last element in the view port.</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_animateAndSetCarouselOffset</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">offset</span><span class="p">,</span> <span class="nx">item</span><span class="p">,</span> <span class="nx">sentinel</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">animCfg</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;animation&quot;</span><span class="p">),</span>
<span class="nx">animObj</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">animObj</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">Motion</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">top</span><span class="o">:</span> <span class="p">{</span> <span class="nx">to</span><span class="o">:</span> <span class="nx">offset</span> <span class="p">}</span> <span class="p">},</span>
<span class="nx">animCfg</span><span class="p">.</span><span class="nx">speed</span><span class="p">,</span> <span class="nx">animCfg</span><span class="p">.</span><span class="nx">effect</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">animObj</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">Motion</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">left</span><span class="o">:</span> <span class="p">{</span> <span class="nx">to</span><span class="o">:</span> <span class="nx">offset</span> <span class="p">}</span> <span class="p">},</span>
<span class="nx">animCfg</span><span class="p">.</span><span class="nx">speed</span><span class="p">,</span> <span class="nx">animCfg</span><span class="p">.</span><span class="nx">effect</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_isAnimationInProgress</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nx">animObj</span><span class="p">.</span><span class="nx">onComplete</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_animationCompleteHandler</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">scope</span><span class="o">:</span> <span class="nx">carousel</span><span class="p">,</span> <span class="nx">item</span><span class="o">:</span> <span class="nx">item</span><span class="p">,</span>
<span class="nx">last</span><span class="o">:</span> <span class="nx">sentinel</span> <span class="p">});</span>
<span class="nx">animObj</span><span class="p">.</span><span class="nx">animate</span><span class="p">();</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Handle the animation complete event.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _animationCompleteHandler</span>
<span class="cm"> * @param {Event} ev The event.</span>
<span class="cm"> * @param {Array} p The event parameters.</span>
<span class="cm"> * @param {Object} o The object that has the state of the Carousel</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_animationCompleteHandler</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">p</span><span class="p">,</span> <span class="nx">o</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">o</span><span class="p">.</span><span class="nx">scope</span><span class="p">.</span><span class="nx">_isAnimationInProgress</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="nx">updateStateAfterScroll</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">o</span><span class="p">.</span><span class="nx">scope</span><span class="p">,</span> <span class="nx">o</span><span class="p">.</span><span class="nx">item</span><span class="p">,</span> <span class="nx">o</span><span class="p">.</span><span class="nx">last</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Automatically scroll the contents of the Carousel.</span>
<span class="cm"> * @method _autoScroll</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_autoScroll</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">currIndex</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_firstItem</span><span class="p">,</span>
<span class="nx">index</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">currIndex</span> <span class="o">&gt;=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">stopAutoPlay</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">index</span> <span class="o">=</span> <span class="nx">currIndex</span> <span class="o">+</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getSelectedItem</span><span class="p">(</span><span class="nx">index</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">index</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Create the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method createCarousel</span>
<span class="cm"> * @param elId {String} The id of the element to be created</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_createCarousel</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">elId</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">elId</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;DIV&quot;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">CAROUSEL</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">elId</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="o">=</span><span class="nx">createElement</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;carouselEl&quot;</span><span class="p">),</span>
<span class="p">{</span> <span class="nx">className</span><span class="o">:</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">CAROUSEL_EL</span> <span class="p">});</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">el</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Create the Carousel clip container.</span>
<span class="cm"> *</span>
<span class="cm"> * @method createCarouselClip</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_createCarouselClip</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;DIV&quot;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">className</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">.</span><span class="nx">CONTENT</span> <span class="p">});</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Create the Carousel item.</span>
<span class="cm"> *</span>
<span class="cm"> * @method createCarouselItem</span>
<span class="cm"> * @param obj {Object} The attributes of the element to be created</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_createCarouselItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">attr</span><span class="p">,</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">styles</span> <span class="o">=</span> <span class="nx">getCarouselItemPosition</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">createElement</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;carouselItemEl&quot;</span><span class="p">),</span> <span class="p">{</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">className</span><span class="p">,</span>
<span class="nx">styles</span> <span class="o">:</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">styles</span><span class="p">,</span>
<span class="nx">content</span> <span class="o">:</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">id</span>
<span class="p">});</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Return a valid item for a possibly out of bounds index considering</span>
<span class="cm"> * the isCircular property.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _getValidIndex</span>
<span class="cm"> * @param index {Number} The index of the item to be returned</span>
<span class="cm"> * @return {Object} Return a valid item index</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_getValidIndex</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">isCircular</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">),</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">index</span> <span class="o">=</span> <span class="nx">isCircular</span> <span class="o">?</span>
<span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">(</span><span class="nx">numItems</span><span class="o">/</span><span class="nx">numVisible</span><span class="p">)</span><span class="o">*</span><span class="nx">numVisible</span> <span class="o">+</span> <span class="nx">index</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">index</span> <span class="o">&gt;</span> <span class="nx">sentinel</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">index</span> <span class="o">=</span> <span class="nx">isCircular</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="nx">sentinel</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">index</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Get the value for the selected item.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _getSelectedItem</span>
<span class="cm"> * @param val {Number} The new value for &quot;selected&quot; item</span>
<span class="cm"> * @return {Number} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_getSelectedItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">isCircular</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isCircular&quot;</span><span class="p">),</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span>
<span class="nx">sentinel</span> <span class="o">=</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isCircular</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">numItems</span> <span class="o">+</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&gt;</span> <span class="nx">sentinel</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isCircular</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">val</span> <span class="o">-</span> <span class="nx">numItems</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * The &quot;click&quot; handler for the item.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _itemClickHandler</span>
<span class="cm"> * @param {Event} ev The event object</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_itemClickHandler</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">carouselItem</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;carouselItemEl&quot;</span><span class="p">),</span>
<span class="nx">container</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;element&quot;</span><span class="p">),</span>
<span class="nx">el</span><span class="p">,</span>
<span class="nx">item</span><span class="p">,</span>
<span class="nx">target</span> <span class="o">=</span> <span class="nx">Event</span><span class="p">.</span><span class="nx">getTarget</span><span class="p">(</span><span class="nx">ev</span><span class="p">),</span>
<span class="nx">tag</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">tagName</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">();</span>
<span class="k">if</span><span class="p">(</span><span class="nx">tag</span> <span class="o">===</span> <span class="s2">&quot;INPUT&quot;</span> <span class="o">||</span>
<span class="nx">tag</span> <span class="o">===</span> <span class="s2">&quot;SELECT&quot;</span> <span class="o">||</span>
<span class="nx">tag</span> <span class="o">===</span> <span class="s2">&quot;TEXTAREA&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">target</span> <span class="o">&amp;&amp;</span> <span class="nx">target</span> <span class="o">!=</span> <span class="nx">container</span> <span class="o">&amp;&amp;</span>
<span class="nx">target</span><span class="p">.</span><span class="nx">id</span> <span class="o">!=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">==</span> <span class="nx">carouselItem</span><span class="p">)</span> <span class="p">{</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">target</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">((</span><span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">getItemPositionById</span><span class="p">(</span><span class="nx">target</span><span class="p">.</span><span class="nx">id</span><span class="p">))</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Setting selection to &quot;</span> <span class="o">+</span> <span class="nx">item</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_getSelectedItem</span><span class="p">(</span><span class="nx">item</span><span class="p">));</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">focus</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * The keyboard event handler for Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _keyboardEventHandler</span>
<span class="cm"> * @param ev {Event} The event that is being handled.</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_keyboardEventHandler</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">key</span> <span class="o">=</span> <span class="nx">Event</span><span class="p">.</span><span class="nx">getCharCode</span><span class="p">(</span><span class="nx">ev</span><span class="p">),</span>
<span class="nx">target</span> <span class="o">=</span> <span class="nx">Event</span><span class="p">.</span><span class="nx">getTarget</span><span class="p">(</span><span class="nx">ev</span><span class="p">),</span>
<span class="nx">prevent</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="c1">// do not mess while animation is in progress or naving via select</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">isAnimating</span><span class="p">()</span> <span class="o">||</span> <span class="nx">target</span><span class="p">.</span><span class="nx">tagName</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">===</span> <span class="s2">&quot;SELECT&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">switch</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
<span class="k">case</span> <span class="mh">0x25</span><span class="o">:</span> <span class="c1">// left arrow</span>
<span class="k">case</span> <span class="mh">0x26</span><span class="o">:</span> <span class="c1">// up arrow</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">selectPreviousItem</span><span class="p">();</span>
<span class="nx">prevent</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="mh">0x27</span><span class="o">:</span> <span class="c1">// right arrow</span>
<span class="k">case</span> <span class="mh">0x28</span><span class="o">:</span> <span class="c1">// down arrow</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">selectNextItem</span><span class="p">();</span>
<span class="nx">prevent</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="mh">0x21</span><span class="o">:</span> <span class="c1">// page-up</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollPageBackward</span><span class="p">();</span>
<span class="nx">prevent</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="mh">0x22</span><span class="o">:</span> <span class="c1">// page-down</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollPageForward</span><span class="p">();</span>
<span class="nx">prevent</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">prevent</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">isAutoPlayOn</span><span class="p">())</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">stopAutoPlay</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">(</span><span class="nx">ev</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * The load the required set of items that are needed for display.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _loadItems</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_loadItems</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">last</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span>
<span class="nx">reveal</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;revealAmount&quot;</span><span class="p">),</span>
<span class="nx">first</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span>
<span class="nx">lastVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;lastVisible&quot;</span><span class="p">);</span>
<span class="c1">// adjust if going backwards</span>
<span class="k">if</span><span class="p">(</span><span class="nx">first</span> <span class="o">&gt;</span> <span class="nx">last</span> <span class="o">&amp;&amp;</span> <span class="nx">last</span><span class="o">+</span><span class="mi">1</span> <span class="o">&gt;=</span> <span class="nx">numVisible</span><span class="p">){</span>
<span class="c1">// need to get first a bit differently for the last page</span>
<span class="nx">first</span> <span class="o">=</span> <span class="nx">last</span> <span class="o">%</span> <span class="nx">numVisible</span> <span class="o">||</span> <span class="nx">last</span> <span class="o">==</span> <span class="nx">lastVisible</span> <span class="o">?</span> <span class="nx">last</span> <span class="o">-</span> <span class="nx">last</span> <span class="o">%</span> <span class="nx">numVisible</span> <span class="o">:</span> <span class="nx">last</span> <span class="o">-</span> <span class="nx">numVisible</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="nx">reveal</span> <span class="o">&amp;&amp;</span> <span class="nx">last</span> <span class="o">&lt;</span> <span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span><span class="p">){</span> <span class="nx">last</span><span class="o">++</span><span class="p">;</span> <span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">last</span> <span class="o">&gt;=</span> <span class="nx">first</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">getItem</span><span class="p">(</span><span class="nx">first</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">getItem</span><span class="p">(</span><span class="nx">last</span><span class="p">)))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">loadItemsEvent</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">ev</span><span class="o">:</span> <span class="nx">loadItemsEvent</span><span class="p">,</span> <span class="nx">first</span><span class="o">:</span> <span class="nx">first</span><span class="p">,</span> <span class="nx">last</span><span class="o">:</span> <span class="nx">last</span><span class="p">,</span>
<span class="nx">num</span><span class="o">:</span> <span class="nx">last</span> <span class="o">-</span> <span class="nx">first</span> <span class="o">+</span> <span class="mi">1</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * The &quot;onchange&quot; handler for select box pagination.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _pagerChangeHandler</span>
<span class="cm"> * @param {Event} ev The event object</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_pagerChangeHandler</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">target</span> <span class="o">=</span> <span class="nx">Event</span><span class="p">.</span><span class="nx">getTarget</span><span class="p">(</span><span class="nx">ev</span><span class="p">),</span>
<span class="nx">page</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">,</span>
<span class="nx">item</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">page</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">getFirstVisibleOnPage</span><span class="p">(</span><span class="nx">page</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span> <span class="o">=</span> <span class="nx">item</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">focus</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * The &quot;click&quot; handler for anchor pagination.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _pagerClickHandler</span>
<span class="cm"> * @param {Event} ev The event object</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_pagerClickHandler</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">css</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">target</span> <span class="o">=</span> <span class="nx">Event</span><span class="p">.</span><span class="nx">getTarget</span><span class="p">(</span><span class="nx">ev</span><span class="p">),</span>
<span class="nx">elNode</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">(),</span>
<span class="nx">val</span><span class="p">,</span>
<span class="nx">stringIndex</span><span class="p">,</span>
<span class="nx">page</span><span class="p">,</span>
<span class="nx">item</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">hasClass</span><span class="p">(</span><span class="nx">target</span><span class="p">,</span> <span class="nx">css</span><span class="p">.</span><span class="nx">PAGER_ITEM</span><span class="p">)</span> <span class="o">||</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">hasClass</span><span class="p">(</span><span class="nx">target</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">,</span> <span class="nx">css</span><span class="p">.</span><span class="nx">PAGER_ITEM</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">elNode</span> <span class="o">==</span> <span class="s2">&quot;EM&quot;</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">target</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">;</span><span class="c1">// item is an em and not an anchor (when text is visible)</span>
<span class="p">}</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">target</span><span class="p">.</span><span class="nx">href</span><span class="p">;</span>
<span class="nx">stringIndex</span> <span class="o">=</span> <span class="nx">val</span><span class="p">.</span><span class="nx">lastIndexOf</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">);</span>
<span class="nx">page</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">val</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="nx">stringIndex</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="mi">10</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">page</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">getFirstVisibleOnPage</span><span class="p">(</span><span class="nx">page</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_selectedItem</span> <span class="o">=</span> <span class="nx">item</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">focus</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">(</span><span class="nx">ev</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Find the Carousel within a container. The Carousel is identified by</span>
<span class="cm"> * the first element that matches the carousel element tag or the</span>
<span class="cm"> * element that has the Carousel class.</span>
<span class="cm"> *</span>
<span class="cm"> * @method parseCarousel</span>
<span class="cm"> * @param parent {HTMLElement} The parent element to look under</span>
<span class="cm"> * @return {Boolean} True if Carousel is found, false otherwise</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_parseCarousel</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">parent</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">child</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">,</span> <span class="nx">domEl</span><span class="p">,</span> <span class="nx">found</span><span class="p">,</span> <span class="nx">node</span><span class="p">;</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">;</span>
<span class="nx">domEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;carouselEl&quot;</span><span class="p">);</span>
<span class="nx">found</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">child</span> <span class="o">=</span> <span class="nx">parent</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">;</span> <span class="nx">child</span><span class="p">;</span> <span class="nx">child</span> <span class="o">=</span> <span class="nx">child</span><span class="p">.</span><span class="nx">nextSibling</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">child</span><span class="p">.</span><span class="nx">nodeType</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">node</span> <span class="o">=</span> <span class="nx">child</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">==</span> <span class="nx">domEl</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span> <span class="o">=</span> <span class="nx">child</span><span class="p">;</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">.</span><span class="nx">CAROUSEL_EL</span><span class="p">);</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Found Carousel - &quot;</span> <span class="o">+</span> <span class="nx">node</span> <span class="o">+</span>
<span class="p">(</span><span class="nx">child</span><span class="p">.</span><span class="nx">id</span> <span class="o">?</span> <span class="s2">&quot; (#&quot;</span> <span class="o">+</span> <span class="nx">child</span><span class="p">.</span><span class="nx">id</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span> <span class="o">:</span> <span class="s2">&quot;&quot;</span><span class="p">),</span>
<span class="nx">WidgetName</span><span class="p">);</span>
<span class="nx">found</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">found</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Find the items within the Carousel and add them to the items table.</span>
<span class="cm"> * A Carousel item is identified by elements that matches the carousel</span>
<span class="cm"> * item element tag.</span>
<span class="cm"> *</span>
<span class="cm"> * @method parseCarouselItems</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_parseCarouselItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">i</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="nx">rows</span><span class="p">,</span>
<span class="nx">child</span><span class="p">,</span>
<span class="nx">domItemEl</span><span class="p">,</span>
<span class="nx">elId</span><span class="p">,</span>
<span class="nx">node</span><span class="p">,</span>
<span class="nx">index</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">),</span>
<span class="nx">parent</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">;</span>
<span class="nx">rows</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_rows</span><span class="p">;</span>
<span class="nx">domItemEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;carouselItemEl&quot;</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">child</span> <span class="o">=</span> <span class="nx">parent</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">;</span> <span class="nx">child</span><span class="p">;</span> <span class="nx">child</span> <span class="o">=</span> <span class="nx">child</span><span class="p">.</span><span class="nx">nextSibling</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">child</span><span class="p">.</span><span class="nx">nodeType</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">node</span> <span class="o">=</span> <span class="nx">child</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">==</span> <span class="nx">domItemEl</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">child</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">elId</span> <span class="o">=</span> <span class="nx">child</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">elId</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">generateId</span><span class="p">();</span>
<span class="nx">child</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span> <span class="nx">elId</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">addItem</span><span class="p">(</span><span class="nx">child</span><span class="p">,</span><span class="nx">index</span><span class="p">);</span>
<span class="nx">index</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Find the Carousel navigation within a container. The navigation</span>
<span class="cm"> * elements need to match the carousel navigation class names.</span>
<span class="cm"> *</span>
<span class="cm"> * @method parseCarouselNavigation</span>
<span class="cm"> * @param parent {HTMLElement} The parent element to look under</span>
<span class="cm"> * @return {Boolean} True if at least one is found, false otherwise</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_parseCarouselNavigation</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">parent</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cfg</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">el</span><span class="p">,</span>
<span class="nx">i</span><span class="p">,</span>
<span class="nx">j</span><span class="p">,</span>
<span class="nx">nav</span><span class="p">,</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="nx">nav</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">PREV_PAGE</span><span class="p">,</span> <span class="s2">&quot;*&quot;</span><span class="p">,</span> <span class="nx">parent</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="k">in</span> <span class="nx">nav</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">nav</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Found Carousel previous page navigation - &quot;</span> <span class="o">+</span>
<span class="nx">el</span> <span class="o">+</span> <span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">id</span> <span class="o">?</span> <span class="s2">&quot; (#&quot;</span> <span class="o">+</span> <span class="nx">el</span><span class="p">.</span><span class="nx">id</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span> <span class="o">:</span> <span class="s2">&quot;&quot;</span><span class="p">),</span>
<span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">==</span> <span class="s2">&quot;INPUT&quot;</span> <span class="o">||</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">==</span> <span class="s2">&quot;BUTTON&quot;</span> <span class="o">||</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">==</span> <span class="s2">&quot;A&quot;</span><span class="p">)</span> <span class="p">{</span><span class="c1">// Anchor support in Nav (for SEO)</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">j</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;INPUT&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">j</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">j</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">j</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;BUTTON&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">j</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">j</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">cfg</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">prev</span><span class="o">:</span> <span class="nx">nav</span> <span class="p">};</span>
<span class="p">}</span>
<span class="nx">nav</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">NEXT_PAGE</span><span class="p">,</span> <span class="s2">&quot;*&quot;</span><span class="p">,</span> <span class="nx">parent</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="k">in</span> <span class="nx">nav</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">nav</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Found Carousel next page navigation - &quot;</span> <span class="o">+</span>
<span class="nx">el</span> <span class="o">+</span> <span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">id</span> <span class="o">?</span> <span class="s2">&quot; (#&quot;</span> <span class="o">+</span> <span class="nx">el</span><span class="p">.</span><span class="nx">id</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span> <span class="o">:</span> <span class="s2">&quot;&quot;</span><span class="p">),</span>
<span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">==</span> <span class="s2">&quot;INPUT&quot;</span> <span class="o">||</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">==</span> <span class="s2">&quot;BUTTON&quot;</span> <span class="o">||</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span> <span class="o">==</span> <span class="s2">&quot;A&quot;</span><span class="p">)</span> <span class="p">{</span><span class="c1">// Anchor support in Nav (for SEO)</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">j</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;INPUT&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">j</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">j</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">j</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">&quot;BUTTON&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">j</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">j</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span> <span class="o">=</span> <span class="nx">nav</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">cfg</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">next</span><span class="o">:</span> <span class="nx">nav</span> <span class="p">};</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;navigation&quot;</span><span class="p">,</span> <span class="nx">cfg</span><span class="p">);</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">rv</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Refresh the widget UI if it is not already rendered, on first item</span>
<span class="cm"> * addition.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _refreshUi</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_refreshUi</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">isVertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">),</span> <span class="nx">firstVisible</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">),</span> <span class="nx">item</span><span class="p">,</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">rsz</span><span class="p">,</span> <span class="nx">sz</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">sz</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span>
<span class="nx">isVertical</span> <span class="o">?</span> <span class="s2">&quot;height&quot;</span> <span class="o">:</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="c1">// This fixes the widget to auto-adjust height/width for absolute</span>
<span class="c1">// positioned children.</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">firstVisible</span><span class="p">].</span><span class="nx">id</span><span class="p">;</span>
<span class="nx">sz</span> <span class="o">=</span> <span class="nx">isVertical</span> <span class="o">?</span> <span class="nx">getStyle</span><span class="p">(</span><span class="nx">item</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">)</span> <span class="o">:</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">item</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="nx">isVertical</span> <span class="o">?</span> <span class="s2">&quot;width&quot;</span> <span class="o">:</span> <span class="s2">&quot;height&quot;</span><span class="p">,</span> <span class="nx">sz</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="c1">// Set the rendered state appropriately.</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">fireEvent</span><span class="p">(</span><span class="nx">renderEvent</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the Carousel offset to the passed offset.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setCarouselOffset</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setCarouselOffset</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">offset</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">which</span><span class="p">;</span>
<span class="nx">which</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">)</span> <span class="o">?</span> <span class="s2">&quot;top&quot;</span> <span class="o">:</span> <span class="s2">&quot;left&quot;</span><span class="p">;</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span> <span class="nx">which</span><span class="p">,</span> <span class="nx">offset</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Setup/Create the Carousel navigation element (if needed).</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setupCarouselNavigation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setupCarouselNavigation</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">btn</span><span class="p">,</span> <span class="nx">cfg</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">,</span> <span class="nx">nav</span><span class="p">,</span> <span class="nx">navContainer</span><span class="p">,</span> <span class="nx">nextButton</span><span class="p">,</span> <span class="nx">prevButton</span><span class="p">;</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">;</span>
<span class="c1">// TODO: can the _navBtns be tested against instead?</span>
<span class="nx">navContainer</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">NAVIGATION</span><span class="p">,</span>
<span class="s2">&quot;DIV&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;element&quot;</span><span class="p">));</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">navContainer</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">navContainer</span> <span class="o">=</span> <span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;DIV&quot;</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">className</span><span class="o">:</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">NAVIGATION</span> <span class="p">});</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">navContainer</span><span class="p">,</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">getFirstChild</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;element&quot;</span><span class="p">)));</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">navContainer</span> <span class="o">=</span> <span class="nx">navContainer</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">el</span> <span class="o">=</span> <span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;UL&quot;</span><span class="p">);</span>
<span class="nx">navContainer</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">el</span><span class="p">);</span>
<span class="nx">nav</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;navigation&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span><span class="p">)</span> <span class="o">||</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span> <span class="o">=</span> <span class="p">[</span><span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span><span class="p">];</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">btn</span> <span class="k">in</span> <span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">btn</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">prev</span><span class="p">[</span><span class="nx">btn</span><span class="p">]));</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// TODO: separate method for creating a navigation button</span>
<span class="nx">prevButton</span> <span class="o">=</span> <span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;SPAN&quot;</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">className</span><span class="o">:</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">BUTTON</span> <span class="o">+</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">FIRST_NAV</span> <span class="p">});</span>
<span class="c1">// XXX: for IE 6.x</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">prevButton</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</span><span class="p">,</span> <span class="s2">&quot;visible&quot;</span><span class="p">);</span>
<span class="nx">btn</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">generateId</span><span class="p">();</span>
<span class="nx">prevButton</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s2">&quot;&lt;button type=\&quot;button\&quot; &quot;</span> <span class="o">+</span>
<span class="s2">&quot;id=\&quot;&quot;</span> <span class="o">+</span> <span class="nx">btn</span> <span class="o">+</span> <span class="s2">&quot;\&quot; name=\&quot;&quot;</span> <span class="o">+</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">STRINGS</span><span class="p">.</span><span class="nx">PREVIOUS_BUTTON_TEXT</span> <span class="o">+</span> <span class="s2">&quot;\&quot;&gt;&quot;</span> <span class="o">+</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">STRINGS</span><span class="p">.</span><span class="nx">PREVIOUS_BUTTON_TEXT</span> <span class="o">+</span> <span class="s2">&quot;&lt;/button&gt;&quot;</span><span class="p">;</span>
<span class="nx">navContainer</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">prevButton</span><span class="p">);</span>
<span class="nx">btn</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">btn</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">prev</span> <span class="o">=</span> <span class="p">[</span><span class="nx">btn</span><span class="p">];</span>
<span class="nx">cfg</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">prev</span><span class="o">:</span> <span class="p">[</span><span class="nx">prevButton</span><span class="p">]</span> <span class="p">};</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span> <span class="o">||</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">next</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">next</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">nav</span><span class="p">.</span><span class="nx">next</span> <span class="o">=</span> <span class="p">[</span><span class="nx">nav</span><span class="p">.</span><span class="nx">next</span><span class="p">];</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">btn</span> <span class="k">in</span> <span class="nx">nav</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">btn</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">nav</span><span class="p">.</span><span class="nx">next</span><span class="p">[</span><span class="nx">btn</span><span class="p">]));</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// TODO: separate method for creating a navigation button</span>
<span class="nx">nextButton</span> <span class="o">=</span> <span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;SPAN&quot;</span><span class="p">,</span>
<span class="p">{</span> <span class="nx">className</span><span class="o">:</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">BUTTON</span> <span class="o">+</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">NEXT_NAV</span> <span class="p">});</span>
<span class="c1">// XXX: for IE 6.x</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">nextButton</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</span><span class="p">,</span> <span class="s2">&quot;visible&quot;</span><span class="p">);</span>
<span class="nx">btn</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">generateId</span><span class="p">();</span>
<span class="nx">nextButton</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s2">&quot;&lt;button type=\&quot;button\&quot; &quot;</span> <span class="o">+</span>
<span class="s2">&quot;id=\&quot;&quot;</span> <span class="o">+</span> <span class="nx">btn</span> <span class="o">+</span> <span class="s2">&quot;\&quot; name=\&quot;&quot;</span> <span class="o">+</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">STRINGS</span><span class="p">.</span><span class="nx">NEXT_BUTTON_TEXT</span> <span class="o">+</span> <span class="s2">&quot;\&quot;&gt;&quot;</span> <span class="o">+</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">STRINGS</span><span class="p">.</span><span class="nx">NEXT_BUTTON_TEXT</span> <span class="o">+</span> <span class="s2">&quot;&lt;/button&gt;&quot;</span><span class="p">;</span>
<span class="nx">navContainer</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">nextButton</span><span class="p">);</span>
<span class="nx">btn</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">btn</span><span class="p">);</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_navBtns</span><span class="p">.</span><span class="nx">next</span> <span class="o">=</span> <span class="p">[</span><span class="nx">btn</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span> <span class="o">=</span> <span class="p">[</span><span class="nx">nextButton</span><span class="p">];</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">cfg</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">next</span><span class="o">:</span> <span class="p">[</span><span class="nx">nextButton</span><span class="p">]</span> <span class="p">};</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;navigation&quot;</span><span class="p">,</span> <span class="nx">cfg</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">navContainer</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the clip container size (based on the new numVisible value).</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setClipContainerSize</span>
<span class="cm"> * @param clip {HTMLElement} The clip container element.</span>
<span class="cm"> * @param num {Number} optional The number of items per page.</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setClipContainerSize</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">clip</span><span class="p">,</span> <span class="nx">num</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">isVertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">),</span>
<span class="nx">rows</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_rows</span><span class="p">,</span>
<span class="nx">cols</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_cols</span><span class="p">,</span>
<span class="nx">reveal</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;revealAmount&quot;</span><span class="p">),</span>
<span class="nx">itemHeight</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">),</span>
<span class="nx">itemWidth</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">),</span>
<span class="nx">containerHeight</span><span class="p">,</span>
<span class="nx">containerWidth</span><span class="p">;</span>
<span class="nx">clip</span> <span class="o">=</span> <span class="nx">clip</span> <span class="o">||</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">rows</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">containerHeight</span> <span class="o">=</span> <span class="nx">itemHeight</span> <span class="o">*</span> <span class="nx">rows</span><span class="p">;</span>
<span class="nx">containerWidth</span> <span class="o">=</span> <span class="nx">itemWidth</span> <span class="o">*</span> <span class="nx">cols</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">num</span> <span class="o">||</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">containerHeight</span> <span class="o">=</span> <span class="nx">itemHeight</span> <span class="o">*</span> <span class="nx">num</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">containerWidth</span> <span class="o">=</span> <span class="nx">itemWidth</span> <span class="o">*</span> <span class="nx">num</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// TODO: try to re-use the _hasRendered indicator</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_recomputeSize</span> <span class="o">=</span> <span class="p">(</span><span class="nx">containerHeight</span> <span class="o">===</span> <span class="mi">0</span><span class="p">);</span> <span class="c1">// bleh!</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_recomputeSize</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">return</span><span class="p">;</span> <span class="c1">// no use going further, bail out!</span>
<span class="p">}</span>
<span class="nx">reveal</span> <span class="o">=</span> <span class="nx">getRevealSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">containerHeight</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">reveal</span> <span class="o">*</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">containerWidth</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">reveal</span> <span class="o">*</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">containerHeight</span> <span class="o">+=</span> <span class="nx">getDimensions</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span><span class="s2">&quot;height&quot;</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">clip</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">,</span> <span class="nx">containerHeight</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="c1">// For multi-row Carousel</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cols</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">containerWidth</span> <span class="o">+=</span> <span class="nx">getDimensions</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">clip</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">,</span> <span class="nx">containerWidth</span> <span class="o">+</span> <span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">containerWidth</span> <span class="o">+=</span> <span class="nx">getDimensions</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">clip</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">,</span> <span class="nx">containerWidth</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="c1">// For multi-row Carousel</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">rows</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">containerHeight</span> <span class="o">+=</span> <span class="nx">getDimensions</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="s2">&quot;height&quot;</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">clip</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">,</span> <span class="nx">containerHeight</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_setContainerSize</span><span class="p">(</span><span class="nx">clip</span><span class="p">);</span> <span class="c1">// adjust the container size too</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the container size.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setContainerSize</span>
<span class="cm"> * @param clip {HTMLElement} The clip container element.</span>
<span class="cm"> * @param attr {String} Either set the height or width.</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setContainerSize</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">clip</span><span class="p">,</span> <span class="nx">attr</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">config</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CONFIG</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">isVertical</span><span class="p">,</span>
<span class="nx">rows</span><span class="p">,</span>
<span class="nx">cols</span><span class="p">,</span>
<span class="nx">size</span><span class="p">;</span>
<span class="nx">isVertical</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;isVertical&quot;</span><span class="p">);</span>
<span class="nx">rows</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_rows</span><span class="p">;</span>
<span class="nx">cols</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_cols</span><span class="p">;</span>
<span class="nx">clip</span> <span class="o">=</span> <span class="nx">clip</span> <span class="o">||</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">;</span>
<span class="nx">attr</span> <span class="o">=</span> <span class="nx">attr</span> <span class="o">||</span> <span class="p">(</span><span class="nx">isVertical</span> <span class="o">?</span> <span class="s2">&quot;height&quot;</span> <span class="o">:</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nb">parseFloat</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">getStyle</span><span class="p">(</span><span class="nx">clip</span><span class="p">,</span> <span class="nx">attr</span><span class="p">),</span> <span class="mi">10</span><span class="p">);</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">size</span><span class="p">)</span> <span class="o">?</span> <span class="nx">size</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">+=</span> <span class="nx">getDimensions</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">)</span> <span class="o">+</span>
<span class="nx">getStyle</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_navEl</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">+=</span> <span class="nx">getDimensions</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">size</span> <span class="o">&lt;</span> <span class="nx">config</span><span class="p">.</span><span class="nx">HORZ_MIN_WIDTH</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">config</span><span class="p">.</span><span class="nx">HORZ_MIN_WIDTH</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">MIN_WIDTH</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">attr</span><span class="p">,</span> <span class="nx">size</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="c1">// Additionally the width of the container should be set for</span>
<span class="c1">// the vertical Carousel</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">isVertical</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="nx">cols</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">size</span> <span class="o">*</span> <span class="nx">cols</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span> <span class="s2">&quot;width&quot;</span><span class="p">,</span> <span class="nx">size</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span><span class="c1">// Bug fix for vertical carousel (goes in conjunction with .yui-carousel-element {... 3200px removed from styles), and allows for multirows in IEs).</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">size</span> <span class="o">&lt;</span> <span class="nx">config</span><span class="p">.</span><span class="nx">VERT_MIN_WIDTH</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">config</span><span class="p">.</span><span class="nx">VERT_MIN_WIDTH</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">MIN_WIDTH</span><span class="p">);</span><span class="c1">// set a min width on vertical carousel, don&#39;t see why this shouldn&#39;t always be set...</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="s2">&quot;width&quot;</span><span class="p">,</span> <span class="nx">size</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="nx">rows</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">getCarouselItemSize</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">);</span>
<span class="nx">size</span> <span class="o">=</span> <span class="nx">size</span> <span class="o">*</span> <span class="nx">rows</span><span class="p">;</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span> <span class="s2">&quot;height&quot;</span><span class="p">,</span> <span class="nx">size</span> <span class="o">+</span> <span class="s2">&quot;px&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the value for the Carousel&#39;s first visible item.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setFirstVisible</span>
<span class="cm"> * @param val {Number} The new value for firstVisible</span>
<span class="cm"> * @return {Number} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setFirstVisible</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">scrollTo</span><span class="p">(</span><span class="nx">val</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the value for the Carousel&#39;s navigation.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setNavigation</span>
<span class="cm"> * @param cfg {Object} The navigation configuration</span>
<span class="cm"> * @return {Object} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setNavigation</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">prev</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">prev</span><span class="p">,</span> <span class="s2">&quot;click&quot;</span><span class="p">,</span> <span class="nx">scrollPageBackward</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span><span class="p">,</span> <span class="s2">&quot;click&quot;</span><span class="p">,</span> <span class="nx">scrollPageForward</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Clip the container size every time numVisible is set.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setNumVisible</span>
<span class="cm"> * @param val {Number} The new value for numVisible</span>
<span class="cm"> * @return {Number} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setNumVisible</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// TODO: _setNumVisible should just be reserved for setting numVisible.</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_setClipContainerSize</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_clipEl</span><span class="p">,</span> <span class="nx">val</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the value for the number of visible items in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _numVisibleSetter</span>
<span class="cm"> * @param val {Number} The new value for numVisible</span>
<span class="cm"> * @return {Number} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_numVisibleSetter</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">val</span><span class="p">;</span>
<span class="k">if</span><span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">val</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_cols</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_rows</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
<span class="nx">numVisible</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="nx">val</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">numVisible</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the value for selectedItem.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _selectedItemSetter</span>
<span class="cm"> * @param val {Number} The new value for selectedItem</span>
<span class="cm"> * @return {Number} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_selectedItemSetter</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">return</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&lt;</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">))</span> <span class="o">?</span> <span class="nx">val</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the number of items in the Carousel.</span>
<span class="cm"> * Warning: Setting this to a lower number than the current removes</span>
<span class="cm"> * items from the end.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setNumItems</span>
<span class="cm"> * @param val {Number} The new value for numItems</span>
<span class="cm"> * @return {Number} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setNumItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">length</span> <span class="o">!=</span> <span class="nx">num</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// out of sync</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">.</span><span class="nx">numItems</span> <span class="o">=</span> <span class="nx">num</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&lt;</span> <span class="nx">num</span><span class="p">)</span> <span class="p">{</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">num</span> <span class="o">&gt;</span> <span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">removeItem</span><span class="p">(</span><span class="nx">num</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<span class="nx">num</span><span class="o">--</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the orientation of the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setOrientation</span>
<span class="cm"> * @param val {Boolean} The new value for isVertical</span>
<span class="cm"> * @return {Boolean} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setOrientation</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">replaceClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">HORIZONTAL</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">VERTICAL</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">replaceClass</span><span class="p">(</span><span class="nx">cssClass</span><span class="p">.</span><span class="nx">VERTICAL</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">HORIZONTAL</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_itemAttrCache</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">// force recomputed next time</span>
<span class="k">return</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the value for the reveal amount percentage in the Carousel.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setRevealAmount</span>
<span class="cm"> * @param val {Number} The new value for revealAmount</span>
<span class="cm"> * @return {Number} The new value that would be set</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setRevealAmount</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span> <span class="o">&lt;=</span> <span class="mi">100</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="o">?</span> <span class="nx">val</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_setClipContainerSize</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;revealAmount&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the value for the selected item.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _setSelectedItem</span>
<span class="cm"> * @param val {Number} The new value for &quot;selected&quot; item</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_setSelectedItem</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_selectedItem</span> <span class="o">=</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Get the total number of pages.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _getNumPages</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_getNumPages</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">(</span>
<span class="nb">parseInt</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span><span class="mi">10</span><span class="p">)</span> <span class="o">/</span> <span class="nb">parseInt</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span><span class="mi">10</span><span class="p">)</span>
<span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Get the index of the last visible item</span>
<span class="cm"> *</span>
<span class="cm"> * @method _getLastVisible</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_getLastVisible</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;currentPage&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">==</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numPages&quot;</span><span class="p">)</span> <span class="o">?</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="o">:</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Synchronize and redraw the UI after an item is added.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _syncUiForItemAdd</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_syncUiForItemAdd</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">attr</span><span class="p">,</span>
<span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">carouselEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="nx">el</span><span class="p">,</span>
<span class="nx">item</span><span class="p">,</span>
<span class="nx">itemsTable</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">,</span>
<span class="nx">oel</span><span class="p">,</span>
<span class="nx">pos</span><span class="p">,</span>
<span class="nx">sibling</span><span class="p">,</span>
<span class="nx">styles</span><span class="p">;</span>
<span class="nx">pos</span> <span class="o">=</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span><span class="p">)</span> <span class="o">?</span>
<span class="nx">obj</span><span class="p">.</span><span class="nx">newPos</span> <span class="o">||</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">numItems</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">:</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">oel</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">pos</span><span class="p">]</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_createCarouselItem</span><span class="p">({</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">className</span><span class="p">,</span>
<span class="nx">styles</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">styles</span><span class="p">,</span>
<span class="nx">content</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">item</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">id</span><span class="p">,</span>
<span class="nx">pos</span> <span class="o">:</span> <span class="nx">pos</span>
<span class="p">});</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">pos</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">oel</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">pos</span><span class="p">];</span>
<span class="c1">// if oel is null, it is a problem ...</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">oel</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// replace the node</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">replaceChild</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">oel</span><span class="p">);</span>
<span class="c1">// ... and remove the item from the data structure</span>
<span class="k">delete</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">pos</span><span class="p">];</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">sibling</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">].</span><span class="nx">id</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sibling</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">sibling</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Unable to find sibling&quot;</span><span class="p">,</span><span class="s2">&quot;error&quot;</span><span class="p">,</span><span class="nx">WidgetName</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">isAncestor</span><span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span> <span class="nx">oel</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">oel</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">isAncestor</span><span class="p">(</span><span class="nx">carouselEl</span><span class="p">,</span> <span class="nx">oel</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">oel</span><span class="p">,</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">].</span><span class="nx">id</span><span class="p">));</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_refreshUi</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;firstVisible&quot;</span><span class="p">));</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiItems</span><span class="p">();</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Synchronize and redraw the UI after an item is replaced.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _syncUiForItemReplace</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_syncUiForItemReplace</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">o</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">carouselEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="nx">itemsTable</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">,</span>
<span class="nx">pos</span> <span class="o">=</span> <span class="nx">o</span><span class="p">.</span><span class="nx">pos</span><span class="p">,</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">o</span><span class="p">.</span><span class="nx">newItem</span><span class="p">,</span>
<span class="nx">oel</span> <span class="o">=</span> <span class="nx">o</span><span class="p">.</span><span class="nx">oldItem</span><span class="p">,</span>
<span class="nx">el</span><span class="p">;</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_createCarouselItem</span><span class="p">({</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">className</span><span class="p">,</span>
<span class="nx">styles</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">styles</span><span class="p">,</span>
<span class="nx">content</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">item</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">item</span><span class="p">.</span><span class="nx">id</span><span class="p">,</span>
<span class="nx">pos</span> <span class="o">:</span> <span class="nx">pos</span>
<span class="p">});</span>
<span class="k">if</span><span class="p">(</span><span class="nx">el</span> <span class="o">&amp;&amp;</span> <span class="nx">oel</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">purgeElement</span><span class="p">(</span><span class="nx">oel</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">replaceChild</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">oel</span><span class="p">.</span><span class="nx">id</span><span class="p">));</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">pos</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">itemsTable</span><span class="p">.</span><span class="nx">numItems</span><span class="o">++</span><span class="p">;</span>
<span class="k">delete</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">pos</span><span class="p">];</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// TODO: should we add the item if oel is undefined?</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_hasRendered</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_refreshUi</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiItems</span><span class="p">();</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Synchronize and redraw the UI after an item is removed.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _syncUiForItemAdd</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_syncUiForItemRemove</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">carouselEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="nx">el</span><span class="p">,</span> <span class="nx">item</span><span class="p">,</span> <span class="nx">num</span><span class="p">,</span> <span class="nx">pos</span><span class="p">;</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">);</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">item</span><span class="p">;</span>
<span class="nx">pos</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">pos</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">el</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">item</span><span class="p">.</span><span class="nx">id</span><span class="p">)))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span> <span class="o">&amp;&amp;</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">isAncestor</span><span class="p">(</span><span class="nx">carouselEl</span><span class="p">,</span> <span class="nx">el</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">purgeElement</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;selectedItem&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="nx">pos</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">pos</span> <span class="o">=</span> <span class="nx">pos</span> <span class="o">&gt;=</span> <span class="nx">num</span> <span class="o">?</span> <span class="nx">num</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">:</span> <span class="nx">pos</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Unable to find item&quot;</span><span class="p">,</span> <span class="s2">&quot;warn&quot;</span><span class="p">,</span> <span class="nx">WidgetName</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiItems</span><span class="p">();</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Synchronize and redraw the UI for lazy loading.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _syncUiForLazyLoading</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_syncUiForLazyLoading</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">carouselEl</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_carouselEl</span><span class="p">,</span>
<span class="nx">itemsTable</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">,</span>
<span class="nx">len</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span>
<span class="nx">sibling</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">obj</span><span class="p">.</span><span class="nx">last</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span>
<span class="nx">el</span><span class="p">,</span>
<span class="nx">j</span><span class="p">;</span>
<span class="c1">// attempt to find the next closest sibling</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">sibling</span> <span class="o">&amp;&amp;</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">last</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">){</span>
<span class="nx">j</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">first</span><span class="p">;</span>
<span class="k">do</span> <span class="p">{</span>
<span class="nx">sibling</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<span class="nx">j</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="nx">j</span><span class="o">&lt;</span><span class="nx">len</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">sibling</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">first</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">last</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="o">&amp;&amp;</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">[</span><span class="nx">i</span><span class="p">])){</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_createCarouselItem</span><span class="p">({</span>
<span class="nx">className</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">.</span><span class="nx">ITEM_LOADING</span><span class="p">,</span>
<span class="nx">content</span> <span class="o">:</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">STRINGS</span><span class="p">.</span><span class="nx">ITEM_LOADING_CONTENT</span><span class="p">,</span>
<span class="nx">id</span> <span class="o">:</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">generateId</span><span class="p">(),</span>
<span class="nx">pos</span> <span class="o">:</span> <span class="nx">i</span>
<span class="p">});</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sibling</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">sibling</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">sibling</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sibling</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">sibling</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Unable to find sibling&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span>
<span class="nx">WidgetName</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">carouselEl</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">el</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_syncUiItems</span><span class="p">();</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Redraw the UI for item positioning.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _syncUiItems</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_syncUiItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">attr</span><span class="p">,</span>
<span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">),</span>
<span class="nx">i</span><span class="p">,</span>
<span class="nx">itemsTable</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_itemsTable</span><span class="p">,</span>
<span class="nx">items</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">items</span><span class="p">,</span>
<span class="nx">loading</span> <span class="o">=</span> <span class="nx">itemsTable</span><span class="p">.</span><span class="nx">loading</span><span class="p">,</span>
<span class="nx">item</span><span class="p">,</span>
<span class="nx">styles</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">numItems</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">item</span> <span class="o">=</span> <span class="nx">items</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">||</span> <span class="nx">loading</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">item</span> <span class="o">&amp;&amp;</span> <span class="nx">item</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">styles</span> <span class="o">=</span> <span class="nx">getCarouselItemPosition</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">carousel</span><span class="p">,</span> <span class="nx">i</span><span class="p">);</span>
<span class="nx">item</span><span class="p">.</span><span class="nx">styles</span> <span class="o">=</span> <span class="nx">item</span><span class="p">.</span><span class="nx">styles</span> <span class="o">||</span> <span class="p">{};</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">attr</span> <span class="k">in</span> <span class="nx">styles</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">styles</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">attr</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">item</span><span class="p">.</span><span class="nx">styles</span><span class="p">[</span><span class="nx">attr</span><span class="p">]</span> <span class="o">=</span> <span class="nx">styles</span><span class="p">[</span><span class="nx">attr</span><span class="p">];</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">setStyles</span><span class="p">(</span><span class="nx">Dom</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">item</span><span class="p">.</span><span class="nx">id</span><span class="p">),</span> <span class="nx">styles</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the correct class for the navigation buttons.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _updateNavButtons</span>
<span class="cm"> * @param el {Object} The target button</span>
<span class="cm"> * @param setFocus {Boolean} True to set focus ring, false otherwise.</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_updateNavButtons</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">setFocus</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">children</span><span class="p">,</span>
<span class="nx">cssClass</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">grandParent</span><span class="p">,</span>
<span class="nx">parent</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">parent</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">grandParent</span> <span class="o">=</span> <span class="nx">parent</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">nodeName</span><span class="p">.</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;BUTTON&quot;</span> <span class="o">&amp;&amp;</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">hasClass</span><span class="p">(</span><span class="nx">parent</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">BUTTON</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">setFocus</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">grandParent</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">children</span> <span class="o">=</span> <span class="nx">Dom</span><span class="p">.</span><span class="nx">getChildren</span><span class="p">(</span><span class="nx">grandParent</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">children</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">children</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">FOCUSSED_BUTTON</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">parent</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">FOCUSSED_BUTTON</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">parent</span><span class="p">,</span> <span class="nx">cssClass</span><span class="p">.</span><span class="nx">FOCUSSED_BUTTON</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Update the UI for the pager buttons based on the current page and</span>
<span class="cm"> * the number of pages.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _updatePagerButtons</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_updatePagerButtons</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">css</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">cur</span><span class="p">,</span> <span class="c1">// current page</span>
<span class="nx">el</span><span class="p">,</span>
<span class="nx">html</span><span class="p">,</span>
<span class="nx">i</span><span class="p">,</span>
<span class="nx">item</span><span class="p">,</span>
<span class="nx">n</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">num</span><span class="p">,</span> <span class="c1">// total pages</span>
<span class="nx">pager</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">el</span><span class="p">;</span> <span class="c1">// the pager container element</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">num</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">||</span> <span class="o">!</span><span class="nx">pager</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span> <span class="c1">// don&#39;t do anything if number of pages is 0</span>
<span class="p">}</span>
<span class="c1">// Hide the pager before redrawing it</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">pager</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</span><span class="p">,</span> <span class="s2">&quot;hidden&quot;</span><span class="p">);</span>
<span class="c1">// Remove all nodes from the pager</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">pager</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">pager</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">pager</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">num</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;LI&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">css</span><span class="p">.</span><span class="nx">FIRST_PAGE</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">==</span> <span class="nx">cur</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">css</span><span class="p">.</span><span class="nx">SELECTED_NAV</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">html</span> <span class="o">=</span> <span class="s2">&quot;&lt;a class=&quot;</span> <span class="o">+</span> <span class="nx">css</span><span class="p">.</span><span class="nx">PAGER_ITEM</span> <span class="o">+</span> <span class="s2">&quot; href=\&quot;#&quot;</span> <span class="o">+</span> <span class="p">(</span><span class="nx">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;\&quot; tabindex=\&quot;0\&quot;&gt;&lt;em&gt;&quot;</span> <span class="o">+</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">STRINGS</span><span class="p">.</span><span class="nx">PAGER_PREFIX_TEXT</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="p">(</span><span class="nx">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span>
<span class="s2">&quot;&lt;/em&gt;&lt;/a&gt;&quot;</span><span class="p">;</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">html</span><span class="p">;</span>
<span class="nx">pager</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// Show the pager now</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">pager</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</span><span class="p">,</span> <span class="s2">&quot;visible&quot;</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Update the UI for the pager menu based on the current page and</span>
<span class="cm"> * the number of pages. If the number of pages is greater than</span>
<span class="cm"> * MAX_PAGER_BUTTONS, then the selection of pages is provided by a drop</span>
<span class="cm"> * down menu instead of a set of buttons.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _updatePagerMenu</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_updatePagerMenu</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span>
<span class="nx">css</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">CLASSES</span><span class="p">,</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">cur</span><span class="p">,</span> <span class="c1">// current page</span>
<span class="nx">el</span><span class="p">,</span>
<span class="nx">i</span><span class="p">,</span>
<span class="nx">item</span><span class="p">,</span>
<span class="nx">n</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numVisible&quot;</span><span class="p">),</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">num</span><span class="p">,</span> <span class="c1">// total pages</span>
<span class="nx">pager</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pages</span><span class="p">.</span><span class="nx">el</span><span class="p">,</span> <span class="c1">// the pager container element</span>
<span class="nx">sel</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">num</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span><span class="c1">// don&#39;t do anything if number of pages is 0</span>
<span class="p">}</span>
<span class="nx">sel</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;SELECT&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">sel</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Unable to create the pager menu&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span>
<span class="nx">WidgetName</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Hide the pager before redrawing it</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">pager</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</span><span class="p">,</span> <span class="s2">&quot;hidden&quot;</span><span class="p">);</span>
<span class="c1">// Remove all nodes from the pager</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">pager</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">pager</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">pager</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">num</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;OPTION&quot;</span><span class="p">);</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">value</span> <span class="o">=</span> <span class="nx">i</span><span class="o">+</span><span class="mi">1</span><span class="p">;</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">STRINGS</span><span class="p">.</span><span class="nx">PAGER_PREFIX_TEXT</span><span class="o">+</span><span class="s2">&quot; &quot;</span><span class="o">+</span><span class="p">(</span><span class="nx">i</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">==</span> <span class="nx">cur</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;selected&quot;</span><span class="p">,</span> <span class="s2">&quot;selected&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">sel</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">el</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;FORM&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">YAHOO</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">&quot;Unable to create the pager menu&quot;</span><span class="p">,</span> <span class="s2">&quot;error&quot;</span><span class="p">,</span>
<span class="nx">WidgetName</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">sel</span><span class="p">);</span>
<span class="nx">pager</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// Show the pager now</span>
<span class="nx">Event</span><span class="p">.</span><span class="nx">addListener</span><span class="p">(</span><span class="nx">sel</span><span class="p">,</span> <span class="s2">&quot;change&quot;</span><span class="p">,</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">_pagerChangeHandler</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
<span class="nx">Dom</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">(</span><span class="nx">pager</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</span><span class="p">,</span> <span class="s2">&quot;visible&quot;</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Set the correct tab index for the Carousel items.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _updateTabIndex</span>
<span class="cm"> * @param el {Object} The element to be focussed</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_updateTabIndex</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">carousel</span><span class="p">.</span><span class="nx">_focusableItemEl</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_focusableItemEl</span><span class="p">.</span><span class="nx">tabIndex</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">carousel</span><span class="p">.</span><span class="nx">_focusableItemEl</span> <span class="o">=</span> <span class="nx">el</span><span class="p">;</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">tabIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Validate animation parameters.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _validateAnimation</span>
<span class="cm"> * @param cfg {Object} The animation configuration</span>
<span class="cm"> * @return {Boolean} The status of the validation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_validateAnimation</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">rv</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isObject</span><span class="p">(</span><span class="nx">cfg</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">speed</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="nx">rv</span> <span class="o">&amp;&amp;</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">speed</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">effect</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="nx">rv</span> <span class="o">&amp;&amp;</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isFunction</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">effect</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isUndefined</span><span class="p">(</span><span class="nx">YAHOO</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">Easing</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">cfg</span><span class="p">.</span><span class="nx">effect</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="p">.</span><span class="nx">util</span><span class="p">.</span><span class="nx">Easing</span><span class="p">.</span><span class="nx">easeOut</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">rv</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Validate the firstVisible value.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _validateFirstVisible</span>
<span class="cm"> * @param val {Number} The first visible value</span>
<span class="cm"> * @return {Boolean} The status of the validation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_validateFirstVisible</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">carousel</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">numItems</span> <span class="o">=</span> <span class="nx">carousel</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">numItems</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span> <span class="o">==</span> <span class="nx">numItems</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span> <span class="o">&lt;</span> <span class="nx">numItems</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Validate and navigation parameters.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _validateNavigation</span>
<span class="cm"> * @param cfg {Object} The navigation configuration</span>
<span class="cm"> * @return {Boolean} The status of the validation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_validateNavigation</span> <span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isObject</span><span class="p">(</span><span class="nx">cfg</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">prev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">prev</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="k">in</span> <span class="nx">cfg</span><span class="p">.</span><span class="nx">prev</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">prev</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">prev</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">nodeName</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="k">in</span> <span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isString</span><span class="p">(</span><span class="nx">cfg</span><span class="p">.</span><span class="nx">next</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">nodeName</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Validate the numItems value.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _validateNumItems</span>
<span class="cm"> * @param val {Number} The numItems value</span>
<span class="cm"> * @return {Boolean} The status of the validation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_validateNumItems</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">);</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Validate the numVisible value.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _validateNumVisible</span>
<span class="cm"> * @param val {Number} The numVisible value</span>
<span class="cm"> * @return {Boolean} The status of the validation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_validateNumVisible</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">rv</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="nx">val</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span> <span class="o">&lt;=</span> <span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">val</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">&amp;&amp;</span> <span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="nx">val</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">rv</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Validate the revealAmount value.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _validateRevealAmount</span>
<span class="cm"> * @param val {Number} The revealAmount value</span>
<span class="cm"> * @return {Boolean} The status of the validation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_validateRevealAmount</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">rv</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="nx">val</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span> <span class="o">&lt;</span> <span class="mi">100</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">rv</span><span class="p">;</span>
<span class="p">},</span>
<span class="cm">/**</span>
<span class="cm"> * Validate the scrollIncrement value.</span>
<span class="cm"> *</span>
<span class="cm"> * @method _validateScrollIncrement</span>
<span class="cm"> * @param val {Number} The scrollIncrement value</span>
<span class="cm"> * @return {Boolean} The status of the validation</span>
<span class="cm"> * @protected</span>
<span class="cm"> */</span>
<span class="nx">_validateScrollIncrement</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">rv</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">JS</span><span class="p">.</span><span class="nx">isNumber</span><span class="p">(</span><span class="nx">val</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">rv</span> <span class="o">=</span> <span class="p">(</span><span class="nx">val</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">val</span> <span class="o">&lt;</span> <span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;numItems&quot;</span><span class="p">));</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">rv</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="cm">/*</span>
<span class="cm">;; Local variables: **</span>
<span class="cm">;; mode: js2 **</span>
<span class="cm">;; indent-tabs-mode: nil **</span>
<span class="cm">;; End: **</span>
<span class="cm">*/</span>
</pre></div>
</div>
</div>
</div>
<div class="yui-b">
<div class="nav">
<div id="moduleList" class="module">
<h4>Modules</h4>
<ul class="content">
<li class=""><a href="module_animation.html" title="animation">animation</a></li>
<li class=""><a href="module_autocomplete.html" title="autocomplete">autocomplete</a></li>
<li class=""><a href="module_button.html" title="button">button</a></li>
<li class=""><a href="module_calendar.html" title="calendar">calendar</a></li>
<li class="selected"><a href="module_carousel.html" title="carousel">carousel</a></li>
<li class=""><a href="module_charts.html" title="charts">charts</a></li>
<li class=""><a href="module_colorpicker.html" title="colorpicker">colorpicker</a></li>
<li class=""><a href="module_connection.html" title="connection">connection</a></li>
<li class=""><a href="module_container.html" title="container">container</a></li>
<li class=""><a href="module_cookie.html" title="cookie">cookie</a></li>
<li class=""><a href="module_datasource.html" title="datasource">datasource</a></li>
<li class=""><a href="module_datatable.html" title="datatable">datatable</a></li>
<li class=""><a href="module_datemath.html" title="datemath">datemath</a></li>
<li class=""><a href="module_dom.html" title="dom">dom</a></li>
<li class=""><a href="module_dragdrop.html" title="dragdrop">dragdrop</a></li>
<li class=""><a href="module_editor.html" title="editor">editor</a></li>
<li class=""><a href="module_element.html" title="element">element</a></li>
<li class=""><a href="module_element-delegate.html" title="element-delegate">element-delegate</a></li>
<li class=""><a href="module_event.html" title="event">event</a></li>
<li class=""><a href="module_event-delegate.html" title="event-delegate">event-delegate</a></li>
<li class=""><a href="module_event-mouseenter.html" title="event-mouseenter">event-mouseenter</a></li>
<li class=""><a href="module_event-simulate.html" title="event-simulate">event-simulate</a></li>
<li class=""><a href="module_get.html" title="get">get</a></li>
<li class=""><a href="module_history.html" title="history">history</a></li>
<li class=""><a href="module_imagecropper.html" title="imagecropper">imagecropper</a></li>
<li class=""><a href="module_imageloader.html" title="imageloader">imageloader</a></li>
<li class=""><a href="module_json.html" title="json">json</a></li>
<li class=""><a href="module_layout.html" title="layout">layout</a></li>
<li class=""><a href="module_logger.html" title="logger">logger</a></li>
<li class=""><a href="module_menu.html" title="menu">menu</a></li>
<li class=""><a href="module_paginator.html" title="paginator">paginator</a></li>
<li class=""><a href="module_profiler.html" title="profiler">profiler</a></li>
<li class=""><a href="module_profilerviewer.html" title="profilerviewer">profilerviewer</a></li>
<li class=""><a href="module_progressbar.html" title="progressbar">progressbar</a></li>
<li class=""><a href="module_resize.html" title="resize">resize</a></li>
<li class=""><a href="module_selector.html" title="selector">selector</a></li>
<li class=""><a href="module_slider.html" title="slider">slider</a></li>
<li class=""><a href="module_storage.html" title="Storage">Storage</a></li>
<li class=""><a href="module_stylesheet.html" title="stylesheet">stylesheet</a></li>
<li class=""><a href="module_swf.html" title="swf">swf</a></li>
<li class=""><a href="module_swfdetect.html" title="swfdetect">swfdetect</a></li>
<li class=""><a href="module_swfstore.html" title="swfstore">swfstore</a></li>
<li class=""><a href="module_tabview.html" title="tabview">tabview</a></li>
<li class=""><a href="module_treeview.html" title="treeview">treeview</a></li>
<li class=""><a href="module_uploader.html" title="uploader">uploader</a></li>
<li class=""><a href="module_yahoo.html" title="yahoo">yahoo</a></li>
<li class=""><a href="module_yuiloader.html" title="yuiloader">yuiloader</a></li>
<li class=""><a href="module_yuitest.html" title="yuitest">yuitest</a></li>
</ul>
</div>
<div id="classList" class="module">
<h4>Classes</h4>
<ul class="content">
<li class=""><a href="YAHOO.widget.Carousel.html" title="YAHOO.widget.Carousel">YAHOO.widget.Carousel</a></li>
</ul>
</div>
<div id="fileList" class="module">
<h4>Files</h4>
<ul class="content">
<li class="selected"><a href="Carousel.js.html" title="Carousel.js">Carousel.js</a></li>
</ul>
</div>
</div>
</div>
</div>
<div id="ft">
<hr />
Copyright &copy; 2010 Yahoo! Inc. All rights reserved.
</div>
</div>
<script type="text/javascript">
var ALL_YUI_PROPS = [{"access": "", "host": "YAHOO.widget.Carousel", "name": "addItem", "url": "YAHOO.widget.Carousel.html#method_addItem", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "addItems", "url": "YAHOO.widget.Carousel.html#method_addItems", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "afterScroll", "url": "YAHOO.widget.Carousel.html#event_afterScroll", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "allItemsRemovedEvent", "url": "YAHOO.widget.Carousel.html#event_allItemsRemovedEvent", "type": "event"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_animateAndSetCarouselOffset", "url": "YAHOO.widget.Carousel.html#method__animateAndSetCarouselOffset", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "animation", "url": "YAHOO.widget.Carousel.html#config_animation", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "animationChange", "url": "YAHOO.widget.Carousel.html#event_animationChange", "type": "event"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_animationCompleteHandler", "url": "YAHOO.widget.Carousel.html#method__animationCompleteHandler", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_animObj", "url": "YAHOO.widget.Carousel.html#property__animObj", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "autoPlay", "url": "YAHOO.widget.Carousel.html#config_autoPlay", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "autoPlayChange", "url": "YAHOO.widget.Carousel.html#event_autoPlayChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "autoPlayInterval", "url": "YAHOO.widget.Carousel.html#config_autoPlayInterval", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "autoPlayIntervalChange", "url": "YAHOO.widget.Carousel.html#event_autoPlayIntervalChange", "type": "event"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_autoScroll", "url": "YAHOO.widget.Carousel.html#method__autoScroll", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeAnimationChange", "url": "YAHOO.widget.Carousel.html#event_beforeAnimationChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeAutoPlayChange", "url": "YAHOO.widget.Carousel.html#event_beforeAutoPlayChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeAutoPlayIntervalChange", "url": "YAHOO.widget.Carousel.html#event_beforeAutoPlayIntervalChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeCarouselElChange", "url": "YAHOO.widget.Carousel.html#event_beforeCarouselElChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeCarouselItemElChange", "url": "YAHOO.widget.Carousel.html#event_beforeCarouselItemElChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeCurrentPageChange", "url": "YAHOO.widget.Carousel.html#event_beforeCurrentPageChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeFirstVisibleChange", "url": "YAHOO.widget.Carousel.html#event_beforeFirstVisibleChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeHide", "url": "YAHOO.widget.Carousel.html#event_beforeHide", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeIsCircularChange", "url": "YAHOO.widget.Carousel.html#event_beforeIsCircularChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeIsVerticalChange", "url": "YAHOO.widget.Carousel.html#event_beforeIsVerticalChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeLastVisibleChange", "url": "YAHOO.widget.Carousel.html#event_beforeLastVisibleChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeNavigationChange", "url": "YAHOO.widget.Carousel.html#event_beforeNavigationChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeNumItemsChange", "url": "YAHOO.widget.Carousel.html#event_beforeNumItemsChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeNumPagesChange", "url": "YAHOO.widget.Carousel.html#event_beforeNumPagesChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeNumVisibleChange", "url": "YAHOO.widget.Carousel.html#event_beforeNumVisibleChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforePageChange", "url": "YAHOO.widget.Carousel.html#event_beforePageChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeRevealAmountChange", "url": "YAHOO.widget.Carousel.html#event_beforeRevealAmountChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeScroll", "url": "YAHOO.widget.Carousel.html#event_beforeScroll", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeScrollIncrementChange", "url": "YAHOO.widget.Carousel.html#event_beforeScrollIncrementChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeSelectedItemChange", "url": "YAHOO.widget.Carousel.html#event_beforeSelectedItemChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeSelectOnScrollChange", "url": "YAHOO.widget.Carousel.html#event_beforeSelectOnScrollChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "beforeShow", "url": "YAHOO.widget.Carousel.html#event_beforeShow", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "blur", "url": "YAHOO.widget.Carousel.html#method_blur", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "blur", "url": "YAHOO.widget.Carousel.html#event_blur", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "BUTTON", "url": "YAHOO.widget.Carousel.html#property_BUTTON", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "CAROUSEL", "url": "YAHOO.widget.Carousel.html#property_CAROUSEL", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_carouselEl", "url": "YAHOO.widget.Carousel.html#property__carouselEl", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "CAROUSEL_EL", "url": "YAHOO.widget.Carousel.html#property_CAROUSEL_EL", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "carouselEl", "url": "YAHOO.widget.Carousel.html#config_carouselEl", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "carouselElChange", "url": "YAHOO.widget.Carousel.html#event_carouselElChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "carouselItemEl", "url": "YAHOO.widget.Carousel.html#config_carouselItemEl", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "carouselItemElChange", "url": "YAHOO.widget.Carousel.html#event_carouselItemElChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "clearItems", "url": "YAHOO.widget.Carousel.html#method_clearItems", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_clipEl", "url": "YAHOO.widget.Carousel.html#property__clipEl", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_cols", "url": "YAHOO.widget.Carousel.html#property__cols", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "CONTAINER", "url": "YAHOO.widget.Carousel.html#property_CONTAINER", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "CONTENT", "url": "YAHOO.widget.Carousel.html#property_CONTENT", "type": "property"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "createCarousel", "url": "YAHOO.widget.Carousel.html#method_createCarousel", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "createCarouselClip", "url": "YAHOO.widget.Carousel.html#method_createCarouselClip", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "createCarouselItem", "url": "YAHOO.widget.Carousel.html#method_createCarouselItem", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "createElement", "url": "YAHOO.widget.Carousel.html#method_createElement", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "currentPage", "url": "YAHOO.widget.Carousel.html#config_currentPage", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "currentPageChange", "url": "YAHOO.widget.Carousel.html#event_currentPageChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "DISABLED", "url": "YAHOO.widget.Carousel.html#property_DISABLED", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_firstItem", "url": "YAHOO.widget.Carousel.html#property__firstItem", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "FIRST_NAV", "url": "YAHOO.widget.Carousel.html#property_FIRST_NAV", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "FIRST_NAV_DISABLED", "url": "YAHOO.widget.Carousel.html#property_FIRST_NAV_DISABLED", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "FIRST_PAGE", "url": "YAHOO.widget.Carousel.html#property_FIRST_PAGE", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "FIRST_VISIBLE", "url": "YAHOO.widget.Carousel.html#property_FIRST_VISIBLE", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "firstVisible", "url": "YAHOO.widget.Carousel.html#config_firstVisible", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "firstVisibleChange", "url": "YAHOO.widget.Carousel.html#event_firstVisibleChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "focus", "url": "YAHOO.widget.Carousel.html#method_focus", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "focus", "url": "YAHOO.widget.Carousel.html#event_focus", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "FOCUSSED_BUTTON", "url": "YAHOO.widget.Carousel.html#property_FOCUSSED_BUTTON", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getById", "url": "YAHOO.widget.Carousel.html#method_getById", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "getCarouselItemPosition", "url": "YAHOO.widget.Carousel.html#method_getCarouselItemPosition", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "getCarouselItemSize", "url": "YAHOO.widget.Carousel.html#method_getCarouselItemSize", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "getDimensions", "url": "YAHOO.widget.Carousel.html#method_getDimensions", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getElementForItem", "url": "YAHOO.widget.Carousel.html#method_getElementForItem", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getElementForItems", "url": "YAHOO.widget.Carousel.html#method_getElementForItems", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "getFirstVisibleForPosition", "url": "YAHOO.widget.Carousel.html#method_getFirstVisibleForPosition", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getFirstVisibleOnpage", "url": "YAHOO.widget.Carousel.html#method_getFirstVisibleOnpage", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getItem", "url": "YAHOO.widget.Carousel.html#method_getItem", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getItemPositionById", "url": "YAHOO.widget.Carousel.html#method_getItemPositionById", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getItems", "url": "YAHOO.widget.Carousel.html#method_getItems", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_getLastVisible", "url": "YAHOO.widget.Carousel.html#method__getLastVisible", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getLoadingItems", "url": "YAHOO.widget.Carousel.html#method_getLoadingItems", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_getNumPages", "url": "YAHOO.widget.Carousel.html#method__getNumPages", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getPageForItem", "url": "YAHOO.widget.Carousel.html#method_getPageForItem", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "getRevealSize", "url": "YAHOO.widget.Carousel.html#method_getRevealSize", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "getScrollOffset", "url": "YAHOO.widget.Carousel.html#method_getScrollOffset", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_getSelectedItem", "url": "YAHOO.widget.Carousel.html#method__getSelectedItem", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "getStyle", "url": "YAHOO.widget.Carousel.html#method_getStyle", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_getValidIndex", "url": "YAHOO.widget.Carousel.html#method__getValidIndex", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "getVisibleItems", "url": "YAHOO.widget.Carousel.html#method_getVisibleItems", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_hasFocus", "url": "YAHOO.widget.Carousel.html#property__hasFocus", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_hasRendered", "url": "YAHOO.widget.Carousel.html#property__hasRendered", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "hide", "url": "YAHOO.widget.Carousel.html#method_hide", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "hide", "url": "YAHOO.widget.Carousel.html#event_hide", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "HORIZONTAL", "url": "YAHOO.widget.Carousel.html#property_HORIZONTAL", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "HORZ_MIN_WIDTH", "url": "YAHOO.widget.Carousel.html#property_HORZ_MIN_WIDTH", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "init", "url": "YAHOO.widget.Carousel.html#method_init", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "initAttributes", "url": "YAHOO.widget.Carousel.html#method_initAttributes", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "initEvents", "url": "YAHOO.widget.Carousel.html#method_initEvents", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "instances", "url": "YAHOO.widget.Carousel.html#property_instances", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "isAnimating", "url": "YAHOO.widget.Carousel.html#method_isAnimating", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_isAnimationInProgress", "url": "YAHOO.widget.Carousel.html#property__isAnimationInProgress", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_isAutoPlayInProgress", "url": "YAHOO.widget.Carousel.html#property__isAutoPlayInProgress", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "isAutoPlayOn", "url": "YAHOO.widget.Carousel.html#method_isAutoPlayOn", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "isCircular", "url": "YAHOO.widget.Carousel.html#config_isCircular", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "isCircularChange", "url": "YAHOO.widget.Carousel.html#event_isCircularChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "isVertical", "url": "YAHOO.widget.Carousel.html#config_isVertical", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "isVerticalChange", "url": "YAHOO.widget.Carousel.html#event_isVerticalChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "itemAdded", "url": "YAHOO.widget.Carousel.html#event_itemAdded", "type": "event"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_itemAttrCache", "url": "YAHOO.widget.Carousel.html#property__itemAttrCache", "type": "property"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_itemClickHandler", "url": "YAHOO.widget.Carousel.html#method__itemClickHandler", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "ITEM_LOADING", "url": "YAHOO.widget.Carousel.html#property_ITEM_LOADING", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "ITEM_LOADING_CONTENT", "url": "YAHOO.widget.Carousel.html#property_ITEM_LOADING_CONTENT", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "itemRemoved", "url": "YAHOO.widget.Carousel.html#event_itemRemoved", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "itemReplaced", "url": "YAHOO.widget.Carousel.html#event_itemReplaced", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "itemSelected", "url": "YAHOO.widget.Carousel.html#event_itemSelected", "type": "event"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_itemsTable", "url": "YAHOO.widget.Carousel.html#property__itemsTable", "type": "property"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_keyboardEventHandler", "url": "YAHOO.widget.Carousel.html#method__keyboardEventHandler", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "lastVisible", "url": "YAHOO.widget.Carousel.html#config_lastVisible", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "lastVisibleChange", "url": "YAHOO.widget.Carousel.html#event_lastVisibleChange", "type": "event"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_loadItems", "url": "YAHOO.widget.Carousel.html#method__loadItems", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "loadItems", "url": "YAHOO.widget.Carousel.html#event_loadItems", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "MAX_PAGER_BUTTONS", "url": "YAHOO.widget.Carousel.html#property_MAX_PAGER_BUTTONS", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "MIN_WIDTH", "url": "YAHOO.widget.Carousel.html#property_MIN_WIDTH", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "MULTI_ROW", "url": "YAHOO.widget.Carousel.html#property_MULTI_ROW", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_navBtns", "url": "YAHOO.widget.Carousel.html#property__navBtns", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "NAV_CONTAINER", "url": "YAHOO.widget.Carousel.html#property_NAV_CONTAINER", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_navEl", "url": "YAHOO.widget.Carousel.html#property__navEl", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "NAVIGATION", "url": "YAHOO.widget.Carousel.html#property_NAVIGATION", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "navigation", "url": "YAHOO.widget.Carousel.html#config_navigation", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "navigationChange", "url": "YAHOO.widget.Carousel.html#event_navigationChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "navigationStateChange", "url": "YAHOO.widget.Carousel.html#event_navigationStateChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "NEXT_BUTTON_TEXT", "url": "YAHOO.widget.Carousel.html#property_NEXT_BUTTON_TEXT", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_nextEnabled", "url": "YAHOO.widget.Carousel.html#property__nextEnabled", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "NEXT_NAV", "url": "YAHOO.widget.Carousel.html#property_NEXT_NAV", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "NEXT_PAGE", "url": "YAHOO.widget.Carousel.html#property_NEXT_PAGE", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "numItems", "url": "YAHOO.widget.Carousel.html#config_numItems", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "numItemsChange", "url": "YAHOO.widget.Carousel.html#event_numItemsChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "numPages", "url": "YAHOO.widget.Carousel.html#config_numPages", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "numPagesChange", "url": "YAHOO.widget.Carousel.html#event_numPagesChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "NUM_VISIBLE", "url": "YAHOO.widget.Carousel.html#property_NUM_VISIBLE", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "numVisible", "url": "YAHOO.widget.Carousel.html#config_numVisible", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "numVisibleChange", "url": "YAHOO.widget.Carousel.html#event_numVisibleChange", "type": "event"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_numVisibleSetter", "url": "YAHOO.widget.Carousel.html#method__numVisibleSetter", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "pageChange", "url": "YAHOO.widget.Carousel.html#event_pageChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "PAGE_FOCUS", "url": "YAHOO.widget.Carousel.html#property_PAGE_FOCUS", "type": "property"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_pagerChangeHandler", "url": "YAHOO.widget.Carousel.html#method__pagerChangeHandler", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_pagerClickHandler", "url": "YAHOO.widget.Carousel.html#method__pagerClickHandler", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "PAGER_ITEM", "url": "YAHOO.widget.Carousel.html#property_PAGER_ITEM", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "PAGER_PREFIX_TEXT", "url": "YAHOO.widget.Carousel.html#property_PAGER_PREFIX_TEXT", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_pages", "url": "YAHOO.widget.Carousel.html#property__pages", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_pagination", "url": "YAHOO.widget.Carousel.html#property__pagination", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "PAGINATION", "url": "YAHOO.widget.Carousel.html#property_PAGINATION", "type": "property"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "parseCarousel", "url": "YAHOO.widget.Carousel.html#method_parseCarousel", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "parseCarouselItems", "url": "YAHOO.widget.Carousel.html#method_parseCarouselItems", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "parseCarouselNavigation", "url": "YAHOO.widget.Carousel.html#method_parseCarouselNavigation", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_prevEnabled", "url": "YAHOO.widget.Carousel.html#property__prevEnabled", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "PREVIOUS_BUTTON_TEXT", "url": "YAHOO.widget.Carousel.html#property_PREVIOUS_BUTTON_TEXT", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "PREV_PAGE", "url": "YAHOO.widget.Carousel.html#property_PREV_PAGE", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_recomputeSize", "url": "YAHOO.widget.Carousel.html#property__recomputeSize", "type": "property"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_refreshUi", "url": "YAHOO.widget.Carousel.html#method__refreshUi", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "registerPagination", "url": "YAHOO.widget.Carousel.html#method_registerPagination", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "removeItem", "url": "YAHOO.widget.Carousel.html#method_removeItem", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "render", "url": "YAHOO.widget.Carousel.html#method_render", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "replaceItem", "url": "YAHOO.widget.Carousel.html#method_replaceItem", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "replaceItems", "url": "YAHOO.widget.Carousel.html#method_replaceItems", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "revealAmount", "url": "YAHOO.widget.Carousel.html#config_revealAmount", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "revealAmountChange", "url": "YAHOO.widget.Carousel.html#event_revealAmountChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "ROW", "url": "YAHOO.widget.Carousel.html#property_ROW", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "_rows", "url": "YAHOO.widget.Carousel.html#property__rows", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "scrollBackward", "url": "YAHOO.widget.Carousel.html#method_scrollBackward", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "scrollForward", "url": "YAHOO.widget.Carousel.html#method_scrollForward", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "scrollIncrement", "url": "YAHOO.widget.Carousel.html#config_scrollIncrement", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "scrollIncrementChange", "url": "YAHOO.widget.Carousel.html#event_scrollIncrementChange", "type": "event"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "scrollPageBackward", "url": "YAHOO.widget.Carousel.html#method_scrollPageBackward", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "scrollPageForward", "url": "YAHOO.widget.Carousel.html#method_scrollPageForward", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "scrollTo", "url": "YAHOO.widget.Carousel.html#method_scrollTo", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "SELECTED_ITEM", "url": "YAHOO.widget.Carousel.html#property_SELECTED_ITEM", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "selectedItem", "url": "YAHOO.widget.Carousel.html#config_selectedItem", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "selectedItemChange", "url": "YAHOO.widget.Carousel.html#event_selectedItemChange", "type": "event"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_selectedItemSetter", "url": "YAHOO.widget.Carousel.html#method__selectedItemSetter", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "SELECTED_NAV", "url": "YAHOO.widget.Carousel.html#property_SELECTED_NAV", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "selectNextItem", "url": "YAHOO.widget.Carousel.html#method_selectNextItem", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "selectOnScroll", "url": "YAHOO.widget.Carousel.html#config_selectOnScroll", "type": "config"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "selectOnScrollChange", "url": "YAHOO.widget.Carousel.html#event_selectOnScrollChange", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "selectPreviousItem", "url": "YAHOO.widget.Carousel.html#method_selectPreviousItem", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setCarouselOffset", "url": "YAHOO.widget.Carousel.html#method__setCarouselOffset", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setClipContainerSize", "url": "YAHOO.widget.Carousel.html#method__setClipContainerSize", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setContainerSize", "url": "YAHOO.widget.Carousel.html#method__setContainerSize", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setFirstVisible", "url": "YAHOO.widget.Carousel.html#method__setFirstVisible", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "setItemSelection", "url": "YAHOO.widget.Carousel.html#method_setItemSelection", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setNavigation", "url": "YAHOO.widget.Carousel.html#method__setNavigation", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setNumItems", "url": "YAHOO.widget.Carousel.html#method__setNumItems", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setNumVisible", "url": "YAHOO.widget.Carousel.html#method__setNumVisible", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setOrientation", "url": "YAHOO.widget.Carousel.html#method__setOrientation", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setRevealAmount", "url": "YAHOO.widget.Carousel.html#method__setRevealAmount", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setSelectedItem", "url": "YAHOO.widget.Carousel.html#method__setSelectedItem", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "setStyles", "url": "YAHOO.widget.Carousel.html#method_setStyles", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_setupCarouselNavigation", "url": "YAHOO.widget.Carousel.html#method__setupCarouselNavigation", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "show", "url": "YAHOO.widget.Carousel.html#method_show", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "show", "url": "YAHOO.widget.Carousel.html#event_show", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "startAutoPlay", "url": "YAHOO.widget.Carousel.html#method_startAutoPlay", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "startAutoPlay", "url": "YAHOO.widget.Carousel.html#event_startAutoPlay", "type": "event"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "stopAutoPlay", "url": "YAHOO.widget.Carousel.html#method_stopAutoPlay", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "stopAutoPlay", "url": "YAHOO.widget.Carousel.html#event_stopAutoPlay", "type": "event"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "syncNavigation", "url": "YAHOO.widget.Carousel.html#method_syncNavigation", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "syncPagerUi", "url": "YAHOO.widget.Carousel.html#method_syncPagerUi", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "syncUi", "url": "YAHOO.widget.Carousel.html#method_syncUi", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_syncUiForItemAdd", "url": "YAHOO.widget.Carousel.html#method__syncUiForItemAdd", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_syncUiForItemReplace", "url": "YAHOO.widget.Carousel.html#method__syncUiForItemReplace", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_syncUiForLazyLoading", "url": "YAHOO.widget.Carousel.html#method__syncUiForLazyLoading", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_syncUiItems", "url": "YAHOO.widget.Carousel.html#method__syncUiItems", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "toString", "url": "YAHOO.widget.Carousel.html#method_toString", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_updateNavButtons", "url": "YAHOO.widget.Carousel.html#method__updateNavButtons", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_updatePagerButtons", "url": "YAHOO.widget.Carousel.html#method__updatePagerButtons", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_updatePagerMenu", "url": "YAHOO.widget.Carousel.html#method__updatePagerMenu", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "updatePagination", "url": "YAHOO.widget.Carousel.html#method_updatePagination", "type": "method"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "updateStateAfterScroll", "url": "YAHOO.widget.Carousel.html#method_updateStateAfterScroll", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_updateTabIndex", "url": "YAHOO.widget.Carousel.html#method__updateTabIndex", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_validateAnimation", "url": "YAHOO.widget.Carousel.html#method__validateAnimation", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_validateFirstVisible", "url": "YAHOO.widget.Carousel.html#method__validateFirstVisible", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_validateNavigation", "url": "YAHOO.widget.Carousel.html#method__validateNavigation", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_validateNumItems", "url": "YAHOO.widget.Carousel.html#method__validateNumItems", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_validateNumVisible", "url": "YAHOO.widget.Carousel.html#method__validateNumVisible", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_validateRevealAmount", "url": "YAHOO.widget.Carousel.html#method__validateRevealAmount", "type": "method"}, {"access": "protected", "host": "YAHOO.widget.Carousel", "name": "_validateScrollIncrement", "url": "YAHOO.widget.Carousel.html#method__validateScrollIncrement", "type": "method"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "VERTICAL", "url": "YAHOO.widget.Carousel.html#property_VERTICAL", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "VERTICAL_CONTAINER", "url": "YAHOO.widget.Carousel.html#property_VERTICAL_CONTAINER", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "VERT_MIN_WIDTH", "url": "YAHOO.widget.Carousel.html#property_VERT_MIN_WIDTH", "type": "property"}, {"access": "", "host": "YAHOO.widget.Carousel", "name": "VISIBLE", "url": "YAHOO.widget.Carousel.html#property_VISIBLE", "type": "property"}, {"access": "private", "host": "YAHOO.widget.Carousel", "name": "WidgetName", "url": "YAHOO.widget.Carousel.html#property_WidgetName", "type": "property"}];
</script>
</body>
</html>