var map;
var geocoder;

google.load("feeds", "1");

google.setOnLoadCallback(initialize);

function initialize() {

  <!-- mapの生成　初期表示位置のセット -->
	map = new GMap2(document.getElementById("map_canvas"), { size: new GSize(370, 350) });
	map.setCenter(new GLatLng(37, 138), 6);
	<!-- 地図タイプ選択ボタン -->
	mapTypeObj = new GMapTypeControl();
	map.addControl(mapTypeObj);
	<!-- ズームレベル表示 -->
	zoomLevelObj = new GLargeMapControl();
	map.addControl(zoomLevelObj);
	geocoder = new GClientGeocoder();
	<!-- マーカー表示 -->
	markerInfomationCollect();

	//初期表示時に吹き出しを表示する。
	setTimeout("initialOpenBaloon()",500);
}

// マーカーに表示する情報を取得する。
function markerInfomationCollect(){
	var area_address_group = document.getElementsByName("hidden_area_address");
	var entry_url          = document.getElementsByName("hidden_entry_url");
	var entry_title        = document.getElementsByName("hidden_entry_title");
	var hall_name          = document.getElementsByName("hidden_hall_name");
	var hall_url           = document.getElementsByName("hidden_hall_url");
	var entry_date         = document.getElementsByName("hidden_entry_date");
	var intervalCount      = 0;
	var osakiFlag          = 0;
		
	for(i = 0; i < area_address_group.length; i++) {
		if (osakiFlag == 0) {
			if (hall_name[i].value == "大崎体育館") {
				osakiFlag = 1;
			}		
		} else {
			continue;
		}
		var url = entry_url[i].value;
		var title = entry_title[i].value
		var address = area_address_group[i].value;
		var hallname = hall_name[i].value;
		var hallurl = hall_url[i].value;
		var entrydate = entry_date[i].value;
		var intervalTime = intervalCount * 1000; 
		if (i % 10 == 0) {
			setTimeout("addMarker('" + title + "','" + url + "','" +  address + "','" +  hallname + "','" + hallurl + "','" + entrydate + "')",500);
			intervalCount = intervalCount + 1;
		} else {
			setTimeout("addMarker('" + title + "','" + url + "','" +  address + "','" +  hallname + "','" + hallurl + "','" + entrydate + "')", intervalTime);
			intervalCount = intervalCount + 1;
		}
	}
}

// 地図にマーカーを追加する。
function addMarker(title, url, address, hallname, hallurl,entryDate){
	geocoder.getLocations(address, function (response){
		if (!response || response.Status.code != 200) {
			if (response.Status.code == 602){
				alert("住所の場所を特定できませんでした。");
			}else if (response.Status.code == 500) {
				alert("正常に処理できませんでした。");
			}else if (response.Status.code == 620) {
				alert("タイムアウト 暫く待って下さい。");
			}
		} else {
			point = new GLatLng(response.Placemark[0].Point.coordinates[1],
			response.Placemark[0].Point.coordinates[0]); 
		}
		if (point) {

			var markerIcon = new GIcon();
			markerIcon.image = "http://izuma.jp/common/img/icon2.png";
			markerIcon.shadow = "http://izuma.jp/common/img/shadow.png";
			markerIcon.iconSize = new GSize(28, 38);
			markerIcon.shadowSize = new GSize(25, 38);
			markerIcon.iconAnchor = new GPoint(6, 20);
			markerIcon.infoWindowAnchor = new GPoint(1,1);
			markerIcon.transparent = "icon2.png";
			var opt = {icon:markerIcon};

			//マーカーを作成
			var marker = new GMarker(point, opt);
			if(hallurl == "" || hallurl == null || hallurl == undefined ) {
				GEvent.addListener(marker, "click", function(){
					map.setCenter(point, 14);
					marker.openInfoWindowHtml(entryDate+'<br>'+'<a href="' + url + '" target="_blank">' + '<font color="#00bbcc">' + title + '</font>' + '</a>' +'<br>'+ '場所：' + '<font color="#00bbcc">'+ hallname + '</font>' + '<br>' + address);
				});
			} else {
				GEvent.addListener(marker, "click", function(){
					map.setCenter(point, 14);
					marker.openInfoWindowHtml(entryDate+'<br>'+'<a href="' + url + '" target="_blank">' + '<font color="#00bbcc">' + title + '</font>' + '</a>'+'<br>'+ '場所：' + '<a href="' + hallurl + '" target="_blank">' + '<font color="#00bbcc">' + hallname + '</font>' + '</a>' + '<br>' + address);
				});
			}
	
        //マーカーを地図上に配置
        map.addOverlay(marker);
      }
    });
}

// リンククリック時に吹き出しを表示する。
function openBaloon(address, title, url, hallname, hallurl, entryDate) {
	geocoder.getLocations(address, function (response){
		if (!response || response.Status.code != 200) {
			if (response.Status.code != 620){
				//alert("住所 = " + address + "\n" +"住所の場所を特定できませんでした。" + "\n" + "入力した住所が見つかりません status=" + response.Status.code);
			}else{
				//alert("タイムアウト 暫く待って下さい2 status=" + response.Status.code);
			}
		} else {
			point = new GLatLng(response.Placemark[0].Point.coordinates[1],
		  		response.Placemark[0].Point.coordinates[0]); 
		}
		if (point) {
			if(hallurl == "" || hallurl == null || hallurl == undefined ) {
				// 会場名をリンクにせず、吹き出しを表示する。
				map.setCenter(point, 14);
				map.openInfoWindowHtml(map.getCenter(),entryDate+'<br>'+'<a href="' + url + '" target="_blank">' + '<font color="#00bbcc">' + title + '</font>' + '</a>'+'<br>'+ '場所：' + '<font color="#00bbcc">' + hallname + '</font>' + '<br>' + address);		
			} else {
				// 会場名をリンクにし、吹き出しを表示する。
				map.setCenter(point, 14);
				map.openInfoWindowHtml(map.getCenter(),entryDate+'<br>'+'<a href="' + url + '" target="_blank">' + '<font color="#00bbcc">' + title + '</font>' + '</a>'+'<br>'+ '場所：' + '<a href="' + hallurl + '" target="_blank">' + '<font color="#00bbcc">' + hallname + '</font>' + '</a>' + '<br>' + address);
			}
		}
	});
}

// TOPページの初期表示時に最新のエントリーの吹き出しを表示する。
function initialOpenBaloon(){

	var area_address_group = document.getElementsByName("hidden_area_address");
	var entry_url          = document.getElementsByName("hidden_entry_url");
	var entry_title        = document.getElementsByName("hidden_entry_title");
	var hall_name          = document.getElementsByName("hidden_hall_name");
	var hall_url           = document.getElementsByName("hidden_hall_url");
	var entry_date         = document.getElementsByName("hidden_entry_date");

	if (area_address_group.length != 0) {
		openBaloon(area_address_group[0].value,
								entry_title[0].value,
								entry_url[0].value,
								hall_name[0].value,
								hall_url[0].value,
								entry_date[0].value
							);
	} else {
		alert("地図に表示するエントリーがありません。");
	}
}
