var map;
var slat = 27.987778;
var slng = 86.944444;
var szom = 2.0;
var myserver = 'http://www.junko-tabei.jp/';
var locfile = myserver + 'overseas/mapdata.cgi';
var infofile = myserver + 'overseas/mapdata2.cgi';
var baseUrl = myserver + 'overseas/';
var markersArray = new Array();

var iconGetter = iconsCreater();

function loadmap() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById('tabeimap'));
		map.setCenter(new GLatLng(slat,slng),parseFloat(szom));	// 初期位置と拡大率をセット
		map.addControl(new GLargeMapControl());	// 拡大縮小コントローラー
		//map.addControl(new GSmallMapControl());
		G_PHYSICAL_MAP.getMaximumResolution = function(){ return 8 }; 
		G_PHYSICAL_MAP.getMinimumResolution = function(){ return 1 }; 
		map.addMapType(G_PHYSICAL_MAP);
		//map.addControl(new GMenuMapTypeControl(true, false));	// 地図・衛星切り替えスイッチ
		map.setMapType(G_PHYSICAL_MAP);// 地形をデフォルトに
		//var overviewmap = new GOverviewMapControl(new GSize(140,140));
		//map.addControl(overviewmap);
		//overviewmap.hide(true);
		//map.addControl(new GOverviewMapControl());	//縮小地図
		new GKeyboardHandler(map);	// キーボードからも操作できるように
		map.enableScrollWheelZoom();
		map.enableContinuousZoom()

//GEvent.addDomListener(document.getElementById("wheelMap"),"DOMMouseScroll", CancelEvent); // Firefox
//GEvent.addDomListener(document.getElementById("wheelMap"),"mousewheel",     CancelEvent); // IE


		getMarker();
	} else {
		//お使いのブラウザーでは表示できませんとか出す？
	}
}
function CancelEvent(event)
{
  e = event;
  if (typeof e.preventDefault  == 'function') 
        e.preventDefault();
  if (typeof e.stopPropagation == 'function')
        e.stopPropagation();
  if (window.event) {
     window.event.cancelBubble = true; // for IE
     window.event.returnValue = false; // for IE
  }
}

function iconsCreater() {
	var icon1 = new GIcon();
	icon1.image="img/point.png";
	icon1.shadow="img/point_sdw.png";
	icon1.iconSize= new GSize(14,20);
	icon1.shadowSize = new GSize(20,20);
	icon1.iconAnchor = new GPoint(7,20);
	icon1.infoWindowAnchor = new GPoint(10,0);
	icon1.transparent = "img/point.png";

	var icon2 = new GIcon();
	icon2.image="img/pointG.png";
	icon2.shadow="img/point_sdw.png";
	icon2.iconSize= new GSize(14,20);
	icon2.shadowSize = new GSize(20,20);
	icon2.iconAnchor = new GPoint(7,20);
	icon2.infoWindowAnchor = new GPoint(10,0);
	icon2.transparent = "img/pointG.png";

	var icon3 = new GIcon();
	icon3.image="img/pointGold.png";
	icon3.shadow="img/point_sdw.png";
	icon3.iconSize= new GSize(14,20);
	icon3.shadowSize = new GSize(20,20);
	icon3.iconAnchor = new GPoint(7,20);
	icon3.infoWindowAnchor = new GPoint(10,0);
	icon3.transparent = "img/pointGold.png";

	return function(type) {
		if (type == 'mt') { return icon2 }
		if (type == 'mt2') { return icon1 }
		if (type == 'mt3') { return icon3 }
	}
}

function getMarker() {
	var myDate = new Date();
	GDownloadUrl(locfile+'?t='+ myDate.getTime(),function(loadTextData, statusCode) {
		var xml = GXml.parse(loadTextData);
		var mks = xml.documentElement.getElementsByTagName('marker');
		for (var i=0; i< mks.length; i++) {	//1個ずつ取り出し
			var mk = mks[i];
			var id  = mk.getAttribute('id');
//			var lat = mk.getAttribute('lat');
//			var lng = mk.getAttribute('lng');
//			var icn = mk.getAttribute('icon');
//			var name = mk.getAttribute('name');
//			var height = mk.getAttribute('height');
//			var country = mk.getAttribute('country');
//			var detail = mk.getAttribute('detail');
			//writeTable(mk);
			mk = buildMarker( mk );
			map.addOverlay( mk );
			markersArray[id] = mk;	//後での呼び出し用にもっとく。
		}		
	});
}


