//学校情報配列
var school_info;
var school_data;

var init_school_no = null;

//マップ
var map;
var icon;

// 定数
var school_list_url = '/jr_school_list_for_map.php'; // 学校情報取得先
var default_lat = 35.68109113516592;
var default_lng = 139.76707935333252;
var default_zoom = 8;
var init_zoom = 15;
var school_img_dir = '/school_data';
var school_info_page_base = '/?m=pc&a=page_s_info&school_no=';

//学校情報用関数(構造体)
function schoolData(school_id, school_name, addrnum, address, lat, lng, urlencode_address)
{
	//学校情報
	this.school_id = school_id;
	this.school_name = school_name;
	this.addrnum = addrnum;
	this.address = address;
	this.lat = lat;
	this.lng = lng;
	this.urlencode_address = urlencode_address;
	//マーカーオブジェクト
	var marker;
}

//右のリンククリック時処理
function selectMarker(get_school_id)
{
	//alert(get_school_id);
	for(i = 0; i < school_info.length; i++)
	{
		if(school_info[i].school_id == get_school_id)
		{
			//alert(encodeURL( school_info[i].address ));
			//マーカーオブジェクトがもう作られている
			if(!school_info[i].marker)
			{
				//マーカー作成
				school_info[i].marker = createMarker(new GLatLng(school_info[i].lat, school_info[i].lng), school_info[i]);
				//マーカー配置
				map.addOverlay(school_info[i].marker);
			}

			//バルーンの中身生成
			var html = getBalloonString(school_info[i].school_id, school_info[i].school_name, school_info[i].addrnum, school_info[i].address, school_info[i].urlencode_address);
			//バルーン表示
			school_info[i].marker.openInfoWindowHtml(html);
			//マーカーを中心に持ってくる
			map.setCenter(new GLatLng(school_info[i].lat, school_info[i].lng), map.getZoom());
		}
	}
}

//マーカー作成処理
function createMarker(point, school_info)
{
	//マーカー生成
	var marker = new GMarker(point, icon);
	//吹き出しの中身
	//	var balloon = '<a href=\"' + school_info_page_base + school_info.school_id + '\">' + school_info.school_name + '</a>';
	var balloon = getBalloonString(school_info.school_id, school_info.school_name, school_info.addrnum, school_info.address, school_info.urlencode_address);
	//マーカークリック時のイベント登録
	GEvent.addListener(marker, "click",
		function()
		{
			//バルーンの中身描画
			marker.openInfoWindowHtml(balloon);
		});
	return marker;
}

// バルーン内部文字列生成
function getBalloonString(school_id, school_name, addrnum, address, urlencode_address) {
	//return '<div class=\"gmapBaloon\"><h3><a href=\"/?m=pc&a=page_s_junior_detail&sn=' + school_id + '\">' + school_name + '</a></h3><p>〒' + addrnum + ' ' + address + '</p>' + '<form action=\"\" method=\"post\"><input type=\"text\" name=\"\" /><div class=\"btnRoutesearch\"><a href=\"javascript:void(0);\" onclick=\"\">自宅からのルート・路線を調べる</a></div></form><div class=\"btnTodetail\"><a href=\"/?m=pc&a=page_s_junior_detail&sn=' + school_id + '\">学校詳細ページへ</a></div></div>';
	return '<div class=\"gmapBaloon\"><h3><a href=\"/?m=pc&a=page_s_junior_detail&sn=' + school_id + '#sndetail\">' + school_name + '</a></h3><p>〒' + addrnum + ' ' + address + '</p>' + '<div class=\"separateGmap\">&nbsp;</div>' + '<div class=\"inputarea\">' + '<p>▼自宅からの【ルート・路線】を調べる</p>' + '<form id=\"send_m\" action=\"http://www.google.co.jp/maps\" method=\"get\" target=\"_blank\"><input type=\"text\" name=\"saddr\" class=\"textfield\" onfocus=\"if (this.value == \'出発地点を入力\') this.value = \'\';\" onblur=\"if (this.value == \'\') this.value = \'出発地点を入力\';\" value=\"出発地点を入力\" /><input type=\"hidden\" name=\"ie\" value=\"UTF8\"><input type=\"hidden\" name=\"f\" value=\"d\"><input type=\"hidden\" name=\"dirflg\" value=\"r\"><input type=\"hidden\" name=\"daddr\" value=\"' + address + '\"><input type=\"button\" onclick=\"submit()\" class=\"postgmap\" value=\"\"></form></div><div class=\"btnTodetail\"><a href=\"/?m=pc&a=page_s_junior_detail&sn=' + school_id + '#sndetail\">学校詳細ページへ</a></div></div>';
}

