/* #####################################################################################

	NAME:		detail.js
	
		NOTES:	詳細画面の制御
				
	
	
	AUTHOR:		Yoshikatsu Iyo.		2009/08/28
									Copyright, PorkHamlet Co.Ltd. All rights reserved.

##################################################################################### */


/*~~< variable(s) >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
var		tmpDetail;

/*~~< object(s) >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function ObjDetail(	imageFile,	// 画像ファイル名
					blogURL,	// フォトグラファーのブログURL
					worksURL,	// フォトグラファーのワークスURL
					briefURL,	// フォトグラファーのブリーフヒストリーURL
					name,		// フォトグラファー名
					heading		// フォトグラファーの名前画像ファイル名
){
	this.imageFile	=	imageFile;
	this.blogURL	=	blogURL;
	this.worksURL	=	worksURL;
	this.briefURL	=	briefURL;
	this.name		=	name;
	this.heading	=	heading;
	this.tbl;
}

/*~~< program(s) >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

/* =========================================================================**
	isIE7Under
		notes:	ブラウザがIE7以前かどうか判定する
				
*========================================================================== */
function isIE7Under()
{

	if( navigator.userAgent.indexOf('Safari') != -1 || navigator.userAgent.indexOf('KHTML ') != -1 )
	{
	}
	else if( document.all )		// IE
	{
		if( !document.documentMode )	// バージョンが８より下
		{
			return true;
		}
	}
	else if( navigator.userAgent.indexOf('Gecko') != -1 )
	{
	}
	return false;
}


/* =========================================================================**
	ObjDetail.prototype.display
		notes:	詳細画面を表示
				
*========================================================================== */
ObjDetail.prototype.display = function(	tbl		// 画像情報のテーブル。前後の画像表示に使用する。
){
	var		fFadein			=	( true == isIE7Under() ) ? false : true;
	var		iobjDetail		=	this;
	var		objDetail		=	document.getElementById( "detail" );
	var		objClose		=	document.getElementById( "close000" );
	var		objPrev			=	document.getElementById( "prev000" );
	var		objNext			=	document.getElementById( "next000" );
	var		objExpantion	=	document.getElementById( "expantion" );
	var		objImage		=	objExpantion.getElementsByTagName( "img" ).item(0);
			
			tmpDetail	=	this;
			addListener( objPrev, 'click', ObjDetail.clickFunc );
			addListener( objNext, 'click', ObjDetail.clickFunc );
			addListener( objClose, 'click', ObjDetail.clickFunc );
			addListener( objImage, 'click', ObjDetail.clickFunc );
			
			
			if( true == fFadein )
			{
				Anime.setOpacity( objDetail, 0 );
				objDetail.style.display		=	"block";
				Anime.setOpacity( objPrev, 0 );
				Anime.setOpacity( objNext, 0 );
				Anime.setOpacity( objClose, 0 );
				
				setTimeout(	function(){
								Anime.fadeIn( objDetail, 1 );
				},10);
				setTimeout(	function(){
								Anime.fadeIn( objPrev, 1 );
								Anime.fadeIn( objNext, 1 );
								Anime.fadeIn( objClose, 1 );
				},200);
			}
			else
			{
				Anime.setOpacity( objDetail, 1 );
				objDetail.style.display		=	"block";
			}
			
			
			
			var		objPhotoInfo			=	document.getElementById( "photo-info" );
			
			if( objPhotoInfo )
			{
				var		objLinkToWork		=	document.getElementById( "link-to-works" );
				var		objLinkToWorkA		=	objLinkToWork.getElementsByTagName( "a" ).item(0);
				var		objLinkToBlog		=	document.getElementById( "link-to-blog" );
				var		objLinkToBlogA		=	objLinkToBlog.getElementsByTagName( "a" ).item(0);
				var		objLinkToBrief		=	document.getElementById( "link-to-brief-history" );
				var		objLinkToBriefA		=	objLinkToBrief.getElementsByTagName( "a" ).item(0);
				var		objHeading			=	document.getElementById( "name" );
				var		objHeadingImage		=	objHeading.getElementsByTagName( "img" ).item(0);
				
						
						if( true == fFadein )
						{
							Anime.setOpacity( objLinkToWorkA, 0 );
							Anime.setOpacity( objLinkToBlogA, 0 );
							Anime.setOpacity( objLinkToBriefA, 0 );
							Anime.setOpacity( objHeadingImage, 0 );
						}
						
						if( this.worksURL )
						{
							objLinkToWorkA.href		=	this.worksURL;
							if( true == fFadein )
							{
								setTimeout(	function(){
												Anime.fadeIn( objLinkToWorkA, 1 );
								},200);
							}
						}
						if( this.blogURL )
						{
							objLinkToBlogA.href		=	this.blogURL;
							objLinkToBlogA.style.display		=	"block";
							if( true == fFadein )
							{
								setTimeout(	function(){
												Anime.fadeIn( objLinkToBlogA, 1 );
								},200);
							}
						}
						else
						{
							objLinkToBlogA.style.display		=	"none";
						}
						if( this.briefURL )
						{
							objLinkToBriefA.href	=	this.briefURL;
							if( true == fFadein )
							{
								setTimeout(	function(){
												Anime.fadeIn( objLinkToBriefA, 1 );
								},200);
							}
						}
						if( this.heading )
						{
							var		headingPreloader 	=	new Image();
							
							headingPreloader.onload	=	function(){
															objHeadingImage.src 			=	iobjDetail.heading;
															headingPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
															
															if( true == fFadein )
															{
																setTimeout(	function(){
																				Anime.fadeIn( objHeadingImage, 1 );
																},200);
															}
															
														}
							headingPreloader.src	=	this.heading;
						}
			}
			
			
			
			if( this.imageFile )
			{
				var		imgPreloader 	=	new Image();
				
				if( true == fFadein )
				{
					Anime.setOpacity( objImage, 0 );
				}
				
				imgPreloader.onload	=	function(){
											objImage.src 			=	iobjDetail.imageFile;
											objImage.className		=	"detail-image";
											imgPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
											
											if( true == fFadein )
											{
												setTimeout(	function(){
																Anime.fadeIn( objImage, 1 );
												},100);
											}
										}
				imgPreloader.src		=	iobjDetail.imageFile;
			}
			
			this.tbl		=	tbl;
			
}


