$(function(){
	
	new SlideBanner($('#slidebanner'));
	
});

var SlideBanner = function(container){
	
	this.bannerWidth = $(container).width();
	this.barWidth = $('ul.bar li', container).width();
	this.banners = $('ul.banner li', container);
	this.bars = $('ul.bar li', container);
	this.moveWidth = $(container).width()-this.barWidth*this.banners.length;
	this.current = 0;
	this.locklist = [];
	
	var owner = this;
	
	// 初期化
	for (var i=0; i<this.banners.length; i++) {
		if (i==0) {
			$(this.banners[i]).css({top:0, left:0});
		} else {
			$(this.banners[i]).css({top:0, left:this.bannerWidth});
		}
		$(this.banners[i]).data('index', i);
		this.locklist[i] = false;
	}
	for (var i=0; i<this.bars.length; i++) {
		if (i==0) {
			$(this.bars[i]).css({top:0, left:0});
		} else {
			$(this.bars[i]).css({top:0, left:this.bannerWidth-this.barWidth*(this.bars.length-i)});
		}
		$(this.bars[i]).data('index', i);
		this.locklist[i] = false;
	}
	
	var doVanish = false;
	var slideFunc = function(){
		var currentl = owner.current;
		if (currentl == $(this).data('index')) {
			// リンク
			return;
		}
		else if (currentl > $(this).data('index')) {
			for (var i=$(this).data('index')+1; i<=currentl; i++) {
				if (owner.locklist[i]) {
					continue;
				}
				var pos = $(owner.bars[i]).position();
				$(owner.bars[i]).animate({left: i*owner.barWidth+owner.moveWidth}, 350, 'swing', function(event){
					owner.locklist[$(this).data('index')] = false;
					for (var j=owner.banners.length; j>=0; j--) {
						var pos = $(owner.banners[j]).position();
						if (pos && pos.left==0) {
							owner.current = j;
							break;
						}
					}
				});
				$(owner.banners[i]).animate({left: owner.bannerWidth}, 350, 'swing');
				owner.locklist[i] = true;
			}
		} else {
			for (var i=$(this).data('index'); i>currentl; i--) {
				if (owner.locklist[i]) {
					continue;
				}
				var pos = $(owner.bars[i]).position();
				$(owner.bars[i]).animate({left: (owner.bannerWidth-(owner.banners.length-i)*owner.barWidth)-owner.moveWidth}, 350, 'swing', function(event){
					owner.locklist[$(this).data('index')] = false;
					for (var j=owner.banners.length; j>=0; j--) {
						var pos = $(owner.banners[j]).position();
						if (pos && pos.left==0) {
							owner.current = j;
							break;
						}
					}
				});
				$(owner.banners[i]).animate({left: 0}, 350, 'swing');
				owner.locklist[i] = true;
			}
		}
		owner.current = $(this).data('index');
		doVanish = false;
	};
	
	var currentpos = {x:0, y:0};
	var prevpos = {x:0, y:0};
	var showflag = true;
	$(container).mousemove(function(event){
		currentpos = {x:event.clientX, y:event.clientY};
	});
	setInterval(function(){
		if (Math.abs(currentpos.x-prevpos.x)<1 && Math.abs(currentpos.y-prevpos.y)<1) {
			if (showflag) {
				doVanish = true;
				setTimeout(function(){
					if (doVanish) {
						$('ul.bar li', container).fadeOut('slow');
						showflag = false;
					}
				}, 2000);
			}
		} else {
			doVanish = false;
			if (!showflag) {
				$('ul.bar li', container).fadeIn('fast');
				showflag = true;
			}
		}
		prevpos = {x:currentpos.x, y:currentpos.y};
	}, 200);
	
	$('ul.bar li', container).mouseover(slideFunc);
};

