//<![CDATA[

//GLOBAL VARIABLES ---
var INIT_ZOOM_LEVEL = 7;
var PICUP_ZOOM_LEVEL = 10;
var INIT_LAT = 43.47684;
var INIT_LNG = 142.844238;
var g_data_xml = "/map.xml";
var map;
var icon = new GIcon();
var g_xmlDoc;
var markers = [];
var markerHtmls = [];

var listHtml = "";
var g_pointXmlDoc;

var is_clear_overlays = true;


function initialize(){
	// initialize map
    
	if (GBrowserIsCompatible()) {
		initMap(INIT_LAT, INIT_LNG);
		//initEvents();
		var qsPoint = makeQueryString();
		renderingMarkers(qsPoint);
	} else {
		alert("お使いのブラウザでは地図を表示することができません。Internet Explorer 6.0以降か、Firefox 1.0以降をおすすめします。");
	}
}

function initMap(cx, cy){
	var initialGPoint = new GLatLng(cx, cy);
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GScaleControl());

	var overview = new GOverviewMapControl(new GSize(100, 100));
	map.addControl(overview);
	map.setCenter(initialGPoint, INIT_ZOOM_LEVEL);
}

function renderingMarkers(qs){
	var request = GXmlHttp.create();
	request.open("GET", qs, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
			g_xmlDoc = xmlDoc;
			for (var i = 0; i < markers.length; i++) {
				var marker = markers[i];
				map.addOverlay(createMarker(markers[i], i));
			}
		}
	}
	request.send(null);
}

function createMarker(markerObject, index){
	if(markerObject.getAttribute("lat") != "" && markerObject.getAttribute("lng") != ""){ 
		var infoWindowHtml = createInfoWindowHtml(markerObject);
		var point = new GLatLng(parseFloat(markerObject.getAttribute("lat")), parseFloat(markerObject.getAttribute("lng")));
		var marker = new GMarker(point);
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(infoWindowHtml);
		});
		
		markers[index] = marker;
		markerHtmls[index] = infoWindowHtml;
	}

	return marker;
}

function createInfoWindowHtml(markerObject){
	var retHtml;
	
	var name = markerObject.getAttribute("name");
	var photo = markerObject.getAttribute("photo");
	var phone = markerObject.getAttribute("phone");
	var address = markerObject.getAttribute("address");
	var business = markerObject.getAttribute("business");
	var rh = markerObject.getAttribute("rh");

	retHtml = "";
	retHtml += '<div class="infoWindow">';
	retHtml += '<div class="infoWindowHead">';
	retHtml += name;
	retHtml += '</div>';
	retHtml += '<div class="infoWindowBody">';
	if (photo) {
		retHtml += '<img src="' + photo + '" boder="0">';
	}
	retHtml += '<div><span class="address">' + address + '</span><br /><span class="phone">' + phone + '</span><br /><br /><span class="business"><strong>営業時間</strong><br />' + business + '</span><br /><span class="rh"><strong>定休日</strong><br />' + rh + '</span></div>';
	retHtml += '</div>';
	retHtml += '<div class="infoWindowFoot">';
	retHtml += '</div>';
	retHtml += '</div>';

	return retHtml;
}

function moveDefaultView() {
	redrawMap(true);
	map.setCenter(new GLatLng(INIT_LAT, INIT_LNG), INIT_ZOOM_LEVEL);
}

function openInfoWindow(id) {
	var marker = markers[id];
	if (marker) {
		marker.openInfoWindowHtml(markerHtmls[id]);
	}
}

function makeQueryString(){
	var qs = g_data_xml + "?cache=" + (new Date()).getTime();
	return qs;
}

function getWindowHeight() {
	if (window.self && self.innerHeight) {
		return self.innerHeight;
	}
	if (document.documentElement && document.documentElement.clientHeight) {
		return document.documentElement.clientHeight;
	}
	return 0;
}

function resizeMap() {
	var offset = 0;
	for (var elem = document.getElementById("map"); elem != null; elem = elem.offsetParent) {
		offset += elem.offsetTop;
	}
	var windowHeight = getWindowHeight();
	//var height = windowHeight - offset - 10;
	var height = windowHeight - offset;
	if (height >= 0) {
		document.getElementById("map").style.height = height + "px";
		//e("panel").style.height = height + "px";
	}
}

//]]>
