$(document).ready(function(){
	// 引数は、GuideSlide要素
	var slideTo = function(e, index) {
		// GuideSlide要素でない場合は何もしない
		if (!e.is(".GuideSlide")) return;

		var e1 = e.find(".GuideImageSlideJumpOn");
		var e2 = e.find(".GuideImageSlideJump:eq(" + index + ")");

		e1.removeClass("GuideImageSlideJumpOn");
		e2.addClass("GuideImageSlideJumpOn");

		var e1 = e.find(".GuideImage:visible");
		var e2 = e.find(".GuideImage:eq(" + index + ")");

		e1.hide();
		e2.fadeIn("fast");
	}

	// 引数は、GuideSlide要素、moveは+1か-1
	var slide = function(e, move) {
		// GuideSlide要素でない場合は何もしない
		if (!e.is(".GuideSlide")) return;

		// 現在選択されている番号の取得
		var e1 = e.find(".GuideImageSlideJumpOn");
		var index1 = selectedSlideIndex(e1);

		// 次に選択されるべき番号の取得
		var e2;
		if (move > 0) {
			// 右移動の場合
			e2 = e.find(".GuideImageSlideJump:gt(" + index1 + "):first");
			if (!e2.is(".GuideImageSlideJump")) {
				e2 = e.find(".GuideImageSlideJump:first");
			}
		} else {
			// 左移動の場合
			e2 = e.find(".GuideImageSlideJump:lt(" + index1 + "):last");
			if (!e2.is(".GuideImageSlideJump")) {
				e2 = e.find(".GuideImageSlideJump:last");
			}
		}
		var index2 = selectedSlideIndex(e2);

		slideTo(e, index2);
	}

	// 引数は、GuideSlide内の要素
	var searchParentGuildSlide = function(e) {
		var n = 10;
		while (!e.is(".GuideSlide") && n >= 0) {
			e = e.parent();
			n--;
		}
		return e;
	}

	// 引数はGuideImageSlideJump要素
	var selectedSlideIndex = function(e) {
		if (!e.is(".GuideImageSlideJump")) return -1;

		return parseInt(e.attr("title"), 10) - 1;
	}

	$(".GuideImageSlideRight,.GuideImage").click(function () {
		var e = searchParentGuildSlide($(this));
		slide(e, +1);
 	});

	$(".GuideImageSlideLeft").click(function () {
		var e = searchParentGuildSlide($(this));
		slide(e, -1);
 	});

 	$(".GuideImageSlideJump").click(function () {
 		// GuideImageSlideJumpOnをクリックした場合、何もしない
		if ($(this).is(".GuideImageSlideJumpOn")) return;

		var e = searchParentGuildSlide($(this));
		var index = selectedSlideIndex($(this));

		slideTo(e, index);
 	});
});