var Jalan = function(){};

////////////////////////////////////////////
// pict_size
//	0:pictSS
//	1:pictS
//	2:pict
//	3:pictM（初期値）
//	4:pictL
//	5:pictLL
////////////////////////////////////////////

////////////////////////////////////////////
// picts
//	出力される宿の画像の出力個数を指定
//	1 ～ 5までの半角数字。
//	初期値:1
////////////////////////////////////////////

////////////////////////////////////////////
// order
//	0:宿番号順（初期値）
//	1:50音順
//	2:参考料金の安い順
//	3:参考料金の高い順
//	4:クチコミ評点の高い順
////////////////////////////////////////////

////////////////////////////////////////////
// start
//	出力されるデータの何件目から表示するかを指定
//	初期値:1
////////////////////////////////////////////

////////////////////////////////////////////
// count
//	1 ～ 100までの半角数字。
//	初期値:10
////////////////////////////////////////////

////////////////////////////////////////////
// xml_ptn
//	0:基本情報（初期値）
//	1:料金情報・クチコミ評点情報を含む
//	2:プラン名まで含む
////////////////////////////////////////////

Jalan.initParam = {
//	pref		: 390000,
//	l_area		: '',
//	s_area		: '',
	pict_size	: 3,
	picts		: 5,
	order		: 4,
//	start		: 1,
	count		: 100,
	xml_ptn		: 1
};

Jalan.areaSelect = {
	390200 : {
		390202 : '高知・春野',
		390203 : '吾川・いの',
		390205 : '南国・香美',
		390208 : '須崎・土佐・仁淀川'
	},
	390500 : {
		390502 : '安芸',
		390505 : '室戸'
	},
	390800 : {
		390802 : '中村・四万十・大方',
		390805 : '足摺・土佐清水・宿毛'
	}
};

Jalan.sAreaSelect = function( lAreaVal ){
	var s_areas = Jalan.areaSelect[lAreaVal];
	
	var optHtmls = '<option value="">全域</option>';
	for( var i in s_areas ){
		optHtmls += '<option value="'+i+'">'+s_areas[i]+'</option>';
	}
	$('#s_area').html( optHtmls );
};

Jalan.deteilBtnClick = function( hId ){
	$('BODY').append(
		'<div id="hDetailArea">'+
			'<div id="hDetailBase"></div>'+
			'<div id="hDetailContainer">'+
				'<div id="hDetailHeader">'+
					'<div id="hNameClone"></div>'+
					'<div id="hDetailCloseBtn">'+
						'<button>閉じる</button>'+
					'</div>'+
				'</div>'+
				'<div id="hDetailMain">'+
					'<div id="hDetailMainImage">'+
						'<div id="hDetai_loading">'+
							'<img src="/images/loading_circle_01.gif" />'+
						'</div>'+
					'</div>'+
				'</div>'+
			'</div>'+
		'</div>'
	);
	
	Jalan.initParam['h_id']     = hId;
	Jalan.initParam['xml_ptn']  = 2;
	Jalan.initParam['callback'] = 'Jalan.callBackFuncDispDetail';
	JalanAPIQry = {
		url		: '/php/api/jalan.php',
		params	: Jalan.initParam
	};
	KtUtils.ajxJsonp( JalanAPIQry );
};

