//<![CDATA[

var markers = points = pitems = new Array();
var map = new Object();
var mapdataurl = "./markers/";
var sicon = new GIcon();
sicon.iconSize = new GSize(20, 34);
sicon.iconAnchor = new GPoint(10, 34);
sicon.infoWindowAnchor = new GPoint(10, 34);
sicon.shadow = mapdataurl + "shadow50.png";
sicon.shadowSize = new GSize(37, 34);

var cid = 1;
var aid = 1;
var Num2Str = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
var Zlevel = new Array(3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 7);
var Zcrct = new Array(5, 5);
var Zm = 10;
var clearflg =false;

function ToIMapload(){
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());
	if(document.URL.match(/footer$/)) ToIAreaChange (4);
	else map.setCenter(new GLatLng(parseFloat(centers[aid]['lat']), parseFloat(centers[aid]['lng'])), parseInt(centers[aid]['zoom']));
	ToIMainmarker();
	if( data.length != false )  ToIMappointMerge(cid);
	GEvent.addListener(map, 'move', function() {
		if(Zm != map.getZoom()){
			ToIMapInit();
		}
	});
}

function ToIMainmarker(){
	sicon.image = mapdataurl + "logo.png";
	sicon.printImage = mapdataurl + "logo.gif";
	var point = new GLatLng(core["lat"], core["lng"]);
	var marker = new GMarker(point, {icon: sicon} );
	map.addOverlay(marker);
	GEvent.addListener(marker, 'click', function(){
		marker.openInfoWindowHtml(core["text"]);
	} );
}

function ToIMapInit(){
	map.clearOverlays();
	points = new Array();
	ToIMainmarker();
	Zm = map.getZoom();
	ToIMappointMerge(cid);
}

function ToIMappointMerge( cid ){
	var Zchk = Zlevel[Zm] % 2;
	var pk = 0;
	pitems = new Array();
	for (var i = 0; i < data.length; i++) {
		if(( cid  > 0 && data[i]["cid"] != cid ) && Number(data[i]['cid']) != "100") {
			continue;
		}
		pitems[pk] = new Array();
		pitems[pk]["name"] = data[i]["name"];
		pitems[pk]["lat"] = data[i]["lat"];
		pitems[pk]["lng"] = data[i]["lng"];
		pitems[pk]["id"] = data[i]["id"];
//		pitems[pk]["point"] = pk;
		pitems[pk]["text"] = data[i]["text"];
		pitems[pk]["msg"] = "<div class='map_info_title'>"+ data[i]["name"] +"</div>";

		var lat = data[i]["lat"].substr(0, Zlevel[Zm]);
		lat = lat.concat(Zcrct[Zchk]);
		var lng = data[i]["lng"].substr(0, Zlevel[Zm]+1);
		lng = lng.concat(Zcrct[Zchk]);
		var check = false;

		for( var ii = 0 ; ii <  points.length ; ii++ ){
			if( points[ii]["lat"] == lat && points[ii]["lng"] == lng ){
				points[ii]["msg"] += "<hr><div class='map_info_title'>"+ data[i]["name"] +"</div>";
				points[ii]["multi"] = true;
				pitems[pk]["point"] = ii;
				check = true;
				break;
			}
		}
		if( check == false ){
			var pointsArray = new Array();
			pointsArray["title"] = data[i]["title"];
			pointsArray["id"] =  i;
			pointsArray["lat"] = lat;
			pointsArray["lng"] = lng;
			pointsArray["multi"] = false;
			pointsArray["point"] = points.length ;
			pointsArray["msg"] =  "<div class='map_info_title'>"+ data[i]["name"] +"</div>";
			points.push(pointsArray);
			pitems[pk]["point"] = points.length - 1 ;
		}
		pk += 1;
	}

	ToIMapmarkerDraw();
	ToIItemDraw();
//	if(aid ==1) ToIAreaMarker();
}

function ToIMapmarkerDraw(){
	for(var i = 0; i< points.length; i++){
		var point = new GLatLng(parseFloat(points[i]["lat"]), parseFloat(points[i]["lng"]));
		if(i < 25){
			sicon.image = mapdataurl + "marker" + Num2Str[i] + ".png";
			sicon.printImage = mapdataurl + Num2Str[i] + ".gif";
		}
		var marker = new GMarker(point, {icon: sicon} );
		map.addOverlay(marker);
		ToIMappointInfo(marker, points[i], points[i]["id"]);
//GLog.write(markers[i]['name'] + "[" + markers[i]['id']);
	}

}

