window.onload = function () {
	if (GBrowserIsCompatible()) {
		mapObj = '';
		var httpObj;
		var cnt = 0;
		var infoFlag = 1;
		var lngMk;
		var latMk;
		var LOADING = 1;
		var uriXML = "./areadata/markers.xml";
		var uriCGI = "/cgi-bin/pp/map.cgi?id=";
		var AryID     = new Array();
		var AryLNG    = new Array();
		var AryLAT    = new Array();
		var AryICON   = new Array();
		var AryNAME   = new Array();
		var AryMARKER = new Array();
		var AryURI    = new Array();
		var AryDESC   = new Array();
		var AryFLAG   = new Array();
		var ZOOM     = 1;
		var ZOOM_URI = 17;
		var LNG      = 157.76708739995956;
		var LAT      = 38.68109984994216;
		var TYPE     = "G_HYBRID_MAP";
		var MODE     = 2;
		var ID;
		var IDs = new Array();
		var INITVIEW = 1;
		var JPMODE   = 2;
		var BLANK    = 1;
		var AUTO_STOP;
		var AUTO_SC  = 2;
		var SC_TIME  = 5000;
		var INIT_ID  = 0;
		var AUTO_RND = 2;
		var AUTO_WIN = 2;
		var AUTO_MKR = 1;
		var AUTO_CLK = 2;
		function addMarker (mapObj) {
			var area = mapObj.getBounds();
			var ArySpMARKER = new Array();
			for (i=0; i<=AryMARKER.length-1; i++) {
				if (area.contains(AryMARKER[i].getPoint())) {
					ArySpMARKER.push(AryMARKER[i]);
				} else {
					mapObj.removeOverlay(AryMARKER[i]);
				}
			}
			AryMARKER = []; 
			for (i=0; i<=AryLNG.length-1; i++) {
				var p = new GLatLng(AryLAT[i], AryLNG[i]);
				if (area.contains(p)) {
					var flg = '';
					for (j=0; j<=ArySpMARKER.length-1; j++) {
						np = ArySpMARKER[j].getPoint();
						if (p.equals(np)) {
							flg = 1;
							break;
						}
					}
					if (flg != 1) selectMarker(mapObj, p, AryID[i], AryICON[i], AryNAME[i], AryURI[i], AryFLAG[i], AryDESC[i]);
				}
			}
			AryMARKER = AryMARKER.concat(ArySpMARKER);
			ArySpMARKER = []; 
		}
		function selectMarker (mapObj, p, id, icon, name, uri, flag, desc) {
			var marker;
			if (!icon || icon) {
				iconObj = new GIcon();
				iconObj.image = "/img/marker/type_02.png";
				if (!icon || icon == 1) {
					iconObj.iconSize = new GSize(25, 25);
					iconObj.iconAnchor = new GPoint(11, 15);
					iconObj.infoWindowAnchor = new GPoint(0, 0);
					iconObj.transparent = "/img/marker/type_02_mask.png"; 
					iconObj.imageMap = [4,15,4,10,9,4,15,4,21,10,21,15,16,21,9,21,4,15]; 
					marker = new GMarker(p, { icon:iconObj, title:name });
				} else {
					marker = new GMarker(p, { title:name });
				}
			} else {
				marker = new GMarker(p, { title:name });
			}
			mapObj.addOverlay(marker);
			AryMARKER.push(marker); 
			GEvent.addListener(marker, 'click', function () {
				if (AUTO_MKR == 1) AUTO_STOP = 1;
				if (!uri) {
					var mkPoint = marker.getPoint();
					if (infoFlag == 1 || (infoFlag != 2 && mkPoint.lng() != lngMk && mkPoint.lng() != latMk)) {
						mapObj.closeInfoWindow();
						viewWindow(mapObj, p, id, marker);
					} else if (infoFlag == 3) {
						infoFlag = 1;
						mapObj.closeInfoWindow();
					}
				} else if (JPMODE == 1) {
					if (BLANK == 1) window.location.href = uri;
					if (BLANK == 2) window.open(uri);
				} else if (JPMODE == 2) {
					var mkPoint = marker.getPoint();
					if (infoFlag == 1 || (infoFlag != 2 && mkPoint.lng() != lngMk && mkPoint.lng() != latMk)) {
						mapObj.closeInfoWindow();
						viewBasicWindow(mapObj, p, id, marker, name, uri, flag, desc);
					} else if (infoFlag == 3) {
						infoFlag = 1;
						mapObj.closeInfoWindow();
					}
				}
			});
			GEvent.addListener(marker, 'dblclick', function () {
				var mk2Point = marker.getPoint();
				mapObj.panTo(new GLatLng(mk2Point.lat(), mk2Point.lng()));
			});
		}
		function viewWindow (mapObj, p, id, mk) {
			httpObj.open("GET", uriCGI+id, true);
			httpObj.onreadystatechange = function() {
				infoFlag = 2;
				if (LOADING == 1) {
					mapObj.openInfoWindowHtml(p, '<div style="width: 238px; padding: 10px 0px;"><div align="center"><img src="/img/cmn/loading.gif" width="60" height="39" border="0" alt="LOADING" title="LOADING" /></div></div>');
					LOADING = 2;
				}
				if (httpObj.readyState == 4 && httpObj.status == 200) {
					infoFlag = 3;
					LOADING = 1;
					var mkPoint = mk.getPoint();
					lngMk = mkPoint.lng();
					latMk = mkPoint.lat();
					var html = httpObj.responseText;
					mapObj.openInfoWindowHtml(p, html);
				}
			}
			httpObj.send('');
		}
		function viewBasicWindow (mapObj, p, id, mk, name, uri, flag, desc) {
			infoFlag = 3;
			LOADING = 1;
			var mkPoint = mk.getPoint();
			lngMk = mkPoint.lng();
			latMk = mkPoint.lat();
			if (BLANK == 2) var tgtmode = ' target="_blank"';
			mapObj.openInfoWindowHtml(p, '<div style="width: 238px; padding: 10px 0px;"><div align="left"><table border="0" cellspacing="0" cellpadding="0"><tr><td valign="middle"><img src="' + flag + '/flag.gif" class="subttl-flag" border="0" alt="" title="" /><br /></td><td class="size3b"><span class="newcts-ttl"><a href="' + uri + '">' + name + '</a></span></td></tr></table><div class="space-3"></div><img src="/img/cmn/line.gif" border="0" alt="" title="" /><br /><div class="space-5"></div><span class="size2">' + desc + '</span></div></div>');
		}
		function viewMap () {
			mapObj = new GMap2(document.getElementById("map"));
			if (AUTO_SC != 1 || url.match(/id=(.*)/, "i") || url.match(/sk=(.*)/, "i")) {
				mapObj.setCenter(new GLatLng(LAT, LNG), ZOOM);
				mapObj.setMapType( eval(TYPE) );
				mapObj.addControl(new GLargeMapControl());
				mapObj.addControl(new GMapTypeControl());
				if (INITVIEW == 1) {
					addMarker(mapObj);
				} else if (INITVIEW == 2 && url.match(/id=(.*)/, "i")) {
					addMarker(mapObj);
				}
			} else if (AUTO_SC == 1) {
				var nowID;
				var cntRUN;
				function viewAutoScroll () {
					if (AUTO_STOP) { 
						clearInterval(TimerID);
					} else {
						if (AUTO_RND == 1) {
							for (i=0; i<=100; i++) {
								INIT_ID = Math.floor( Math.random() * (AryID.length) );
								if (nowID != INIT_ID) {
									nowID = INIT_ID;
									break;
								}
							}
						}
						var psc = new GLatLng(AryLAT[INIT_ID], AryLNG[INIT_ID]);
						var mksc = new GMarker(psc, {});
						if (!cntRUN) {
							mapObj.setCenter(psc, ZOOM);
							mapObj.setMapType( eval(TYPE) );
							mapObj.addControl(new GLargeMapControl());
							mapObj.addControl(new GMapTypeControl());
							addMarker(mapObj);
							cntRUN = 1;
						}
						mapObj.panTo(psc);
						if (AUTO_WIN == 1) {
							viewWindow (mapObj, psc, AryID[INIT_ID], mksc);
						} else if (AUTO_WIN == 2) {
							viewBasicWindow (mapObj, psc, AryID[INIT_ID], mksc, AryNAME[INIT_ID], AryURI[INIT_ID], AryFLAG[INIT_ID], AryDESC[INIT_ID])
						}
						if (AUTO_RND != 1) INIT_ID = INIT_ID == AryID.length - 1 ? 0 : INIT_ID + 1;
					}
					if (AUTO_CLK == 1) {
						GEvent.addListener(mapObj, 'click', function () {
							AUTO_STOP = 1;
						});
					}
				}
				viewAutoScroll();
				var TimerID = setInterval( function () { viewAutoScroll(); }, SC_TIME );
			}
			GEvent.addListener(mapObj, 'moveend', function () {
					addMarker(mapObj);
			});
		}
		var url = location.href;
		if (url.match(/id=(.*)&m=(.*)&t=(.*)&z=(.*)/, "i")) {
			ID    = RegExp.$1;
			IDs   = ID.split(",");
			MODE  = RegExp.$2;
			TYPE  = RegExp.$3 == 2 ? 'G_SATELLITE_MAP' : RegExp.$3 == 3 ? 'G_HYBRID_MAP' : 'G_NORMAL_MAP';
			ZOOM  = RegExp.$4 ? parseInt(RegExp.$4) : ZOOM_URI;
		}
		try {
			if (window.XMLHttpRequest) {
				httpObj = new XMLHttpRequest();
			} else if (window.ActiveXObject) {
				httpObj = new ActiveXObject("Microsoft.XMLHTTP");
			} else {
				httpObj = false;
			}
		} catch (e) {
			httpObj = false;
		}
		if (!httpObj) {
			viewError();
			return false;
		}
		httpObj.open("GET", uriXML, true);
		httpObj.onreadystatechange = function() {
			if (httpObj.readyState == 4 && httpObj.status == 200) {
				var xmlDoc = httpObj.responseXML;
				var item = xmlDoc.documentElement.getElementsByTagName("item");
				for (i=0; i<=item.length - 1; i++) {
					var IDflg = 0;
					if (MODE == 1) {
						for (j=0; j<=IDs.length - 1; j++) {
							if (IDs[j] == item[i].getAttribute("id")) IDflg++;
						}
					}
					if (MODE == 2 || IDflg == 1) {
						AryID.push(item[i].getAttribute("id"));
						AryLNG.push(item[i].getAttribute("lng"));
						AryLAT.push(item[i].getAttribute("lat"));
						AryICON.push(item[i].getAttribute("marker"));
						AryNAME.push(item[i].getAttribute("name"));
						AryURI.push(item[i].getAttribute("url"));
						AryDESC.push(item[i].getAttribute("desc"));
						AryFLAG.push(item[i].getAttribute("flag"));
					}
					if (IDs[0] && IDs[0] == item[i].getAttribute("id")) {
						LNG = item[i].getAttribute("lng");
						LAT = item[i].getAttribute("lat");
					}
				}
				viewMap();
				var url = location.href;
				if (url.match(/sk=(.*)/, "i")) {
					sWord   = RegExp.$1;
					geoSearch(sWord);
				}
			}
		}
		httpObj.send('');
	} else {
		viewError();
		return false;
	}
	function viewError () {
		document.getElementById("map").innerHTML = 
			'<div align="center" class="size2b"><span id="text-red"><br />現在のブラウザではご利用いただけません。</span></div>';
		return false;
	}
}
rmObj = '';
var ZOOM_SEARCH = 17;
var SICON       = 2;
gGeo = new GClientGeocoder();
function geoSearch(sWord) {
	document.getElementById("status").innerHTML = '<img src="/img/cmn/loading.gif" width="60" height="39" border="0" alt="LOADING" title="LOADING" />';
	if (sWord) {
		sWord = unescape(sWord);
		document.getElementById("sWord").value = sWord;
	}
	if (!sWord) var sWord = document.getElementById("sWord").value;
	gGeo.getLatLng(sWord, onGeoSearch);
}
function onGeoSearch(point) {
	if (point) {
		document.getElementById("status").innerHTML = '';
		mapObj.setCenter(point, ZOOM_SEARCH);
		if (SICON == 1) {
			mapObj.removeOverlay(rmObj);
			rmObj = new GMarker(point);
			mapObj.addOverlay(rmObj);
		}
	} else {
		document.getElementById("status").innerHTML = 
			'<span class="size2" id="text-red">ヒットする項目が見つかりません</span>';
		return false;
	}
}
