// ÁÂÇ¥½Ã½ºÅÛ Á¤ÀÇ
var TM128_naver = new CS(csList.TM128_katech_3param);
var WGS84_google = new CS(csList.GOOGLE_WGS84);

var gmapObj=""; // google map global "map" variable
var nmapObj=""; // naver map global "map" variable

var mapMode = 1; // 1: google map, 2: naver map, 3:mix
var marker;
var gmarker;
var gHtml="";

var zone_zoom = 8; // ÁÜ·¹º§¿¡ µû¸¥ Ãâ·Â
var gCross,gCross_, gicon, gicon_; //±¸±Û  ¾ÆÀÌÄÜ °´Ã¼
//var icon0, icon1, icon2, icon3, icon4, icon5, icon6, icon7, icon8, icon9, icon10, icon11, icon_0, icon_1, icon_2, icon_3, icon_4, icon_5, icon_6, icon_7, icon_8, icon_9, icon_10, icon_11;
var nCross, nicon;//, nicon1; //³×ÀÌ¹ö¾ÆÀÌÄÜ °´Ã¼

function load()
{

	if (GBrowserIsCompatible())
	{
		// ±¸±Û¸Ê
		gmapObj = new GMap2(document.getElementById("gmap"));
		gmapObj.setCenter(new GLatLng(lat, lng), gzoom(zoom), G_SATELLITE_MAP);
		// ====== Restricting the range of Zoom Levels =====
		// Get the list of map types
		var mt = gmapObj.getMapTypes();

		// Overwrite the getMinimumResolution() and getMaximumResolution() methods
		for (var i=0; i<mt.length; i++)
		{
			mt[i].getMinimumResolution = function() {return 7;}
			mt[i].getMaximumResolution = function() {return 18;}
		}
		gmapObj.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT));

		gmapObj.enableContinuousZoom();
		gmapObj.enableScrollWheelZoom();
		gmapObj.disableDoubleClickZoom();

		//¹°°ÇÁ¾·ù ¾ÆÀÌÄÜ Á¤ÀÇ
		gicon2 = new GIcon();gicon2.image = "images/icon/icon2.gif";gicon2.iconSize = new GSize(15,15);gicon2.iconAnchor = new GPoint(7,7); // ¿ø·ë
		gicon3 = new GIcon();gicon3.image = "images/icon/icon3.gif";gicon3.iconSize = new GSize(15,15);gicon3.iconAnchor = new GPoint(7,7); // Åõ·ë
		gicon4 = new GIcon();gicon4.image = "images/icon/icon4.gif";gicon4.iconSize = new GSize(15,15);gicon4.iconAnchor = new GPoint(7,7); // ¿ÀÇÇ½ºÅÚ
		gicon5 = new GIcon();gicon5.image = "images/icon/icon5.gif";gicon5.iconSize = new GSize(15,15);gicon5.iconAnchor = new GPoint(7,7); // »ç¹«½Ç
		gicon6 = new GIcon();gicon6.image = "images/icon/icon6.gif";gicon6.iconSize = new GSize(15,15);gicon6.iconAnchor = new GPoint(7,7); // °í½Ã¿ø

		// ½ÊÀÚ ¾ÆÀÌÄÜ
		//gicon = new GIcon();gicon.image = "images/cross.png";gicon.iconSize = new GSize(29,29);gicon.iconAnchor = new GPoint(14,14);gicon.infoWindowAnchor = new GPoint(15, 15);
		gicon = new GIcon();gicon.image = "images/cross_new.png";gicon.iconSize = new GSize(23,30);gicon.iconAnchor = new GPoint(11,30);gicon.infoWindowAnchor = new GPoint(11, 30);
		gicon_= new GIcon();gicon_.image = "images/cross_.png";gicon_.iconSize = new GSize(1,1);gicon_.iconAnchor = new GPoint(0,0);gicon_.infoWindowAnchor = new GPoint(1, 1);

		//sight icon
		icon0 = new GIcon();icon0.image = "images/icon/eye0.png";icon0.iconSize = new GSize(30,30);icon0.iconAnchor = new GPoint(15,24);icon0.infoWindowAnchor = new GPoint(15, 5);
		icon1 = new GIcon();icon1.image = "images/icon/eye1.png";icon1.iconSize = new GSize(30,30);icon1.iconAnchor = new GPoint(10,24);icon1.infoWindowAnchor = new GPoint(15, 5);
		icon2 = new GIcon();icon2.image = "images/icon/eye2.png";icon2.iconSize = new GSize(30,30);icon2.iconAnchor = new GPoint( 7,20);icon2.infoWindowAnchor = new GPoint(15, 5);
		icon3 = new GIcon();icon3.image = "images/icon/eye3.png";icon3.iconSize = new GSize(30,30);icon3.iconAnchor = new GPoint( 8,18);icon3.infoWindowAnchor = new GPoint(15, 5);
		icon4 = new GIcon();icon4.image = "images/icon/eye4.png";icon4.iconSize = new GSize(30,30);icon4.iconAnchor = new GPoint( 9,15);icon4.infoWindowAnchor = new GPoint(15, 5);
		icon5 = new GIcon();icon5.image = "images/icon/eye5.png";icon5.iconSize = new GSize(30,30);icon5.iconAnchor = new GPoint(10,11);icon5.infoWindowAnchor = new GPoint(15, 5);
		icon6 = new GIcon();icon6.image = "images/icon/eye6.png";icon6.iconSize = new GSize(30,30);icon6.iconAnchor = new GPoint(12, 10);icon6.infoWindowAnchor = new GPoint(15, 5);
		icon7 = new GIcon();icon7.image = "images/icon/eye7.png";icon7.iconSize = new GSize(30,30);icon7.iconAnchor = new GPoint(18, 12);icon7.infoWindowAnchor = new GPoint(15, 5);
		icon8 = new GIcon();icon8.image = "images/icon/eye8.png";icon8.iconSize = new GSize(30,30);icon8.iconAnchor = new GPoint(19,14);icon8.infoWindowAnchor = new GPoint(15, 5);
		icon9 = new GIcon();icon9.image = "images/icon/eye9.png";icon9.iconSize = new GSize(30,30);icon9.iconAnchor = new GPoint(21,17);icon9.infoWindowAnchor = new GPoint(15, 5);
		icon10= new GIcon();icon10.image = "images/icon/eye10.png";icon10.iconSize = new GSize(30,30);icon10.iconAnchor = new GPoint(20,19);icon10.infoWindowAnchor = new GPoint(15, 5);
		icon11= new GIcon();icon11.image = "images/icon/eye11.png";icon11.iconSize = new GSize(30,30);icon11.iconAnchor = new GPoint(17,23);icon11.infoWindowAnchor = new GPoint(15, 5);

		// add Marker
		function createMarker_simple(point)
		{
			var marker = new GMarker(point, gicon_);
			html = "<img src=\"images/cross2.png\" width=\"29\" height=\"29\" border=\"0\"> <font size=\"3\"><strong>Ç¥½Ã°¡ µÈ ÇöÀçÀÇ À§Ä¡¿¡<br />¿ø·ëµî·ÏÀ» ÇÏ½Ã°Ú½À´Ï±î?</strong></font><p align='right'><a id=\"registration\" href=\"#\" onClick=\"detail.href='reg_step1.php';detail.open();gmarker.closeInfoWindow();\"><font size=\"4\" color=\"#5E54C5\"><strong>µî·ÏÇÏ±â</strong></font></a></p>";
			GEvent.addListener(marker, "click", function() {  marker.openInfoWindowHtml(html); });
			gmarker = marker;
			gHtml = html;
			return marker;
		}
		// Áß¾Ó Ç¥½Ã ¾ÆÀÌÄÜ
		gCross  = new GMarker(gmapObj.getCenter(), gicon, {clickable:false});
		gCross_ = createMarker_simple(gmapObj.getCenter());
		gmapObj.addOverlay(gCross);
		gmapObj.addOverlay(gCross_);

		GEvent.addListener(gmapObj, "moveend", function()
		{
			//var bounds = gmapObj.getBounds();
			var center = gmapObj.getCenter();

			//gCross.setPoint(center);
			//gCross_.setPoint(center);
		});
		GEvent.addListener(gmapObj, "click", function(overlay,point)
		{
			gmapObj.removeOverlay(gCross);
			gmapObj.removeOverlay(gCross_);

			if(point)
			{
				gmapObj.panTo(point);
				gCross  = new GMarker(point, gicon, {clickable:false});
				gCross_ = createMarker_simple(point);
				gmapObj.addOverlay(gCross);
				gmapObj.addOverlay(gCross_);
			}
		});
		//GEvent.addListener(gmapObj, "zoomend", function(oldLevel,newLevel){});

