// JavaScript Document
var gmp;
var gmk = [];
var tip;
var gtyp = "";
var gzm = [
	[0.000664396036540893,0.0008851289749145508],
	[0.0013287930711385343,0.0017702579498291016],
	[0.0026575901345609054,0.003540515899658203],
	[0.005315195656962146,0.007081031799316406],
	[0.01063045750782976,0.014162063598632812],
	[0.02126117047584586,0.028324127197265625],
	[0.04252336259799705,0.05664825439453125],
	[0.0850508102241605,0.1132965087890625],
	[0.17011735355521296,0.226593017578125],
	[0.340299917796699,0.45318603515625],
	[0.6808693800212069,0.9063720703125],
	[1.3627723757788104,1.812744140625],
	[2.7296258420244968,3.62548828125],
	[5.475129218781547,7.2509765625],
	[11.007476936050292,14.501953125],
	[22.22608629387259,29.00390625],
	[44.844134896630734,58.0078125]
];

function opnWnd(sno,ino,alt){
	var inf = [];
	inf.push(sno);
	inf.push(ino);
	inf.push(alt);
	inf.push(obj.nam.innerHTML);
	inf.push(obj.tel.innerHTML);
	inf.push(obj.jso); // 改行つき住所
	inf.push(obj.opn.innerHTML);
	inf.push(obj.eki.innerHTML);
	inf.push(obj.tpx.innerHTML);

	goMap(encodeURIComponent(getGmpInf().join(",")+","+inf.join(",")));
}

function getGmpInf() {
	var dst =[];
	var axs = gmp.getCenter();
	dst.push(axs.y);
	dst.push(axs.x);
	dst.push(gmp.getZoom());
	dst.push(obj.kdo);
	dst.push(obj.ido);
	dst.push(gmp.getCurrentMapType().getName(true));
	return dst;
}

function goMap(msg) {
	var htp = "../map/prnt_info.html?msg="+msg;
	window.open(htp,"map","width=540,height=632,menubar=1,scrollbars=1,resizable=1,status=1");
}

function iniMap() {
	if(GBrowserIsCompatible()){
		if(gmp) gmp = null;
		gmp = new GMap2(obj.map);
	}
}

function iniSMap(sno,ino,kdo,ido,zom,nam) {
	if(GBrowserIsCompatible()){
		if(gmp){gtyp=gmp.getCurrentMapType();gmp=null;}
		gmp = new GMap2(obj.map);
		gmp.addControl(new GMapTypeControl());
		iniTip();
		gmp.setCenter(new GLatLng(kdo,ido),zom);
		if(!gtyp){
			gmp.setMapType(G_NORMAL_MAP);
		} else {
			gmp.setMapType(gtyp);
		}
		//gmp.addMapType(G_PHYSICAL_MAP);
		var imp = impIcn();
		gmp.addControl(new GLargeMapControl3D());
		//gmp.addControl(new GMapTypeControl(true));
		gmp.addControl(new GScaleControl());
		gmp.addOverlay(shpMkr(new GLatLng(kdo,ido),iniIcn(sno,ino,imp),nam));
	}
}

function iniAMap(tbl,kdo,ido,zom) {
	if(GBrowserIsCompatible()){
		if(gmp){gtyp=gmp.getCurrentMapType();gmp = null;}
		gmp = new GMap2(obj.map);
		gmp.addControl(new GMapTypeControl());
		iniTip();
		gmp.setCenter(new GLatLng(kdo,ido),zom);
		gmp.panBy(new GSize(80,80));
		if(!gtyp){
			gmp.setMapType(G_NORMAL_MAP);
		} else {
			gmp.setMapType(gtyp);
		}
		//gmp.addMapType(G_PHYSICAL_MAP);
		gmp.addControl(new GLargeMapControl3D());
		//gmp.addControl(new GMapTypeControl(true));
		gmp.addControl(new GScaleControl());
		
		gmk = [];
		var imp = impAIcn();
		for(var i=0;i<tbl.length;i++){
			var idx = tbl[i];
			var src = def[idx];
			var sno = src[0].toString();
			var ino = src[1].toString();
			if(sno.length<2) sno = "0"+sno;
			var mkk = src[4];
			var mki = src[5];
			var nam = "<span>"+getAlt(src[0],src[1])+"<br /></span>"+src[3];
			gmp.addOverlay(iniMkr(new GLatLng(mkk,mki),iniAIcn(sno,ino,imp),idx,nam));
		}
	}
}