Jalan.callBackFuncDispDetail = function( resJson ){
	var winH = $(window).height();
	var dBaseH = winH-90;
	$('#hDetailContainer').height(
		dBaseH
	);
	$('#hDetailMain').height(
		dBaseH-45
	);
	
	$('#hDetailBase, #hDetailCloseBtn button').bind('click', function(){
		$('#hDetailArea').remove();
	});
	
//objectdump(resJson);
	var displayData     = '';
	var isDisplayDataOk = true;
	try{
		displayData = Jalan.makeDetailHtml(resJson);
	} catch( e ){
		displayData = '<div class="h_detail_error_disp">データの取得に失敗しました。</div>';
		isDisplayDataOk = false;
	} finally {
		$('#hDetailMainImage').html( displayData );
		if( isDisplayDataOk ){
			$('#hNameClone').html(
				$('h2.h_detail_HotelName').clone()
			);
			$('#hNameClone').append(
				$('div.h_detail_go_jalan').clone()
			);
			
			$('div.h_detail_PictureURL_area_image, div.h_detail_PlanPicture').click(function(){
				var targetImgObj = $(this).children().get(0);
				var imgSrc = targetImgObj.src;
				var imgAlt = targetImgObj.alt;
				imgSrc = imgSrc.replace( /pictM/, 'pictL' );
				$('#big_image').html(
					'<div id="big_image_main">'+
						'<div id="row_2"><span id="big_image_close">CLOSE</span></div>'+
						'<img src="'+imgSrc+'" alt="'+imgAlt+'" />'+
						'<div id="row_1">'+imgAlt+'</div>'+
					'<div>'
				);
			
				$('#big_image_close').click(function(){
					$('#big_image').empty();
				});
			});
		}
	}
};

Jalan.affi_a_start = function( hotelURL ){
	return '<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2169233&pid=878629093&vc_url='+
				encodeURIComponent( hotelURL )+
			'" target="_blank" ><img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2169233&pid=878629093" height="0" width="0" border="0">';
};

