/****************************************************************************************************
グローバル変数
****************************************************************************************************/
var DEBUG = true;			//デバッグ表示
var strHttpData = '';		//ＨＴＴＰデータ

/****************************************************************************************************
  関数名：fncOnload
  引  数：strMess	メッセージ
  戻り値：なし
  備  考：
****************************************************************************************************/
function fncOnloadMap(strMapId, objMapData) {

	objMap = null;
	var objMarkers = new Array();
	var varPoints = new Array();
	var varLatLng = new Array();
	var intLoopCount = 0;
	var objPoint = null;
	var dblLng = 0;
	var dblLat = 0;
	var dblLngMinMax = new Array(99999, -99999);
	var dblLatMinMax = new Array(99999, -99999);
	var varMapData = new Array();
	var intRegistCount = 0;
	var intScale = 0;

	//マップの設定
	objMap = new GMap2(document.getElementById(strMapId));
	objMap.addControl(new GLargeMapControl());
	objMap.addControl(new GMapTypeControl());

	//範囲設定
	for (intLoopCount = 0; intLoopCount < objMapData.Map.length; intLoopCount++) {
		if (objMapData.Map[intLoopCount].LatLng.indexOf(',', 0) != -1) {
			varLatLng = objMapData.Map[intLoopCount].LatLng.split(',');
			dblLat = parseFloat(varLatLng[0]);
			dblLng = parseFloat(varLatLng[1]);
			if (!isNaN(dblLat) && !isNaN(dblLng) && dblLat != '' && dblLng != '') {
				if (dblLatMinMax[0] > dblLat) { dblLatMinMax[0] = dblLat; }
				if (dblLatMinMax[1] < dblLat) { dblLatMinMax[1] = dblLat; }
				if (dblLngMinMax[0] > dblLng) { dblLngMinMax[0] = dblLng; }
				if (dblLngMinMax[1] < dblLng) { dblLngMinMax[1] = dblLng; }
				varMapData[intRegistCount] = objMapData.Map[intLoopCount];
				intRegistCount++;
			}
		}
	}

	var objNorthEastLatLng = new GLatLng(dblLatMinMax[1], dblLngMinMax[1]);		//右上
	var objSouthWestLatLng = new GLatLng(dblLatMinMax[0], dblLngMinMax[0]);		//左下
	var objMapCenter = new GLatLng((objNorthEastLatLng.lat() + objSouthWestLatLng.lat()) / 2.0, (objNorthEastLatLng.lng() + objSouthWestLatLng.lng()) / 2.0);
	var objLatLngBounds = new GLatLngBounds(objSouthWestLatLng, objNorthEastLatLng);	//境界領域
	var objZoomLevel = objMap.getBoundsZoomLevel(objLatLngBounds);
	if (objMapData.Map.length == 1) {
		varLatLng = objMapData.Map[0].LatLng.split(',');
		if (varLatLng.length == 3) {
			if (varLatLng[2].trim() != '') {
				objZoomLevel = parseFloat(varLatLng[2].trim());
			}
		}
	}
	objMap.setCenter(objMapCenter, objZoomLevel);

	//マーカー表示
	objMap.clearOverlays();
	for (intLoopCount = 0; intLoopCount < varMapData.length; intLoopCount++) {
		if (varMapData[intLoopCount].LatLng.indexOf(',', 0) != -1) {
			varLatLng = varMapData[intLoopCount].LatLng.split(',');
			objMarkers[intLoopCount] = fncCreateMarker(new GPoint(varLatLng[1], varLatLng[0]), varMapData[intLoopCount].Marker, varMapData[intLoopCount].MarkerWidth, varMapData[intLoopCount].MarkerHeight, varMapData[intLoopCount].Balloon);
			objMap.addOverlay(objMarkers[intLoopCount]);
		}
	}

	//線表示
	varPoints = new Array();
	varLatLng = varMapData[0].LatLng.split(',');
	varPoints.push(new GPoint(varLatLng[1], varLatLng[0]));
	for (intLoopCount = 1; intLoopCount < varMapData.length; intLoopCount++) {
		if (varMapData[intLoopCount].LatLng.indexOf(',', 0) != -1) {
			varLatLng = varMapData[intLoopCount].LatLng.split(',');
			var objPoint = new GPoint(varLatLng[1], varLatLng[0]);
			varPoints.push(objPoint);
			objMap.addOverlay(new GPolyline(varPoints, varMapData[intLoopCount].LineColor, varMapData[intLoopCount].LineWeight, varMapData[intLoopCount].LineClarity));
			varPoints = new Array();
			varPoints.push(objPoint);
		}
	}
}


