var setObj = new Object();
var callbackGoogleMapsPickupObj;
var ListLoadComplate = 0;
setObj.zom = 9;
setObj.lats = new Array();
setObj.lngs = new Array();
setObj.msgs = new Array();
setObj.height = new Array();
setObj.list = new Array();
setObj.icon = new Array();

var current_lat;
var gmapReload = null;
var gmap = null;
var adjust_x = -10;
var adjust_y = 20;
setObj.disp = null;
var customWindowObj = document.getElementById("gmap-window");
var customWindowBodyObj = document.getElementById("gmap-display");

var maps_categorys = new Array();
var markers = new Array();
// [0] lat
// [1] lng
// [2] title
// [3] icon
// [4] URL

function openCustomWindow(msg,lat,lng,num) {
	if(setObj.disp == (lat+lng)){
		closeCustomWindow();
		setObj.disp = null;
	}
	else {
		var customWindowObj = document.getElementById("gmap-window");
		var customWindowBodyObj = document.getElementById("gmap-display");
		setObj.activeLat = lat;
		setObj.activeLng = lng;
		adjustPos();
		customWindowObj.style.display = "block";
		customWindowBodyObj.innerHTML = msg;
		setObj.disp = lat+lng;
	}
}

function closeCustomWindow() {
	if(document.getElementById("gmap-window"))
		document.getElementById("gmap-window").style.display = "none";
	setObj.disp = 1;
}

function adjustPos() {
	var customWindowObj = document.getElementById("gmap-window");
	var customWindowBodyObj = document.getElementById("gmap-display");
	var marker_pixls = gmap.fromLatLngToDivPixel(new GLatLng(setObj.activeLat,setObj.activeLng));
	document.getElementById("gmap-window").style.top = (marker_pixls.y - adjust_y) + "px";
	document.getElementById("gmap-window").style.left = (marker_pixls.x - adjust_x) + "px";
}
function createMarker(lat,lng,msg,num,iconObj) {
	var latlng = new GLatLng(lat,lng);
	var marker = new GMarker(latlng,iconObj);
	marker.value = num;
	GEvent.addListener(marker,"click", function() {
		gmap.panTo(latlng);
		openCustomWindow(msg,lat,lng,num);
	});
	return marker;
}
function load() {
	if(ListLoadComplate){
		clearTimeout(gmapReload);
		gmap = new GMap2(document.getElementById("gmap"));
		if(current_lat != undefined)
			gmap.setCenter(new GLatLng(current_lat,current_lng),17);
		else
			gmap.setCenter(new GLatLng(setObj.lat,setObj.lng),setObj.zom);
		
		var customInfoDIV = document.getElementById("gmap-window");
		function customBox(){}
		customBox.prototype = new GOverlay();
		customBox.prototype.initialize = function(gmap) {
			gmap.getPane(G_MAP_MARKER_PANE).appendChild(customInfoDIV);
			customInfoDIV.style.zIndex = 300000;
		}
		customBox.prototype.remove = function() {
			gmap.getPane(G_MAP_MARKER_PANE).removeChild(customInfoDIV);
		}
		customBox.prototype.copy = function() {
			return new customBox();
		}
		customBox.prototype.redraw = function(force) {}
		customInfoWindow = new customBox();
		gmap.addOverlay(customInfoWindow);
		
		gmap.addControl(new GLargeMapControl3D());
		gmap.addControl(new GMapTypeControl(true));
		gmap.addControl(new GScaleControl());
		
		gmap.setMapType(G_NORMAL_MAP);
		for(i=0;i<setObj.list.length;i++){
			var icon = new GIcon();
			icon.image = "images/"+setObj.icon[setObj.list[i]];
			icon.iconSize = new GSize(30, 30);
			icon.iconAnchor = new GPoint(15, 15);
			icon.infoWindowAnchor = new GPoint(15, 0);
			var marker = createMarker(setObj.lats[setObj.list[i]],setObj.lngs[setObj.list[i]],setObj.msgs[setObj.list[i]],i,icon);
			gmap.addOverlay(marker);
			markers[i] = marker;
			maps_categorys[i] = setObj.icon[setObj.list[i]];
		}
		
		GEvent.addListener(gmap, "moveend", function() {adjustPos();});
		GEvent.addListener(gmap, "zoomend", function() {adjustPos();});
		GEvent.addListener(gmap, "click", function(overay, point) {
			//document.gmap_location.gmap_lat_entry.value = (point.lat()).toFixed(7);
			//document.gmap_location.gmap_lng_entry.value = (point.lng()).toFixed(7);
		});
		closeCustomWindow();
		
		var icon = new GIcon();
		icon.image = "images/pin.png";
		icon.iconSize = new GSize(30, 30);
		icon.iconAnchor = new GPoint(15, 15);
		icon.infoWindowAnchor = new GPoint(15, 0);
		gmap.addOverlay(createMarker(34.022982,133.78409,"（有）サファリ",i+1,icon));
	}
	else {
		gmapReload = setTimeout("load()",1000);
	}
}
function callGoogleMapsPickupList(){
	httpObj = createXMLHttpRequest();
	httpObj.onreadystatechange = callbackGoogleMapsPickupList;
	httpObj.open("GET",'maps.txt',true);
	httpObj.send(null);
	return false;
}
function callbackGoogleMapsPickupList(){
	if ((httpObj.readyState == 4) && (httpObj.status == 200)){
		callbackGoogleMapsPickupObj = httpObj.responseText;
		var GoogleMapsPickupList = new Array();
		GoogleMapsPickupList = callbackGoogleMapsPickupObj.split("\n");
		var latAVG = 0;
		var lngAVG = 0;
		var count = 0;
		for(i=0;i<GoogleMapsPickupList.length;i++){
			var record = new Array();
			record = GoogleMapsPickupList[i].split("\t");
			if(record[2] != undefined){
				var hash = record[0]+","+record[1];
				setObj.list.push(hash);
				setObj.lats[hash] = record[0];
				setObj.lngs[hash] = record[1];
				setObj.icon[hash] = record[3];
				setObj.msgs[hash] = "<a href=\""+record[4]+"\">" + record[2] + "</a>";
				latAVG += eval(record[0]);
				lngAVG += eval(record[1]);
				count++;
			}
		}
		//alert(latAVG / GoogleMapsPickupList.length);
		//alert(lngAVG / GoogleMapsPickupList.length);
		//prompt("",latAVG / GoogleMapsPickupList.length+","+lngAVG / GoogleMapsPickupList.length);
		setObj.lat = latAVG / count;
		setObj.lng = lngAVG / count;
		//setObj.lat = 43.389082;
		//setObj.lng = 142.745361;
		setObj.activeLat = setObj.lat;
		setObj.activeLng = setObj.lng;
		ListLoadComplate = 1;
	}
}
function createXMLHttp() {
	try {
		return new ActiveXObject ("Microsoft.XMLHTTP");
	}catch(e){
		try {
			return new XMLHttpRequest();
		}catch(e) {
			return null;
		}
	}
	return null;
}
function createXMLHttpRequest(){
	var XMLhttpObject = null;
	try{
		XMLhttpObject = new XMLHttpRequest();
	}
	catch(e){
		try{
			XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try{
				XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
				return null;
			}
		}
	}
	return XMLhttpObject;
}
callGoogleMapsPickupList();

if (GBrowserIsCompatible()) {
	onload = load;
	onunload = GUnload;
}
else {
	document.write("<p>本サービスはご利用のブラウザでは使用できません。</p>");
}
