(function($) {
	$.fn.easySlider = function(options){
		// default configuration properties
		var defaults = {
			prevId:			'prevBtn',
			prevText:		'PREV',
			nextId:			'nextBtn',
			nextText:		'NEXT',
			controlsShow:	true,
			controlsBefore:	'',
			controlsAfter:	'',
			controlsFade:	true,
			vertical:		false,
			speed:			200,
			auto:			false,
			pause:			2000,
			defaultNo:		0,
			continuous:		false,
			view:			3,
			moveSpan: 		3
		};

		var options = $.extend(defaults, options);
		this.each(function() {
			var obj = $(this);
			var s = $("li.sliderBox", obj).length;
			var w = $("li.sliderBox", obj).width();
			var h = $("li.sliderBox", obj).height();
			//var v = options.view-1;
			var v = options.view;
			var m = options.moveSpan;
			obj.width(w);
			obj.height(h);
			//var ts = s-1;
			var t = 0;
			$("ul.sliderBoxArea", obj).css('width',s*w);
			if(!options.vertical) $("li", obj).css('float','left');
			if(options.controlsShow){
				var html = options.controlsBefore;
				html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
				html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
				html += options.controlsAfter;
				$(obj).after(html);
			};

			$("a","#"+options.nextId).click(function(){
				animate("next",true);
			});
			$("a","#"+options.prevId).click(function(){
				animate("prev",true);
			});

			function animate(dir,clicked){
				var ot = t;
				switch(dir){
					case "next":
						//t = (ot>=(ts-v)) ? (options.continuous ? 0 : (s-(ts-v)) ) : t+m;
						t = (ot>=(s-v)) ? (options.continuous ? 0 : t ) : t+m;
						break;
					case "prev":
						t = (t<=0) ? (options.continuous ? s-v : 0) : t-m;
						break;
					default:
						break;
				};
				//alert("t:"+t+"/ s:"+s+"/ ot:"+ot+"/ v:"+v+"/ m:"+m);

				var diff = Math.abs(ot-t);
				var speed = diff*options.speed;
				if(!options.vertical) {
					p = (t*w*-1);
					$("ul.sliderBoxArea",obj).animate(
						{ marginLeft: p },
						speed
					);
				} else {
					p = (t*h*-1);
					$("ul.sliderBoxArea",obj).animate(
						{ marginTop: p },
						speed
					);
				};

				if(!options.continuous && options.controlsFade){
					if(t>=(s-v)){
						$("a","#"+options.nextId).fadeTo(50,0.3);
					} else {
						$("a","#"+options.nextId).fadeTo(50,1);
					};
					if(t<=0){
						$("a","#"+options.prevId).fadeTo(50,0.3);
					} else {
						$("a","#"+options.prevId).fadeTo(50,1);
					};
				};

				if(clicked) clearTimeout(timeout);
				if(options.auto && dir=="next" && !clicked){;
					timeout = setTimeout(function(){
						animate("next",false);
					},diff*options.speed+options.pause);
				};
			};

			// init
			var timeout;
			if(options.auto){;
				timeout = setTimeout(function(){
					animate("next",false);
				},options.pause);
			};

			if(!options.continuous && options.controlsFade){
				$("a","#"+options.prevId).fadeTo(50,0.3);
			};
			if(t>=(s-v)){
				$("a","#"+options.nextId).fadeTo(50,0.3);
			}

			//default No.
			//animate("next",true,options.defaultNo);
		});
	};
})(jQuery);

