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

var init_school_no = null;

//マップ
var map;
var icon;

// 定数
var school_list_url = '/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, address, access, type, catch_copy, photo_url, lat, lng)
{
	//学校情報
	this.school_id = school_id;
	this.school_name = school_name;
	this.address = address;
	this.access = access;
	this.type = type;
	this.catch_copy = catch_copy;
	this.photo_url = photo_url;
	this.lat = lat;
	this.lng = lng;
	//マーカーオブジェクト
	var marker;
}

//マーカー作成処理
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);
	//マーカークリック時のイベント登録
	GEvent.addListener(marker, "click",
		function()
		{
			//バルーンの中身描画
			marker.openInfoWindowHtml(balloon);

			//送信用school_id設定
			document.getElementById("school_no").value = school_info.school_id;

			//リスト描画
			document.getElementById("school_name").innerHTML =
				'<a href=\"' + school_info_page_base + school_info.school_id + '\">' + school_info.school_name + '</a>';
			document.getElementById("school_address").innerHTML = school_info.address;
			document.getElementById("school_access").innerHTML = school_info.access;
			document.getElementById("school_type").innerHTML = school_info.type;
			document.getElementById("school_catchcopy").innerHTML = school_info.catch_copy;

			var school_picture3_obj = document.getElementById("school_picture3");

			if (school_info.photo_url == '')
			{
				school_picture3_obj.style.visibility = 'hidden';
				school_picture3_obj.style.width = '1px';
			} else {
				school_picture3_obj.style.visibility = 'visible';
				school_picture3_obj.style.width = '';
				school_picture3_obj.src = school_img_dir + '/' + school_info.school_id + '/' + school_info.photo_url;
			}

			// 学校情報部分の表示
			document.getElementById("school_info").style.visibility = 'visible';
		});
	//マウスが重なったときのイベント登録
//	GEvent.addListener(marker, "mouseover",
//		function()
//		{
//			//バルーンの中身描画
//			marker.openInfoWindowHtml(balloon);
//		});
	return marker;
}

// バルーン内部文字列生成
function getBalloonString(school_id, school_name) {
	return '<a href=\"' + school_info_page_base + school_id + '\">' + school_name + '</a>';
}

//マップにマーカー配置処理
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], columns[7], columns[8]);
			data_count++;
		}
	}
}
//マップロード処理(最初)
function mapLoad(init_lat, init_lng, school_no)
{
	init_school_no = school_no;

	// 学校情報部分の非表示
	//document.getElementById("school_info").style.visibility = 'hidden';

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

	// アイコン生成
	icon = new GIcon();
	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	icon.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";

	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_azul.png";
	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_granate.png";
	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
	//icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.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);
}