/**
 * @author yamashita
 */

var map;
var mgr;
var center;
/*
 * 世界測地系→日本測地系
 */
function to_jp(lat, lng) {
	var r = new Array(2);
	r["lng"] = lng + lat * 0.000046047 + lng * 0.000083049 - 0.010041;
	r["lat"] = lat + lat * 0.00010696 - lng * 0.000017467 - 0.0046020;
	
	return r;
}

//マップ表示
function map_view(lat, lng) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map_canvas"));
		center = new GLatLng(lat,lng);
		map.setCenter(center,15);
		map.addControl(new GSmallMapControl());
		
		mgr = new MarkerManager(map);
		var markerIcon = new GIcon();
		var m = new GMarker(center);
		GEvent.addListener(m, "click", function() {
			m.openInfoWindowHtml("<p>会場</p>");
		});
		mgr.addMarker(m, 2);
		hotel_list(lat, lng, 1);
	}
}
function hotel_list(lat, lng, r_page) {
	$.ajax({
		url: 'http://api.rakuten.co.jp/rws/3.0/json',
		data: {
			affiliateId: '0bb97e58.93ddadce.0bb97e59.1b94126d',
			developerId: 'f3f25c880af259691411eceb0043ba90',
			operation: 'SimpleHotelSearch',
			version: '2009-10-20',
			latitude: lat,
			longitude: lng,
			searchRadius: 3,
			hotelThumbnailSize: 3,
			datumType: 1,
			page: r_page,
			hits: 4
		},
		type: 'GET',
		dataType: "jsonp",
		jsonp: "callBack",
		error: function(XMLHttpRequest, textStatus, errorThrown) {
		},
		success: function(data, status){
			if(data.Header.Status != 'NotFound') {
				var pager = data.Body.SimpleHotelSearch.pagingInfo[0];
				$("div#hotel_list").empty();
				$(".paging").empty();
				//ページャー
				$(".hotel_pager").html(pager.recordCount+"件中　"+pager.first+"～"+pager.last+"件表示");
				if(pager.page != 1) {
					var prev = pager.page-1;
					$("<span/>").html("<a href='javascript:void(0);' onClick='hotel_list("+lat+","+lng+","+prev+")'>◄</a>").appendTo(".paging");
					//$("<a/>").attr("href","javascript:void(0);").attr("onClick","hotel_list("+lat+","+lng+","+prev+")").html("◄").appendTo(".paging");
				} else {
					$("<div/>").addClass("disabled").html("◄").appendTo(".paging");
				}
				
				
				if(pager.pageCount > 10) {
					var start = pager.page - 5;
					if(start <= 1) {
						 start = 1; 
					}
					var end = pager.pageCount;
					if((start+10) <= end) {
						if(start > 1 && pager.page >= 5) {
							$("<span/>").html("…").appendTo(".paging");
						}
						for (var i=1; i<8; i++) {
							if (start == pager.page) {
								$("<span/>").addClass("current").html(start).appendTo(".paging");
							} else {
								$("<span/>").html("<a href='javascript:void(0);' onClick='hotel_list("+lat+","+lng+","+start+")'>"+start+"</a>").appendTo(".paging");
							}
							start++;
						}
						if(pager.page != pager.pageCount) { 
							$("<span/>").html("…").appendTo(".paging");
							$("<span/>").html("<a href='javascript:void(0);' onClick='hotel_list("+lat+","+lng+","+end+")'>"+end+"</a>").appendTo(".paging");
						}
					} else {
						start = pager.page - (8 - (pager.pageCount - pager.page));
						$("<span/>").html("…").appendTo(".paging");
						for (var i = start; i<=pager.pageCount; i++) {
							if (i == pager.page) {
								$("<span/>").addClass("current").html(i).appendTo(".paging");
							} else {
								$("<span/>").html("<a href='javascript:void(0);' onClick='hotel_list("+lat+","+lng+","+i+")'>"+i+"</a>").appendTo(".paging");
							}
						}
					}
				} else {
					for(var i=1; i <=pager.pageCount; i++) {
						if (i == pager.page) {
							$("<span/>").addClass("current").html(i).appendTo(".paging");
						} else {
							$("<span/>").html("<a href='javascript:void(0);' onClick='hotel_list("+lat+","+lng+","+i+")'>"+i+"</a>").appendTo(".paging");
						}
					}
				}
						
				if(pager.page != pager.pageCount) {
					var next = pager.page + 1;
					$("<span/>").html("<a href='javascript:void(0);' onClick='hotel_list("+lat+","+lng+","+next+")'>►</a>").appendTo(".paging");
					//$("<a/>").attr("href","#").attr("onClick","hotel_list("+lat+","+lng+","+next+")").html("►").appendTo(".paging");
				} else {
					$("<div/>").addClass("disabled").html("►").appendTo(".paging");
				}
				//マーカー初期化
				mgr.clearMarkers();
				var mrk = new GMarker(center);
				GEvent.addListener(mrk, "click", function() {
					mrk.openInfoWindowHtml("<p>会場</p>");
				});
				mgr.addMarker(mrk, 2);
				//結果
		        $.each(data.Body.SimpleHotelSearch.hotel, function(i, item) {
					if(i==1) {
						var icon_alp = 'B';
					} else if(i==2) {
						var icon_alp = 'C';
					} else if(i==3) {
						var icon_alp = 'D';
					} else {
						var icon_alp = 'A';
					}
					
		            var hotel_name = item.hotelBasicInfo.hotelName;
					var hotel_axs = item.hotelBasicInfo.access;
					var m_lat = item.hotelBasicInfo.latitude;
					var m_lng = item.hotelBasicInfo.longitude;
					addNewMarker(m_lat, m_lng, hotel_name,hotel_axs, icon_alp);
					
					//リスト追加 
					$("<div/>").addClass('clearfix').addClass('hotel_units').attr('id','hotel_units_'+i).appendTo("#hotel_list");
					//画像
					$("<div />").addClass('hotel_photo').attr('id','hotel_photo_'+i).appendTo("#hotel_units_"+i);
					$("<a href='"+item.hotelBasicInfo.hotelInformationUrl+"' target='_blank'><img src='"+item.hotelBasicInfo.hotelThumbnailUrl+"' /></a>").appendTo("#hotel_photo_"+i);
					$("<div />").addClass('hotel_detail').attr('id','hotel_detail_'+i).appendTo("#hotel_units_"+i);
					//名称・見出し
					$("<a/>").attr('href',item.hotelBasicInfo.hotelInformationUrl).attr('target','_blank').html("["+icon_alp+"] "+item.hotelBasicInfo.hotelName).appendTo("#hotel_detail_"+i);
					$("<p/>").html(item.hotelBasicInfo.hotelSpecial).appendTo("#hotel_detail_"+i);
					//最安料金
					if(item.hotelBasicInfo.hotelMinCharge != null) {
						$("<p/>").addClass('hotel_price').html('<span>[最安料金]</span>&nbsp;'+item.hotelBasicInfo.hotelMinCharge+"円～").appendTo("#hotel_detail_"+i);
					}
					//ｱｸｾｽ・駐車場
					$("<div/>").addClass("clearfix").html('<div class="hotel_label">アクセス</div><div class="hotel_sub">'+item.hotelBasicInfo.access+'</div>').appendTo("#hotel_detail_"+i);
					$("<div/>").addClass("clearfix").html('<div class="hotel_label">駐車場</div><div class="hotel_sub">'+item.hotelBasicInfo.parkingInformation+'</div>').appendTo("#hotel_detail_"+i);

		        });	
			} else {
				$("<div/>").addClass('clearfix').addClass('hotel_units').html('近隣の宿泊施設情報が見つかりませんでした').appendTo("#hotel_list");
			}
		}
	});	
}
//ホテル情報
function req_rakuten(lat,lng,hold_id) {

	$.ajax({
		url: 'http://api.rakuten.co.jp/rws/3.0/json',
		data: {
			affiliateId: '0bb97e58.93ddadce.0bb97e59.1b94126d',
			developerId: 'f3f25c880af259691411eceb0043ba90',
			operation: 'SimpleHotelSearch',
			version: '2009-10-20',
			latitude: lat,
			longitude: lng,
			searchRadius: 3,
			datumType: 1,
			hits: 3
		},
		type: 'GET',
		dataType: "jsonp",
		jsonp: "callBack",
		error: function(XMLHttpRequest, textStatus, errorThrown) {
		},
		success: function(data, status){
			$("div#hotel_info").empty();
			if (data.Header.Status != 'NotFound') {
				$.each(data.Body.SimpleHotelSearch.hotel, function(i, item){
					var m_lat = item.hotelBasicInfo.latitude;
					var m_lng = item.hotelBasicInfo.longitude;
					$("<div/>").append("<a href='" + item.hotelBasicInfo.hotelInformationUrl + "' target='_blank'>" + item.hotelBasicInfo.hotelName + "</a><br /><p>" + item.hotelBasicInfo.access + "</p>").appendTo("div#hotel_info");
					$(".eve_hotel_link").attr('href', '/search/hotel/' + hold_id);
				});
			} else {
				$("<div/>").addClass("map_not_found").html('近隣の宿泊施設情報が見つかりませんでした').appendTo("div#hotel_info");
			}
		}
	});
}
//ホテルマーカー追加
function addNewMarker(m_lat, m_lng, hotel_name,hotel_axs, icon_alp) {
	
	var markerIcon = new GIcon();
	markerIcon.image = "http://www.google.com/mapfiles/gadget/letters/marker"+icon_alp+".png";
	markerIcon.shadow="http://www.google.com/mapfiles/gadget/shadow50Small80.png";
	markerIcon.iconSize = new GSize(16, 27);
	markerIcon.shadowSize = new GSize(30, 28);
	markerIcon.iconAnchor = new GPoint(8, 27);
	markerIcon.infoWindowAnchor = new GPoint(5, 1);
	
	var newMarker = new GMarker(new GLatLng(m_lat, m_lng), {icon:markerIcon});
	GEvent.addListener(newMarker, "click", function() {
		newMarker.openInfoWindowHtml(hotel_name, {maxWidth: 100});
	});
	
	mgr.addMarker(newMarker, 2);
	mgr.refresh();
}

