// JavaScript Document
(function($){
$.fn.uiTransition = function(config){
	if(!$(this).length)return null;
	config=jQuery.extend({
	},config);
	var n=config.nav;
	var c=config.cont;
	var t;
	if(config.auto){_timer();}
	$(n).find("a").hover(
		function(){
			clearInterval(t);
			_change(this);
		},
		function(){
			if(config.auto){_timer();}
		}
	).click(function(){return false});
	function _change(node){
		config.trans(node);
	}
	function _timer(){
		t=setInterval(function(){
				var target=($(n).find("li.current").is(":last-child"))?$(n).find("li:first-child"):$(n).find("li.current").next();
				_change($(target).find("a"));
			},config.autoInterval);
	}
	return this;
};
})(jQuery);

(function($){
$.fn.uiTabNavigation = function(config){
	if(!$(this).length)return null;
	config=jQuery.extend({
	},config);

	$(this).uiTransition({
		nav:config.nav,
		cont:config.cont,
		auto:config.auto,
		autoInterval:config.autoInterval,
		trans:function(node){
			$(config.nav).find(".current").removeClass("current");
			$(config.cont).find(".current").removeClass("current");
			$(node).parent().addClass("current");
			$($(node).attr("href")).addClass("current");
		}
	});
	return this;
};
})(jQuery);

(function($){
$.fn.uiSlideVertical = function(config){
	if(!$(this).length)return null;
	config=jQuery.extend({
		speed:500
	},config);
	
	$(this).uiTransition({
		nav:config.nav,
		cont:config.cont,
		auto:config.auto,
		autoInterval:config.autoInterval,
		trans:function(node){
			$(config.nav).find("li").removeClass("current");
			$(config.cont).find("li").removeClass("current");
			$(node).parent().addClass("current");
			var target=$($(node).attr("href"));
			$(target).parent().stop().animate({
				top:"-"+Math.ceil($(target).position().top)+"px"
			},config.speed);
		}
	});
	return this;
};
})(jQuery);

(function($){
$.fn.uiSlideHorizontal = function(config){
	if(!$(this).length)return null;
	config=jQuery.extend({
		speed:200
	},config);
	var c=$(config.cont);
	$(c).css("width",Number($(c).find("li").css("width").split("px")[0])*$(c).find("li").length)+"px";
	$(this).uiTransition({
		nav:config.nav,
		cont:config.cont,
		auto:config.auto,
		autoInterval:config.autoInterval,
		trans:function(node){
			$(config.nav).find("li").removeClass("current");
			$(config.cont).find("li").removeClass("current");
			$(node).parent().addClass("current");
			var target=$($(node).attr("href"));
			$(target).parent().stop().animate({
				left:"-"+Math.ceil($(target).position().left)+"px"
			},config.speed);
		}
	});
	return this;
};
})(jQuery);

(function($){
$.fn.uiCrossFade = function(config){
	if(!$(this).length)return null;
	config=jQuery.extend({
		speed:500
	},config);
	var d=$("<div/>").css({
		width:$(config.cont).width()+"px",
		height:$(config.cont).height()+"px",
		position:"absolute",
		top:0,
		left:0,
		background:"#FFFFFF"
	}).hide();
	$(config.cont).before(d);
	$(this).uiTransition({
		nav:config.nav,
		cont:config.cont,
		auto:config.auto,
		autoInterval:config.autoInterval,
		trans:function(node){
			$(config.nav).find("li").removeClass("current");
			$(node).parent().addClass("current");
			$(d).show();
			$(d).stop().css("opacity","1");
			$(config.cont).find("li").removeClass("current");
			$($(node).attr("href")).addClass("current");
			$(d).fadeOut(config.speed);
		}
	});
	return this;
};
})(jQuery);

(function($){
$.fn.itemViewer = function(config){
	if(!$(this).length)return null;
	config=jQuery.extend({
	},config);
	var c=$(config.cont);
	var num=0;
	var l=$(c).find("li").length;
	var w=(Number($(c).find("li").css("width").split("px")[0])+Number($(c).find("li").css("margin-right").split("px")[0]));
	$(c).css("width",w*l)+"px";
	_adjust();

	$(config.next).click(function(){
		if($(this).hasClass("enactive")) return false;
		_click("next");
	});
	$(config.prev).click(function(){
		if($(this).hasClass("enactive")) return false;
		_click("prev");
	});

	function _click(dir){
		num+=(dir=="prev")?-1:1;
		_adjust();
		var dis=(dir=="prev")?w:-w;
		$(c).stop().animate({
			left:(Number($(c).css("left").split("px")[0])+dis)+"px"
		},150);
	}

	function _adjust(){
		if(num>=l-config.view){
			$(config.next).addClass("enactive");
			$(config.prev).removeClass("enactive");
		}else if(num<1){
			$(config.next).removeClass("enactive");
			$(config.prev).addClass("enactive");
		}else{
			$(config.next).removeClass("enactive");
			$(config.prev).removeClass("enactive");
		}
	}

	return this;
};
})(jQuery);



