//　Ajax判別
function xmlAjax(){
	var ajax = false;
	// != IE
	if(window.XMLHttpRequest) {
		ajax = new XMLHttpRequest();
	// == IE
	} else if(window.ActiveXObject) {
		try {
			ajax = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
			ajax = new ActiveXObject('Microsoft.XMLHTTP');
		}
	}
	return ajax;
}

function gmapjssrc(){
	var lhostname = location.hostname;
	var gkey = 'ABQIAAAAoBsPRdtCq18GmXD8m2689RRAoFRTREagPiP_O2fGsLaYmuREsBSWWGxViz1rqZGrwCiqJoKUUH0RxA';
	
	if (lhostname.match(/^www\.is/)) {
		gkey = 'ABQIAAAAoBsPRdtCq18GmXD8m2689RQpSXxFj1jC613c3WQJDT2iLADRYhSWsyw-LUsDOhhmZIEseDKH1p4B_A';
	}
	
	if (lhostname.match(/^cgi\.is/)) {
		gkey = 'ABQIAAAAUHxQyh-DSd-CKtlAlQdM1RSqI85W66xhJOSjScowfAm0-ShRkhT43C-Ls4HKgimeaiCmxZJY_3iqXQ';
	}
	if (lhostname.match(/^192/)) {
		gkey = 'ABQIAAAAoBsPRdtCq18GmXD8m2689RQmmh7jkltN7NYTqYxJVNaBksHrshTsJz1wVAf5tFFWPeWy1-ClpJo1SQ';
	}
	if (lhostname.match(/^ci/)) {
		gkey = 'ABQIAAAAoBsPRdtCq18GmXD8m2689RRVf-ddVx4mflaXvU5N9FNv3aEVOBTHYi7sRtZolC_O05Hl1Icul72i3A';
	}
	var tag = '<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=' + gkey + '" type="text/javascript"></script>';
	document.write(tag);
}

function ref2num(h){
	var doc = document;
		var mat = 'route';
		var hrefValue = h.href;
		if((n = hrefValue.indexOf('#'+mat)) != -1){
			var num = hrefValue.substring(n+mat.length+1)-0;
			//行程地図データの範囲内か？
			if(routeData.mapMin <= num && num <= routeData.mapMax){
				gmKeito(num-1 ,0);
				doc.getElementById('routeMap').style.display = 'block';
			}else{
				doc.getElementById('routeMap').style.display = 'none';
			}
			for(var i = routeData.docMin; i <= routeData.docMax; i++){
				if(doc.getElementById(mat+ i)){
					doc.getElementById(mat+ i).style.display = 'none';
				}
			}
			if(doc.getElementById(mat+ num)){
				//alert(num);
				doc.getElementById(mat+ num).style.display = 'block';
			}
		}
		//doc.getElementById('route8_1').style.display = 'block';
		//doc.getElementById('route8_2').style.display = 'block';

}

function routeInit(number){
	var doc = document;
	var mat = 'route';
	if(!doc.getElementById){
		return;
	}
	//行程地図データの範囲内か？
	if(routeData.mapMin <= number && number <= routeData.mapMax){
		gmKeito(number-1 ,0);
		doc.getElementById('routeMap').style.display = 'block';
	}else{
		doc.getElementById('routeMap').style.display = 'none';
	}
	for(var i = routeData.docMin; i <= routeData.docMax; i++){
		if(i == number){
			if(doc.getElementById(mat+ i)){
				doc.getElementById(mat+ i).style.display = 'block';
			}
		}else{
			if(doc.getElementById(mat+ i)){
				doc.getElementById(mat+ i).style.display = 'none';
			}
		}
	}
	if(!doc.getElementById('maincontent').getElementsByTagName('a')){
		return;
	}
	var aElms = doc.getElementById('maincontent').getElementsByTagName('a');
	for(var i=0; i< aElms.length; i++){
		var hrefValue = aElms[i].href;
		if((n = hrefValue.indexOf('#'+mat)) != -1){
			//var num = hrefValue.substring(n+mat.length+1)-0;
			aElms[i].onclick = function(){ref2num(this); return false;}
		}
	}
}


