

//--------------------------------------------------------------------------------
// UA
(function(jQuery){
	var userAgent = navigator.userAgent.toLowerCase();
	$.browser = $.extend(
		$.browser
		,{
			version: ((!/chrome/.test( userAgent ) ? userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) : userAgent.match( /.+chrome\/([\d.]+)/ ) ) || [])[1] ,
			safari: /webkit/.test( userAgent ) && !/chrome/.test( userAgent ),
			chrome: /chrome/.test( userAgent )
		}
	);
})(jQuery);


//--------------------------------------------------------------------------------
// マウスホイールで横スクロール
var horizontalScroll = {};
horizontalScroll.setup = function (event) {
	if (!event) { var event = window.event; }
	horizontalScroll.delta;
	if (event.wheelDelta) {
		// for IE,Opera,Safari,Chrome
		horizontalScroll.delta = -event.wheelDelta/24;
	} else if (event.detail) {
		// for Mozilla
		horizontalScroll.delta = event.detail;
	}
	
//$("#header_back").text(pageCoords + clientCoords + scrollPosi_x);

	if (horizontalScroll.delta <= 0) {	
		window.scrollBy(80,0);
	} else {
		window.scrollBy(-80,0); 
	}
};


//--------------------------------------------------------------------------------
// 表示位置制御
var updatePosition = {};
updatePosition.setup = function () {
	var ww = $(window).width();
	var wh = $(window).height();
	var dw = $(document).width();
	var dh = $(document).height();
	var st = $(document).scrollTop();
	var sl = $(document).scrollLeft();
	var myContent = $('#wrapper');
	var myMenu = $('#menu_area');
	var btns = $('#header_back');
	var foot = $('#footer_back');
	var btnsTop = 45;
	var menuTop = 47;
	var footTop = 665;
	var outerHeight = (Math.floor((wh - myContent.height()) /2));
	var btnsLeft = sl + ww - btns.width();
	// for iPhone iPad
	if ( (navigator.userAgent.search(/iPhone/) != -1) || (navigator.userAgent.search(/iPad/) != -1) ) {
		myContent.css('top','30px');
		btns.css({
			position: 'absolute',
			top: '40px',
			left: btnsLeft + 'px'
		});
		foot.css({
			position: 'absolute',
			top: '564px',
			left: sl + 'px',
			width: ww + 'px'
		});
	} else {
	// for PC
		if (myContent.height() > wh) {
			if (!($.browser.msie && ($.browser.version < 7.0 || !$.boxModel))) {
				// IE以外
			}
		} else {
/*
			btns.css('marginTop', '0');
			foot.css('marginTop', '0');
			myContent.css('marginTop', '0');
			btns.css({
				top: outerHeight + btnsTop + 'px'
			});
			foot.css({
				top: outerHeight + footTop + 'px'
			});
			myContent.css('top', outerHeight + 'px');
			myMenu.css('top', outerHeight + menuTop + 'px');
*/
		}
		//for IE6
		if ($.browser.msie && ($.browser.version < 7.0 || !$.boxModel)) {
			btns[0].style.setExpression(
				'left',
				'eval(document.body.scrollLeft||document.documentElement.scrollLeft)'
			);
			foot[0].style.setExpression(
				'left',
				'eval(document.body.scrollLeft||document.documentElement.scrollLeft)'
			);
		}
	}
};



//--------------------------------------------------------------------------------
// 初期スクロール完了後に実行
function scrollComplete() {
	updatePosition.setup();
	$(window).bind({
		scroll: function () {
			updatePosition.setup();
		},
		resize: function () {
			updatePosition.setup();
		}
	});
}


//--------------------------------------------------------------------------------
// 画像ロールオーバ
function initRollOverImages()
{
	var image_cache = new Object();
	$("img.swap").each(function(i) {
		var imgsrc = this.src;
		var dot = this.src.lastIndexOf('.');
		var imgsrc_on = this.src.substr(0, dot) + '_on' + this.src.substr(dot, 4);
		image_cache[this.src] = new Image();
		image_cache[this.src].src = imgsrc_on;
		$(this).hover(
			function() { this.src = imgsrc_on; },
			function() { this.src = imgsrc; });
	});
}


//--------------------------------------------------------------------------------
// Cursor Change
function changeCursor( myThis, flag )
{
	if( flag === true ){
		myThis.css( "cursor","url(" + imgPath + "cursor.cur), pointer" );
	} else {
		myThis.css( "cursor","url(" + imgPath + "cursor_on.cur), pointer" );
	}
}