/****************************************************************************************************
  関数名：fncCreateMarker
  引  数：objPoint			メッセージ
          strMarker			マーカー
          intMarkerWidth	マーカーの幅
          intMarkerHeight	マーカーの高さ
          strBalloon		吹き出し
  戻り値：なし
  備  考：
****************************************************************************************************/
function fncCreateMarker(objPoint, strMarker, intMarkerWidth, intMarkerHeight, strBalloon) {

	var strBalloonData = '';
	var objMarker = null;

	if (strMarker != '') {
		var objIcon = new GIcon();
		objIcon.image = strMarker;
		objIcon.iconSize = new GSize(intMarkerWidth, intMarkerHeight);
		objIcon.iconAnchor = new GPoint(intMarkerWidth / 2, intMarkerHeight);
		objIcon.infoWindowAnchor = new GPoint(intMarkerWidth / 2, intMarkerHeight / 2);
		var objMarker = new GMarker(objPoint, objIcon);
	} else {
		var objMarker = new GMarker(objPoint);
	}

	if (strBalloon != '') {
		try {
			sendRequest( function(objHttp) {
							strHttpData = '';
							if (objHttp.status == '404') {
								strHttpData = '';
							} else {
								strHttpData = objHttp.responseText;
							}
						}
				, ''
				, 'GET'
				, strBalloon
				, false
				, true
				, ''
				, '');
		} catch (e) {
			strHttpData = '';
		}
	}

	if (strHttpData != '') {
		strBalloonData = strHttpData;
		GEvent.addListener(objMarker, "click", function() {
			objMarker.openInfoWindowHtml(strBalloonData);
		});
	}
	return objMarker;
}


/****************************************************************************************************
  関数名：debug
  引  数：strMess	メッセージ
  戻り値：なし
  備  考：
****************************************************************************************************/
function debug(strMess) {
	if (DEBUG) {
		//document.write('<font class="debug">' + strMess + "</font><br>\n");
		document.getElementById("Debug").innerHTML = document.getElementById("Debug").innerHTML + "<br>\n" + strMess;
	}
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
}


sendRequest.README={license:'Public Domain',url:'http://jsgt.org/lib/ajax/ref.htm',version:0.516,author:'Toshiro Takahashi'};function chkAjaBrowser(){var A,B=navigator.userAgent;this.bw={safari:((A=B.split('AppleWebKit/')[1])?A.split('(')[0].split('.')[0]:0)>=124,konqueror:((A=B.split('Konqueror/')[1])?A.split(';')[0]:0)>=3.3,mozes:((A=B.split('Gecko/')[1])?A.split(' ')[0]:0)>=20011128,opera:(!!window.opera)&&((typeof XMLHttpRequest)=='function'),msie:(!!window.ActiveXObject)?(!!createHttpRequest()):false};return(this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie)}function createHttpRequest(){if(window.XMLHttpRequest){return new XMLHttpRequest()}else{if(window.ActiveXObject){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(B){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(A){return null}}}else{return null}}};function sendRequest(E,R,C,D,F,G,S,A){var Q=C.toUpperCase()=='GET',H=createHttpRequest();if(H==null){return null}if((G)?G:false){D+=((D.indexOf('?')==-1)?'?':'&')+'t='+(new Date()).getTime()}var P=new chkAjaBrowser(),L=P.bw.opera,I=P.bw.safari,N=P.bw.konqueror,M=P.bw.mozes;if(typeof E=='object'){var J=E.onload;var O=E.onbeforsetheader}else{var J=E;var O=null}if(L||I||M){H.onload=function(){J(H);H.abort()}}else{H.onreadystatechange=function(){if(H.readyState==4){J(H);H.abort()}}}R=K(R,D);if(Q){D+=((D.indexOf('?')==-1)?'?':(R=='')?'':'&')+R}H.open(C,D,F,S,A);if(!!O){O(H)}B(H);H.send(R);function B(T){if(!L||typeof T.setRequestHeader=='function'){T.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')}return T}function K(X,V){var Z=[];if(typeof X=='object'){for(var W in X){Y(W,X[W])}}else{if(typeof X=='string'){if(X==''){return''}if(X.charAt(0)=='&'){X=X.substring(1,X.length)}var T=X.split('&');for(var W=0;W<T.length;W++){var U=T[W].split('=');Y(U[0],U[1])}}}function Y(b,a){Z.push(encodeURIComponent(b)+'='+encodeURIComponent(a))}return Z.join('&')}return H}