function ToIItemDraw(){
	var navis = "";
	for( var i = 0 ; i < pitems.length ; i++ ){
		navis += "<span class='map_navi_item' >("+ Num2Str[pitems[i]["point"]] +")";
		navis += "<a href='#cat' onclick='"+ "ToINaviClick" +"("+ i+")'>"+ pitems[i]["name"];
		if(pitems[i]["text"]){
			navis += "("+ pitems[i]["text"] +")";
		}
		navis += "</a></span>";
	}
	document.getElementById("itemNavi").innerHTML = navis;
}

function ToIAreaMarker(){
	var baseArea = new GIcon();
	baseArea.iconSize = new GSize(100,100);
	baseArea.iconAnchor = new GPoint(10,10);
//	baseArea.image = "http://www.ikaza.net/img/gmap/aream.png";
	baseArea.iconAnchor = new GPoint(0,0);
	baseArea.infoWindowAnchor = new GPoint(1,2);
	icon = new GIcon(baseArea);
	var marker = new GMarker(new GPoint(138.57416152954, 36.35571147347515), icon);
		map.addOverlay(marker);
	var marker = new GMarker(new GPoint(138.6158752441406, 36.363130773734594), icon);
		map.addOverlay(marker);
	var marker = new GMarker(new GPoint(138.602142333984, 36.32570590366431), icon);
		map.addOverlay(marker);
}

function ToIMappointInfo(marker, item, n, flg){
	var msg = "<div class='map_info'>"+ item["msg"] + "<hr>";
	if(Zm < 18 ) 
		msg += "<a href='#m' onclick='ToIMpointDetail(" +item['id'] + ")' class='map_link'>付近を詳しく見る</a>";
	if(item["multi"]!=true ){
		msg += "<a href='#map' onclick='ToIMMapposition(" +item['id'] + ")' class='map_link'>"+ core["name"] + "との位置関係</a>";
	}
	msg += "</div>";
	GEvent.addListener(marker, 'click', function(){
		marker.openInfoWindowHtml(msg);
	} );
}

function ToIMapChange(catID){
	cid = catID;
	map.clearOverlays();
	sicon.image = mapdataurl + "marker.png";
	sicon.printImage = mapdataurl + "marker.gif";
	for(var i=1; i < 4; i++){
		var navi = document.getElementById("mapnavi_" + i);
		if(cid == i) navi.style.background = '#ffffff';
		else navi.style.background = '#dedede';
	}
	ToIMapInit();
}

function ToIAreaChange(aID){
	aid = aID;
	var cpoint = new GLatLng(parseFloat(centers[aid]["lat"]), parseFloat(centers[aid]["lng"]));
	if(centers[aid]["zoom"]) map.setCenter(cpoint, parseInt(centers[aid]["zoom"]));
	else map.setCenter(cpoint, parseInt(Zm));
	for(var i=1; i < 5; i++){
		var navi = document.getElementById("areanavi_" + i);
		if(aid == i) navi.style.background = '#ffffff';
		else navi.style.background = '#dedede';
	}
}

function ToIMappointDetail(pid){
	map.clearOverlays();
	pitems = markers[pid];
	ToIMapInit();
//	sicon.image = mapdataurl + "marker.png";
//	map.setCenter(new GLatLng(markers[pid]["lat"], markers[pid]["lng"]),15);
	map.setCenter(new GLatLng(data[pid]["lat"], data[pid]["lng"]),15);
}

function ToIMpointDetail(n){
	if(Zm  < 15) var Zl = 15;
	else if(Zm  >17 ) var Zl = 18;
	else var Zl = Zm +1;
//	map.setCenter(new GLatLng(parseFloat(markers[n]['lat']), parseFloat(markers[n]['lng'])),Zl);
//	map.setCenter(new GLatLng(parseFloat(pitems[n]['lat']), parseFloat(pitems[n]['lng'])),Zl);
	map.setCenter(new GLatLng(parseFloat(data[n]['lat']), parseFloat(data[n]['lng'])),Zl);
	}

function ToIpointDetail(n){
	if(Zm  < 15) var Zl = 15;
	else if(Zm  >17 ) var Zl = 18;
	else var Zl = Zm +1;
//	map.setCenter(new GLatLng(parseFloat(markers[n]['lat']), parseFloat(markers[n]['lng'])),Zl);
	map.setCenter(new GLatLng(parseFloat(pitems[n]['lat']), parseFloat(pitems[n]['lng'])),Zl);
	}

