var objectShopDetail;
functionDetail_resetMarginPanelDetail();
window.onresize = functionDetail_resetMarginPanelDetail;

// 詳細パネルのサイズと位置をリセット
function functionDetail_resetMarginPanelDetail()
{
	var sizeWindowDisplay = cheltenhamWindow_getSizeDisplay();
	var widthPanel = 550;
	var heightPanel = 450;
	var offsetX = Math.floor( ( sizeWindowDisplay.width - widthPanel ) / 2 );
	var offsetY = Math.floor( ( sizeWindowDisplay.height - heightPanel ) / 2 );
	var objectPanelDetail = document.getElementById( 'PanelDetail' );

	objectPanelDetail.style.width = widthPanel + 'px';
	objectPanelDetail.style.height = heightPanel + 'px';
	objectPanelDetail.style.left = offsetX + 'px';
	objectPanelDetail.style.top = offsetY + 'px';
}

// タイムアウト処理
function functionDetail_checkTimeout()
{
	timeoutSecond -= timeInterval;
	if( timeoutSecond <= 0 )
	{
		// タイマーをストップ
		clearInterval( timerId );
		clearInterval( timerIdStatus );
		timerId = null;
		timerIdStatus = null;
		// HTTPリクエストを中断
		httpObject.abort();
		// エラーダイアログを表示
		timerIdStatus = cheltenhamText_displayTextGradually( 'LabelStatus', 'ファイルの読み込みに失敗しました。', 500, 20 );

		return( false );
	}
}

// POSTデータ
function functionDetail_sendPostData( objectEvent, id )
{
	// 送信POSTデータ
	var postData = 'ID=' + encodeURIComponent( id );

	// HTTP通信を開始
	functionDetail_sendHttpRequest( urlXmlDetail, postData, functionDetail_printResultData );
}

// サーバーへデータを送信する関数
function functionDetail_sendHttpRequest( urlTarget, postData, functionNext )
{
	// タイマーをリセット
	timeoutSecond = timeoutSecondDefault;

	// タイマーをストップ
	if( timerId != null )
	{
		clearInterval( timerId );
	}
	if( timerIdStatus != null )
	{
		clearInterval( timerIdStatus );
	}

	// XMLHttpリクエストオブジェクト生成
	httpObject = cheltenhamXmlHttpObject_createXmlHttpRequest()
	if( !httpObject )
	{
		cheltenhamXmlHttpObject_noticeFailureCreateXmlHttpRequest();
	}

	// タイマーをセット
	timerId = setInterval( 'functionDetail_checkTimeout()', timeInterval );
	httpObject.open( "post", urlTarget, true );
	httpObject.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	timerIdStatus = cheltenhamText_displayTextGradually( 'LabelStatus', 'Now Loading .............................................................', 300, 20 );
	httpObject.onreadystatechange = function()
	{
		if( httpObject.readyState == 4 )
		{
			// タイマーをストップ
			clearInterval( timerId );
			timerId = null;

			document.getElementById( 'LabelStatus' ).innerHTML = '　';

			if( httpObject.status == 200 )
			{
				// 処理を実行
				functionReference = function()
				{
					// タイマーをストップ
					clearInterval( timerIdStatus );
					timerIdStatus = null;
					// ステータスを表示
					cheltenhamText_displayTextGradually( 'LabelStatus', '店舗の詳細情報が見つかりました。', 100, 20 );
				}
				setTimeout( functionReference, 0 );
				functionReference = function()
				{
					functionNext( httpObject.responseXML );
				}
				setTimeout( functionReference, 100 );
			}
		}
	}
	httpObject.send( postData );
}

