﻿/*
Class: SimplePrediction
	
	
Note:
	The SimplePrediction requires an XHTML doctype.

Arguments:
	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 SimplePrediction = new Class({
	
	options: {
		interval : 1700,
		maxElements : 1,
		elementThreshold : 4,
		elementsPerPage : 9
		//onComplete: Class.empty,
		//onError: Class.empty
	},
	
	initialize : function ( viewport, itemRequest, options ){
		this.setOptions(options);
		this.viewport = viewport;
		this.itemRequest = itemRequest;
		this.clean = (function(){this.predict();}).periodical(this.options.interval,this);
	},
	
	predict : function () {
	    var elementNumber = this.viewport.currentRow;
	    var pageNumber = (elementNumber / this.options.elementsPerPage).toInt() + 1;
	    // check to see if we need load the next page..
		// should be moved to simplePredicition
		// are we within the begin threshhold
		//if ( Math.abs((this.options.elementsPerPage * itemNumber) - elementNumber) > this.options.elementThreshold)
		//{ 
		//    itemNumber++;
        //}
		//else if ( Math.abs((this.options.elementsPerPage * (itemNumber +1))- elementNumber) > this.options.elementThreshold )
        //{
		//    itemNumber--;	
        //}
        //if ( (pageNumber+1) * this.options.elementsPerPage )
            this.itemRequest.addRequestItem(pageNumber+1 ,1);
        if ( (pageNumber-1) * this.options.elementsPerPage > 0 )
            this.itemRequest.addRequestItem(pageNumber-1 ,1);
          
	}
});

SimplePrediction.implement(new Options);
SimplePrediction.implement(new Events);

	