// Wheelの表示非表示
numCheckFlag = true;
function viewWheelChange( viewFlag )
{
	if( viewFlag ){
		if( numCheckFlag ){
			if($.browser.msie) {
				$("#wheelchange").css( "display", "block" );
			} else {
				$("#wheelchange")
					.stop(false, true)
					.css({
						display: "block"
						,opacity: 0
					})
					.animate({
							opacity: 1
						}
						, 1000
						, "easeOutExpo"
					);
			}
			numCheckFlag = false;
		}
	} else {
		if($.browser.msie) {
			$("#wheelchange").css( "display", "none" );
		} else {
			$("#wheelchange")
				.stop(false, true).animate({
						opacity: 0
					}
					, 1000
					, "easeOutExpo"
					, function(){
						$(this).css({
							display: "none"
						})
					}
				);
		}
		numCheckFlag = true;
	}
}

// ====================================================================================
// メニュー現在地表示
function activeMenu(chapter, navName)
{
	var ww = $(window).width();
	var sl = $(document).scrollLeft();
	chapter.each(function(){
		var w = $(this).outerWidth();
		var tX = chapter.offset().left;
		var chapterR = tX + w;
		var chapterL = tX;
		var thisPosition = sl + (ww/2);
		navName.each(function(){
			if ( chapterL < thisPosition && thisPosition < chapterR ) {
				$(this).find('a').addClass("active");
				
				// Next,Prevを設定
				nowClassName = $(this).attr("class");
				getNum = parseInt(nowClassName.substr(nowClassName.length-1, 1));
				switch( getNum )
				{
					case 1:
						$("#footer_back li.prev a").unbind('click').click(function(){return false;});
						break;
					case 5:
						$("#footer_back li.next a").unbind('click').click(function(){return false;});
						break;
					default:
						// PREV
						$("#footer_back li.prev a").unbind('click').click(function(){
							if (smartScroll.scrolling) { return false; }
							setIdName = "top";
							getNum -= 1;
							if( getNum > 1 ){
								setIdName = "page_" + String(getNum-1)
							}
							smartScroll.start(setIdName);
							return false;
						});
						
						// NEXT
						$("#footer_back li.next a").unbind('click').click(function(){
							if (smartScroll.scrolling) { return false; }
							setIdName = "page_" + String(getNum);
							smartScroll.start(setIdName);
							return false;
						});
						
						break;
				}
				
				// WheelChange
				if( getNum == "4" ){
					viewWheelChange(true);
				} else {
					// WheelChange
					viewWheelChange(false);
				}
				
			} else {
				$(this).find('a').removeClass("active");
			}
		});
	});
}


// ====================================================================================
// 初期スクロール完了後に実行
function scrollComplete()
{
	var pp = $("#footer_back .page_thum_list");
	$(window).bind({
		scroll: function () {
$("#header_back").text($(document).scrollLeft());
			activeMenu( $("#page_1"), pp.find(".page_1") );
			activeMenu( $("#page_2"), pp.find(".page_2") );
			activeMenu( $("#page_3"), pp.find(".page_3") );
			activeMenu( $("#page_4"), pp.find(".page_4") );
			activeMenu( $("#page_5"), pp.find(".page_5") );
		},
		resize: function () {
			activeMenu( $("#page_1"), pp.find(".page_1") );
			activeMenu( $("#page_2"), pp.find(".page_2") );
			activeMenu( $("#page_3"), pp.find(".page_3") );
			activeMenu( $("#page_4"), pp.find(".page_4") );
			activeMenu( $("#page_5"), pp.find(".page_5") );
		}
	});
}



// ====================================================================================
// smartScroll
var smartScroll = {};
smartScroll.scrolling = false;
smartScroll.start = function (targetId,easing,completeFunc) {
	smartScroll.scrolling = true;
	var element = $('#'+targetId)[0];
	//var easing = easing || 0.18;
	//var easing = easing || 0.03;
	var easing = easing || 0.5;
	var interval = 30;
	var st = $(document).scrollTop();
	var sl = $(document).scrollLeft();
	var ww = $(window).width();
	var wh = $(window).height();
	var dw = $(document).width();
	var dh = $(document).height();
	var tX = 0; var tY = 0;
	var myTimer; var moveX; var moveY;
	while(element){
	   tX += element.offsetLeft;
	   tY += element.offsetTop;
	   element = element.offsetParent;
	}
	var toX = Math.max(tX - sl - ww, tX - sl - ww + (ww - tX));
	var toY = st;
//alert( toX );

	function windowScroll ()
	{
		if (0 > toX) {
			moveX = Math.floor(toX*easing);
		} else {
			moveX = Math.ceil(toX*easing);
		}		
		if (0 > toY) {
			moveY = Math.floor(toY*easing);
		} else {
			moveY = Math.ceil(toY*easing);
		}

		sl += moveX;
		st += moveY;
		window.scrollTo(sl, st);
		toX -= moveX;
		toY -= moveY;
		myTimer = setTimeout(windowScroll,interval);
		if (moveX == 0 && moveY == 0) {
			smartScroll.scrolling = false;
			clearTimeout(myTimer);
			updatePosition.setup();
			if (completeFunc) { completeFunc(); }
		}
	}
	windowScroll();	
};

