var map;
var n_point = 0;
var last_b = 0;
var last_c = 0;
var idx_from = [];
var idx_to = [];
var idx_block = [];
var idx_course = [];
var now_block;
var g_mk = [];
var g_idx;


function initVar(){
	n_point = 0;
}

function reloadGolf(){
//	GDownloadUrl("inoue.json", loadBlocks);
	initVar();
	var request = GXmlHttp.create(); 
	request.open("GET", "inoue.json", false); 
	request.onreadystatechange = function() { 
		if (request.readyState == 4) {
			loadBlocks(request.responseText); 
		}
	} 
	request.send(null);

	setLastPoint();
}

function startUp() {
	map = new GMap2( document.getElementById("mymap") );
	map.setCenter( new GLatLng(35.6984, 139.7732), 10 );
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	
//	MyDownloadUrl("inoue.json", loadBlocks);
	
	
	
	var request = GXmlHttp.create(); 
	request.open("GET", "inoue.json", false); 
	request.onreadystatechange = function() { 
		if (request.readyState == 4) {
			loadBlocks(request.responseText); 
		}
	} 
	request.send(null);



	setLastPoint();
	
//GLog.write("last_b="+last_b); 
//GLog.write("last_c="+last_c); 



//	GDownloadUrl("inoue.json", createRightList);

	var request = GXmlHttp.create(); 
	request.open("GET", "inoue.json", false); 
	request.onreadystatechange = function() { 
		if (request.readyState == 4) {
			createRightList(request.responseText); 
		}
	} 
	request.send(null);


//	map.setCenter( new GLatLng(37.50972584293751, 137.3291015625), 6 );
	map.setCenter( new GLatLng(35.04798673426734, 135.32958984375), 6 );


}



//------------------------------------------------------------
//　マーク表示
//
//  全体ファイルを読み込み
function loadBlocks(data){
	
	var obj = eval("(" + data + ")");

	var p = document.getElementById("block_list");
	p.innerHTML = "";


	for(var i = 0; i < obj.blocks.length; i++){
		idx_from[i] = n_point;
		now_block = i;
//GLog.write('idx_from['+i+']='+idx_from[i]); 
//GLog.write(obj.blocks[i].fname); 
		createBlockLink(i, obj);

//		GDownloadUrl(obj.blocks[i].fname, loadTodoFiles);	// 都道府県ファイル読み込み
		var request = GXmlHttp.create(); 
		request.open("GET", obj.blocks[i].fname, false); 
		request.onreadystatechange = function() { 
			if (request.readyState == 4) {
				loadTodoFiles(request.responseText); 
			}
		} 
		request.send(null);


		idx_to[i] = n_point;
//GLog.write('idx_to['+i+']='+idx_to[i]); 
	}
	last_b = obj.last_block_idx;
	last_c = obj.last_cource_idx;
}

//  都道府県ファイルを読み込み

function loadTodoFiles(data){

	var obj = eval("(" + data + ")");
	for(var i = 0; i < obj.files.length; i++){
//GLog.write(obj.files[i]); 
//GLog.write("n_point="+n_point); 
		idx_block[n_point] = now_block;
		idx_course[n_point] = i;
//GLog.write("idx_block[n_point]="+idx_block[n_point]); 

//		GDownloadUrl(obj.files[i], addMarkerByJSON);	// ポイント情報ファイル読み込み


		var request = GXmlHttp.create(); 
		request.open("GET", obj.files[i], false); 
		request.onreadystatechange = function() { 
			if (request.readyState == 4) {
				addMarkerByJSON(request.responseText); 
			}
		} 
		request.send(null);



//		var newLi = document.createElement("li");
		n_point++;
	}
}


function setLastPoint(){
	map.setCenter(g_mk[idx_from[last_b]+last_c].getLatLng());
}

