/************************************************

*   scrollerMoo v.0                             *

*   Http: WwW.developer.ps/moo/scrollermoo      *

*   Dirar Abu Kteish dirar@zanstudio.com        *

*   The code was inspired from jd.gallery.js    *

*    and jd.gallery.css. WebSite:               *

*    smoothgallery.jondesign.net                *

/***********************************************/



var scrollerMoo = new Class({

    initialize: function(element, options) {

		this.setOptions({

			steps: 3, 

			wrapperClass: 'div.scrollerMooWrapper',

			scrollerItemSelector: 'div.scrollerMooItem'			

	    }, options);

	    this.currentPos = 0;

	    this.scrollerItems = null;

	    this.scrollerElement = element;

	    this.wrapperDiv = element.getElement(this.options.wrapperClass);

	    this.scrollEff = new Fx.Scroll(this.wrapperDiv, {wait: false,duration: 4000,

                                        offset: {'x': -3, 'y': 0},

                                        transition: Fx.Transitions.Quad.easeInOut

                        });

	    this.initScrollerMoo();

	    

	},

	initScrollerMoo: function() {

	    var ele = this.scrollerElement;

		var options = this.options;

		this.scrollerItems = this.wrapperDiv.getElements(options.scrollerItemSelector);

		

		this.scrollerItems.each(function(el, i){

		    el.addEvent('mouseover',

		        function() {

		            var pos = el.getCoordinates(this.scrollerItems).left - this.wrapperDiv.getSize().scroll.x;

		            var elWidth = this.wrapperDiv.getCoordinates(this.scrollerItems).width + 100;

		            

		            if(pos <  (elWidth / 2)){

		                this.scrollEff.toElement(this.scrollerItems[i + 1]);

		            }

		            else{

		                this.scrollEff.toElement(this.scrollerItems[i - 1]);

		            }

		            //alert(this.wrapperDiv.getSize().scrollSize.x );

		            

		            //alert(this.wrapperDiv.getCoordinates(this.scrollerItems).left);

		            //this.scrollEff.toElement(this.scrollerItems[i + 1]);                    

		        }.bind(this)

		    );		    

		}.bind(this));

		if (this.scrollerItems.length > 1)

		{

			new Element('a').addClass('left').addEvent(

				'click',function(){this.scrollToItem(-1);}.bind(this)).injectBefore(this.wrapperDiv);

			new Element('a').addClass('right').addEvent(

				'click',function(){this.scrollToItem(1);}.bind(this)).injectAfter(this.wrapperDiv);

		}		

	},

	scrollToItem: function(dir) {

        var move = dir * this.options.steps;

        var index = (this.scrollerItems[this.currentPos+move]) ? this.currentPos+move : ((this.currentPos+move) > 0) ? this.scrollerItems.length-1 : 0;

        //alert(index);

        if(((index + 1) >= this.scrollerItems.length) && (index % this.options.steps) != 0){return;}

        this.scrollEff.toElement(this.scrollerItems[index]);

        this.currentPos = index;       

	}

	

});

scrollerMoo.implement(new Options);