// ³×ÀÌ¹ö¸Ê //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//ÁÂÇ¥º¯È¯ gmap->nmap
		//PT(longitude, latitude);
		var p = new PT(lng, lat);
		cs_transform(WGS84_google,TM128_naver, p);
		var nlat = parseInt(p.x);
		var nlng = parseInt(p.y);

		nmapObj = new NMap(document.getElementById("nmap"));
		nmapObj.setCenterAndZoom(new NPoint(nlat,nlng),zoom);
		nmapObj.addControl(new NZoomControl());

		//¹°°ÇÁ¾·ù ¾ÆÀÌÄÜ Á¤ÀÇ
		nicon2 = new NIcon("images/icon/icon2.gif", new NSize(15,15)); // ¿ø·ë
		nicon3 = new NIcon("images/icon/icon3.gif", new NSize(15,15)); // Åõ·ë
		nicon4 = new NIcon("images/icon/icon4.gif", new NSize(15,15)); // ¿ÀÇÇ½ºÅÚ
		nicon5 = new NIcon("images/icon/icon5.gif", new NSize(15,15)); // »ç¹«½Ç
		nicon6 = new NIcon("images/icon/icon6.gif", new NSize(15,15)); // °í½Ã¿ø

		//sight icon
		icon_0 = new NIcon( "images/icon/eye0.gif", new NSize(30,30));
		icon_1 = new NIcon( "images/icon/eye1.gif", new NSize(30,30));
		icon_2 = new NIcon( "images/icon/eye2.gif", new NSize(30,30));
		icon_3 = new NIcon( "images/icon/eye3.gif", new NSize(30,30));
		icon_4 = new NIcon( "images/icon/eye4.gif", new NSize(30,30));
		icon_5 = new NIcon( "images/icon/eye5.gif", new NSize(30,30));
		icon_6 = new NIcon( "images/icon/eye6.gif", new NSize(30,30));
		icon_7 = new NIcon( "images/icon/eye7.gif", new NSize(30,30));
		icon_8 = new NIcon( "images/icon/eye8.gif", new NSize(30,30));
		icon_9 = new NIcon( "images/icon/eye9.gif", new NSize(30,30));
		icon_10= new NIcon("images/icon/eye10.gif", new NSize(30,30));
		icon_11= new NIcon("images/icon/eye11.gif", new NSize(30,30));

		nicon = new NIcon("images/pin2.gif", new NSize(30,33), new NSize(5, 30));
		nCross = new NMark(nmapObj.getCenter(), nicon);
		nmapObj.addOverlay(nCross);

		NEvent.addListener(nmapObj, "move", function(nsize)
		{
			var center = nmapObj.getCenter();
			nCross.setPoint(new NPoint(center.getX(), center.getY()));
/*
			var y = new PT(center.getX(), center.getY());//nmap -> gmap
			cs_transform(TM128_naver, WGS84_google, y);
*/
		});

		NEvent.addListener(nmapObj, "redraw", function()
		{
			var center = nmapObj.getCenter();
			nCross.setPoint(new NPoint(center.getX(), center.getY()));
		});

	}

}