smartScroll.setup = function () {
	var allLinks = document.links;
	for(var i = 0 ; i < allLinks.length; i++)
	{
		var lnk = allLinks[i];
		if ((lnk.href && lnk.href.indexOf('#') != -1) && 
				((lnk.pathname == location.pathname) || ('/'+lnk.pathname == location.pathname))) {
			lnk.onclick = function () {
				if (smartScroll.scrolling) { return false; }
				var targetId = this.hash.replace(/#/g,"");
				if (document.getElementById(targetId)) {
					smartScroll.start(targetId);
					return false;
				}								
			};
		}
	}
};

// ====================================================================================
// スクロールをリセットする
function expScrollReset()
{
	$("#page_4 .works_detail .jScrollPaneContainer").remove();
	$("#page_4 .works_detail").append('<div class="exp"></div>');
}

// 前後のPost情報を取得して表示
function clickPrevNext( postId )
{
	if($.browser.msie){
		$("#page_4 .pager").css("display","none");
		$("#page_4 .works_detail").css("display","none");
		$("#page_4 div.loading").css("display","block");
		// スクロールをリセット
		expScrollReset()
		// 情報を取得して格納する
		getAjaxIdPostInfo( postId );
	} else {
		// Peager
		$("#page_4 .pager").animate({
				opacity: 0
			}
			, 500
			, "easeOutExpo"
			, function(){ $(this).css("display","none"); }
		);
		// Detail
		$("#page_4 .works_detail").animate({
				opacity: 0
			}
			, 500
			, "easeOutExpo"
			, function(){ $(this).css("display","none"); }
		);
		// Loader
		$("#page_4 div.loading").css("opacity","0");
		$("#page_4 div.loading").css("display","block");
		$("#page_4 div.loading").animate({
				opacity: 1
			}
			, 500
			, "easeOutExpo"
		);
		// スクロールをリセット
		expScrollReset()
		// 情報を取得して格納
		getAjaxIdPostInfo( postId );
	}
}

// Ajaxを使ってPost情報を取得
function getAjaxIdPostInfo( postId )
{
	works_detail = $("#page_4 .works_detail");
	pager = $("#page_4 .pager");
	ajaxUrl = templateUrl+"getPostId.php?ID="+postId;
	// =====
	// Ajax
	// =====
	$.ajax({
		dataType: "json",
		cache: true,
		url: ajaxUrl,
		success: function(data) {
							// 何も取得出来なかった場合
							if( data == undefined ){
								$("#debug").text("ERROR");
								return false;
							}
							
							// 値をセット
							works_detail.find("h5").text(data.siteTitle);
							works_detail.find("p.attribute").html(data.tCheckHtml);
							works_detail.find("span.period").text(data.Works);
							works_detail.find("a.siteurl").html(data.Site_URL);
							works_detail.find("a.siteurl").attr("href",data.Site_URL);
							works_detail.find("a.siteurl").attr("title",data.siteTitle);
							works_detail.find("a.img").attr("href",data.Site_URL);
							works_detail.find("a.img").attr("title",data.siteTitle);
							works_detail.find("div.exp").html(data.content);
							works_detail.find("a.img img").attr("alt",data.siteTitle);
							if( data.siteImg != null ){
								works_detail.find("a.img").css("display","inline");
								works_detail.find("a.img img").attr("src",data.siteImg);
							} else {
								works_detail.find("a.img").css("display","none");
							}
							if( data.prevId != "" ){
								pager.find("a.prev").css("display","inline");
								pager.find("a.prev").attr("href",data.prevId);
							} else {
								pager.find("a.prev").css("display","none");
							}
							if( data.nextId != "" ){
								pager.find("a.next").css("display","inline");
								pager.find("a.next").attr("href",data.nextId);
							} else {
								pager.find("a.next").css("display","none");
							}
							
							
							if($.browser.msie){
								$("#page_4 div.loading").css("display","none");
								works_detail.css("display","block");
								pager.css("display","block");
								// jScrollPane
								$('#page_4 .works_detail .exp').jScrollPane();
							} else {
								$("#page_4 div.loading").animate({
										opacity: 0
									}
									, 500
									, "easeOutExpo"
									,function()
									{
										$(this).css("display","none");
									}
								);
								works_detail.css("opacity","0");
								works_detail.css("display","block");
								works_detail.animate({
										opacity: 1
									}
									, 500
									, "easeOutExpo"
								);
								pager.css("display","block");
								pager.animate({
										opacity: 1
									}
									, 500
									, "easeOutExpo"
								);
								// jScrollPane
								$('#page_4 .works_detail .exp').jScrollPane();
								
							}
		}
	});
}

