/*
Class: PageCleanUp
	
	
Note:
	The DataRevrieval requires an XHTML doctype.

Arguments:
	element - the knob container
	knob - the handle
	numberOfSteps - the number of steps
	options - see Options below

Options:
	mode - either 'horizontal' or 'vertical'. defaults to horizontal.
	offset - relative offset for knob position. default to 0.
	
Events:
	onComplete - a function to fire when you're done retrieving data.
*/
var PageCleanUp = new Class({
	
	options: {
		interval : 1700,
		maxItems : 10
		//onComplete: Class.empty,
		//onError: Class.empty
	},
	
	initialize : function ( viewport , options ) {
		this.setOptions(options);
		this.viewport = viewport;
		this.clean = (function(){this.cleanPages();}).periodical(this.options.interval,this);
	},
	
	cleanPages : function () {
		if (LoadedItemManager.numberOfLoadedItems() > this.options.maxItems ) 
		{
			// we need to find the farthest page from the current page.
			var currentItem = this.viewport.currentRow;
			var extraItems = LoadedItemManager.numberOfLoadedItems() - this.options.maxItems;
			for ( i = 0; i < extraItems ; i++ )
			{
				// get the outer extramity items.
				hiItem = LoadedItemManager.itemArray[LoadedItemManager.numberOfLoadedItems() -1];
				lowItem = LoadedItemManager.itemArray[0];
				if ((currentItem - hiItem ) > (currentItem - lowItem)) 
				{
					this.fireEvent('removeitem',hiItem);
				}
				else
				{
					this.fireEvent('removeitem',lowItem);
				}
			}
		}
	}
	
});

PageCleanUp.implement(new Options);
PageCleanUp.implement(new Events);