//------------------------------------------------------------
//　右のリスト表示
function createRightList(data){
	var obj = eval("(" + data + ")");
	var p = document.getElementById("point_list");
	p.innerHTML = "";
	
	var t = document.getElementById("todo_space");
	t.innerHTML = "";
	var textNode = document.createTextNode(obj.blocks[last_b].bname);// テキストノードに変換
	t.appendChild(textNode); // ←textNodeはテキストノードなので成功
	

//GLog.write(obj.blocks[last_b].fname); 

//	GDownloadUrl(obj.blocks[last_b].fname, loadPointName);

		var request = GXmlHttp.create(); 
		request.open("GET", obj.blocks[last_b].fname, false); 
		request.onreadystatechange = function() { 
			if (request.readyState == 4) {
				loadPointName(request.responseText); 
			}
		} 
		request.send(null);

}





function loadPointName(data){
	var obj = eval("(" + data + ")");
	g_idx = idx_from[last_b];
	for(var i = 0; i < obj.files.length; i++){

//GLog.write("g_idx="+g_idx); 

//		GDownloadUrl(obj.files[i], createPositionLink);

		var request = GXmlHttp.create(); 
		request.open("GET", obj.files[i], false); 
		request.onreadystatechange = function() { 
			if (request.readyState == 4) {
				createPositionLink(request.responseText); 
			}
		} 
		request.send(null);



		g_idx++;
	}

}

function createPositionLink(data) {
	var obj = eval("(" + data + ")");
	
	var posLink = document.createElement("a");
	posLink.innerHTML =obj.placename;
//GLog.write(obj.placename); 
    posLink.href = 'javascript:myclick(' + g_idx + ')';
//    posLink.href = '#'+g_idx;
//    posLink.onclick = function() { map.panTo(g_mk[g_idx-1].getLatLng()); }
//    posLink.onclick = function() { map.panTo(g_mk[0].getLatLng()); }



    var newLi = document.createElement("li");

    newLi.appendChild(posLink);

	var pointList = document.getElementById("point_list");

	pointList.appendChild(newLi);


	GEvent.addListener(g_mk[g_idx], "mouseover", 
		function() {
			newLi.style.backgroundColor = "#ccccff";
	});
	GEvent.addListener(g_mk[g_idx], "mouseout", 
		function() {
			newLi.style.backgroundColor = "transparent";
	});
}

function myclick(i){
     GEvent.trigger(g_mk[i], "click");
}






//------------------------------------------------------------
//　マーカーを登録
//
var icon_tbl = new Array("img/0.png", "img/1.png", "img/2.png", "img/3.png", "img/4.png");
var icon_w = new Array(32,32,32,32,32);
var icon_h = new Array(37,37,37,37,37);
var icon_ax = new Array(15,15,15,15,15);
var icon_ay = new Array(37,37,37,37,37);

//---------------------------------------- 2010.05.08追加
var g_label = [];
function addTipLabel(mk, np, ll) {

	var l_label = new TLabel();
	l_label.id = 'label' + np;
	l_label.anchorLatLng = ll;
	l_label.anchorPoint = 'bottomLeft';
	l_label.content = '<div style="padding: 0px 0px 8px 8px;"><div style="white-space: nowrap; background-color: #ffff00; padding: 2px; font-size: 0.8em;">';
	l_label.content += gobj.placename + '</div></div>';
	l_label.markerOffset = new GSize (-8,0);
	l_label.percentOpacity = 75;

	g_label[np] = l_label;

	GEvent.addListener(mk, "mouseover", function() {
	map.addTLabel(g_label[np])});

	GEvent.addListener(mk, "mouseout", function() {
	map.removeTLabel(g_label[np])}); 
}



