$.fn.myCarousal = function(obj){
	//initialize variables
	var base = this;
	
	var autoPlay = obj.autoPlay ? obj.autoPlay : false;
	var animDelay = obj.animDelay ? obj.animDelay : 2000;
	
	var animSpeed = obj.animSpeed ? obj.animSpeed : 500;
	var slidesPerTransition = obj.slidesPerTransition ? obj.slidesPerTransition : 1;
	var links = obj.links ? obj.links : null;
	var baseWidth = $(base).innerWidth();
	var currentSlide = 1;
	var totalSlide = $(obj.slide).size();
	var slideWidth = $(obj.slide).outerWidth();
	var totalWidth = totalSlide * slideWidth;
	$(base).wrapInner("<div class='wrapper' />");
	var wrapper = $(base).children(".wrapper");
	
	//initialize variables ends
	
	
	$(wrapper).css("width", totalWidth);
	$(base).css("overflow","hidden");
	$(obj.slide).css("float","left");
	
	if(autoPlay) {
		play();
	}
	else{
		pause();
	}
	
	if(links){
		$(obj.slide).each(function(index, value){
			realIndex = index+1;
			$(links).append("<a href='javascript:' rel='"+realIndex+"'>"+realIndex+"</a>");
		});
		$(links).append("<div class='clear' />");
		$(links+" a").first().addClass("current");
		
		$(links+" a").click(function(){
			pause();
			currentSlide = parseInt($(this).attr("rel"));
			animateToCurrentSlide();
		});
	}
	
	
	$(obj.leftArrow+","+obj.rightArrow) //animation on arrows clicked
	.mousedown(function(){
		$(this).fadeTo(0,0); //hide arrow when clicked
	})
	.mouseup(function(){
		$(this).fadeTo(0,1); //show menu when released
	});

	$(obj.leftArrow+","+obj.rightArrow+","+obj.playButton+","+obj.pauseButton).css("cursor","pointer");
	
	$.startPlay = function(){
		if(!autoPlay) return;
		currentSlide = currentSlide + slidesPerTransition;
		if(currentSlide > totalSlide){
			currentSlide = 1;
		}
		animateToCurrentSlide();
		setTimeout("$.startPlay()",animDelay);	
	}
	
	
	function play(){
		autoPlay = true;
		$(obj.playButton).hide();
		$(obj.pauseButton).show();
		setTimeout("$.startPlay()",animDelay);
	}
	
	function pause(){
		autoPlay = false;
		$(obj.playButton).show();
		$(obj.pauseButton).hide();
	}
	
	$(obj.leftArrow).click(function(){
		pause();
		currentSlide = currentSlide - slidesPerTransition;
		if(currentSlide < 1){
			currentSlide = totalSlide;
		}
		animateToCurrentSlide();
	});
	
	$(obj.rightArrow).click(function(){
		pause();
		currentSlide = currentSlide + slidesPerTransition;
		if(currentSlide > totalSlide){
			currentSlide = 1;
		}
		animateToCurrentSlide();
	});
	
	$(obj.playButton).click(function(){
		play();
	});
	
	$(obj.pauseButton).click(function(){
		pause();
	});	
	
	function animateToCurrentSlide(){
		var margin = -((currentSlide - 1)*slideWidth);
		$(wrapper).animate({marginLeft: margin+"px"}, animSpeed);
		setCurrentLinkActive();
	}
	
	function setCurrentLinkActive(){
		if(links){
			$(links+" a[rel = "+currentSlide+"]").addClass("current").siblings().removeClass("current");
		}
	}
}