Jalan.makeDetailHtml = function( json ){
	var htl = json.Hotel;
	
	var accInfos = htl.AccessInformation;
	if( typeof accInfos == 'string' ) accInfos = new Array( accInfos );
	var accInfoHtmls = '';
	$.each(accInfos, function(){
		accInfoHtmls += '<p>・'+this+'</p>';
	});
	
	var lastUps = htl.LastUpdate['@attributes'];
	
	var onsenName = '';
	if(htl.OnsenName.length != undefined ) onsenName = htl.OnsenName;
	
	var hPictUrls = htl.PictureURL;
	var isHPictUrlsString = false;
	if( typeof hPictUrls == 'string' ){
		hPictUrls = new Array( hPictUrls );
		isHPictUrlsString = true;
	}
	var hPictHtmls = '';
	$.each(hPictUrls, function(i){
		var pictureCaption = '';
		if( isHPictUrlsString ){
			pictureCaption = htl.PictureCaption;
		} else {
			pictureCaption = htl.PictureCaption[i];
		}
		
		hPictHtmls += '<div class="h_detail_PictureURL_area">'+
						'<div class="h_detail_PictureURL_area_image">'+
							'<img src="'+this+'" alt="'+pictureCaption+'" />'+
							'<div>【<span>画像拡大</span>】</div>'+
						'</div>'+
						'<div class="h_detail_PictureURL_area_caption">'+
							pictureCaption+
						'</div>'+
					'</div>';
	});
	
	var hPlans = htl.Plan;
	if( typeof hPlans == 'string' ) hPlans = new Array( hPlans );
	var hPlanHtmls = '';
	$.each(hPlans, function(){
		var baseThis = this;
		var PlanSampleRateFrom = '';
		if( baseThis.PlanSampleRateFrom.length != undefined ) PlanSampleRateFrom = '￥'+KtUtils.separate3( baseThis.PlanSampleRateFrom )+' ～';
		
		var planPicts = baseThis.PlanPictureURL;
		var isPlanPicts = false;
		if( typeof planPicts == 'string' ){
			planPicts = new Array( planPicts );
			isPlanPicts = true;
		}
		var planPictHtmls = '<div class="h_detail_PlanPicture_block">';
		$.each(planPicts, function(i){
			var planPictureCaption = '';
			if( isPlanPicts ){
				planPictureCaption = baseThis.PlanPictureCaption;
			} else {
				planPictureCaption = baseThis.PlanPictureCaption[i];
			}
			
			planPictHtmls += '<div class="h_detail_PlanPicture_area">'+
								'<div class="h_detail_PlanPicture">'+
									'<img src="'+this+'" alt="'+planPictureCaption+'" />'+
									'<div>【<span>画像拡大</span>】</div>'+
								'</div>'+
								'<div class="h_detail_PlanPictureCaption">'+
									planPictureCaption+
								'</div>'+
							'</div>';
		});
		planPictHtmls += '</div>';
		
		hPlanHtmls += '<li class="h_detail_plan_area">'+
						'<div class="h_detail_PlanName">'+
							baseThis.PlanName+
						'</div>'+
						
						planPictHtmls+
						
						'<div class="h_detail_plan_summary_block">'+
							'<div class="h_detail_PlanCheckIn">'+
								'<span class="h_detail_desc_title">チェックイン：</span>'+
									baseThis.PlanCheckIn+
								'</span>'+
							'</div>'+
							'<div class="h_detail_PlanCheckOut">'+
								'<span class="h_detail_desc_title">チェックアウト：</span>'+
									baseThis.PlanCheckOut+
								'</span>'+
							'</div>'+
							'<div class="h_detail_PlanSampleRateFrom">'+
								'<span class="h_detail_desc_title">参考価格：</span>'+
									PlanSampleRateFrom+
								'</span>'+
							'</div>'+
							'<div class="h_detail_Meal">'+
								'<span class="h_detail_desc_title">食事：</span>'+
									baseThis.Meal+
								'</span>'+
							'</div>'+
							'<div class="h_detail_RoomName">'+
								'<span class="h_detail_desc_title">部屋名：</span>'+
									baseThis.RoomName+
								'</span>'+
							'</div>';
		
		var roomType = baseThis.RoomType;
		if( typeof roomType == 'string' ) roomType = new Array( roomType );
		var roomTypeHtmls = '<div class="h_detail_RoomType">'+
								'<span class="h_detail_desc_title">部屋タイプ：</span>';
		$.each(roomType, function(){
			roomTypeHtmls += '<span class="h_detail_RoomType_parts">'+this+'</span>';
		});
		roomTypeHtmls += '</div>';
		
		hPlanHtmls += roomTypeHtmls;
		hPlanHtmls += '</div></li>';
	});
	
	var lng = htl.X/1000/3600;	// ミリ秒を時に変換
	var lat = htl.Y/1000/3600;	// ミリ秒を時に変換
	
	var affi_a_start = Jalan.affi_a_start( htl.HotelDetailURL );
	
	var hotelName = htl.HotelName;
	
	var htlRating = '無';
	if( typeof(htl.Rating) == 'string' ){
		htlRating = htl.Rating;
	}
	
	var creditcard   = '';
	var typeOfCredit = typeof(htl.CreditCard);
	if( typeOfCredit.toLowerCase() == 'string' ) creditcard = htl.CreditCard;
	
	return '<div class="h_detail">'+
				'<div class="h_detail_head">'+
					'<div class="h_detail_top">'+
						'<div class="h_detail_Area_text">'+
							htl.Area.LargeArea+
							'<span class="h_detail_Area_gt">&gt;</span>'+
							htl.Area.SmallArea+
						'</div>'+
						'<div class="h_detail_HotelType">'+
							htl.HotelType+
						'</div>'+
						'<div class="h_detail_HotelNameKana">'+
							htl.HotelNameKana+
						'</div>'+
						'<h2 class="h_detail_HotelName">'+
							affi_a_start+
								hotelName+
							'</a>'+
						'</h2>'+
						//'<div class="h_detail_PostCode">'+
						//	htl.PostCode+
						//'</div>'+
						'<div class="h_detail_HotelAddress">'+
							htl.HotelAddress+
						'</div>'+
						'<div class="h_detail_go_jalan">'+
							'【&nbsp;'+
							affi_a_start+
								'じゃらんの詳細ページへ'+
							'</a>'+
							'&nbsp;】'+
						'</div>'+
						'<h3 class="h_detail_HotelCatchCopy">'+
							htl.HotelCatchCopy+
						'</h3>'+
						'<h4 class="h_detail_detail_HotelCaption">'+
							htl.HotelCaption+
						'</h4>'+
						'<div class="h_detail_kutikomi_lastup">'+
							'<div class="h_detail_NumberOfRatings">'+
								'<span class="h_detail_kutikomi_title">クチコミ件数：</span>'+
								htl.NumberOfRatings+
							'</div>'+
							'<div class="h_detail_Rating">'+
								'<span class="h_detail_kutikomi_title">クチコミ評点：</span>'+
								htlRating+
								'<span class="h_detail_Rating_normal">&nbsp;（普通＝3.0）</span>'+
							'</div>'+
							'<div class="h_detail_lastupdate">'+
								'<span class="">最終更新日：</span>'+
								lastUps.year+'-'+lastUps.month+'-'+lastUps.day+
							'</div>'+
						'</div>'+
					'</div>'+
					
					'<iframe class="h_detail_gmap" src="/php/googlemaps/01.php?latitude='+lat+'&longitude='+lng+'&width=300&height=300" width="320" height="320" frameborder="0" scrolling="no"></iframe>'+
				'</div>'+
				
				'<div class="h_detail_PictureURL_block">'+
					hPictHtmls+
				'</div>'+
				
				'<div class="h_detail_summary_block">'+
					'<div class="h_detail_OnsenName">'+
						'<span class="h_detail_desc_title">温泉名：</span>'+
						onsenName+
					'</div>'+
					'<div class="h_detail_checkin">'+
						'<span class="h_detail_desc_title">チェックイン：</span>'+
						htl.CheckInTime+
					'</div>'+
					'<div class="h_detail_checkout">'+
						'<span class="h_detail_desc_title">チェックアウト：</span>'+
						htl.CheckOutTime+
					'</div>'+
					'<div class="h_detail_price">'+
						'<span class="h_detail_desc_title">参考価格：</span>'+
						'￥'+KtUtils.separate3( htl.SampleRateFrom )+' ～'+
					'</div>'+
					'<div class="h_detail_CreditCard">'+
						'<span class="h_detail_desc_title">クレジット：</span>'+
						creditcard+
					'</div>'+
				'</div>'+
				
				'<div class="h_detail_AccessInformation_title obi_title">'+
					'アクセス'+
				'</div>'+
				'<div class="h_detail_AccessInformation">'+
					accInfoHtmls+
				'</div>'+
				
				'<div class="h_detail_plan_block_title obi_title">'+
					hotelName+'の宿泊プラン'+
				'</div>'+
				'<ul class="h_detail_plan_block">'+
					hPlanHtmls+
				'</ul>'+
			'</div>';
};

