window.addEvent('domready', function(){
	
	$$('div.wtgallery_list').addEvent('mouseenter', function(){
    		this.getElement('a').fireEvent('mouseenter');
	});
	
	/*
	var gs_c = $('select_image');
	if(gs_c){
		var category_scroller = new wtgallery_scroller(gs_c, gs_c.getElements('div.wtgallery_categories'), {step: 75,period: 400, selected:gs_c.getElement('div.wtgallery_category_selected')});
		category_scroller.bind($('select_go_left'), ['mouseenter'], ['mouseout'], -1);
		category_scroller.bind($('select_go_right'), ['mouseenter'], ['mouseout'], 1);
		category_scroller.bind($('select_go_left'), ['click'], [], -1);
		category_scroller.bind($('select_go_right'), ['click'], [], 1);
	}
	*/
	
	
	var gs_h = $('list_image_gallery');
	if(gs_h){
		gs_h = gs_h.getElement('div.image_gallery');
		if(gs_h){
			var images = gs_h.getElements('img');
			var imagessrc = [];
			images.each(function(img,idx){imagessrc[idx]=img.getProperty('src');});
			var loader = new Asset.images(imagessrc, {
				onComplete: function() {
					var gallery_scroller = new wtgallery_scroller(gs_h, gs_h.getElements('div.wtgallery_list'), {step: 550, period: null});
					gallery_scroller.bind($('list_image_gallery').getElement('.image_go_left'), ['mouseenter'], [], -1);
					gallery_scroller.bind($('list_image_gallery').getElement('.image_go_right'), ['mouseenter'], [], 1);	
				}
			});
		}
	}
});


var wtgallery_scroller = new Class({
	
	Implements: [Options],
	
	options: {
		step: 1,
		period: 250,
		selected: null
	},
	
	initialize: function(el, items, options){
		this.setOptions(options);
		this.content = $(el);
		this.scroller = this.content.getElement('div');
		
		var scrollwidth = 10;
		var dd = false;
		items.each(function(item, idx){
			scrollwidth += item.getCoordinates().width + parseInt(item.getStyle('margin-left')) + parseInt(item.getStyle('margin-right'));
		});
		scrollwidth += parseInt(this.scroller.getStyle('padding-left')) + parseInt(this.scroller.getStyle('padding-right'));
		
		this.scroller.tween('width', scrollwidth);
		
		
		this.current = 0;
		this.min = 0;
		this.max = scrollwidth - this.content.getCoordinates().width;
		
		if(this.options.selected){
			var selLeft = this.options.selected.getPosition(this.scroller).x*-1;
			var hM = parseInt(this.options.selected.getCoordinates(this.scroller).top / this.options.selected.getCoordinates(this.scroller).height);
			
			if(hM > 0){
				selLeft -= (this.scroller.getScrollSize().x * hM) - this.options.selected.getCoordinates(this.scroller).width;
				
			}
			if(selLeft  < (this.max*-1)){
				selLeft  = (this.max*-1);
			}
			this.scroller.setStyle('margin-left', selLeft);
			this.current = selLeft;
		}
	},
	
	bind: function(elements, scrollEvents, stopEvents, direction){
		for(var i=0; i<scrollEvents.length; i++){
			elements.addEvent(scrollEvents[i], (function(){this.scroll(direction)}).bind(this));
			
		}
		if(this.options.period != null){
			for(var i=0; i<stopEvents.length; i++){
				elements.addEvent(stopEvents[i], this.stopScrolling.bind(this));
			}
		}
	},
	
	scrollLeft: function(){
		if(this.current < this.min){
			this.current += this.options.step;
			this.scroller.tween('margin-left', this.current);
		}
	},
	
	scrollRight: function(){
		if(this.current > (this.max*-1)){
			this.current -= this.options.step;
			this.scroller.tween('margin-left', this.current);
		}
	},
	
	scroll: function(direction){
		if(direction > 0){
			this.scrollRight();
			if(this.options.period != null){
				this.stopScrolling();
				this.scrolling = this.scrollRight.periodical(this.options.period, this);
			}
		}else{
			this.scrollLeft();
			if(this.options.period != null){
				this.stopScrolling();
				this.scrolling = this.scrollLeft.periodical(this.options.period, this);
			}
		}
	},
	
	stopScrolling: function(){
		$clear(this.scrolling);
	}

});