function iniCMapPgn(axs,tbl,typ) {
	if(GBrowserIsCompatible()){
		if(gmp){gtyp=gmp.getCurrentMapType();gmp = null;}
		gmp = new GMap2(obj.map);
		gmp.addControl(new GMapTypeControl());
		iniTip();
		gmp.setCenter(new GLatLng(axs.total.kdo,axs.total.ido),axs.total.zom);
		gmp.panBy(new GSize(80,80));
		if(!gtyp){
			gmp.setMapType(G_NORMAL_MAP);
		} else {
			gmp.setMapType(gtyp);
		}
		//gmp.addMapType(G_PHYSICAL_MAP);
		gmp.addControl(new GLargeMapControl3D());
		//gmp.addControl(new GMapTypeControl(true));
		gmp.addControl(new GScaleControl());
		
		gmk = [];
		for(var p in axs){
			if(p=="total") continue;
			var mkk = axs[p].kdo;
			var mki = axs[p].ido;
			var cnt = axs[p].cnt;
			var nam = (typ=="shp")?p:p+"（"+cnt+"店舗）";
			var num = cnt;
			if(cnt<100){
				if(cnt<10){
					num="00"+cnt;
				} else {
					num="0"+cnt;
				}
			}
//			if(cnt>2){
//				var anc = [];
//				for(var i=0;i<tbl[p].length;i++){
//					var idx = tbl[p][i]
//					anc.push(new GLatLng(def[idx][4],def[idx][5]));
//				}
//				anc.push(anc[0]);
//				gmp.addOverlay(new GPolygon(anc, "#585AAF", 0.5, 0.5, "#7173B7", 0.1));
//			}
			gmp.addOverlay(iniCMkr(new GLatLng(mkk,mki),iniNIcn(num),p,nam,typ));
		}
	}
}

function iniCMap(axs,typ) {
	if(GBrowserIsCompatible()){
		if(gmp){gtyp=gmp.getCurrentMapType();gmp = null;}
		gmp = new GMap2(obj.map);
		gmp.addControl(new GMapTypeControl());
		iniTip();
		gmp.setCenter(new GLatLng(axs.total.kdo,axs.total.ido),axs.total.zom);
		gmp.panBy(new GSize(80,80));
		if(!gtyp){
			gmp.setMapType(G_NORMAL_MAP);
		} else {
			gmp.setMapType(gtyp);
		}
		//gmp.addMapType(G_PHYSICAL_MAP);
		gmp.addControl(new GLargeMapControl3D());
		//gmp.addControl(new GMapTypeControl(true));
		gmp.addControl(new GScaleControl());
		
		gmk = [];
		for(var p in axs){
			if(p=="total") continue;
			var mkk = axs[p].kdo;
			var mki = axs[p].ido;
			var cnt = axs[p].cnt;
			var nam = (typ=="shp")?p:p+"（"+cnt+"店舗）";
			var num = cnt;
			if(cnt<100){
				if(cnt<10){
					num="00"+cnt;
				} else {
					num="0"+cnt;
				}
			}
			gmp.addOverlay(iniCMkr(new GLatLng(mkk,mki),iniNIcn(num),p,nam,typ));
		}
	}
}

function iniIcn(sno,ino,imp) {
	var icn = new GIcon();
	icn.image      = pasImg+"icn"+sno+ino+".png";
	icn.printImage = pasImg+"icn"+sno+ino+".gif";
	icn.mozPrintImage  = pasImg+"icn"+sno+ino+".gif";
	icn.iconSize   = new GSize(33,68);
	icn.shadow     = pasImg+"icnsdw.png";
	icn.shadowSize = new GSize(46,68);
	icn.iconAnchor = new GPoint(17,68);	
	icn.infoWindowAnchor = new GPoint(17,0);
	icn.transparent = pasImg+"icnmsk.png";
	icn.imageMap   = imp;
	return icn;
}

function iniAIcn(sno,ino,imp) {
	var icn = new GIcon();
	icn.image      = pasImg+"icn"+sno+ino+"a.png";
	icn.printImage = pasImg+"icn"+sno+ino+"a.gif";
	icn.mozPrintImage  = pasImg+"icn"+sno+ino+"a.gif";
	icn.iconSize   = new GSize(27,53);
	icn.shadow     = pasImg+"icnsdwa.png";
	icn.shadowSize = new GSize(39,53);
	icn.iconAnchor = new GPoint(14,53);
	icn.infoWindowAnchor = new GPoint(14,0);
	icn.transparent = pasImg+"icnmska.png";
	icn.imageMap   = imp;
	return icn;
}

function iniNIcn(n) {
	var icn = new GIcon();
	icn.image      = pasImg+"num"+n+".png";
	icn.printImage = pasImg+"num"+n+".gif";
	icn.mozPrintImage  = pasImg+"num"+n+".gif";
	icn.iconSize   = new GSize(38,35);
	icn.shadow     = pasImg+"numbg.png";
	icn.shadowSize = new GSize(38,35);
	icn.iconAnchor = new GPoint(0,35);
	icn.infoWindowAnchor = new GPoint(19,35);
	return icn;
}