Jalan.iniSArea = '';

$(function(){
	$('span.overview').hover(
		function(){
			var thisObj = $(this);
			var thisPos = thisObj.position();
			$('#'+thisObj.get(0).id+'_expl').css({
				top	: (parseInt( thisPos.top )+18) + 'px',
				left: parseInt( thisPos.left ) + 'px'
			}).show();
		},
		function(){
			$('#'+$(this).get(0).id+'_expl').hide();
		}
	);
	
	var isQryDetail = false;
	$('#qry_detail_btn').click(function(){
		$('#qry_detail_btn_on').toggle();
		$('#qry_detail_btn_off').toggle();
		
		$('#qry_detail').toggle();
	});
	
/*
	$('#jalan_qry_btn').click(function(){
		var qryArray = [];
		var lbInputs = $('#radio_check_area LABEL INPUT:checked');
		
		$.each(lbInputs, function(){
			qryArray.push( this.name + '=' + $(this).val() );
		});
		for( var key in Jalan.initParam ){
			qryArray.push( key + '=' + Jalan.initParam[key] );
		}
		var paramStr = qryArray.join('&');
		
		location.href = location.pathname + '?' + paramStr;
	});
*/
	
	$('div.hotel_data').sameHeight();
	
	$('#l_area').change(function(){
		Jalan.sAreaSelect( $(this).val() );
	});
	
	$('#jalan_qry_clear_btn').click(function(){
		var lbInputs = $('#radio_check_area LABEL INPUT:checked');
		
		$.each(lbInputs, function(){
			$(this).attr( 'checked', '' );
		});
		
		$('#h_type_def').attr( 'checked', 'checked' );
		$('#l_area_def').attr( 'selected', 'selected' );
		
		Jalan.sAreaSelect( 390200 );
	});
	
	Jalan.sAreaSelect( $('#l_area').val() );
	var sAreaOpts = $('#s_area option');
	$.each(sAreaOpts, function(){
		if( $(this).val() == Jalan.iniSArea ){
			$(this).attr( 'selected', 'selected' );
		}
	});
	
	var parMap = Jalan.initParam;
	var hidHtmls = '';
	for( var i_p in parMap ){
		hidHtmls += '<input type="hidden" name="'+i_p+'" value="'+parMap[i_p]+'">';
	}
//objectdump(hidHtmls);
	$('#jalan_q_form').append( hidHtmls );
	
	
	
	$('#jalan_map_btn').click(function(){
		var selecter = $('#jalan_map_selecter').val();
		var range    = $('#jalan_map_range').val();
		var points   = selecter.split('|');
		var pointsizeMap = {
			1  : 15,
			2  : 14,
			3  : 14,
			5  : 13,
			10 : 11
		};
		
		location.href = '/php/hotels/jalan/?type=point&x='+points[1]+'&y='+points[0]+'&range='+range+'&pointsize='+pointsizeMap[range];
	});
});