function reg_click()
{
	gmarker.openInfoWindowHtml(gHtml);
}

function createMarker(point, icon, idx, kind, img, subject, addr, link)
{
	if(mapMode == 1)
	{
		if(kind) var marker = new GMarker(point, icon);
		else     var marker = new GMarker(point, eval("icon"+icon));

		GEvent.addListener(marker, "click", function()
		{
			if(kind)
			{
				detail.href = 'detail.php?idx=' + idx;
				detail.open();
			}
			else
			{
				var oImg = new Image();
				oImg.src = "/imgdata/thumb_" + img;

				oImg.onload = function()
				{
					var html = "<div style='width:100px;height: 10px;font-size:1px;'></div><div style='width: " + oImg.width + "px'>" + subject + " - " + addr + "</div><img src='" + oImg.src + "' width='" + oImg.width +"' height=' " + oImg.height + "' border=0 onClick=window.open('/imgdata/"+ img +"') style='cursor: pointer; margin-bottom:10px'><div style='width: " + oImg.width + "px'>" + link + "</div>";

					marker.openInfoWindowHtml(html);
				}
			}
		});
		return marker;
	}
	else if(mapMode == 2)
	{

		if(kind) var marker = new NMark(point, icon);
		else     var marker = new NMark(point, eval("icon_"+icon));

		NEvent.addListener(marker, "click", function()
		{
			if(kind)
			{
				detail.href = 'detail.php?idx=' + idx;
				detail.open();
			}
			else
			{
				alert("À§¼ºÁöµµ »óÅÂ¿¡¼­¸¸ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.");
			}
		});
		return marker;
	}
}

