(function($) {

	$.fn.extend({
		fbslider: function(options) {

			var defaults = {
				speedHorizontal : 560,
				speedVertical : 360, 
				autoPlay : false,
				interval : 5000 
			};

			var options = $.extend(defaults, options);

			var slider = this;

			return this.each(function() {

                //Create references to the options
                var speedHorizontal = options.speedHorizontal;
                var speedVertical = options.speedVertical;
                var autoplay = options.autoplay;
                var interval = options.interval;

				var images = new Array();
				$('.slider-tab-list li').each(function(index){
					$(this).attr('rel',index);
					images[index] = $('.slider-background',this).attr('src');
				});
				
				slider.prepend('<img id="featureImg" src="'+images[0]+'" />');
				slider.attr('rel',"0");
				$(".slider-tab-list > li:first-child").attr("id","selected");
				//$(".slider-tab-list > li:first-child").css('marginTop','-75px');
				$(".slider-tab-list > li:first-child").css('marginTop',-($(".slider-tab-list > li:first-child").height() - 35));

				if(options.autoPlay) var timer = window.setInterval(forwardClick, interval);


				function mod(x,m) {
					return (x%m + m)%m;
				}

				function changeBackground(number)
				{

					slider.attr('rel',number);
					dimage = images[number];

					$('#featureImg').hide()
					.load(function () {
					  $(this).fadeIn('slow');
					})
					.attr('src', dimage)

				}
				function selectNews(prevnumber,number,hide)
				{
					if(hide){
						
						$('li[rel="'+ prevnumber+'"]').animate({marginTop:'0'},speedHorizontal,"linear");
						$('li[rel="'+ prevnumber+'"]').attr("id","");
					}
	
					$('li[rel="'+ number+'"]').attr("id","selected");
					$('li[rel="'+ number+'"]').animate({marginTop:-($('li[rel="'+ number+'"]').height() - 35)},speedVertical,"linear",function(){

					});
				}
				function moveRight(position,prevnumber,number)
				{

					for(i=0;i<position;i++){
						$(".slider-tab-list > li:eq("+eval(i)+")").clone().appendTo('.slider-tab-list');
						$(".slider-tab-list > li:last-child").css("marginTop",'0');
						$(".slider-tab-list > li:last-child").attr("id","");
					}
	
					margin = (parseInt($(".slider-tab-list").css("marginLeft")) - (position*218))+"px";
					$(".slider-tab-list").animate({marginLeft:margin},position*speedHorizontal,"linear",function(){
						$('li[rel="'+ prevnumber+'"]').css("marginTop",'0');
						$('li[rel="'+ prevnumber+'"]').attr("id","");
						for(i=0;i<position;i++){
							$(".slider-tab-list > li:first-child").remove();

						}
						$(".slider-tab-list").css({"marginLeft":0});
						selectNews(prevnumber,number,false,position);
						bindAll();
					});
				}
				
				function moveLeft(position,prevnumber,number)
				{
					$(".slider-tab-list > li:last-child").clone().prependTo('.slider-tab-list');
					margin = (parseInt($(".slider-tab-list").css("marginLeft")) - (position*218))+"px";
					$(".slider-tab-list").css("marginLeft",margin);

					margin = (parseInt($(".slider-tab-list").css("marginLeft")) + (position*218))+"px";
					$(".slider-tab-list").animate({marginLeft:margin},speedHorizontal,"linear",function(){
						$(".slider-tab-list").css({"marginLeft":-(position*218)});
						$(".slider-tab-list > li:last-child").remove();
						$(".slider-tab-list").css({"marginLeft":0});
						selectNews(prevnumber,number,true);
						bindAll();
					});
				}

				function bindAll(){
					$('#back').bind( "click", backClick);
					$('#forward').bind( "click", forwardClick);
					$('.slider-tab-list li').each(function(){
					
						$(this).bind("click",newsClick);
					});
				}

				function unbindAll(){
					$('#back').unbind( "click" );
					$('#forward').unbind( "click" );
					$('.slider-tab-list li').each(function(){
						$(this).unbind( "click" );
					});
				}

				function backClick(){
					unbindAll();
					prevnumber = slider.attr('rel'); 
					number = eval(prevnumber) - 1; 
					number = mod(number, $(".slider-tab-list li").size());
					changeBackground(number);

					moveLeft(1,prevnumber,number);
				}

				function forwardClick(){
					unbindAll();
					prevnumber = slider.attr('rel'); 
					number = eval(prevnumber) + 1; 
					number = mod(number, $(".slider-tab-list li").size());
					changeBackground(number);

					moveRight(1,prevnumber,number);
				}
	
				function newsClick(){
					listelement = this;
					number = eval($(this).attr("rel"));

					makeFirst(listelement, number)
				}

				function makeFirst(thisLi,number){
	
					prevnumber = slider.attr('rel');
					position = $(".slider-tab-list li").index(thisLi);

					if(number != prevnumber){
				 		unbindAll();
				 		changeBackground(number);

						moveRight(eval(position),prevnumber,number);
					}
				}


				$('#back').click(backClick);
				$('#forward').click(forwardClick);
				$('.slider-tab-list li').each(function(){
					
					$(this).click(newsClick);
				});
				slider.children().click(function(){
					clearInterval(timer);
				});

		 });
		return this; 
    	}
    });
})(jQuery);

