
var dsc_ImageGallery = new Class({
	
	Implements: [Options, Events],
	options: {
		height : 10,
		width : 10,
		stepWidth: 2,
	},	

	container      : $empty,
	imageContainer : $empty,
	prevClicker    : $empty,
	nextClicker	   : $empty,
	items		   : $empty,
	scrollEffect : $empty,
	scrollPrevTimer : $empty,
	scrollNextTimer : $empty,
	scrollWidth : $empty,
	counterItems : $empty,
	
	initialize: function(container, options) {
		var self = this;
		self.container = container;
		self.setOptions(options);
		self.initGallery();
	},	
	
	initGallery: function() {
		var self = this;
		self.prevClicker = self.container.getElement('.dscimagegallery_prev');
		self.nextClicker = self.container.getElement('.dscimagegallery_next');
		self.imageContainer = self.container.getElement('.dscimagegallery_content');
		self.items = self.imageContainer.getElements('.dscimagegallery_item');
		self.counterItems = self.container.getElements('.dscimagegallery_counteritem');
		self.scrollEffect = new Fx.Scroll(self.imageContainer);
		
		self.scrollWidth = 0;
		self.items.each(function(el){
			self.scrollWidth += el.getSize().x;
			self.scrollWidth += 10;
			self.scrollWidth += 2;
		});
		
		self.prevClicker.addEvents({
			'mousedown' : function(e){e.stop();var a = function() {self.scrollPrev();};self.scrollPrevTimer = a.periodical(20);},
			'mouseup'   : function(){$clear(self.scrollPrevTimer);},
			'mouseleave'  : function(){$clear(self.scrollPrevTimer);}
		});
		self.nextClicker.addEvents({
			'mousedown' : function(e){e.stop();var a = function() {self.scrollNext();};self.scrollNextTimer = a.periodical(20);},
			'mouseup'   : function(){$clear(self.scrollNextTimer);},
			'mouseleave'  : function(){$clear(self.scrollNextTimer);}
		});
		
		var itemNumber = Math.ceil(self.imageContainer.getScroll().x / (self.scrollWidth / self.counterItems.length));
		self.updateCounter(-1, itemNumber);
	},
	
	clearTimer: function() {
		var self = this;
		$clear(self.scrollNextTimer);
	},

	scrollPrev: function() {
		var self = this;
		self.scroll(-1);
	},
	
	scrollNext: function() {
		var self = this;
		self.scroll(1);
	},
	
	scroll: function(value) {
		var self = this;
		self.imageContainer.scrollTo(self.imageContainer.getScroll().x + (self.options.stepWidth*value), 0);
		var itemNumberLast = 0;
		//itemNumberLast = parseInt(Math.ceil((self.imageContainer.getScroll().x + (self.options.stepWidth*value)) / self.options.stepWidth)) - (2*value);
		//var itemNumber = parseInt(itemNumberLast) + (1*value);
		var itemNumber = Math.ceil(self.imageContainer.getScroll().x / (self.scrollWidth / self.counterItems.length));
		//window.status = self.scrollWidth + " - " + self.counterItems.length + " - " + (self.scrollWidth / self.counterItems.length) + " - " + (self.imageContainer.getScroll().x / (self.scrollWidth / self.counterItems.length));
		itemNumberLast = itemNumber + (-1 * value);
		this.updateCounter(itemNumberLast, itemNumber);
	},
	
	updateCounter: function(itemNumberLast, itemNumber) {
		var self = this;
		var counter = 0;
		self.counterItems.each(function(el) {
			if(counter == itemNumberLast && itemNumberLast > -1) {
				el.className = "dscimagegallery_counteritem";
			}
			if(counter == itemNumber) {
				el.className = "dscimagegallery_counteritem active";
			}
			counter++;
		});
	}

});