/* =========================================================================**
	ObjDetail.prototype.change
		notes:	詳細画面を別画像に切り替え
				
*========================================================================== */
ObjDetail.prototype.change = function(	newDetail	// 新しく表示する画像の情報
){
	var		objPhotoInfo	=	document.getElementById( "photo-info" );
	var		fFadein			=	( true == isIE7Under() ) ? false : true;
	
	if( objPhotoInfo )
	{	
		if( newDetail.worksURL != this.worksURL )
		{
			var		objLinkToWork			=	document.getElementById( "link-to-works" );
			var		objLinkToWorkA			=	objLinkToWork.getElementsByTagName( "a" ).item(0);
					objLinkToWorkA.href		=	newDetail.worksURL;
		}
		if( newDetail.blogURL != this.blogURL )
		{
			var		objLinkToBlog			=	document.getElementById( "link-to-blog" );
			var		objLinkToBlogA			=	objLinkToBlog.getElementsByTagName( "a" ).item(0);
					objLinkToBlogA.href		=	newDetail.blogURL;
					if(newDetail.blogURL)
					{
						objLinkToBlogA.style.display		=	"block";
					}
					else
					{
						objLinkToBlogA.style.display		=	"none";
					}
		}
		if( newDetail.briefURL != this.briefURL )
		{
			var		objLinkToBrief			=	document.getElementById( "link-to-brief-history" );
			var		objLinkToBriefA			=	objLinkToBrief.getElementsByTagName( "a" ).item(0);
					objLinkToBriefA.href	=	newDetail.briefURL;
		}
		if( newDetail.heading != this.heading )
		{
			var		headingPreloader 	=	new Image();
			
			var		objHeading		=	document.getElementById( "name" );
			var		objHeadingImage	=	objHeading.getElementsByTagName( "img" ).item(0);
			
			if( true == fFadein )
			{
				Anime.setOpacity( objHeadingImage, 0 );
			}
			
			headingPreloader.onload	=	function(){
											objHeadingImage.src 			=	newDetail.heading;
											headingPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
											if( true == fFadein )
											{
												setTimeout(	function(){
																	Anime.fadeIn( objHeadingImage, 1 );
												},100);
											}
										}
			
			headingPreloader.src	=	newDetail.heading;
		}
	}
	
	
	if( newDetail.imageFile != this.imageFile )
	{
		var		imgPreloader 	=	new Image();
		var		objExpantion	=	document.getElementById( "expantion" );
		var		objImage		=	objExpantion.getElementsByTagName( "img" ).item(0);
		
		if( true == fFadein )
		{
			Anime.setOpacity( objImage, 0 );
		}
		
		imgPreloader.onload	=	function(){
									objImage.src 			=	newDetail.imageFile;
									objImage.className		=	"detail-image";
									imgPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
									if( true == fFadein )
									{
										setTimeout(	function(){
														Anime.fadeIn( objImage, 1 );
										},100);
									}
								}
		imgPreloader.src		=	newDetail.imageFile;
	}
	
	this.imageFile	=	newDetail.imageFile;
	this.blogURL	=	newDetail.blogURL;
	this.worksURL	=	newDetail.worksURL;
	this.briefURL	=	newDetail.briefURL;
	this.name		=	newDetail.name;
	this.heading	=	newDetail.heading;
	
	
}


