<?xml version="1.0" encoding="utf-8"?>
<mx:HorizontalList xmlns:mx="http://www.adobe.com/2006/mxml" backgroundAlpha="0.0"
			borderStyle="none"
			height="21"
			columnWidth="33"
			itemRenderer="fr.view.itemRenderers.PaginatorItem"
			variableRowHeight="false" >
	<mx:Script>
		<![CDATA[
			import mx.events.CollectionEventKind;
			import mx.events.CollectionEvent;
			import mx.collections.ArrayCollection;

			private var candidateDataProvider: ArrayCollection;
			private var dataProviderDirty: Boolean = false;
			private var _maxPages: int = 100;
			private var _visiblePagesOffset: int = 1;

		public function get maxPages():int
		{
			return _maxPages;
		}

		public function set maxPages(value:int):void
		{
			_maxPages = 100 ;//value ;
			trace("Fastnavigation: max pages visible = " + _maxPages);
		}

		override protected function measure():void
		{
			super.measure();

			if (dataProvider != null)
			{
				measuredWidth = (dataProvider as ArrayCollection).length * columnWidth;
			}
		}

		override protected function commitProperties():void
		{
			super.commitProperties();

			if (dataProviderDirty && candidateDataProvider != null)
			{
				// Rost: to support maximum visible items property
				var dataProviderOffset: int = 1;//_visiblePagesOffset;
				var dataProviderLength: int = candidateDataProvider.length; //Math.min(maxPages, candidateDataProvider.length);

				var newDataProvider: ArrayCollection = new ArrayCollection();

				newDataProvider.addItem(candidateDataProvider.getItemAt(0));

				for(var i: int = dataProviderOffset; i < dataProviderLength; )
				{
					newDataProvider.addItem( candidateDataProvider.getItemAt( i ) );

					i = i + 2;
				}

			   super.dataProvider = newDataProvider;
			   dataProviderDirty = false;
			}
		}

		override public function set dataProvider(value: Object): void
		{
			candidateDataProvider = value as ArrayCollection;

			dataProviderDirty = true;
			invalidateProperties();
		}

		public function get activePage():int
		{
			return selectedIndex;
		}

		public function set activePage(value: int): void
		{
//			trace("Active page = " + value);
//
//			if( candidateDataProvider != null )
//			{
//				//_visiblePagesOffset = Math.max(1, Math.min( (activePage), candidateDataProvider.length - _maxPages));
//				_visiblePagesOffset = activePage;
//
//				trace("visiblePagesOffset = " + _visiblePagesOffset, " cand = " + candidateDataProvider.length);
//			}
//
//			dataProviderDirty = true;
//
//			invalidateProperties();
//
//			invalidateDisplayList();
//
			selectedIndex = value;
		}

		public function get upSource(): String
		{
			return _upSource;
		}

		public function set upSource(value: String): void
		{
			_upSource = value;
		}

		public function get activeUpSource(): String
		{
			return _activeUpSource;
		}

		public function set activeUpSource(value: String): void
		{
			_activeUpSource = value;
		}

		private var _upSource: String = "";
		private var _overSource: String = "";
		private var _downSource: String = "";

		private var _activeUpSource: String = "";
		private var _activeOverSource: String = "";
		private var _activeDownSource: String = "";

		]]>
	</mx:Script>
</mx:HorizontalList>