;(function($) {

	var timer = 0;
	var timerOn = 0;
	var obj;
	var width;
	var index = 0;
	var progress = 0;

    $.fn.sfCarousel = function(options) {
        var opts = $.extend({}, $.fn.sfCarousel.defaults, options);
        return this.each(function() {
			obj = $(this);
            init(opts);
        });
    };
    
    $.fn.sfCarousel.defaults = {
        speed: 2000,
        width: 400,
        height: 200,
		title: 'sfCarousel'
    };
    
	function init(opts) {
		obj.addClass('sfCarousel')
			.css('width',opts.width+'px')
			.css('height',opts.height+'px');
			
		// add buttons 
		var buttonbar = $('<div/>',{ 'class':'buttonbar'});
		$('<div/>',{'class':'left',click: function() { moveLeft(opts) } }).appendTo(buttonbar);
		$('<div/>',{'class':'name'}).text(opts.title).appendTo(buttonbar);
		$('<div/>', {'class':'right',click: function() { moveRight(opts) } }).appendTo(buttonbar);	
		
		obj.append(buttonbar);
		
		var totalWidth = $('.buttonbar .left').width()+$('.buttonbar .name').width()+$('.buttonbar .right').width()
		var marginLeft = (obj.width()-totalWidth)/2;
		buttonbar.css('marginLeft',marginLeft+'px');
				
		lineup(opts);
	}
	
	function lineup(opts) {

		var len = $('im',obj).length;
		index = parseInt(len/2);

		var width = $('img:eq(1)',obj).width();
		var diff = parseInt(width/2);
		var leftPos = parseInt((opts.width/2)-diff);

		var left = 0-leftPos;
		$('img', obj).each(function(i) {
			$(this).css('left',left+'px');
			left += parseInt(($(this).width()))+5;
			width = left;
		});
	}
	
	function moveLeft(opts) {
	
	    if(progress) return false;	    
	    progress = 1;
	
		index++;
		// put last first
		// get left pos
		
		var left = parseInt($('img:first',obj).css('left'));
		var width = $('img:last',obj).width();
		
		//var diff = parseInt(width/2);
		//var leftPos = parseInt((opts.width/2)-diff);
		
		var leftPos = left-width-5;
		
		$('img:last',obj).clone()
						.css('left',leftPos+'px')
						.prependTo(obj);
		var r = $('img:last',obj);
		var w = $('img:first',obj).width()+5;
		$('img',obj).animate({
			left: '+='+w
		},function() {
		    if(r) {
                r.remove();
	     	    progress = 0;
		     }
	    });	
	}
	
	function moveRight(opts) {

	    if(progress) return false;	    
	    progress = 1;

		index--;

		// put first last
		// get left pos
		var left = parseInt($('img:last',obj).css('left'));
		var width = $('img:first',obj).width();

		//var diff = parseInt(width/2);
		//var leftPos = parseInt((opts.width/2)-diff);

		var leftPos = left+width+5;

		$('img:first',obj).clone()
						.css('left',leftPos+'px')
						.appendTo(obj);
		var r = $('img:first', obj);				var w = $('img:first',obj).width()+5;
		$('img',obj).animate({
			left: '-='+w
		},function() {
		    if(r) {
		        r.remove();
		        progress = 0;
	        }
		});
		
	}

})(jQuery);