/* =========================================================================**
	ObjDetail.clickFunc
		notes:	各種HTMLがクリックされた際の処理
				
*========================================================================== */
ObjDetail.clickFunc = function(	e	// イベントオブジェクト
){
	var		fFadein			=	( true == isIE7Under() ) ? false : true;
	
	if( !e )
	{
		e	=	window.event;
	}
	
	var clickObj	=	getSource(e);
	
	switch(clickObj.id)
	{
		case 'prev000':
		case 'next000':
			{
	
	
				for( i in tmpDetail.tbl )
				{
					if( tmpDetail.imageFile == tmpDetail.tbl[ i ][ "detailurl" ] )
					{
						var		number		=	parseInt(i);
						if( clickObj.id == 'prev000' )
						{
							number--;
							if( 0 > number )	number	+=	tmpDetail.tbl.length;
						}
						else
						{
							number++;
							number		%=		tmpDetail.tbl.length;
						}
						

						var		newDetail	=	new ObjDetail(
													tmpDetail.tbl[ number ][ "detailurl" ],
													tmpDetail.tbl[ number ][ "blogurl" ],
													tmpDetail.tbl[ number ][ "worksurl" ],
													tmpDetail.tbl[ number ][ "briefurl" ],
													tmpDetail.tbl[ number ][ "name" ],
													tmpDetail.tbl[ number ][ "heading" ]
											);
						
						
						
						tmpDetail.change( newDetail );

						
						
						
						
						
						break;
						
					}
				}
			}
			break;
		case 'close000':
		case 'boad':
		default:
			{
				var		objDetail		=	document.getElementById( "detail" );
				var		objClose		=	document.getElementById( "close000" );
				var		objPrev			=	document.getElementById( "prev000" );
				var		objNext			=	document.getElementById( "next000" );
				var		objExpantion	=	document.getElementById( "expantion" );
				var		objImage		=	objExpantion.getElementsByTagName( "img" ).item(0);
				
				objDetail.style.display		=	"none";
				if( false == fFadein )
				{
					objImage.src 				=	"/common/image/img-detail-white.jpg";
				}
				removeListener( objNext, 'click', ObjDetail.clickFunc );
				removeListener( objPrev, 'click', ObjDetail.clickFunc );
				removeListener( objClose, 'click', ObjDetail.clickFunc );
				removeListener( objImage, 'click', ObjDetail.clickFunc );
				restartAuto();
			}
			break;
	}
	
}