function gzoom(str)
{
	return 18 - str;
}

function goto_pos(lat, lng, zoom, g_mode)
{//g_mode 1:quick 2:smooth

	if(mapMode == 1)
	{
		if(!g_mode) g_mode = 1;

		var center = gmapObj.getCenter();

		if(lat != center.lat() || lng != center.lng())
		{
			if(zoom) gmapObj.setZoom(gzoom(zoom));

			var point = new GLatLng(lat, lng);

			if(g_mode == 1)
				gmapObj.setCenter(point);
			else if(g_mode == 2)
			{
				gmapObj.panTo(point);
			}
		}
	}
	else if(mapMode == 2)
	{
		var p = new PT(lng, lat);//target ÁÂÇ¥ gmap -> nmap
		cs_transform(WGS84_google,TM128_naver, p);
		var lat2 = parseInt(p.x);
		var lng2 = parseInt(p.y);
		var point = new NPoint(lat2, lng2);

		if(!g_mode) g_mode = 1;

		if(zoom) nmapObj.setZoom(zoom);
		else     zoom = nmapObj.getZoom();

		if(g_mode == 1)
		{
			nmapObj.setCenter(new NPoint(lat2, lng2));
		}
		else if(g_mode == 2)
		{
			var center = nmapObj.getCenter();
			var nx = (lat2 - center.getX())/(1 << (zoom - 1));
			var ny = (lng2 - center.getY())/(1 << (zoom - 1));

			nmapObj.pan(nx, ny);
		}

	}
}
//search_go(lat, lng, zoom, addr1, addr2, addr3, addr4)
function search_go(lat, lng, zoom, addr1, addr2, addr3, addr4)
{
	document.getElementById("top_search").style.display = "none";

	// top navi
	var str_mini = sido_mini(addr1);
	document.getElementById("top_navi1").innerHTML = str_mini;
	document.getElementById("top_navi2").innerHTML = addr2;
	document.getElementById("top_navi3").innerHTML = addr3;

	//navi
	document.getElementById("navi1").innerHTML = (addr1 == "Á¦ÁÖÆ¯º°ÀÚÄ¡µµ") ? "Á¦ÁÖµµ":addr1;
	document.getElementById("navi2").innerHTML = addr2;
	navi3_loadData(addr1, addr2, addr3);

	goto_pos(lat, lng, zoom, "");
}