//マップにマーカー配置処理
function addMarker()
{
	//表示範囲取得
	var area = map.getBounds();
	//学校情報分回す
	for(i = 0; i < school_info.length; i++)
	{
		//座標設定
		var point = new GLatLng(school_info[i].lat, school_info[i].lng);
		//表示範囲にマーカーがあるか
		if(area.contains(point))
		{
			//マーカーオブジェクトがもう作られている？
			if(!school_info[i].marker)
			{
				//マーカー作成
				school_info[i].marker = createMarker(point, school_info[i]);
				//マーカー配置
				map.addOverlay(school_info[i].marker);

				// バルーン表示
				//if (init_school_no != null && school_info[i].school_id == init_school_no) {
				//	var balloon = getBalloonString(school_info[i].school_id, school_info[i].school_name);
				//	school_info[i].marker.openInfoWindowHtml(balloon);
				//	init_school_no = null;
				//}
			}
		}
		//マップの外
		else
		{
			if (school_info[i].marker != null)
			{
				//マーカーをマップから削除
				map.removeOverlay(school_info[i].marker);
			}

			//表示されないのでオブジェクトも削除
			school_info[i].marker = null;
		}
	}
}
//学校情報ファイルを取得して構造体にセット
function setSchoolInfo(http_obj)
{
	//ファイルの内容をGET
	school_data = http_obj.responseText;
	//改行で分割
	var rows = school_data.split("\n");
	//データ分まわす
	var data_count = 0;
	for(i = 0; i < rows.length - 1; i++)
	{
		//タブで再度分割
		var columns = rows[i].split("\t");
		//構造体に設定
		if (columns[7] != '' && columns[8] != '')
		{
			school_info[data_count] = new schoolData(columns[0], columns[1], columns[2], columns[3], columns[4], columns[5], columns[6]);
			data_count++;
		}
	}
}
//マップロード処理(最初)
function mapLoad(init_lat, init_lng, school_no)
{
	init_school_no = school_no;

	//マップ外リスト配列
	school_info = new Array();

	// アイコン生成
	icon = new GIcon();
	icon.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
	icon.iconSize = new GSize(12, 20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(10, 0);

	//マップ作成
	map = new GMap2(document.getElementById("map"));
	// 縮尺表示
	map.addControl(new GScaleControl());
	//大きいコントロール追加
	map.addControl(new GLargeMapControl());
	//地図切り替えボタン
	map.addControl(new GMapTypeControl());
	// ダブルクリックズーム
	map.enableDoubleClickZoom();
	map.enableContinuousZoom();
	//マップの中心とズーム度合い
	if (init_lat != null && init_lng != null)
	{
		// 学校指定の場合
		map.setCenter(new GLatLng(init_lat, init_lng), init_zoom);
	} else {
		// 学校指定がない場合
		map.setCenter(new GLatLng(default_lat, default_lng), default_zoom);
	}
	//http通信オブジェクト作成
	var http_obj = GXmlHttp.create();
	//ファイルオープン
	http_obj.open("get", school_list_url);
	//ファイルオープン時のイベント登録
	http_obj.onreadystatechange = function()
		{
			//読み込み成功？
			if ((http_obj.readyState == 4) && (http_obj.status == 200))
			{
				//学校情報設定
				setSchoolInfo(http_obj);
				//マーカー描画
				addMarker();
			}
		}
	//POST送信なし
	http_obj.send(null);
	//マップ移動時のイベント登録
	GEvent.addListener(map, "moveend", addMarker);
}