function buildMarker( marker ) {
	var mk = new GMarker(new GLatLng(marker.getAttribute('lat'),marker.getAttribute('lng')),{icon:iconGetter(marker.getAttribute('icon')), draggable: false});
	mk.id = marker.getAttribute('id');
	mk.name = marker.getAttribute('name');
	mk.height = marker.getAttribute('height');
	mk.country = marker.getAttribute('country');
	mk.detail = marker.getAttribute('detail');
	mk.year = marker.getAttribute('year');
	mk.icon = marker.getAttribute('icon');

	GEvent.addListener( mk, 'click', function() {
		var myDate = new Date();
		var target = infofile + '?id=' + mk.id +'&t=' + myDate.getTime();
		GDownloadUrl( target, function(loadTextData,statusCode) {
			//var xml = GXml.parse(dat);
			var oukan = '';
			var saiko = '';
			if (mk.icon == 'mt2') {oukan = ' <img src="img/red.gif" width="10" height="10" />'; saiko = '最高峰';} //red
			if (mk.icon == 'mt3') {oukan = ' <img src="img/gold.gif" width="10" height="10" /> <img src="img/red.gif" width="10" height="10" />'; saiko = '最高峰';} //kin

			var html = '<div class="fukidashi"><h4>'+mk.name+oukan+'</h4>';
			var wyear = mk.year+'年';
			var wheight = mk.height+'m';
			html += '<p class="fukidashibun">'+mk.country+' '+wheight+'：'+wyear+'</p>';
			html += loadTextData;
			html += '<p class="fukidashinavi"><a href="#mt'+mk.id+'">年表 &gt;&gt;</a>';
			//alert(mk.detail);
//			if (mk.detail != null) {
//				html += '　<a href="#">詳細 &gt;&gt;</a>';
//			}
			html += '</p>';
			html += '</div>';
			// xmlからデータを得て…
			// マークアップして
			
			// 吹き出しを出す。
/*
			var infoTabs = [
				new GInfoWindowTab("あああ",html),
				new GInfoWindowTab("いいい",html)
			];
*/
//			mk.openInfoWindowTabsHtml(infoTabs);
				
			mk.openInfoWindowHtml(html);
			//map.panBy(new GSize(0,5));
		});
	});
	return mk;
}

// id で示されたポイントを表示する
function disp( id ) {
	// idからマーカーオブジェクトを取り出す
	var mk = markersArray[id];
	GEvent.trigger(mk,'click');
	//map.panTo(mk.getPoint());
}

var mapcss = true;
function switchmap(a,b) {
	if (mapcss) {
		document.getElementById('mapcss').href = b;
		document.getElementById('mapswitch').innerText = '戻る';
		mapcss = false;
	} else {
		document.getElementById('mapcss').href = a;
		document.getElementById('mapswitch').innerText = '大きい地図で見る';
		mapcss = true;
	}
}


//no use functions?
function writeTable(mk) {
	var d = document.getElementById('reki');
	var tmp = d.innerHtml;
	tmp = tmp + '<tr><td>???</td><td>★</td><td>★</td><td><a name="'+mk.getAttribute('id')+'"></a>'+mk.getAttribute('height')+'</td><td>'+mk.getAttribute('name')+'</td><td>'+mk.getAttribute('country')+'</td><td>'+mk.getAttribute('detail')+'</td></tr>';
	document.getElementById('reki').innerHtml = tmp;
}
function zoomIn() {}

function zoomOut() {}
function getIcons() {
	var icon1 = new GIcon();
	icon1.image="img/point.png";
	icon1.shadow="img/point_sdw.png";
	icon1.iconSize= new GSize(14,20);
	icon1.shadowSize = new GSize(20,20);
	icon1.iconAnchor = new GPoint(5,19);
	icon1.infoWindowAnchor = new GPoint(10,10);
	icon1.transparent = "img/point.png";
	iconArray['mt2'] = icon1;

	var icon2 = new GIcon();
	icon2.image="img/pointG.png";
	icon2.shadow="img/point_sdw.png";
	icon2.iconSize= new GSize(14,20);
	icon2.shadowSize = new GSize(20,20);
	icon2.iconAnchor = new GPoint(5,19);
	icon2.infoWindowAnchor = new GPoint(10,10);
	icon2.transparent = "img/pointG.png";
	iconArray['mt'] = icon2;

	var icon3 = new GIcon();
	icon3.image="img/pointGold.png";
	icon3.shadow="img/point_sdw.png";
	icon3.iconSize= new GSize(14,20);
	icon3.shadowSize = new GSize(20,20);
	icon3.iconAnchor = new GPoint(5,19);
	icon3.infoWindowAnchor = new GPoint(10,10);
	icon3.transparent = "img/pointGold.png";
	iconArray['mt3'] = icon3;
}