function changeMap()
{
	var gObj = document.getElementById("gmap").style;
	var nObj = document.getElementById("nmap").style;

	if(gObj.visibility == "" || gObj.visibility == "visible")
	{// gmap -> nmap
		gObj.visibility = "hidden";
		nObj.visibility = "visible";
		mapMode = 2;

		var center = gmapObj.getCenter();
		var zoom = gzoom(gmapObj.getZoom()); if(zoom == 0) zoom=1;

		goto_pos(center.lat(), center.lng(), zoom, 1);
		sm(kind);

	}
	else if(nObj.visibility == "" || nObj.visibility == "visible")
	{// nmap -> gmap
		gObj.visibility = "visible";
		nObj.visibility = "hidden";
		mapMode = 1;

		var center = nmapObj.getCenter();
		var zoom = nmapObj.getZoom();

		var p = new PT(center.getX(), center.getY());//naver -> google
		cs_transform(TM128_naver, WGS84_google, p)
		var latitude = p.y;
		var longitude = p.x;

		goto_pos(latitude, longitude, zoom, 1);
		sm(kind);
	}
}

function get_data(kind, addr1, addr2, addr3)
{
	if(addr1 != "")
	{
		var xmlhttp = false;

		/* IE or Å¸»ç ºê¶ó¿ìÁ® */
		if(window.XMLHttpRequest)	xmlhttp = new XMLHttpRequest();
		else						xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

		xmlhttp.open("POST","load_data.php", true);

		xmlhttp.onreadystatechange = function()
		{
			if(xmlhttp.readyState == 4)
			{//COMPLETE
				if(xmlhttp.status == 200)//200 = Á¤»óÃ³¸®
				{
					var result = unescape(xmlhttp.responseText);

					if(result == "") return ;

					var rs = eval("[" + result + "]");

					for(i=0; i<rs.length; i++)
					{
						var data = rs[i];

						if(mapMode == 1)
						{
							switch(data.kind)
							{
								case 0: var marker = createMarker(new GLatLng(data.lat, data.lng), data.sight, data.idx, data.kind, data.img, data.subject, data.addr, data.link);gmapObj.addOverlay(marker); break;
								//case 1: var marker = createMarker(new GLatLng(data.lat, data.lng), gicon1, data.idx, data.kind, "", "", "", "");gmapObj.addOverlay(marker); break;
								case 2: var marker = createMarker(new GLatLng(data.lat, data.lng), gicon2, data.idx, data.kind, "", "", "", "");gmapObj.addOverlay(marker); break;
								case 3: var marker = createMarker(new GLatLng(data.lat, data.lng), gicon3, data.idx, data.kind, "", "", "", "");gmapObj.addOverlay(marker); break;
								case 4: var marker = createMarker(new GLatLng(data.lat, data.lng), gicon4, data.idx, data.kind, "", "", "", "");gmapObj.addOverlay(marker); break;
								case 5: var marker = createMarker(new GLatLng(data.lat, data.lng), gicon5, data.idx, data.kind, "", "", "", "");gmapObj.addOverlay(marker); break; // ¾ÆÀÌÄÜ ¼öÁ¤ÇÒ°Í!
								case 6: var marker = createMarker(new GLatLng(data.lat, data.lng), gicon6, data.idx, data.kind, "", "", "", "");gmapObj.addOverlay(marker); break;
							}
						}
						else if(mapMode == 2)
						{
							// gmap -> nmap
							var p = new PT(data.lng, data.lat);
							cs_transform(WGS84_google, TM128_naver, p);
							var nlat = parseInt(p.x);
							var nlng = parseInt(p.y);

							switch(data.kind)
							{
								/*case 0: var marker = createMarker(new NPoint(nlat, nlng), data.sight, data.idx, data.kind, data.img, data.subject, data.addr, data.link);nmapObj.addOverlay(marker); break;*/
								case 0: var marker = createMarker(new NPoint(nlat, nlng), data.sight, data.idx, data.kind, data.img, data.subject, data.addr, data.link);nmapObj.addOverlay(marker); break;
								//case 1: var marker = createMarker(new GLatLng(nlat, nlng), gicon1, data.idx, data.kind, "", "", "", "");gmapObj.addOverlay(marker); break;
								case 2: var marker = createMarker(new NPoint(nlat, nlng), nicon2, data.idx, data.kind, "", "", "", "");nmapObj.addOverlay(marker); break;
								case 3: var marker = createMarker(new NPoint(nlat, nlng), nicon3, data.idx, data.kind, "", "", "", "");nmapObj.addOverlay(marker); break;
								case 4: var marker = createMarker(new NPoint(nlat, nlng), nicon4, data.idx, data.kind, "", "", "", "");nmapObj.addOverlay(marker); break;
								case 5: var marker = createMarker(new NPoint(nlat, nlng), nicon5, data.idx, data.kind, "", "", "", "");nmapObj.addOverlay(marker); break; // ¾ÆÀÌÄÜ ¼öÁ¤ÇÒ°Í!
								case 6: var marker = createMarker(new NPoint(nlat, nlng), nicon6, data.idx, data.kind, "", "", "", "");nmapObj.addOverlay(marker); break;
							}
						}
					}
				}
			}
		}
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//¿äÃ»Çì´õÀÇ Á¤ÀÇ
		//xmlhttp.send("x1=" + x1 + "&y1=" + y1 + "&x2=" + x2 + "&y2=" + y2 + "&k=" + kind + "&z=" + gzoom(gmapObj.getZoom()));
		xmlhttp.send("addr1=" + addr1 + "&addr2=" + addr2 + "&addr3=" + addr3 + "&k=" + kind);
	}
}