//polylineに沿って地図を動かす
function gmPanAlongPolyLine(distance){
	if(polyline.getLength() > distance){
		var point1 = polyline.GetPointAtDistance(distance-100);
		var point2 = polyline.GetPointAtDistance(distance);
		tracerSegment(point1,point2);
		marker.setPoint(point2);
		map.panTo(point2);
		var newdistance=distance+10; 
		setTimeout('gmPanAlongPolyLine('+newdistance+')', 20); 
	}
}

//ブラウザリサイズ時の処理
function gmResize(){
	if( map ){
		map.checkResize();
	}
}

//行程の詳細を表示
function gmKeito(keito, oufuku) {
	var doc = document;
	//var keitoElm = document.getElementById("keito");
	var html = '';
	var homeUrl = getrooturl();
	var ajax = xmlAjax();
	//暫くは同じファイルを参照
	var now = Math.floor(new Date().getTime()/1000);
	var url = homeUrl + 'data/route.xml?'+now;
	ajax.open('GET',url);
	teiryujo = new Object();
	teiryujo = [];
	//rosen = new Array();
	polyPoints = new Object();
	var polyPoints = [];
	var polyline;
	ajax.onreadystatechange = function() {
		if (ajax.readyState == 4 && ajax.status == 200) {
			map.clearOverlays();
			var oj = ajax.responseXML;
			if(oj.getElementsByTagName('root')[0].getElementsByTagName('route')[keito]){
				//ライン用
				var oElm = oj.getElementsByTagName('root')[0].getElementsByTagName('route')[keito].getElementsByTagName('point');
				var len = oElm.length;
				//alert(len);
				//全体を表示するために、緯度・経度の最小・最大値を求める
				var minlat =  1000;
				var maxlat = -1000;
				var minlng =  1000;
				var maxlng = -1000;
				markersCounter = len;
				for(var c = 0; c < len; c++){
					var lat = oElm[c].getAttribute('lat') -0;
					minlat = Math.min(minlat, lat);
					maxlat = Math.max(maxlat, lat);
					var lng = oElm[c].getAttribute('lng') -0;
					minlng = Math.min(minlng, lng);
					maxlng = Math.max(maxlng, lng);
					polyPoints[c] = new GLatLng(lat, lng);
				}
				polyline = new GPolyline(polyPoints, '#003399', 6, 0.6);
				map.addOverlay(polyline);
				//ポイント用
				//マーカーの設定
				
				markers = [];

				var oElm = oj.getElementsByTagName('root')[0].getElementsByTagName('icon')[0].getElementsByTagName('board');
				var len = oElm.length;
				var marker = new Object;
				for(var c = 0; c < len; c++){
					marker[c] = new Object();
					marker[c].CD = 'board';
					marker[c].width = 24;
					marker[c].height = 21;
					var lat = oElm[c].getAttribute('lat') -0;
					var lng = oElm[c].getAttribute('lng') -0;
					marker[c].point = new GLatLng(lat, lng);
					marker[c].html = oElm[c].getAttribute('alt');
					markers[c] = gmCreateMarker(marker[c])
				}
				
				//全体を表示
				var rect = new GLatLngBounds(new GLatLng(minlat, minlng), new GLatLng(maxlat, maxlng));
				//ズーム自動
				//var zoom = map.getBoundsZoomLevel(rect);
				//ズーム固定
				var zoom = routeData.zoom
				var mapCenter = new GLatLng((minlat + maxlat)/2, (minlng + maxlng)/2);
				if(map.getZoom() != zoom){
					map.setCenter(mapCenter, zoom);
				}else{
					map.panTo(mapCenter)
				}
				//今の状態を覚えておく
				map.savePosition();
				//move(100);
				//alert(lng+20);
			}
		}
	}
	ajax.send(null);
	return '';
}
//アイコン削除
function gmRemoveOverlay(){
	for(var i = 0;  i < markersCounter; i++){
		map.removeOverlay(markers[i]);
	}
}

