/**
 * @author Miguel Guerreiro (http://dharyk.net)
 */
(function($) {
	$.fn.carousel = function(options) {
		var $divContainer = this,
			$divFrame = $('<div />',{'class':'frame',css:{position:'absolute',top:0,left:0,width:874,height:344,zIndex:50}}),
			//$divViewport = $('<div />',{'class':'viewport',css:{position:'absolute',top:0,left:0,width:874,height:344,zIndex:100,background:'transparent url("media/img/frame-carousel.png") scroll no-repeat 0 0',cursor:'pointer'}}),
			$divViewport = $('<div />',{'class':'viewport',css:{position:'absolute',top:0,left:0,width:874,height:344,zIndex:100,cursor:'pointer'}}),
			$divCurrent = $('<img />',{css:{width:874,height:344}}),
			$divImages = [],
			interval = 0,
			timeOut = 3000,
			current = 0,
			total = 0,
			
			showNext = function() {
				show(current+1);
			},
			showPrev = function() {
				show(current-1);
			},
			show = function(index) {
				current = ((index<0) ? (total-1) : ((index>=total) ? 0 : index));
				$divCurrent.stop()
					.fadeOut(500, function() {
						$divCurrent
							.attr('src', $divImages[current].image)
							.attr('alt', $divImages[current].title)
							.attr('title', $divImages[current].title)
							.fadeIn(500);
					});
			},
			items = $divContainer.find('.image');
		// init
		timeOut		= options.timeout||timeOut;
		for (var i=0; i<items.length; i++) {
			$divImages.push({
				image: $(items[i]).find('img').attr('src'),
				title: $(items[i]).find('img').attr('alt'),
				link: $(items[i]).find('a').attr('href')
			});
			total++;
		}
		$divContainer.html('');
		$divFrame.appendTo($divContainer);
		$divViewport.appendTo($divContainer);
		$divCurrent.attr('src', $divImages[0].image)
			.attr('alt', $divImages[0].title)
			.attr('title', $divImages[0].title)
			.appendTo($divFrame);
		interval = setInterval(showNext,timeOut);
		$divContainer.click(function() {
			if (/^javascript\:/.test($divImages[current].link)) {
				eval($divImages[current].link.substr(11));
			} else {
				window.location.href = $divImages[current].link;
			}
		});
		$divContainer.hover(function() {
			clearInterval(interval);
		},function() {
			interval = setInterval(function(){
				showNext();
			},timeOut);
		});
		return this;
	}
})(jQuery);