function get_areadata()
{
	var strObj = document.getElementById("search_q");
	if(strObj.value == "")
	{
		alert("ÇàÁ¤¸íÀ» ÀÔ·ÂÇÏ¼¼¿ä");
		strObj.value = "";
		strObj.focus();
		return false;
	}

	var xmlhttp = false;

	/* IE or Å¸»ç ºê¶ó¿ìÁ® */
	if(window.XMLHttpRequest)	xmlhttp = new XMLHttpRequest();
	else						xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

	xmlhttp.open("POST","load_data_area2.php", true);

	xmlhttp.onreadystatechange = function()
	{
		if(xmlhttp.readyState == 4)
		{//COMPLETE
			if(xmlhttp.status == 200)//200 = Á¤»óÃ³¸®
			{
				var result = unescape(xmlhttp.responseText);

				if(result == "") return ;

				var rs = eval("[" + result + "]");

				if(document.getElementById("top_search"))
				{
					document.getElementById("top_search").style.display = "none";
				}


				var str = ""; // °Ë»ö°á°ú°ª º¯¼ö
				for(i=0; i<rs.length; i++)
				{
					var data = rs[i];
					//search_go(lat, lng, addr1, addr2, addr3, addr4)
					str += "<a href=\"javascript:search_go(" + data.lat + ", " + data.lng + ", 4, '" + data.addr1 + "', '" + data.addr2 + "', '" + data.addr3 + "', '" + data.addr4 + "')\">" + data.addr1 + " " + data.addr2 + " " + data.addr3 + " " + data.addr4 + "</a><br />";
				}
				str += "<div style='text-align:right'><span onClick=\"document.getElementById('top_search').style.display='none'\" style='cursor:pointer'>[ ´Ý±â ]</span></div>";

				if(document.getElementById("top_search"))
				{
					document.getElementById("top_search").innerHTML = str;
					document.getElementById("top_search").style.display = "block";
				}
				return false;
			}
		}
	}
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//¿äÃ»Çì´õÀÇ Á¤ÀÇ
	xmlhttp.send("q=" + strObj.value);

}

function sm(k)
{
	kind = k;

	if(mapMode == 1)
	{//±¸±Û¸Ê
		gmapObj.clearOverlays();

		get_data(k, document.search.addr1.value, document.search.addr2.value, document.search.addr3.value);
		search_result();
		gmapObj.addOverlay(gCross);
	}
	else
	{
		nmapObj.clearOverlays(marker);
		get_data(k, document.search.addr1.value, document.search.addr2.value, document.search.addr3.value);
		search_result();

		nicon = new NIcon("images/pin2.gif", new NSize(30,33), new NSize(5, 30));
		nCross = new NMark(nmapObj.getCenter(), nicon);
		nmapObj.addOverlay(nCross);

	}
}