function shpMkr(pos,icn,nam) {
	var mkr = new GMarker(pos,{icon:icn});
	mkr.nam = nam;
	mkr.pos = pos;
	
	GEvent.addListener(mkr, "click", function() {
		tip.style.display = "none";
	});
	
  GEvent.addListener(mkr, "mouseover", function() {
   actTip(mkr);
  });

  GEvent.addListener(mkr, "mouseout", function() {
   tip.style.display = "none";
 	});
	
	gmk.push(mkr);
	return mkr;
}

function iniMkr(pos,icn,id,nam) {
	var mkr = new GMarker(pos,{icon:icn});
	mkr.id = id;
	mkr.nam = nam;
	mkr.pos = pos;
	
	GEvent.addListener(mkr, "click", function() {
		tip.style.display = "none";
		onDwnShp(id);
	});
	
  GEvent.addListener(mkr, "mouseover", function() {
   actTip(mkr);
  });

  GEvent.addListener(mkr, "mouseout", function() {
   tip.style.display = "none";
 	});
	
	gmk.push(mkr);
	return mkr;
}

function iniCMkr(pos,icn,id,nam,typ) {
	var mkr = new GMarker(pos,{icon:icn});
	mkr.id = id;
	mkr.nam = nam;
	mkr.pos = pos;
	
	GEvent.addListener(mkr, "click", function() {
		tip.style.display = "none";
		switch(typ){
			case("blk"):onDwnBlk(id);break;
			case("cty"):onDwnCty(id);break;
			case("shp"):onDwnShp(id);break;
		}
	});
	
  GEvent.addListener(mkr, "mouseover", function() {
   actTip(mkr);
  });

  GEvent.addListener(mkr, "mouseout", function() {
   tip.style.display = "none";
 	});
	
	gmk.push(mkr);
	return mkr;
}

function iniTip() {
	if(!tip){
		tip = document.createElement("div");
		tip.setAttribute("id","tip");
	}
	gmp.getPane(G_MAP_MARKER_PANE).appendChild(tip);
	tip.style.display = "none";
}

function actTip(mkr) { // Display tooltips
	tip.innerHTML = mkr.nam;
	tip.style.display = "block";

	// Tooltip transparency specially for IE
	if(typeof(tip.style.filter) == "string") tip.style.filter = "alpha(opacity:85)";

	var zom = gmp.getZoom();
	var typ = gmp.getCurrentMapType().getProjection();
	var pnt = typ.fromLatLngToPixel(gmp.fromDivPixelToLatLng(new GPoint(0,0),true),zom);
	var ofs = typ.fromLatLngToPixel(mkr.getLatLng(),zom);
	var axs = mkr.getIcon().iconAnchor;
	var w   = Math.floor(0.5*mkr.getIcon().iconSize.width)-Math.floor(0.5*tip.clientWidth);
	var h   = tip.clientHeight+4;
	//var h   = 10;
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(ofs.x-pnt.x-axs.x+w, ofs.y-pnt.y-axs.y-h)); 
	pos.apply(tip);
}


function impIcn() {
	var dst = [];
	var imp = [[4,1],[28,1],[31,5],[31,27],[28,31],[19,31],[16,67],[13,31],[4,31],[1,27],[1,4],[4,1]]
	for(var i=0;i<imp.length;i++){
		dst.push(imp[i][0]);
		dst.push(imp[i][1]);
	}
	return dst;
}

function impAIcn() {
	var dst = [];
	var imp = [[3,1],[23,1],[23,3],[25,23],[23,25],[16,25],[13,52],[10,25],[3,25],[1,23],[1,3],[3,1]]
	for(var i=0;i<imp.length;i++){
		dst.push(imp[i][0]);
		dst.push(imp[i][1]);
	}
	return dst;
}


function iniPgn(src) {
	var pgn = new GPolygon(src, "#ff0000", 5, 0.5, "#0000ff", 0.1);
	return mkr;
}

function getZom(sx,sy,ex,ey) {
	var lim = 16; // リミッター：店舗表示が16なので
	var dx  = ex-sx;
	var dy  = ey-sy;
	for(var i=0;i<gzm.length;i++){
		if(dx<gzm[i][0]&&dy<gzm[i][1]){
			var z = 19-i;
			z = (z>lim)?lim:z;
			return z;
		}
	}
	return (gmp)?gmp.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(sx,sy),new GLatLng(ex,ey))):8;
}

function getOfs(sx,sy,ex,ey) {
	var dst = [];
	var pgn = new GPolygon(src, "#ff0000", 5, 0.5, "#0000ff", 0.1);
	return mkr;
}