Jalan.topHotels = function( dispNum ){
	Jalan.topHotelsDispNum = dispNum;
	
	var RANDHOTELNUM = 55;
	
	Jalan.initParam['l_area']    = 390200;
	//Jalan.initParam['s_area']    = 390202;
	Jalan.initParam['pict_size'] = 1;
	Jalan.initParam['picts']     = 1;
	Jalan.initParam['start']     = Math.floor( Math.random()*RANDHOTELNUM ) + 1;
	Jalan.initParam['count']     = dispNum;
	Jalan.initParam['xml_ptn']   = 1;
	Jalan.initParam['callback']  = 'Jalan.callBackFuncTopHotels';
	JalanAPIQry = {
		url		: '/php/api/jalan.php',
		params	: Jalan.initParam
	};
	KtUtils.ajxJsonp( JalanAPIQry );
};

Jalan.callBackFuncTopHotels = function( resJson ){
	var hotels = resJson.Hotel;
//objectdump( hotels );
	
	var hotelHtmls = '';
	$.each(hotels, function(i){
		var htl = this;
		
		var affi_a_start = Jalan.affi_a_start( htl.HotelDetailURL );
		var htlName      = htl.HotelName;
		
		var classJaEvenBkColor  = '';
		if( (i+1) % 2 == 0 ){
			classJaEvenBkColor  = ' ja_even_bk_color';
		}
		
		hotelHtmls +=
			'<div class="ja_hotel'+classJaEvenBkColor+'">'+
				'<div class="ja_htl_area">'+
					htl.Area.SmallArea+
				'</div>'+
				'<div class="ja_htl_name">'+
					affi_a_start+
						htlName+
					'</a>'+
				'</div>'+
				'<div class="ja_htl_pict">'+
					affi_a_start+
						'<img src="'+htl.PictureURL+'" alt="'+htlName+'" />'+
					'</a>'+
				'</div>'+
				'<div class="ja_htl_price">￥'+KtUtils.separate3(htl.SampleRateFrom)+' ～</div>'+
				'<div class="ja_htl_go_jalan">'+
					affi_a_start+
						'<img src="/images/btn/go_site_jalan.gif" alt="じゃらん詳細" />'+
					'</a>'+
				'</div>'+
			'</div>';
	});
	
	
	$('#hotels_jalan').html( hotelHtmls );
	$('div.ja_htl_pict IMG').show( 400 );
};

