/**
* jquery.gallery.1.0.js
* Written by Carmelo Capinpin
*/
(function($) {
	$.fn.gallery = function(options) {
		var settings = $.extend({
			preview    : '.preview',
			caption    : '.caption',
			collection : '.collection',
			up         : '.up',
			down       : '.down',
			icon       : '.icon',
			delay      : 50,
			step       : 10,
		}, options);

		var timeout;
		var direction = false;

		this.each(function(index) {
			var gallery = $(this);

				gallery.find(settings.icon).each(function(idx) {
					var icon = $(this);
						icon.click(function(e) {
							gallery.find(settings.preview).find('img').attr('src',icon.attr('src'));
							gallery.find(settings.caption).html(icon.attr('title'));
						});
				});

				gallery.find(settings.icon).eq(0).trigger('click');

				gallery.find(settings.up).find('img')
					.mousedown(function() {
						direction = 'up';
						move();
					})
					.mouseup(function() {
						direction = false;
					});

				gallery.find(settings.down).find('img')
					.mousedown(function() {
						direction = 'down';
						move();
					})
					.mouseup(function() {
						direction = false;
					});

			function move() {
				_top = parseInt(gallery.find(settings.collection).find('ul').css('top'));
				_height = gallery.find(settings.collection).find('ul').height();
				collection_height = gallery.find(settings.collection).height();

				if (direction == 'up') {
					if (_top < 0) {
						_top+= settings.step;
						gallery.find(settings.collection).find('ul').css('top',_top+'px');
					}
				}
				if (direction == 'down') {
					if ((_height + _top) > collection_height) {
						_top-= settings.step;
						gallery.find(settings.collection).find('ul').css('top',_top+'px');
					}
				}
				if (direction) {
					timeout = setTimeout(function() {
						move();
					}, settings.delay);
				}
			}
		})
	}
})(jQuery);