//function createListner(obj, mk, n, data) {
function createListner(obj, mk, n, data, ll) {
	addTipLabel(mk, n, ll);
	GEvent.addListener( mk, "click", function() {
	last_b = idx_block[n];
	last_c = idx_course[n];

//	GDownloadUrl("inoue.json", createRightList);

	var request = GXmlHttp.create(); 
	request.open("GET", "inoue.json", false); 
	request.onreadystatechange = function() { 
		if (request.readyState == 4) {
			createRightList(request.responseText); 
		}
	} 
	request.send(null);

		var tab1 = new GInfoWindowTab("ゴルフ場情報", data);
		var tab2;
		GDownloadUrl(obj.htmlfile2, function(data){
			tab2 = new GInfoWindowTab("ブログ記事", data);
			var tabs = [tab1, tab2];
			mk.openInfoWindowTabsHtml( tabs, {"maxWidth":300} );
		});

	});
	return mk;
}

var gobj;

function addMarkerByJSONSub(data) {
		var latlng = new GLatLng(gobj.lat, gobj.lng);

		var icon = new GIcon(G_DEFAULT_ICON,  icon_tbl[gobj.icon_type]);
		icon.iconSize = new GSize(icon_w[gobj.icon_type], icon_h[gobj.icon_type]);
		icon.iconAnchor = new GPoint(icon_ax[gobj.icon_type], icon_ay[gobj.icon_type]);

//		var mk = new GMarker( latlng );
		var mk = new GMarker( latlng , icon);

		g_mk[n_point] = mk;
//		map.setCenter(latlng,13,G_SATELLITE_3D_MAP); // その場所を中心に表示
		map.setCenter(latlng); // その場所を中心に表示

//GLog.write(latlng);

//		map.addOverlay(createListner(gobj, mk, n_point, data));
		map.addOverlay(createListner(gobj, mk, n_point, data, latlng));
}

function addMarkerByJSON(data) {

	gobj = eval("(" + data + ")");

	var request = GXmlHttp.create(); 
	request.open("GET", gobj.htmlfile1, false); 
	request.onreadystatechange = function() { 
		if (request.readyState == 4) {
			addMarkerByJSONSub(request.responseText); 
		}
	} 
	request.send(null);

}

function addMarkerByJSONOld(data) {



	var obj = eval("(" + data + ")");

	GDownloadUrl(obj.htmlfile1, function(data) {
		var latlng = new GLatLng(obj.lat, obj.lng);

		var icon = new GIcon(G_DEFAULT_ICON,  icon_tbl[obj.icon_type]);
		icon.iconSize = new GSize(icon_w[obj.icon_type], icon_h[obj.icon_type]);
		icon.iconAnchor = new GPoint(icon_ax[obj.icon_type], icon_ay[obj.icon_type]);

//		var mk = new GMarker( latlng );
		var mk = new GMarker( latlng , icon);

		g_mk[n_point] = mk;
//		map.setCenter(latlng,13,G_SATELLITE_3D_MAP); // その場所を中心に表示
		map.setCenter(latlng); // その場所を中心に表示

//GLog.write(latlng);


		map.addOverlay(createListner(obj, mk, n_point, data));

	})
}

//------------------------------------------------------------
//　ブロックリンクを作成(画面下部のリンク)
//
function createBlockLink(i, obj) {
	
	var posLink = document.createElement("a");
	posLink.innerHTML =obj.blocks[i].bname;
//GLog.write(obj.blocks[i].bname); 
    posLink.href = '#maptop';
    posLink.onclick = function() { last_b = i; last_c = 0;

//	GDownloadUrl("inoue.json", createRightList);

	var request = GXmlHttp.create(); 
	request.open("GET", "inoue.json", false); 
	request.onreadystatechange = function() { 
		if (request.readyState == 4) {
			createRightList(request.responseText); 
		}
	} 
	request.send(null);

	map.setCenter(g_mk[idx_from[last_b]+last_c].getLatLng());
    }


    var newLi = document.createElement("li");

    newLi.appendChild(posLink);

	var pointList = document.getElementById("block_list");

	pointList.appendChild(posLink);
	var textNode = document.createTextNode("　　");// テキストノードに変換
	pointList.appendChild(textNode);
}

function retryRead()
{
	GUnload();
	startUp();
}


onload   = startUp;
onunload = GUnload;


