(function($) {
	$.fn.slide = function(settings) {
		var obj = new Object();
		obj["default"]		= 0;
		obj["slide"]		= "auto";
		obj["firstInterval"] = 3000;
		obj["interval"]		= 5000;
		obj["animation"]	= true;
		obj["time"]			= 1000;
		settings = $.extend(obj, settings);

		var _root	= this;
		var max		= $(_root).find("li").length;
		var current	= settings["default"];
		var newcurrent;
		var interval;
		var animationflag = true;

		$(_root).find("li").not(":first-child").hide();

		if(settings.slide == "auto") {
			interval = setTimeout(slide, settings.firstInterval);
		} else if(settings.slide == "click") {
			$(this).click(animation);
		};
		
		/* nav */
		$("#thumbs").find("img.front").each(function(i){
			var $this = $(this);
			var $i = i;
			if( current === $i ){
				$this.fadeTo(0, 0);
			} else {
				$this.fadeTo(0, 1);
			}
			var $on = $this.attr("rel");
			var $off = $this.attr("src");
			preloadImages($on);
			
			$(this).click(function(){
				clearTimeout( interval );
				animationflag && slidenav($i);
			})
			.hover(
				function(){ 
					$this.css("cursor","pointer");
					if( current !== $i ){
						$this.fadeTo(300, 0); 
					}
				},
				function(){ 
					$this.css("cursor","normal");
					if( current !== $i ){
						$this.fadeTo(300, 1); 
					}
				}
			);								   
		});
		
		function preloadImages(){
			for(var i = 0; i<arguments.length; i++){
				$("<img>").attr("src", arguments[i]);
			}
		}

		function slidenav(num){
			animation(num);
		}
		
		function slide(){
			if(current == (max - 1)) {
				newcurrent = 0;
			} else {
				newcurrent = current+1;
			};
			animation(newcurrent);
		}
		
		function slideminus(){
			if(current == 0) {
				newcurrent = max - 1;
			} else {
				newcurrent = current-1;
			};
			animation(newcurrent);
		}

		function animation(newcurrent) {
			//alert("current:"+current+" / new:"+newcurrent);
			prev = $(_root).find("li").eq(current);
			next = $(_root).find("li").eq(newcurrent);

			$(prev).css("z-index", 2);
			$(next).css("z-index", 3);
			
			if(settings.animation == true) {
				animationflag = false;
				next.fadeIn(settings.time, function(){ 
					prev.hide();
					animationflag = true;
					if( current === 0 ){
						interval = setTimeout(slide, settings.firstInterval); 
					} else {
						interval = setTimeout(slide, settings.interval); 
					}
				});
			} else {
				next.show();
				prev.hide();
			};
			
			current = newcurrent;
			
			$("#thumbs").find("img.front").each(function(i){
				if( current === i ){
					$(this).fadeTo(300, 0);
				} else {
					$(this).fadeTo(300, 1);
				}								   
			});
		};

	};
})(jQuery);