// 検索結果を表示する関数
function functionDetail_printResultData( dataXml )
{
	var textHtml = '';

	// 店舗タグリスト
	var listTagShop = new Array();
	listTagShop = dataXml.getElementsByTagName( 'Shop' );

	// データがなければ
	if( listTagShop.length == 0 )
	{
		// パネルを閉じる
		functionDetail_activatePanelDetail( 0 );
	}
	else
	{
		// 店舗オブジェクトのインスタンス
		var objectShop = new Shop();
		// 表示中の番号
		i = 0;
		objectShop.number = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'Number' )[ 0 ] );
		// ID
		objectShop.id = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'ID' )[ 0 ] );
		// 店名
		objectShop.nameTitle = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'NameTitle' )[ 0 ] );
		objectShop.nameMain = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'NameMain' )[ 0 ] );
		objectShop.nameBranch = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'NameBranch' )[ 0 ] );
		objectShop.setNameTotal();
		// 所在地
		objectShop.locationZip1 = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationZip1' )[ 0 ] );
		objectShop.locationZip2 = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationZip2' )[ 0 ] );
		objectShop.locationPrefecture = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationPrefecture' )[ 0 ] );
		objectShop.locationCity = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationCity' )[ 0 ] );
		objectShop.locationBlock = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationBlock' )[ 0 ] );
		objectShop.locationBlockAll = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationBlockAll' )[ 0 ] );
		objectShop.locationBuilding = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationBuilding' )[ 0 ] );
		objectShop.locationLongitude = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationLongitude' )[ 0 ] );
		objectShop.locationLatitude = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'LocationLatitude' )[ 0 ] );
		// 電話番号
		objectShop.telephoneHome = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'TelephoneHome' )[ 0 ] );
		objectShop.telephoneFax = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'TelephoneFax' )[ 0 ] );
		// Web
		objectShop.webPc = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'WebPC' )[ 0 ] );
		// 駐車場
		objectShop.parkingCapacity = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'ParkingCapacity' )[ 0 ] );
		objectShop.parkingDetail = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'ParkingDetail' )[ 0 ] );
		// 写真
		objectShop.photoNumber = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoNumber' )[ 0 ] );
		if( objectShop.photoNumber > 0 )
		{
			objectShop.photo = new Array();
		}
		for( j = 0 ; j < objectShop.photoNumber ; j++ )
		{
			objectShop.photo[ j ] = new ShopImage();
			objectShop.photo[ j ].xml = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'Photo' )[ j ] );
			objectShop.photo[ j ].caption = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoCaption' )[ 0 ] );
			// PC Large
			objectShop.photo[ j ].largeUrl = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoPCLargeUrl' )[ j ] );
			objectShop.photo[ j ].largeWidth = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoPCLargeWidth' )[ j ] );
			objectShop.photo[ j ].largeHeight = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoPCLargeHeight' )[ j ] );
			objectShop.photo[ j ].largeHtml = '<img src = "' + objectShop.photo[ j ].largeUrl + '" width = "' + objectShop.photo[ j ].largeWidth + '" height = "' + objectShop.photo[ j ].largeHeight + '" alt = "' + objectShop.photo[ j ].caption + '" border = "0"/>';
			// PC Small
			objectShop.photo[ j ].smallUrl = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoPCSmallUrl' )[ j ] );
			objectShop.photo[ j ].smallWidth = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoPCSmallWidth' )[ j ] );
			objectShop.photo[ j ].smallHeight = getNodeValueIfFirstChildExist( listTagShop[ i ].getElementsByTagName( 'PhotoPCSmallHeight' )[ j ] );
			objectShop.photo[ j ].smallHtml1 = '<img src = "' + objectShop.photo[ j ].smallUrl + '" width = "' + objectShop.photo[ j ].smallWidth + '" height = "' + objectShop.photo[ j ].smallHeight + '" alt = "' + objectShop.photo[ j ].caption + '" border = "0"/>';
			objectShop.photo[ j ].smallHtml = '<a href = "' + objectShop.photo[ j ].largeUrl + '" rel = "prettyPhoto[Photo]" target = "_blank"><img src = "' + objectShop.photo[ j ].smallUrl + '" height = "100" alt = "' + objectShop.photo[ j ].caption + '" border = "0" style = "margin-right:10px;"/></a>';
		}
		// 店舗リストに格納
		listShop[ i ] = objectShop;

		// HTML
		document.getElementById( 'DetailShopPhoto' ).innerHTML = '';
		for( j = 0 ; j < objectShop.photoNumber ; j++ )
		{
			document.getElementById( 'DetailShopPhoto' ).innerHTML += objectShop.photo[ j ].smallHtml;
		}
		document.getElementById( 'DetailShopName' ).innerHTML = objectShop.nameTotal;
		document.getElementById( 'DetailShopLocation' ).innerHTML = objectShop.locationCity + objectShop.locationBlockAll + ' ' + objectShop.locationBuilding;
		document.getElementById( 'DetailShopTelephone' ).innerHTML = 'Tel : ' + objectShop.telephoneHome;
		if( objectShop.telephoneFax != '' )
		{
			document.getElementById( 'DetailShopTelephone' ).innerHTML += ' / Fax : ' + objectShop.telephoneFax;
		}
		document.getElementById( 'DetailShopWeb' ).innerHTML = '';
		if( objectShop.webPc != '' )
		{
			document.getElementById( 'DetailShopWeb' ).innerHTML = '<a href = "' + objectShop.webPc + '" target = "_blank">' + objectShop.webPc + '</a>';
		}
		document.getElementById( 'DetailShopParking' ).innerHTML = '';
		if( objectShop.parkingCapacity != '' )
		{
			if( objectShop.parkingCapacity > 0 )
			{
				document.getElementById( 'DetailShopParking' ).innerHTML = objectShop.parkingCapacity + '台';
			}
			else
			{
				document.getElementById( 'DetailShopParking' ).innerHTML = 'なし';
			}
		}
		if( objectShop.parkingDetail != '' )
		{
			document.getElementById( 'DetailShopParking' ).innerHTML += '（' + objectShop.parkingDetail + '）';
		}

		// フィードバックフォーム
		document.getElementById( 'FeedbackID' ).value = objectShop.id;
		document.getElementById( 'FeedbackComment' ).value = '';

		// パネルを開く
		functionDetail_activatePanelDetail( 1 );
	}
}


// 詳細パネルを表示
function functionDetail_activatePanelDetail( flag )
{
	var objectTarget = document.getElementById( 'PanelDetail' );
	if( flag )
	{
		objectTarget.style.display = 'block';
	}
	else
	{
		objectTarget.style.display = 'none';
	}
}

// 詳細パネルをマウスのカーソルに追従
function functionDetail_movePanelDetail( e )
{
	var objectPanel = document.getElementById( 'PanelDetail' );
	objectPanel.style.left = eval( e.clientX + 10 ) + 'px';
	objectPanel.style.top = eval( e.clientY + 0 ) + 'px';
}