//ライン削除
function gmRemovePolyline(){
	for(var i = 0;  i < polylineslength; i++){
		map.removeOverlay(polylines[i]);
	}
}

// Creates a marker whose info window displays the letter corresponding
// to the given index.
// アイコン作成
function gmCreateMarker(trj) {
	var letteredIcon = new GIcon(gmBaseIcon());
	letteredIcon.iconSize = new GSize(trj.width, trj.height);
	letteredIcon.image = './icon/' + trj.CD + '.png';
	letteredIcon.iconAnchor = new GPoint(trj.width/2, trj.height);
	letteredIcon.infoWindowAnchor = new GPoint(trj.width/2, trj.height/2);
	//マーカーのz-indexを指定（値が大きい方が全面に来るので*-1する）
	var markerOptions = {zIndexProcess:function(){return (trj.order*-1);}, icon:letteredIcon };
	//var markerOptions = null;
	var marker = new GMarker(trj.point, markerOptions);
	//var html = teiryujoHtml(trj);
	//GEvent.addListener(marker, "click", function() {
	//	marker.openInfoWindowHtml(trj.html);
	//});
	map.addOverlay(marker);
	//markers[trj.order] = marker;
	return marker;
}

function gmSetCenterZoom(order){
	map.setCenter(teiryujo[order].point, 17);
}

function gmPanTo(order){
	map.closeInfoWindow();
	map.panTo(teiryujo[order].point);
	var html = teiryujoHtml(teiryujo[order])
	markers[order].openInfoWindowHtml(html);
	//markers[order] = gmCreateMarker(map, baseIcon, teiryujo[order]);
	//marker.openInfoWindowHtml(html);
}


//吹き出し中のHTMLを作成
function teiryujoHtml(trj){
	var html = '';
	//乗車
	return html;
}


// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
//基本となるアイコン作成
function gmBaseIcon(){
	var baseIcon = new GIcon();
	baseIcon.iconSize = new GSize(30, 15);
	baseIcon.iconAnchor = new GPoint(0, 10);
	baseIcon.infoWindowAnchor = new GPoint(0, 0);
	//baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	//baseIcon.shadowSize = new GSize(37, 34);
	//baseIcon.infoShadowAnchor = new GPoint(18, 25);
	return baseIcon;
}

//マップ作成
function gmCreateMap(mapID, point, zoom) {
	var map = new GMap2(document.getElementById(mapID));
	map.setCenter(point, zoom);
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	return map;
}
//


//htmlspecialchars
function htmlspecialchars(s){
	s = String(s);//object を stringに
	s = s.replace(/&/g,function (s0, idx, old) {return "&amp;";});
	s = s.replace(/</g,function (s0, idx, old) {return "&lt;";});
	s = s.replace(/>/g,function (s0, idx, old) {return "&gt;";});
	s = s.replace(/"/g,function (s0, idx, old) {return "&quot;";});//"
	s = s.replace(/'/g,function (s0, idx, old) {return "&#039;";});//'
	return s;
}

//htmlspecialchars_decode
function htmlspecialchars_decode(s){
	s = String(s);//object を stringに
	s = s.replace(/&quot;/g,function (s0, idx, old) {return '"';});//"
	s = s.replace(/&#039;/g,function (s0, idx, old) {return "'";});//'
	s = s.replace(/&lt;/g,function (s0, idx, old) {return "<";});//
	s = s.replace(/&gt;/g,function (s0, idx, old) {return ">";});
	s = s.replace(/&amp;/g,function (s0, idx, old) {return "&";});
	return s;
}

//ここまで

