/*
 * Load Google Maps Functions for APIv3
 * 
 * Version: 1.05, 06.15.2010
 */

var lgm_zoom = 14;
var lgm_map;
var lgm_markers = new Array();
var lgm_routes = new Array();
var lgm_navi = new Array();
var lgm_IWf = null;
var lgm_directionsService = new google.maps.DirectionsService();

/*
 * * イニシャライザ * *
 * t = target = MapをロードするdivID
 * i = ido = Mapセンターポイントの緯度
 * k = keido = Mapセンターポイントの経度
 */
function lgm_Ini(t,i,k){
	var md = document.getElementById(t);
	var op = {
		zoom: lgm_zoom,
		center: new google.maps.LatLng(i,k),
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scaleControl: true
	};
	lgm_map = new google.maps.Map(md,op);
}

/*
 * * マーカー追加 * *
 */
function lgm_MakeMarker(set){
	var icon = set.icon;
	if(icon==1){
		icon = "http://maps.google.co.jp/mapfiles/ms/icons/red-dot.png";
	}
	var pos = new google.maps.LatLng(set.lat,set.lng);
	var m = new google.maps.Marker({
		position: pos,
		map: lgm_map, 
		title: set.name,
		visible: true,
		icon:icon
	});
	var iw = new google.maps.InfoWindow({
		content: '<p><span class="title">'+set.name+'</span><br />\n<span class="content">'+set.content+'</span></p>',
		size: new google.maps.Size(200, 100)
	});
	lgm_markers[set.name] = m;
	lgm_navi.push('<a href="javascript:lgm_SetCentertoMarker('+set.name+')">'+set.name+'</a>');
	google.maps.event.addListener(m,'click',function() {
		if(lgm_IWf){
			lgm_IWf.close();
		}
		iw.open(lgm_map,m);
		lgm_IWf = iw;
	});
}


/*
 * * ルート追加 * *
 */
function lgm_MakeRoute(set){
	var routemarkers = set.markers;
	var sm = routemarkers.shift();
	var em = routemarkers.pop();
	var start = lgm_markers[sm].getPosition();
	var end = lgm_markers[em].getPosition();
	var waypoints = new Array();
	for (var i = 0; i < routemarkers.length; i ++) {
		waypoints.push({location:lgm_markers[routemarkers[i]].getPosition()});
	}
	var route = new google.maps.DirectionsRenderer();
	route.setMap(lgm_map);
	var request = {
		origin:start,
		destination:end,
		waypoints : waypoints,
		travelMode: google.maps.DirectionsTravelMode.DRIVING,
		unitSystem: google.maps.DirectionsUnitSystem.METRIC
	};
	lgm_directionsService.route(request, function(response, status) {
		if(status == google.maps.DirectionsStatus.OK) {
			route.set("avoidHighways",1);
			route.set("suppressMarkers",1);
			route.set("preserveViewport",1);
			route.set("suppressPolylines",0);
			route.setDirections(response);
		}
	});
	lgm_routes[set.name] = route;
}


/*
 * * セット読み込みハブ * *
 *
 */
function lgm_SetMarkers(set,mode){
	if(mode=="marker")	{
		for( var i in set){
			lgm_MakeMarker(set[i]);
		}
	}
	else if(mode=="route"){
		for( var i in set){
			lgm_MakeRoute(set[i]);
		}
	}
}
/*
 * * ズームレベル変更 * *
 * z = zoom = ズームレベル
 */
function lgm_SetZoom(z){
	lgm_map.setZoom(z);
}

/*
 * * センター移動 * *
 * i = ido = 移動後緯度
 * k = keido = 移動後経度
 */
function lgm_ViewMove(i,k){
	var p = new google.maps.LatLng(i,k);
	lgm_map.setCenter(p);
}

/*
 * * 特定マーカーをセンターへ * *
 * m = marker = マーカー
 */
function lgm_SetCentertoMarker(m){
	var p = markers[m].getPosition();
	lgm_map.setCenter(p);
}

/*
 * * マーカーの表示変更 * *
 * n = name = 変更するマーカーのname値
 */
function lgm_MarkerViewChange(n){
	var view = lgm_markers[n].getVisible();
	lgm_markers[n].setVisible(!(view));
}

