jQuery.fn.imageRoll = function(settings) {

	if(!settings) settings = {};
	if(!settings.speed) settings.speed = 300;
	if(!settings.currentIndex) settings.currentIndex = 0;
	if(!settings.overlay) settings.overlay = null;

	return this.each(function() {
		$(this).mousedown(function(event) {
			if(!$.browser["safari"])
			{
				event.preventDefault();
			}
		});

		$(this).find('li').wrapAll('<div class="scroller" />');

		var parentID = $(this).attr('id');

		$('#' + parentID + ' div.scroller li').removeClass('hovered');

		if($('#' + parentID + ' div.scroller li:first').hasClass('placeHolder'))
		{
			$('#' + parentID + ' div.scroller li:first').addClass('hovered');
		}
		if($('#' + parentID + ' div.scroller li:last').hasClass('placeHolder'))
		{
			$('#' + parentID + ' div.scroller li:last').addClass('hovered');
		}

		if(settings.overlayImage)
		{
			manageOverlays(settings, parentID);
		}

		if($(this).find('li').size() > 6)
		{
			if($(this).find('span.overlayBackgroundLeft').length == 0)
			{
//				$(this).append('<span class="overlayBackground overlayBackgroundLeft" />');
				$(this).append('<span class="overlayArrow overlayArrowLeft" />');
//				$(this).append('<span class="overlayBackground overlayBackgroundRight" />');
				$(this).append('<span class="overlayArrow overlayArrowRight" />');
//				$(this).append('<span class="overlayScroll overlayScrollLeft">SCROLL</span>');
//				$(this).append('<span class="overlayScroll overlayScrollRight">SCROLL</span>');
//				$(this).find('span.overlayBackgroundLeft').click(function() { moveImageRollLeft(settings, parentID); });
				$(this).find('span.overlayArrowLeft').click(function() { moveImageRollLeft(settings, parentID); });
//				$(this).find('span.overlayScrollLeft').click(function() { moveImageRollLeft(settings, parentID); });
//				$(this).find('span.overlayBackgroundRight').click(function() { moveImageRollRight(settings, parentID); });
				$(this).find('span.overlayArrowRight').click(function() { moveImageRollRight(settings, parentID); });
//				$(this).find('span.overlayScrollRight').click(function() { moveImageRollRight(settings, parentID); });
				$('#' + parentID + ' div.scroller li').eq(0).addClass('underLeftArrow');
				$('#' + parentID + ' div.scroller li').eq(5).addClass('underRightArrow');

			}
		}
	});
};

function moveImageRollLeft(settings, parentID) {
	// Click left button
	var last = $('#' + parentID + ' div.scroller li:last');
	last.hide();
	last.prependTo('#' + parentID + ' div.scroller');
	last.animate({width: 'toggle'}, settings.speed);

	if(settings.overlayImage)
	{
		manageOverlays(settings, parentID)
	}
	$('#' + parentID + ' div.scroller li').removeClass('hovered')

	var prevLeft = $('#' + parentID + ' div.scroller li.underLeftArrow').prev().attr('id');
	var prevRight = $('#' + parentID + ' div.scroller li.underRightArrow').prev().attr('id');

	$('#' + parentID + ' div.scroller li').removeClass('underLeftArrow');
	$('#' + prevLeft).addClass('underLeftArrow');

	$('#' + parentID + ' div.scroller li').removeClass('underRightArrow');
	$('#' + prevRight).addClass('underRightArrow');

	if($('#' + parentID + ' div.scroller li:first').hasClass('placeHolder'))
	{
		$('#' + parentID + ' div.scroller li:first').addClass('hovered');
	}
	if($('#' + parentID + ' div.scroller li:last').hasClass('placeHolder'))
	{
		$('#' + parentID + ' div.scroller li:last').addClass('hovered');
	}
	return false;
}


function moveImageRollRight(settings, parentID) {
	// Click right button
	var first = $('#' + parentID + ' div.scroller li').get(0);
	var last = $(first).clone();

	last.appendTo('#' + parentID + ' div.scroller');

	$(first).animate({paddingRight: '0px'}, settings.speed / 10, 'linear');
	$(first).animate({width: 'toggle'}, settings.speed * 9 / 10, function(){
		$(first).remove();
	});

	if(settings.overlayImage)
	{
		manageOverlays(settings, parentID)
	}
	$('#' + parentID + ' div.scroller li').removeClass('hovered');

	var nextLeft = $('#' + parentID + ' div.scroller li.underLeftArrow').next().attr('id');
	var nextRight = $('#' + parentID + ' div.scroller li.underRightArrow').next().attr('id');

	$('#' + parentID + ' div.scroller li').removeClass('underLeftArrow');
	$('#' + nextLeft).addClass('underLeftArrow');

	$('#' + parentID + ' div.scroller li').removeClass('underRightArrow');
	$('#' + nextRight).addClass('underRightArrow');

	if($(first).next().hasClass('placeHolder'))
	{
		$(first).next().addClass('hovered');
	}
	if($('#' + parentID + ' div.scroller li:last').hasClass('placeHolder'))
	{
		$('#' + parentID + ' div.scroller li:last').addClass('hovered');
	}
	return false;
}

function manageOverlays(settings, parentID)
{
	var count = 0;

	if($('#' + parentID).find('li').size() > 6)
	{
		$('#' + parentID).find('div.scroller li a').each(function() {
			if(count == 0 || count >= 6)
			{
				//$(this).find('img.thumbOverlay').remove();
				$(this).prepend('<img class="thumbOverlay" src="' + settings.overlayImage + '" />');
			}
			else if($(this).find('img.thumbOverlay').length == 0)
			{
				$(this).prepend('<img class="thumbOverlay" src="' + settings.overlayImage + '" />');
			}
			count++;
		});
	}
	else
	{
		$('#' + parentID).find('div.scroller li a').each(function() {
			if($(this).find('img.thumbOverlay').length == 0)
			{
				$(this).prepend('<img class="thumbOverlay" src="' + settings.overlayImage + '" />');
			}
		});
	}
}

