//<![CDATA[

//GLOBAL VARIABLES ---
var PICUP_ZOOM_LEVEL = 10;
var INIT_ZOOM_LEVEL = 9;
var INIT_LAT = 43.822143;
var INIT_LNG = 144.478743;
var INIT_ZOOM_LEVEL1 = 9;
var INIT_LAT1 = 43.822143;
var INIT_LNG1 = 144.478743;
var INIT_ZOOM_LEVEL2 = 13;
var INIT_LAT2 = 44.009237;
var INIT_LNG2 = 144.260788;
var g_data_xml = "/map.xml";
var map;
var icon = new GIcon();
var icon2 = 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);
		initIcon();
		//initEvents();
		var qsPoint = makeQueryString();
		renderingMarkers(qsPoint);
	} else {
		alert("お使いのブラウザでは地図を表示することができません。Internet Explorer 6.0以降か、Firefox 1.0以降をおすすめします。");
	}
}

function reviewMap() {
		for (var i = 0; i < markers.length; i++) {
			if (markers[i]) {
				map.removeOverlay(markers[i]);
			}
		}
		
		markers = [];
		markerHtmls = [];
		listHtml = "";

		var qsPoint = makeQueryString();
		renderingMarkers(qsPoint);
}

function initIcon(){
	/* initialize icon */
	icon.image = '/images/marker.png';
	icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	icon.iconSize = new GSize(20, 34);
	icon.shadowSize = new GSize(37, 34);
	icon.iconAnchor = new GPoint(9, 34);
	icon.infoWindowAnchor = new GPoint(9, 2);
	icon.infoShadowAnchor = new GPoint(18, 25);

	icon2.image = '/images/marker1_pic.png';
	icon2.shadow = "http://www.google.com/mapfiles/shadow50.png";
	icon2.iconSize = new GSize(20, 34);
	icon2.shadowSize = new GSize(37, 34);
	icon2.iconAnchor = new GPoint(9, 34);
	icon2.infoWindowAnchor = new GPoint(9, 2);
	icon2.infoShadowAnchor = new GPoint(18, 25);
}

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);
}

var bYear = "";
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;
			var selectedWorkClass = document.getElementById("workClass").value;
			if (selectedWorkClass != 0) {
				for (var i = 0; i < markers.length; i++) {
					var marker = markers[i];
					if (marker.getAttribute("workClass") == selectedWorkClass) {
						map.addOverlay(createMarker(markers[i], i));
					}
				}
				if (selectedWorkClass == 1) {
					map.setCenter(new GLatLng(INIT_LAT1, INIT_LNG1), INIT_ZOOM_LEVEL1);
				} else {
					map.setCenter(new GLatLng(INIT_LAT2, INIT_LNG2), INIT_ZOOM_LEVEL2);
				}
			} else {
				for (var i = 0; i < markers.length; i++) {
					var marker = markers[i];
					map.addOverlay(createMarker(markers[i], i));
				}
				map.setCenter(new GLatLng(INIT_LAT, INIT_LNG), INIT_ZOOM_LEVEL);
			}
			document.getElementById("list").innerHTML = listHtml;
		}
	}
	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")));
		if (markerObject.getAttribute("workClass") == "1") {
			var marker = new GMarker(point, icon);
		} else {
			var marker = new GMarker(point, icon2);
		}
		//var marker = new GMarker(point);
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(infoWindowHtml);
		});
		
		markers[index] = marker;
		markerHtmls[index] = infoWindowHtml;
	}
	var year = markerObject.getAttribute("year") || "";
	listHtml += '<div class="yw_txt txt-left">';
	if (year != "" && (year != bYear)) {
		listHtml += '<strong>' + year + '</strong><br />';
	}
	listHtml += '<img src="images/marker_pic.gif" width="10" height="17" align="absmiddle" />';
	listHtml += '<a href="javascript:openInfoWindow(\'' + index + '\')">' + markerObject.getAttribute("workPlace") + '　' + markerObject.getAttribute("workName") + '</a>';
	listHtml += '<br /><hr style="height:1px; width:80%;" />';
	listHtml += '</div>';

	bYear = markerObject.getAttribute("year") || "";
	return marker;
}

function createInfoWindowHtml(markerObject){
	var retHtml;
	
	var workClass = markerObject.getAttribute("workClass");
	var photo = markerObject.getAttribute("photo");
	var workName = markerObject.getAttribute("workName");
	var workPlace = markerObject.getAttribute("workPlace");
	var detail = markerObject.getAttribute("detail");
	var year = markerObject.getAttribute("year") || "";

	retHtml = "";
	retHtml += '<div class="infoWindow">';
	retHtml += '<div class="infoWindowHead">';
	if (markerObject.getAttribute("workClass") == "1") {
		retHtml += "【土木工事】";
	} else {
		retHtml += "【建設工事】";
	}
	retHtml += '</div>';
	retHtml += '<div class="infoWindowBody">';
	if (photo) {
		retHtml += '<img src="' + photo + '" boder="0">';
	}
	if (year != "") {
		retHtml += '<div><span class="year">' + year + '</span><br />' + workPlace + '<br />' + workName + '</div>';
	} else {
		retHtml += '<div>' + workPlace + '<br />' + workName + '</div>';
	}
	retHtml += '</div>';
	retHtml += '<div class="infoWindowFoot">';
	retHtml += '<a href="javascript:void(0)" onclick="MM_openBrWindow(\'' + detail + '\',\'resultsDetail\',\'status=yes,scrollbars=yes,resizable=yes,width=630,height=500\')">詳細ウィンドウ表示</a>';
	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";
	}
}

function resizeList() {
	var offset = 0;
	for (var elem = document.getElementById("listarea"); 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("listarea").style.height = height + "px";
		//e("panel").style.height = height + "px";
	}
}

function GUnload() {
	if (window.GUnloadApi) {
		GUnloadApi();
	}
}

//  ======== A function to adjust the positioning of the overview ========
function positionOverview(mapDiv, x, y) {
	alert(mapDiv + "_overview");
	var omap = document.getElementById(mapDiv + "_overview");
	alert();
	omap.style.left = x+"px";
	omap.style.top = y+"px";
	
	// == restyling ==
	omap.firstChild.style.border = "1px solid gray";
	
	omap.firstChild.firstChild.style.left="4px";
	omap.firstChild.firstChild.style.top="4px";
	omap.firstChild.firstChild.style.width="290px";
	omap.firstChild.firstChild.style.heigh="190px";
}

/*
//  ======== A function to adjust the positioning of the overview ========
function positionOverview(mapDiv,x,y) {
	var omap=(this.ownerDocument||document).getElementById(mapDiv.id+"_overview");
	omap.style.position = "relative";
	omap.style.left = x+"px";
	omap.style.top = y+"px";
	mapDiv.appendChild(omap);
} 
*/
//]]>