function ToINaviClick(n){
	if(clearflg==true) {
		ToIMapInit();
		clearflg = false;
	}
	var cpoint = new GLatLng(parseFloat(pitems[n]['lat']), parseFloat(pitems[n]['lng']));
	map.setCenter(cpoint,map.getZoom());
//	map.clearOverlays();
//	sicon.image = mapdataurl + "marker.png";	
//	var marker = new GMarker(cpoint, {icon: sicon} );
//	map.addOverlay(marker);
//	ToIMappointInfo(marker, pitems[n], n, 1);
	var msg = "<div class='map_info'>"+ pitems[n]["msg"] + "<hr>";
		msg += "<a href='#m' onclick='ToIpointDetail(" +n+ ")' class='map_link'>付近を詳しく見る</a>";
		msg += "<a href='#map' onclick='ToIMapposition(" +n+ ")' class='map_link'>"+ core["name"] + "との位置関係</a>";
		msg += "</div>";
	map.openInfoWindowHtml(cpoint, msg);
}

function ToIMMapposition(n){
	if(parseFloat(core['lat']) < parseFloat(data[n]['lat'])){
		var Np = parseFloat(data[n]['lat']);
		var Sp = parseFloat(core['lat']);
	}else{
		var Np = parseFloat(core['lat']);
		var Sp = parseFloat(data[n]['lat']);
	}
	if(parseFloat(core['lng']) < parseFloat(data[n]['lng'])){
		var Ep = parseFloat(data[n]['lng']);
		var Wp = parseFloat(core['lng']);
	}else{
		var Ep = parseFloat(core['lng']);
		var Wp = parseFloat(data[n]['lng']);
	}
	var SW = new GLatLng(Sp - 0.0045, Wp - 0.0045);
	var NE = new GLatLng(Np + 0.0045, Ep + 0.0045);
	var bound = new GLatLngBounds(SW, NE);
	map.setCenter(bound.getCenter(), map.getBoundsZoomLevel(bound));
	clearflg = true;
	map.clearOverlays();
	var cpoint = new GLatLng(parseFloat(data[n]['lat']), parseFloat(data[n]['lng']));
	sicon.image = mapdataurl + "marker.png";	
	sicon.printImage = mapdataurl + "marker.gif";	
	var marker = new GMarker(cpoint, {icon: sicon} );
	map.addOverlay(marker);
	data[n]['msg'] = "<div class='map_info_title'>"+ data[n]["name"] +"</div>";
	data[n]['id'] = n;
	var msg = "<div class='map_info'>"+ data[n]["msg"] + "<hr>";
	msg += "</div>";
	GEvent.addListener(marker, 'click', function(){
		marker.openInfoWindowHtml(msg);
	} );
	ToIMainmarker();
}

function ToIMapposition(n){
	if(parseFloat(core['lat']) < parseFloat(pitems[n]['lat'])){
		var Np = parseFloat(pitems[n]['lat']);
		var Sp = parseFloat(core['lat']);
	}else{
		var Np = parseFloat(core['lat']);
		var Sp = parseFloat(pitems[n]['lat']);
	}
	if(parseFloat(core['lng']) < parseFloat(pitems[n]['lng'])){
		var Ep = parseFloat(pitems[n]['lng']);
		var Wp = parseFloat(core['lng']);
	}else{
		var Ep = parseFloat(core['lng']);
		var Wp = parseFloat(pitems[n]['lng']);
	}
	var SW = new GLatLng(Sp - 0.0045, Wp - 0.0045);
	var NE = new GLatLng(Np + 0.0045, Ep + 0.0045);
	var bound = new GLatLngBounds(SW, NE);
	map.setCenter(bound.getCenter(), map.getBoundsZoomLevel(bound));
	clearflg = true;
	map.clearOverlays();
	var cpoint = new GLatLng(parseFloat(pitems[n]['lat']), parseFloat(pitems[n]['lng']));
	sicon.image = mapdataurl + "marker.png";	
	sicon.printImage = mapdataurl + "marker.gif";	
	var marker = new GMarker(cpoint, {icon: sicon} );
	map.addOverlay(marker);
	var msg = "<div class='map_info'>"+ pitems[n]["msg"] + "<hr>";
	msg += "</div>";
	GEvent.addListener(marker, 'click', function(){
		marker.openInfoWindowHtml(msg);
	} );
//	ToIMappointInfo(marker, pitems[n], n);
	ToIMainmarker();
}

//]]>