google.load("search", "1.0",{"language":lang});
google.load("earth", "1");
google.load("visualization", "1", {packages:["areachart"]});

var page_loaded = false;

var GE_HEIGHT = 540;  // Google Earth Canvas Height
var GSV_HEIGHT = 510; // Google Street View Canvas Height

var USE_STATIC_MAP_FOR_PREVIEW = true;
var STATIC_MAP_WIDTH_ROADMAP = 140;
var STATIC_MAP_WIDTH_SATELLITE = 341;
var STATIC_MAP_HEIGHT = 100;
var STATIC_MAP_AUTO_LOAD = false;
var STATIC_MAP_AUTO_LOAD_INTERVAL = 1000;

var static_roadmap_zoom = 12;
var static_hybrid_zoom = 16;

var map = null;
var ge = null;
var ge_failed = false;
var gsv = null;
var mgr = null;
var cluster = null;
var bounds = null;
var map_lat,map_lng,map_zoom,center_latlng,center_zoom;
var markers = [];
var overlay_array = [];
var overlay_json = null;

var icon_tinyred = null;
var icon_tinygreen = null;

var distance_control = null;
var area_control = null;
var direction_control = null;
var weather_control = null;
var elevation_control = null;
var map_info_control = null;

var array_elevation_meter = [];
var array_elevation_feet = [];
var elevation_chart = null;

var cmd_infowin_zoom = ''
	//+'<a href="javascript:void(0)" onclick="overlay_previous()" class="blue u">'+array_lang['272']+'</a> &nbsp;'
	//+'<a href="javascript:void(0)" onclick="overlay_next()" class="blue u">'+array_lang['270']+'</a> &nbsp;|&nbsp; '
	+'<a href="javascript:void(0)" onclick="map.zoomIn()" class="blue u">'+array_lang['438']+'</a> &nbsp;'
	+'<a href="javascript:void(0)" onclick="map.zoomOut()" class="blue u">'+array_lang['439']+'</a>'

function on_load() {
	$('#map_url').click(function() {
		var img = document.getElementById('map_url_more_icon');
		img.src = (img.src.indexOf('plus.') > -1) ? '/img/icon/minus.gif' : '/img/icon/plus.gif';
		$('#map_url_more').toggle();
	});
	//$('#rater').rater('../com/rating.php',{style: 'basic', maxvalue:5, curvalue:rating_average, data_id:map_id, voter: rating_counter});

	google.setOnLoadCallback(GLoad);
}
function GLoad() {
	if(is_ie) {
		var temp = new google.search.SearchControl(); // To prevent Google Earth Plugin Key Matching Error
	}
	map = new GMap2(document.getElementById('map_canvas'),{googleBarOptions:{style:"new"}});

	map_lat  = document.getElementById('map_lat').value;
	map_lng  = document.getElementById('map_lng').value;
	map_zoom = parseInt(document.getElementById('map_zoom').value,10);
	if(!map_zoom) map_zoom = 0;

	if(map_zoom == 0) {
		bounds = new GLatLngBounds();
		center_latlng = new GLatLng(20,0);
		center_zoom = 2;
		map.setCenter(center_latlng,center_zoom);
	}
	else {
		center_latlng = glatlng(map_lat,map_lng);
		center_zoom = map_zoom;
		map.setCenter(center_latlng,center_zoom);
	}
	var maptype = document.getElementById('maptype').value;
	if(maptype == 'satellite') map.setMapType(G_SATELLITE_MAP);
	else if(maptype == 'hybrid') map.setMapType(G_HYBRID_MAP);
	else if(maptype == 'physical') map.setMapType(G_PHYSICAL_MAP);

	//map.addControl(new GMapTypeControl());
	//else map.addControl(new GLargeMapControl());

	//map.addMapType(G_SATELLITE_3D_MAP);
	map.addMapType(G_PHYSICAL_MAP);
	map.addControl(new GMenuMapTypeControl());
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl(), new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(307,6)));

	map.addControl(new ExtMapTypeControl({posRight:535,showTraffic:true,showTrafficKey:true,showMore:true}));

	distance_control = new DistanceControl({x:473});
	map.addControl(distance_control);

	area_control = new AreaControl({x:411});
	map.addControl(area_control);

	direction_control = new DirectionControl({x:349,canvas_id:'gdir_canvas',link_to_google:true});
	map.addControl(direction_control);

	streetview_control = new StreetViewControl({x:272});
	map.addControl(streetview_control);

	weather_control = new WeatherControl({x:210});
	map.addControl(weather_control);

	elevation_control = new ElevationControl({x:148});
	map.addControl(elevation_control);

	map.addControl(new HomeButtonControl({x:86,y:7}));

	/*
	var customUI = map.getDefaultUI();
	map.setUI(customUI);
	map.addControl(new HomeButtonControl({x:265,y:7}));
	map.addControl(new DirectionControl({x:325,canvas_id:'gdir_canvas'}));
	map.addControl(new ExtMapTypeControl({posRight:385,showTraffic:true,showTrafficKey:true,showMore:true}));
	*/
	//map.addControl(new OverlaySelectControl({x:5,y:32}));
	map.addControl(new NavigationControl());

	map_info_control = new MapInfoControl();
	map.addControl(map_info_control);

	map.enableGoogleBar();
	map.enableDoubleClickZoom();

	GEvent.addListener(map, 'mousemove', function(latlng) {
		map_mousemove(latlng);
	});

	set_base_icon();
	load_overlay();
}
function map_mousemove(latlng) {
	map_info_control.html(latlng.toUrlValue());
}
function map_tab_click(tab) {
	if(!page_loaded) return;
	tab = tab ? tab : 'list';
	document.getElementById('map_tab_list').className = '';
	document.getElementById('map_tab_ge').className = '';
	//document.getElementById('map_tab_gsv').className = '';
	document.getElementById('map_tab_elevation').className = '';
	//document.getElementById('map_tab_comment').className = '';
	document.getElementById('map_tab_'+tab).className = 'blue';

	var msg = '<img src="/img/icon/bulb.gif" class="iconb" alt="" /> ';

	if(tab == 'ge') {
		hide_list();
		//hide_gsv();
		hide_elevation();
		//hide_comment();
		show_ge();
		msg += array_lang['797']; //'위 지도를 이동, 확대, 축소하면 아래 구글 어스와 동시에 볼 수 있습니다.';
	}
	else if(tab == 'gsv') {
		hide_list();
		hide_ge();
		hide_elevation();
		//hide_comment();
		//show_gsv();
		msg = '';
	}
	else if(tab == 'elevation') {
		hide_list();
		hide_ge();
		//hide_gsv();
		//hide_comment();
		show_elevation();
		msg = '';
	}
	else if(tab == 'comment') {
		hide_list();
		hide_ge();
		//hide_gsv();
		hide_elevation();
		show_comment();
		msg = '';
	}
	else {
		hide_ge();
		//hide_gsv();
		hide_elevation();
		//hide_comment();
		show_list();
		msg = '';
	}
	document.getElementById('map_tab_msg').innerHTML = msg;
}
function show_list() {
	document.getElementById('data_container').style.display = 'block';
}
function hide_list() {
	document.getElementById('data_container').style.display = 'none';
}
function show_comment() {
	var el = document.getElementById('comment_container');
	if(el) {
		el.style.display = 'block';
		$('#comment_form1').empty();
		$('#comment_list1').empty();
		var map_comment = new Comment({form_container_id:'comment_form1',list_container_id:'comment_list1',data_id:map_id,realtime:false});
		map_comment.load();
	}
}
function hide_comment() {
	var el = document.getElementById('comment_container');
	if(el) el.style.display = 'none';
}
function show_elevation() {
	var div = document.getElementById('elevation_canvas');
	div.style.display = 'block';
	if(elevation_chart == null) {
		var data = new google.visualization.DataTable();
		data.addColumn('string', 'Title');
		data.addColumn('number', 'Meter');
		var len = array_elevation_meter.length;
		data.addRows(len);
		for(var i=0; i<len; i++) {
			data.setValue(i, 0, array_elevation_meter[i].title);
			data.setValue(i, 1, parseInt(array_elevation_meter[i].elevation,10));
		}
		elevation_chart = new google.visualization.AreaChart(div);
		elevation_chart.draw(data, {width:974, height:400, legend:'none'}); //, axisFontSize:13});
	}
}
function hide_elevation() {
	document.getElementById('elevation_canvas').style.display = 'none';
}
var tour_kml = null;
function show_ge() {
	var c = document.getElementById('ge_canvas');
	c.style.visibility = 'visible';
	c.style.height = GE_HEIGHT+'px';
	if(ge) {
		ge.getWindow().setVisibility(true);
		ge_rotator_stop();
		//ge_fly({latlng:map.getCenter(),heading:0,tilt:0,zoom:map.getZoom()});
		ge_sync();
		document.getElementById('cmd_ge_rotator').style.display = 'block';
	}
	else {
		if(!ge_failed) {
			google.earth.createInstance('ge_canvas',
				function(object) {
					ge = object;
					ge.getWindow().setVisibility(true);
					ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
					ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, true);
					ge_fly({latlng:map.getCenter(),heading:0,tilt:0,zoom:map.getZoom()});

					google.earth.addEventListener(ge.getGlobe(), "mousedown", ge_rotator_stop);

					GEvent.addListener(map, "moveend", function() {
						ge_rotator_stop();
						ge_sync();
					});
					google.earth.fetchKml(ge, WWW_DOMAIN_NAME+'/com/kml.php?target=map&map_id='+map_id, function(kmlobj1) { // Trip KML
						if(kmlobj1) {
							ge.getFeatures().appendChild(kmlobj1);
							/*
							google.earth.fetchKml(ge, WWW_DOMAIN_NAME+'/com/kml.php?target=tour&map_id='+map_id, function(kmlobj2) { // Tour KML
								if(kmlobj2) {
									tour_kml = kmlobj2;
									ge.getFeatures().appendChild(kmlobj2);
									//gtour.play();
								}
							});
							*/
							ge_sync();
						}
						document.getElementById('cmd_ge_rotator').style.display = 'block';
					});
				},
				function(errorCode) {
					//alert(errorCode);
					ge_failed = true;
				}
			);
		}
	}
}
function hide_ge() {
	var c = document.getElementById('ge_canvas');
	c.style.visibility = 'hidden';
	c.style.height = '0px';
	if(ge && ge.getWindow()) ge.getWindow().setVisibility(false);
	document.getElementById('cmd_ge_rotator').style.display = 'none';
}
function ge_sync() {
	if(ge.getView()) {
		var la = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
		la.setLatitude(map.getCenter().lat());
		la.setLongitude(map.getCenter().lng());
		la.setTilt(65);
		la.setRange(zoom2meters(map.getZoom()));
		la.setHeading(0);
		ge.getView().setAbstractView(la);
	}
}
function ge_fly(opt) {
	var la = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
	la.setLatitude(opt.latlng.lat());
	la.setLongitude(opt.latlng.lng());
	if(opt.heading || opt.heading == 0) la.setHeading(opt.heading);
	if(opt.tilt || opt.tilt == 0) la.setTilt(opt.tilt);
	var range = opt.range;
	if(!range) range = opt.zoom ? zoom2meters(opt.zoom) : null;
	if(range) la.setRange(range);
	ge.getView().setAbstractView(la);
}
function zoom2meters(zoom) {
	// 152.4m == 500ft * .3048m/ft
	// 285.75m == 937.5ft * .3048m/ft
	return (zoom >= 19) ? 152.4 / Math.pow(2, (zoom - 19)) : 285.75 * Math.pow(2, (18 - zoom));
}
var rotator_id = null;
function ge_rotator_start() {
	document.getElementById('btn_ge_rotator_start').disabled = true;
	document.getElementById('btn_ge_rotator_stop').disabled = false;
	rotator_id = setTimeout('ge_rotator(0)', 0);
}
function ge_rotator_stop() {
	document.getElementById('btn_ge_rotator_start').disabled = false;
	document.getElementById('btn_ge_rotator_stop').disabled = true;
	if(rotator_id) {
		clearTimeout(rotator_id);
		rotator_id = null;
	}
}
function ge_rotator(i) {
	var la = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
	if(i == 0) la.setTilt(65);
	la.setHeading(la.getHeading()+5);
	ge.getView().setAbstractView(la);
	if(i < 50) rotator_id = setTimeout('ge_rotator('+(i++)+')', 200);
}
function show_gsv() {
	document.getElementById('gsv_help').style.display = 'block';
	var c = document.getElementById('gsv_canvas');
	c.style.visibility = 'visible';
	c.style.height = GSV_HEIGHT+'px';
	if(gsv) {
		gsv.pano.checkResize();
	}
	else {
		gsv = new GStreetView(map,'gsv_canvas');
	}
	gsv.show();
}
function hide_gsv() {
	document.getElementById('gsv_help').style.display = 'none';
	var c = document.getElementById('gsv_canvas');
	c.style.visibility = 'hidden';
	c.style.height = '0px';
	if(gsv) gsv.hide();
}
function GStreetView(svmap,canvas_id) {
	this.map = svmap;
	this.canvas_id = canvas_id;
	this.loaded = false;
	this.visible = false;
	this.pano = null;
	this.guy = null;
	this.client = null;
	this.overlay = null;
	this.map_click_listener = null;
}
GStreetView.prototype.load = function() {
	var me = this;
	me.client = new GStreetviewClient();
	var icon = new GIcon();
	icon.image = "http://maps.gstatic.com/mapfiles/cb/man_arrow-0.png";
	icon.transparent = "http://maps.gstatic.com/mapfiles/cb/man-pick.png";
	icon.imageMap = [26,13, 30,14, 32,28, 27,28, 28,36, 18,35, 18,27, 16,26,16,20, 16,14, 19,13, 22,8];
	icon.iconSize = new GSize(49, 52);
	icon.iconAnchor = new GPoint(25, 35);
	icon.infoWindowAnchor = new GPoint(25, 5);
	me.guy = new GMarker(me.map.getCenter(), {icon:icon, draggable:true});
	me.map.addOverlay(me.guy);

	var html = '<b>'+array_lang['492']+'</b><br />'+array_lang['611']
		+'<div class="mt10"><a href="javascript:void(0)" onclick="map.zoomIn()" class="blue u">Zoom In</a> &nbsp;|&nbsp; '
		+'<a href="javascript:void(0)" onclick="map.zoomOut()" class="blue u">Zoom Out</a> &nbsp;|&nbsp; '
		+'<a href="javascript:void(0)" onclick="map_tab_click()" class="blue u">Cancel</a>'
		+'</div>';

	GEvent.addListener(me.guy, "click", function() {
		this.openInfoWindowHtml(html);
	});
	GEvent.addListener(me.guy, "dragstart", function() {
		map.closeInfoWindow();
	});
	GEvent.addListener(me.guy, "dragend", function() {
		me.client.getNearestPanorama(me.guy.getLatLng(), function(panoData) {
			if(panoData.code == 200) {
				var latlng = panoData.location.latlng;
				me.guy.setLatLng(latlng);
				me.pano.setLocationAndPOV(latlng);
			}
			//else {
			//	me.log('Server rejected with code: '+panoData.code);
			//}
		});
		GEvent.trigger(this,'click');
	});
	me.pano = new GStreetviewPanorama(document.getElementById(me.canvas_id),{latlng:this.map.getCenter()});
	GEvent.addListener(me.pano, "yawchanged", function(yaw) {
		var GUY_NUM_ICONS = 16;
		var GUY_ANGULAR_RES = 360 / GUY_NUM_ICONS;
		if(yaw < 0) yaw += 360;
		var guyImageNum = Math.round(yaw / GUY_ANGULAR_RES) % GUY_NUM_ICONS;
		var img = "http://maps.gstatic.com/mapfiles/cb/man_arrow-"+guyImageNum+".png";
		me.guy.setImage(img);
		document.getElementById('gsv_help_guy_img').src = img;
	});
	GEvent.addListener(me.pano, "initialized", function(call) {
		me.guy.setLatLng(call.latlng);
	});
	//GEvent.addListener(me.pano, "error", function(errorCode) {
		//var msg = 'Street View not available.';
		//me.log('<div class="frame_help">'+msg+'</div>');
		//me.help();
	//});
	this.loaded = true;
}
GStreetView.prototype.show = function() {
	var me = this;
	if(!me.loaded) me.load();
	if(me.overlay == null) {
		me.overlay = new GStreetviewOverlay();
		me.map.addOverlay(me.overlay);
	}
	me.guy.show();
	me.guy.setLatLng(me.map.getCenter());
	GEvent.trigger(me.guy,'click');
	me.visible = true;
	if(me.map_click_listener == null) {
		me.map_click_listener = GEvent.bind(me.map, "click", this, function(overlay, latlng) {
			if(latlng) {
				me.guy.setLatLng(latlng);
				GEvent.trigger(me.guy,'click');
				me.pano.setLocationAndPOV(latlng);
			}
		});
	}
	if(me.pano && me.pano.isHidden()) me.pano.show();
}
GStreetView.prototype.hide = function() {
	if(this.overlay) this.map.removeOverlay(this.overlay);
	this.overlay = null;
	if(this.guy) this.guy.hide();
	this.visible = false;
	if(this.map_click_listener) {
		GEvent.removeListener(this.map_click_listener);
		this.map_click_listener = null;
	}
	if(this.pano) this.pano.hide();
	map.closeInfoWindow();
}
GStreetView.prototype.toggle = function() {
	if(this.visible) this.hide();
	else this.show();
}
GStreetView.prototype.log = function(msg) {
	var c = document.getElementById(this.canvas_id);
	c.style.height = '60px';
	c.innerHTML = '<br />'+msg;
}
function render_overlay(r) {
	var latlng = new GLatLng(r.lat,r.lng);
	var overlay = null;

	var color = {};
	color.color = r.fgc ? r.fgc : label_option.color;
	color.fill_color = r.bgc ? r.bgc: label_option.fill_color;

	var line_color = r.bgc ? r.bgc : poly_option.line_color;
	var line_width = r.line_width ? parseInt(r.line_width,10) : poly_option.line_width;
	var line_opacity = r.line_opacity ? parseFloat(r.line_opacity) : poly_option.line_opacity;
	var fill_color = r.bgc ? r.bgc : poly_option.fill_color;
	var fill_opacity = r.fill_opacity ? parseFloat(r.fill_opacity) : poly_option.fill_opacity;

	var info = get_info_html(r);

	if(r.type == 'marker' || r.type == 'label' || r.type == 'symbol') {
		if(r.type == 'marker' || r.type == 'symbol') {
			if(r.type == 'symbol') {
				var icon = get_marker_icon({fill_color:color.fill_color,label:r.subname,color:color.color,shape:r.icon_shape,width:r.icon_width,height:r.icon_height});
				icon.iconAnchor = new GPoint(symbol_option.iconx,symbol_option.icony);
				overlay = new GMarker(latlng,{icon:icon});
			}
			else {
				var offset = get_marker_light_offset(r);
				overlay = new MarkerLight(latlng, {margin_left:offset.iconx,margin_top:offset.icony,width:r.icon_width,height:r.icon_height,image:r.icon,title:r.name})
			}
			if(list_mode == '') markers.push(overlay);
			else map.addOverlay(overlay);
		}
		if(r.type == 'marker') {
			if(!r.hide_label) {
				var title = r.name;
				if(r.date) {
					var a = r.date.split('-');
					if(a.length == 3) {
						title = parseInt(a[1],10)+'.'+parseInt(a[2],10)+' '+r.name;
					}
					else {
						a = r.date.split('/');
						if(a.length == 3) {
							title = parseInt(a[0],10)+'.'+parseInt(a[1],10)+' '+r.name;
						}
						else {
							title = r.date+' '+r.name;
						}
					}
				}
				if(use_cluster != 1) {
					var label = new ELabel(latlng,title,color,new GSize(offset.labelx,offset.labely));
					label.overlay = overlay;
					overlay.label = label;
					map.addOverlay(label);
					GEvent.addListener(label, 'click', function() {
						GEvent.trigger(this.overlay,'click');
					});
				}
			}
		}
		else if(r.type == 'symbol') {
		}
		else if(r.type == 'label') {
			overlay = new ELabel(latlng,r.name,color,new GSize(label_option.labelx,label_option.labely));
			map.addOverlay(overlay);
		}
		if(r.pinlat && r.pinlat != '0.000000' && r.pinlng && r.pinlng != '0.000000') {
			var ll = glatlng(r.pinlat,r.pinlng);
			overlay.line = new GPolyline([ll,latlng],fill_color,poly_connect.line_width,poly_connect.line_opacity);
			map.addOverlay(overlay.line);
		}
		if(r.show_range) {
			//----------------------
			// 거리 표시 원 그리기
			//----------------------
			overlay.range_circle = [];
			var range_value = parseInt(r.range_value,10);
			var range_unit = r.range_unit;
			var range_count = parseInt(r.range_count,10);
			var range_line_width = r.range_line_width ? parseInt(r.range_line_width,10) : 1;
			var range_line_opacity = r.range_line_opacity ? parseFloat(r.range_line_opacity) : 1;
			var opt = {color:r.range_fgc,line_color:r.range_bgc,fill_color:r.range_bgc,line_width:range_line_width,line_opacity:range_line_opacity};
			if(range_value > 0 && range_unit != '' && range_count > 0) {
				for(var i=1; i<=range_count; i++) {
					overlay.range_circle.push(draw_range_circle(latlng,i*range_value,range_unit,opt));
				}
			}
		}
		GEvent.addListener(overlay, 'click', function() {
			var sel = document.getElementById('overlay_selector');
			if(sel) sel.value = this.id;
			var maxopt = info[1] ? {maxContent:get_max_content(r.overlay_id),maxTitle:'<b>'+r.name+'</b>'} : {};
			var ll = this.line ? this.line.getVertex(0) : latlng;
			map.openInfoWindowHtml(ll,info[0],maxopt);
		});
		if(bounds) bounds.extend(latlng);
	}
	else if(r.type == 'polyline' || r.type == 'roadline' || r.type == 'polygon' || r.type == 'circle' || r.type == 'rectangle') {
		if(r.type == 'polyline' || r.type == 'roadline') {
			overlay = GPolyline.fromEncoded({
				color: line_color,
				weight: line_width,
				opacity: line_opacity,
				points: r.enc_points,
				levels: r.enc_levels,
				numLevels: r.enc_numlevels,
				zoomFactor: r.enc_zoomfactor
			});
		}
		else {
			overlay = new GPolygon.fromEncoded({
				polylines: [{
					color: line_color,
					weight: line_width,
					opacity: line_opacity,
					points: r.enc_points,
					levels: r.enc_levels,
					numLevels: r.enc_numlevels,
					zoomFactor: r.enc_zoomfactor
				}],
				fill: true,
				color: fill_color,
				opacity: fill_opacity,
				outline: true
			});
		}
		var points = glatlng(r.points);
		if(bounds) {
			for(var i in points) bounds.extend(points[i]);
		}
		if(r.hide_label != '1') {
			var label_latlng = overlay.getBounds().getCenter();
			var label_position = r.label_position ? parseInt(r.label_position,10) : 0;
			if(label_position > 0) {
				if(label_position < overlay.getVertexCount()) {
					label_latlng = overlay.getVertex(label_position);
					overlay.label_position = label_position;
				}
				if(r.type == 'circle') label_latlng = overlay.getVertex(label_position * 6);
				if(r.type == 'rectangle') label_latlng = overlay.getVertex(label_position);
			}
			if(r.type == 'rectangle') {
				overlay.label = new ELabel(label_latlng,r.name,color,new GSize(label_option.labelx,label_option.labely));
			}
			else if(r.type == 'circle' || r.type == 'polygon') {
				var size = (r.type == 'circle') ? new GSize(0,10) : null;
				overlay.label = new ELabel(label_latlng,r.name,color,size);
			}
			else {
				overlay.label = new ELabel(overlay.getVertex(parseInt(overlay.getVertexCount()/2,10)),r.name,color);
			}
			map.addOverlay(overlay.label);
			GEvent.addListener(overlay.label, 'click', function(ll) {
				GEvent.trigger(overlay,'click');
			});
			GEvent.addListener(overlay, 'visibilitychanged', function() {
				if(this.isHidden()) this.label.hide();
				else this.label.show();
			});
		}
		GEvent.addListener(overlay, 'click', function(ll, index) {
			var sel = document.getElementById('overlay_selector');
			if(sel) sel.value = this.id;
			var maxopt = info[1] ? {maxContent:get_max_content(r.overlay_id),maxTitle:'<b>'+r.name+'</b>'} : {};
			if(ll) {
				map.openInfoWindowHtml(ll,info[0],maxopt);
			}
			else {
				if(r.type == 'polyline' || r.type == 'roadline') {
					var idx = parseInt(points.length/2,10);
					map.openInfoWindowHtml(points[idx],info[0],maxopt);
				}
				else {
					map.openInfoWindowHtml(latlng,info[0],maxopt);
				}
			}
		});
		map.addOverlay(overlay);
	}
	if(overlay) {
		overlay.id = r.overlay_id;
		overlay.type = r.type;
		overlay.toggler = r.date ? r.date : r.grpname;
		overlay_array[r.overlay_id] = overlay;
		render_html(r,overlay);
	}
}
function overlay_select() {
	var sel = document.getElementById('overlay_selector');
	if(sel && sel.value != '') {
		var arr = sel.value.split(',');
		var overlay_id = arr[0];
		var overlay = overlay_array[overlay_id];
		if(overlay) {
			//if(overlay.type == 'marker') map.setCenter(overlay.getLatLng(),static_hybrid_zoom);
			GEvent.trigger(overlay_array[overlay_id],'click');
		}
	}
}
function overlay_previous() {
	var sel = document.getElementById('overlay_selector');
	var idx = sel.selectedIndex - 1;
	sel.selectedIndex = (idx < 2) ? 2 : idx;
	overlay_select();
}
function overlay_next() {
	var sel = document.getElementById('overlay_selector');
	var idx = sel.selectedIndex + 1;
	if(idx < 2) idx = 2;
	if(idx >= sel.length) idx = sel.length - 1;
	sel.selectedIndex = idx;
	overlay_select();
}
function overlay_click(overlay_id) {
	var overlay = overlay_array[overlay_id];
	if(overlay) GEvent.trigger(overlay,'click');
}
function folder_item_click(trigger,folder_id) {
	$.post('/user/folder_map.php',{map_id:map_id,folder_id:folder_id},function(r) {
		if(r == '200') {
			var name = $(trigger).text()+' ▼';
			$('#folder_name').text(name);
			folder_dialog.hide();
			flash_msg();
		}
		else if(r == '401') {
			login(self.location+'');
		}
	});
}
function toggle_label(tf) {
	for(var i in overlay_array) {
		if(tf) overlay_array[i].label.hide();
		else overlay_array[i].label.show();
	}
}
function mapcmd(cmd,overlay_id) {
	if(cmd == 'center') {
		map.closeInfoWindow();
		map.setCenter(center_latlng,center_zoom);
	}
	else if(cmd == 'previous') {
		overlay_previous();
	}
	else if(cmd == 'next') {
		overlay_next();
	}
	else if(cmd == 'tour') {
		open_win('/map/tour.php?map_id='+map_id,'tour',800,600);
	}
	else if(cmd == 'rotate') {
		open_win('/map/rotate.php?map_id='+map_id+'&overlay_id='+overlay_id,'rotate',800,600);
	}
	else if(cmd == 'trace') {
		open_win('/map/trace.php?map_id='+map_id+'&overlay_id='+overlay_id,'trace',800,600);
	}
	else if(cmd == 'drive') {
		open_win('/map/drive.php?map_id='+map_id+'&overlay_id='+overlay_id,'drive',800,600);
	}
	else if(cmd == 'kml') {
		location.href = '/com/kml.php?target=earth&map_id='+map_id;
	}
	else if(cmd == 'save') {
		window.open('http://maps.google.com/?q='+escape(WWW_DOMAIN_NAME+'/com/kml.php?map_id='+map_id));
	}
	else if(cmd == 'share') {
		open_win('/share/index.php?map_id='+map_id,'share',800,600);
	}
}
//--------------
// HOME BUTTON
//--------------
function HomeButtonControl(opt) {
	this.opt = opt ? opt : {};
}
HomeButtonControl.prototype = new GControl();
HomeButtonControl.prototype.initialize = function(map) {
	var container = document.createElement("div");
	container.style.border = "1px solid #000";
	var div = document.createElement("div");
	div.className = 'gbutton';
	container.appendChild(div);
	div.appendChild(document.createTextNode(array_lang['712']));
	GEvent.addDomListener(div, "click", function() {
		tools_control_clear();
		mapcmd('center');
	});
	map.getContainer().appendChild(container);
	return container;
}
HomeButtonControl.prototype.getDefaultPosition = function() {
	var x = this.opt.x ? this.opt.x : 260;
	var y = this.opt.y ? this.opt.y : 7;
	return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(x,y));
}
//------------------
// OVERLAY SELECOR
//------------------
function OverlaySelectControl(opt) {
	this.opt = opt ? opt : {};
}
OverlaySelectControl.prototype = new GControl();
OverlaySelectControl.prototype.initialize = function(map) {
	var div = document.createElement('div');
	div.id = 'overlay_selector_container';
	var s = '&nbsp; <a href="javascript:void(0)" onclick="mapcmd(\'center\')" class="blue b">'+array_lang['712']+'</a> &nbsp; '+
		'<select id="overlay_selector" onchange="overlay_select(this)">'+
		'<option value="">'+array_lang['173']+'</option>'+
		'<option value="">------------------------------</option>'+
		'</select>';
	div.innerHTML = s;
	map.getContainer().appendChild(div);
	this._div = div;
	return div;
}
OverlaySelectControl.prototype.getDefaultPosition = function() {
	var x = this.opt.x ? this.opt.x : 5;
	var y = this.opt.y ? this.opt.y : 7;
	//return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(y,x));
	return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(x,y));
}
//-------------------
// NAVIGATION PANEL
//-------------------
function NavigationControl(opt) {
	this.opt = opt ? opt : {};
}
NavigationControl.prototype = new GControl();
NavigationControl.prototype.initialize = function(map) {
	var width = 240;
	var height = $('#map_canvas').height() - 70;

	var container = document.createElement("div");
	container.id = 'navigation_container';
	//container.style.width = width+'px';
	//container.style.height = height+'px';

	var div = document.createElement("div");
	div.id = 'navigation';
	div.style.display = 'none';
	div.style.width = width+'px';
	div.style.height = height+'px';
	container.appendChild(div);

	var maptype = document.getElementById('maptype').value;
	var color = 'black';
	if(maptype == 'satellite') color = 'blue';
	else if(maptype == 'hybrid') color = 'blue';
	else if(maptype == 'physical') color = 'black';

	var img = document.createElement("img");
	img.style.position = 'absolute';
	img.style.cursor = 'pointer';
	img.style.left = '-24px';
	img.style.top = ((height/2)-20)+'px';
	img.src = '/img/toggle_left_'+color+'.gif';
	container.appendChild(img);

	img.onclick = function() {
		if(this.src.indexOf('left') > -1) {
			this.src = this.src.replace('left','right');
			div.style.display = 'block';
		}
		else {
			this.src = this.src.replace('right','left');
			div.style.display = 'none';
		}
	};
	map.getContainer().appendChild(container);
	return container;
}
NavigationControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0,35));
}
//--------------------
// Lat,Lng Info Panel
//--------------------
function MapInfoControl(opt) {
}
MapInfoControl.prototype = new GControl();
MapInfoControl.prototype.initialize = function(map) {
	var div = document.createElement("div");
	div.id = 'map_info_control';
	//div.style.border = "1px solid #000000";
	//div.style.padding = '2px';
	//div.style.fontSize = '11px';
	//div.style.backgroundColor = '#ffffff';
	map.getContainer().appendChild(div);
	this._div = div;
	return div;
}
MapInfoControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(5,32));
}
MapInfoControl.prototype.html = function(s) {
	this._div.innerHTML = s;
}
function share_option() {
	open_win('/share/index.php?map_id='+map_id,'share',800,600);
}
function get_info_html(r) {
	var arr = [];
	var hd = bd = ft = '';

	var date = r.date ? '<span class="infowin_date">'+r.date+'</span>' : '';
	var time = r.time ? '<span class="infowin_time">'+r.time+'</span>' : '';
	var datetime = (date != '' || time != '') ? '<div>'+date+' '+time+'</div>' : '';
	var elevation = elevation2word(r.elevation_meter,r.elevation_feet);
	if(elevation != '') elevation = '<div class="overlay_elevation">'+elevation2word(r.elevation_meter,r.elevation_feet)+'</div>';
	var address = '';
	if(hide_address == '') {
		address = get_address(r);
		if(address != '') address = '<div class="infowin_address">'+address+'</div>';
	}
	var icon = r.icon ? r.icon : marker_default_icon;
	var icon_width = r.icon_width ? r.icon_width : 20;
	var icon_height = r.icon_height ? r.icon_height : 34;

	if(r.type == 'marker' || r.type == 'symbol') {
		hd = '<dl class="infowin_header_container">'
				+'<dt><img src="'+icon+'" class="infowin_icon" border="0" alt="" /></dt>'
				+'<dd><div class="infowin_name">'+r.name+'</div>'+datetime+elevation+address+'</dd>'
			+'</dl>'
			+'<div class="clear"></div>'
	}
	else {
		hd = '<div class="infowin_name">'+r.name+'</div>'+datetime+elevation+address;
		if(r.type == 'polyline' || r.type == 'polygon' || r.type == 'circle') {
			hd+='<div class="infowin_dimlen">'+r.dimlen+'</div>';
		}
	}
	var photo_all = '';
	var photo_some = '';
	var photo_count = 1;
	if(overlay_json.photos) {
		// 사진 전체 목록
		//$.each(overlay_json.photos, function(i,q) {
		//	if(q.data_id == r.overlay_id) photo_all+= '<img src="'+q.sm+'" onclick="pho(this,\''+q.lg+'\',\''+q.org+'\')" class="infowin_thumb img_md pointer" alt="" /> ';
		//});
		// 사진 일부 목록
		$.each(overlay_json.photos, function(i,q) {
			if(q.data_id == r.overlay_id) {
				if(photo_count < 6) photo_some+= '<img src="'+q.sm+'" onclick="pho(this,\''+q.lg+'\',\''+q.org+'\')" class="infowin_thumb img_md pointer" alt="" /> ';
				photo_count++;
			}
		});
	}

	var bd = '';
	var note = r.note ? r.note : '';

	var tour = '';
	if(r.type == 'marker' || r.type == 'label' || r.type == 'symbol') tour = ' <img src="/img/icon/control_play_blue.png" class="iconb" alt="" /> <a href="javascript:void(0)" onclick="mapcmd(\'rotate\',\''+r.overlay_id+'\')" class="blue u">'+array_lang['916']+'</a>&nbsp; ';
	else if(r.type == 'polyline' || r.type == 'roadline') tour = ' <img src="/img/icon/car.png" class="iconb" alt="" /> <a href="javascript:void(0)" onclick="mapcmd(\'drive\',\''+r.overlay_id+'\')" class="blue u">'+array_lang['928']+'</a>&nbsp; ';

	var sv_html = '';
	if(r.show_streetview) {
		sv_html = '<iframe src="'+get_gsv_url(r.svlat,r.svlng)+'" width="480" height="180" frameborder="0" class="mt5"></iframe>';
	}

	if(note.length > 200) {
		arr[1] = true;

		bd+= '<div class="infowin_note_lg">'+note.substr(0,200)+'...</div>';
		bd+= sv_html;
		if(photo_some != '') bd+= '<div class="infowin_photo_container">'+photo_some+'</div>';
		bd+= '<div class="mt5"><img src="../img/icon/map_plus.gif" class="iconb" alt="" /> <a href="javascript:void(0)" onclick="map.getInfoWindow().maximize()" class="blue u">'+array_lang['426']+'</a>';
		if(r.photo_count > 0) bd+= ' &nbsp; <b>Photos <span class="green">('+r.photo_count+')</span></b>';
		bd+= ' &nbsp; '+tour+' '+cmd_infowin_zoom+'</div>';
	}
	else {
		if(note != '') bd+= '<div class="infowin_note_sm">'+note+'</div>';
		bd+= sv_html;
		if(photo_some != '') bd+= '<div class="infowin_photo_container">'+photo_some+'</div>';

		//--------------------------------
		// 내용은 없지만 사진이 많은 경우
		//--------------------------------
		if(photo_count > 5) {
			arr[1] = true;
			bd+= '<div class="infowin_footer"><img src="../img/icon/map_plus.gif" class="iconb" alt="" /> <a href="javascript:void(0)" onclick="map.getInfoWindow().maximize()" class="blue u">'+array_lang['426']+'...</a>';
			if(r.photo_count > 0) bd+= ' &nbsp; <b>Photos <span class="green">('+r.photo_count+')</span></b>';
			bd+= ' &nbsp; '+tour+' '+cmd_infowin_zoom+'</div>';
		}
		else {
			bd+= '<div class="infowin_footer">'+tour+' '+cmd_infowin_zoom+'</div>';
		}
	}
	arr[0] = hd + bd;

	return arr;
}
function get_max_content(overlay_id) {
	var s = ''
	if(document.getElementById('note_'+overlay_id)) s+= '<div class="mt5 mb10">'+document.getElementById('note_'+overlay_id).innerHTML+'</div>';
	if(document.getElementById('photo_container_'+overlay_id)) s += document.getElementById('photo_container_'+overlay_id).innerHTML;
	return s;
}
var weather_array = [];
function show_weather(trigger,lat,lng,overlay_id,canvas_id) {
	canvas_id = canvas_id ? canvas_id : 'weather_'+overlay_id;
	var el = document.getElementById(canvas_id);
	if(weather_array[overlay_id]) {
		//$('#'+canvas_id).toggle();
		el.style.display = (el.style.display == 'none') ? 'block' : 'none';
	}
	else {
		el.innerHTML = '<img src="/img/spinner.gif" class="iconb" alt="" />';
		$.getJSON('/api/weather.php?lang='+lang+'&latlng='+lat+','+lng, function(json) {
			var s = parse_weather(json);
			el.innerHTML = s;
			weather_array[overlay_id] = s;
		});
	}
	if(document.getElementById(canvas_id).style.display == 'none') {
		trigger.style.color = '#006699';
		trigger.style.backgroundColor = '#FFFFFF';
	}
	else {
		trigger.style.color = '#FFFFFF';
		trigger.style.backgroundColor = '#777777';
	}
}
var staticmap_array = [];
function show_staticmap(trigger,overlay_id,lat,lng) {
	if(staticmap_array[overlay_id]) {
		$('#staticmap_'+overlay_id).toggle();
	}
	else {
		if(USE_STATIC_MAP_FOR_PREVIEW) {
			var map_url1 = get_gmap_url(lat,lng,static_roadmap_zoom,null,'midblue',STATIC_MAP_WIDTH_ROADMAP,STATIC_MAP_HEIGHT);
			var map_url2 = get_gmap_url(lat,lng,static_hybrid_zoom,'satellite','midred',STATIC_MAP_WIDTH_SATELLITE,STATIC_MAP_HEIGHT);
			var s = ''+
					'<img src="'+map_url1+'" onclick="gmp(this)" width="'+STATIC_MAP_WIDTH_ROADMAP+'" height="'+STATIC_MAP_HEIGHT+'" class="img_static_roadmap" title="'+array_lang['458']+'" alt="'+array_lang['458']+'" />'+
					'<img src="'+map_url2+'" onclick="gmp(this)" width="'+STATIC_MAP_WIDTH_SATELLITE+'" height="'+STATIC_MAP_HEIGHT+'" class="img_static_satellite" title="'+array_lang['458']+'" alt="'+array_lang['458']+'" />';
		}
		else {
			var s = '<div id="roadmap_'+overlay_id+'" class="div_static_roadmap"></div>'+
					'<div id="hybrid_'+overlay_id+'" class="div_static_satellite"></div>'+
					//'<div class="clear mb5">&raquo; <a href="http://maps.google.com/?ie=UTF8&ll='+lat+','+lng+'&spn=49.891082,56.162109&z='+static_hybrid_zoom+'&t=k&hl='+lang+'" target="_blank">'+array_lang['626']+'</a></div>';
					'<div class="clear mb5">&raquo; <a href="javascript:void(0)" onclick="gmp(\''+lat+'\',\''+lng+'\',\''+static_hybrid_zoom+'\',\'satellite\')">'+array_lang['628']+'</a></div>';
		}
		document.getElementById('staticmap_'+overlay_id).innerHTML = s;

		if(!USE_STATIC_MAP_FOR_PREVIEW) {
			if(!base_icon) {
				set_base_icon();

				icon_tinyred = new GIcon(base_icon,'/img/map/gmap/mm_20_red.png');
				icon_tinyred.iconSize = new GSize(12,20);
				icon_tinyred.iconAnchor = new GPoint(5,20);

				icon_tinygreen = new GIcon(base_icon,'/img/map/gmap/mm_20_green.png');
				icon_tinygreen.iconSize = new GSize(12,20);
				icon_tinygreen.iconAnchor = new GPoint(5,20);
			}
			var latlng = glatlng(lat,lng);

			var roadmap = new GMap2(document.getElementById('roadmap_'+overlay_id));
			roadmap.setCenter(latlng,static_roadmap_zoom);
			roadmap.addControl(new GSmallZoomControl());
			roadmap.addOverlay(new GMarker(latlng,{icon:icon_tinyred}));

			var hybridmap = new GMap2(document.getElementById('hybrid_'+overlay_id));
			hybridmap.setCenter(latlng,static_hybrid_zoom);
			hybridmap.setMapType(G_SATELLITE_MAP);
			hybridmap.addControl(new GSmallZoomControl());
			hybridmap.addOverlay(new GMarker(latlng,{icon:icon_tinygreen}));
		}
		staticmap_array[overlay_id] = overlay_id;
	}
	if(document.getElementById('staticmap_'+overlay_id).style.display == 'none') {
		trigger.style.color = '#006699';
		trigger.style.backgroundColor = '#FFFFFF';
	}
	else {
		trigger.style.color = '#FFFFFF';
		trigger.style.backgroundColor = '#777777';
	}
}
var static_map_array = [];
var static_map_count = 0;
var static_map_total = 0;
function load_static_map() {
	if(static_map_count < static_map_total) {
		var r = static_map_array[static_map_count];
		if(USE_STATIC_MAP_FOR_PREVIEW) {
			document.getElementById('staticmap_'+r.overlay_id).innerHTML = r.html;
			static_map_count++
			setTimeout('load_static_map()',STATIC_MAP_AUTO_LOAD_INTERVAL);
		}
		else {
			var latlng = null;

			var roadmap = new GMap2(document.getElementById('roadmap'+r.overlay_id));
			latlng = glatlng(r.lat,r.lng);
			roadmap.setCenter(latlng,parseInt(r.roadmap_zoom,10));
			roadmap.addControl(new GSmallZoomControl());
			roadmap.addOverlay(new GMarker(latlng,{icon:icon_tinyred}));
			//GEvent.addListener(roadmap,'click',function() {
			//	gmp(r.lat,r.lng,r.roadmap_zoom,'roadmap');
			//});

			var hybridmap = new GMap2(document.getElementById('hybrid'+r.overlay_id));
			latlng = glatlng(r.lat,r.lng);
			hybridmap.setCenter(latlng,parseInt(r.hybrid_zoom,10));
			hybridmap.setMapType(G_SATELLITE_MAP);
			hybridmap.addControl(new GSmallZoomControl());
			hybridmap.addOverlay(new GMarker(latlng,{icon:icon_tinygreen}));
			//GEvent.addListener(hybridmap,'click',function() {
			//	gmp(r.lat,r.lng,r.hybrid_zoom,'satellite');
			//});
			static_map_count++
			setTimeout('load_static_map()',STATIC_MAP_AUTO_LOAD_INTERVAL);
		}
	}
}
var streetview_array = [];
function show_streetview(overlay_id,svlat,svlng,svzoom,yaw,pitch,panoid) {
	if(panoid == '') return;
	/*
	if(streetview_array[overlay_id]) {
		$('#steetview_'+overlay_id).toggle();
	}
	else {
		var style = 'width:100%;height:300px;';
		var s = get_gsv_iframe(svlat,svlng,yaw,pitch,panoid,style);
		s += '<div class="mt5 mb5">&raquo; <a href="http://maps.google.com/maps?cbp=11,'+yaw+',,0,'+pitch+'&cbll='+svlat+','+svlng+'&ll='+svlat+','+svlng+'&layer=c" target="_blank">'+array_lang['626']+'</a></div>';
		document.getElementById('streetview_'+overlay_id).innerHTML = s;

		streetview_array[overlay_id] = overlay_id;
	}
	*/
	var pov = {yaw:parseFloat(yaw),pitch:parseInt(pitch,10)};
	var opt = {latlng:new GLatLng(parseFloat(svlat),parseFloat(svlng)),pov:pov};
	var div = document.getElementById('streetview_'+overlay_id);
	div.className = 'streetview_container';
	var pano = new GStreetviewPanorama(div,opt);
}
var gsearch = null;
var gsearch_array = [];
function web_search_init(canvas_id) {
	var gs = new google.search.SearchControl();
	gs.addSearcher(new google.search.ImageSearch());
	for(var key in gsimg) {
		var s = new google.search.ImageSearch();
		s.setUserDefinedLabel(gsimg[key]);
		s.setSiteRestriction(key);
		gs.addSearcher(s);
	}
	gs.addSearcher(new google.search.VideoSearch());
	for(var key in gsweb) {
		var s = new google.search.WebSearch();
		s.setUserDefinedLabel(gsweb[key]);
		s.setSiteRestriction(key);
		gs.addSearcher(s);
	}
	gs.addSearcher(new google.search.NewsSearch());
	gs.addSearcher(new google.search.BlogSearch());
	gs.addSearcher(new google.search.BookSearch());
	//gs.addSearcher(new google.search.PatentSearch());
	gs.setResultSetSize(google.search.Search.LARGE_RESULTSET);
	var dro = new google.search.DrawOptions();
	dro.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);
	gs.draw(document.getElementById(canvas_id), dro);
	return gs;
}
function web_search(trigger,id,query) {
	$('#web_search_'+id).parent().toggle();
	if(!query) return;
	if(gsearch_array[id] == null) {
		gsearch_array[id] = web_search_init('web_search_'+id);
		gsearch_array[id].execute(query);
	}
	if(document.getElementById('web_search_'+id).parentNode.style.display == 'none') {
		trigger.style.color = '#006699';
		trigger.style.backgroundColor = '#FFFFFF';
	}
	else {
		trigger.style.color = '#FFFFFF';
		trigger.style.backgroundColor = '#777777';
	}
}
function create_meta_link_image() {
	var latlng = map.getCenter();
	var zoom = map.getZoom();
	var url = get_gmap_url(latlng.lat(),latlng.lng(),zoom,'','midred',100,100);

	var link = document.createElement('link');
	link.rel = 'image_src';
	link.href = url;
	document.getElementsByTagName("head")[0].appendChild(link);

	//window.open(url);
}
function fbs_click() {
	//-------------------------------------
	// for Facebook share thumbnail image.
	//-------------------------------------
	var u = 'http://www.dearmap.com/map.php?map_id='+map_id;
	var t = document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'fbsharer','toolbar=0,status=0,width=616,height=426');
}
var array_group_id = [];
var array_day_name_ko = new Array('일','월','화','수','목','금','토');
var array_day_name_en = new Array('SUN','MON','TUE','WED','THU','FRI','SAT');
var group_count = 1;
function render_html(r,overlay) {
	if(r.hide_on_list) return;

	var group_id = '';
	var group_bd = null;

	if(list_mode != '') {
		if(list_mode == 'date') {
			group_id = r.date.replace(/\//g,'').replace(/\-/g,'');
		}
		else if(list_mode == 'group') {
			group_id = array_group_id[r.grpname];
			if(!group_id) {
				group_id = group_count;
				array_group_id[r.grpname] = group_id;
			}
		}
		group_bd = document.getElementById('group_bd_'+group_id);
		if(!group_bd) {
			var group_hd_title = '';
			if(list_mode == 'date') {
				group_hd_title = array_lang['752'];
				var day_no = -1;
				if(r.date) {
					if(r.date.indexOf('-') > -1) {
						var a = r.date.split('-');
						day_no = (new Date(a[0],a[1],a[2])).getDay();
					}
					else {
						var a = r.date.split('/');
						day_no = (new Date(a[2],a[0],a[1])).getDay();
					}
					var day_name = (lang == 'ko') ? ' ('+array_day_name_ko[day_no]+')' :  ' ('+array_day_name_en[day_no]+')';
					group_hd_title = 'Day '+group_count+' :&nbsp; '+r.date+day_name;
				}
			}
			else {
				group_hd_title = r.grpname ? r.grpname : array_lang['750'];
			}
			var hd_html = '<img src="/img/icon/minus.gif" class="iconb" alt=""/>'+group_hd_title;

			var group_hd = document.createElement('div');
			group_hd.innerHTML = hd_html;
			var class_name = 'group_hd';
			if(list_mode == 'date') {
				if(day_no == 0) {
					class_name = 'group_hd_sunday';
				}
				else if(day_no == 6) {
					class_name = 'group_hd_saturday';
				}
			}
			group_hd.className = class_name;
			group_hd.onclick = function() {
				group_header_toggle_click(this,group_id);
			}
			document.getElementById('overlay_list').appendChild(group_hd);

			hd_html ='<table border="0" cellpadding="0" cellspacing="0"><tr>';
			if(group_hd_title) {
				var chk_value = r.date ? r.date : r.grpname;
				hd_html+='<td><input type="checkbox" onclick="navigation_hd_checkbox_click(this,\''+group_id+'\')" value="'+chk_value+'" checked="checked"></td>';
			}
			hd_html+='<td width="100%" onclick="navigation_hd_toggle_click(\''+group_id+'\')">'+group_hd_title+'</td>';
			hd_html+='<td><img id="img_navigation_group_toggle_'+group_id+'" src="/img/icon/minus.gif" onclick="navigation_hd_toggle_click(\''+group_id+'\')" class="iconb pointer toggler" alt=""/></td>';
			hd_html+='</tr></table>';
			document.getElementById('navigation').innerHTML += '<div class="navigation_'+class_name+'">'+hd_html+'</div>';

			group_bd = document.createElement('div');
			group_bd.id = 'group_bd_'+group_id;
			group_bd.className = 'group_bd';
			document.getElementById('overlay_list').appendChild(group_bd);
			document.getElementById('navigation').innerHTML += '<div id="navigation_group_bd_'+group_id+'" class="group_bd">'+group_bd.innerHTML+'</div>';

			group_count++;
		}
	}
	var cmd = '';
	if(r.type != 'polyline' && r.type != 'roadline' && r.type != 'polygon' && r.type != 'circle' && r.type != 'rectangle') {
		if(!STATIC_MAP_AUTO_LOAD) cmd+= ' - <a href="javascript:void(0)" onclick="show_staticmap(this,\''+r.overlay_id+'\',\''+r.lat+'\',\''+r.lng+'\')">'+array_lang['10']+'</a>';
		if(r.type == 'marker') cmd+= ' - <a href="javascript:void(0)" onclick="show_weather(this,\''+r.lat+'\',\''+r.lng+'\',\''+r.overlay_id+'\')">'+array_lang['605']+'</a>';

		//---------------
		// 구글 웹 검색
		//---------------
		var keyword = r.name;
		keyword = r.name.replace("'","&#146;");
		cmd+= ' - <a href="javascript:void(0)" onclick="web_search(this,\''+r.overlay_id+'\',\''+keyword+'\')">'+array_lang['551']+'▼</a>';

		//--------------------
		// 구글 어스 돌려보기
		//--------------------
		cmd+= ' &nbsp;<img src="/img/icon/control_play_blue.png" class="iconb" alt="" /> <a href="javascript:void(0)" onclick="mapcmd(\'rotate\',\''+r.overlay_id+'\')">'+array_lang['916']+'</a>'; // Google Earth Tour
	}
	if(r.type == 'polyline' || r.type == 'roadline') {
		//--------------------
		// 구글 어스 드라이브
		//--------------------
		cmd+= ' &nbsp;<img src="/img/icon/car.png" class="iconb" alt="" /> <a href="javascript:void(0)" onclick="mapcmd(\'drive\',\''+r.overlay_id+'\')">'+array_lang['928']+'</a>'; // Google Earth Tour
	}
	var icon = get_icon_html(r,overlay);
	var name = '<a href="javascript:void(0)" onclick="overlay_click(\''+r.overlay_id+'\')" class="overlay_name">'+r.name+'</a>';
	var grpname = r.grpname ? '<span class="overlay_grpname">&nbsp;'+r.grpname+'&nbsp;</span>' : '';
	var date = r.date ? '<span class="overlay_date">'+r.date+'</span>' : '';
	var time = r.time ? '<span class="overlay_time">'+r.time+'</span>' : '';
	var dimlen = r.dimlen ? '<span class="overlay_dimlen">'+r.dimlen+'</span>' : '';
	var elevation = (r.elevation_meter && r.elevation_feet) ? '<div class="overlay_elevation">'+elevation2word(r.elevation_meter,r.elevation_feet)+'</div>' : '';

	var title = grpname+' '+date+' '+time+' '+name;
	if(list_mode == 'group') title = date+' '+time+' '+name;
	else if(list_mode == 'date') title = grpname+' '+name;
	title += ' '+dimlen+' '+cmd;

	var address = '';
	if(hide_address == '') {
		address = get_address(r);
		if(address != '') address = '<div class="overlay_address">'+address+'</div>'
	}
	var note_style = (list_mode == 'date') ? 'overlay_item_note_day' : 'overlay_item_note_list';
	var note = r.note ? '<div id="note_'+r.overlay_id+'" class="'+note_style+'">'+r.note+'</div>' : '';

	if(STATIC_MAP_AUTO_LOAD && r.type == 'marker') {
		var map_url1 = get_gmap_url(r.lat,r.lng,static_roadmap_zoom,null,'midblue',STATIC_MAP_WIDTH_ROADMAP,STATIC_MAP_HEIGHT);
		var map_url2 = get_gmap_url(r.lat,r.lng,static_hybrid_zoom,'satellite','midred',STATIC_MAP_WIDTH_SATELLITE,STATIC_MAP_HEIGHT);
		var s = ''+
			'<img src="'+map_url1+'" onclick="gmp(this)" width="'+STATIC_MAP_WIDTH_ROADMAP+'" height="'+STATIC_MAP_HEIGHT+'" class="img_static_roadmap" title="'+array_lang['458']+'" alt="'+array_lang['458']+'" />'+
			'<img src="'+map_url2+'" onclick="gmp(this)" width="'+STATIC_MAP_WIDTH_SATELLITE+'" height="'+STATIC_MAP_HEIGHT+'" class="img_static_satellite " title="'+array_lang['458']+'" alt="'+array_lang['458']+'" />';

		static_map_array[static_map_total] = {overlay_id:r.overlay_id,html:s};
		static_map_total++;
	}
	var div = document.createElement('div');
	div.id = 'overlay_'+r.overlay_id;
	div.className = 'overlay_item_container';

	var icon_td_width = 'width=40';
	if(r.icon_width) if(r.icon_width > 40) icon_td_width = '';

	var s = '<table border="0" cellpadding="0" cellspacing="0" class="overlay_header_container"><tr>';
	if(list_mode == 'date') s+= '<td width="35" valign="top"><div class="mt5">'+time+'</div></td>';
	s+= '<td align="center" valign="top" '+icon_td_width+'>'+icon+'</td><td width="5">&nbsp;</td>'+
		'<td>'+title+address+elevation+
		'<div id="weather_'+r.overlay_id+'" class="weather_container"></div>'+
		'<div id="streetview_'+r.overlay_id+'" class="streetview_container"></div>'+
		'<div id="staticmap_'+r.overlay_id+'" class="staticmap_container"></div>'+
		'</td></tr></table>'+
		'<div class="web_search_container">'+
			'<div class="web_search_header"><img src="../img/map_close.gif" class="iconb" alt="" /> <a href="javascript:void(0)" onclick="web_search(this,\''+r.overlay_id+'\')" class="blue u">Close</a></div>'+
			'<div id="web_search_'+r.overlay_id+'" class="web_search_canvas"></div>'+
		'</div>';

	var photo_container_style = (list_mode == 'date') ? 'photo_container_day' : 'photo_container_list';
	s+= note+'<div id="photo_container_'+r.overlay_id+'" class="'+photo_container_style+'"></div>';
	div.innerHTML = s;

	var navigation_title = '<div class="navigation_item" onclick="overlay_click(\''+r.overlay_id+'\')">'; //+icon;
	if(r.date) {
		if(list_mode != 'date') navigation_title+= '<span class="fssm blue">'+r.date+'</span> ';
	}
	if(r.time) navigation_title+= '<span class="fssm green">'+r.time+'</span> ';
	if(r.subname) navigation_title+= r.subname+'.';
	navigation_title+= r.name;
	navigation_title+= '</div>';

	if(group_bd) {
		group_bd.appendChild(div);
		var bd = document.getElementById('navigation_group_bd_'+group_id);
		if(bd) bd.innerHTML += navigation_title;
	}
	else {
		document.getElementById('overlay_list').appendChild(div);
		document.getElementById('navigation').innerHTML += navigation_title;
	}
	if(r.show_streetview) show_streetview(r.overlay_id,r.svlat,r.svlng,r.svzoom,r.yaw,r.pitch,r.panoid);
}
function group_header_toggle_click(obj,group_id) {
	$('#group_bd_'+group_id).slideToggle();
	var img = $(obj).children('img');
	var src = (img.attr('src').indexOf('minus') > -1) ? '/img/icon/plus.gif' : '/img/icon/minus.gif';
	img.attr('src',src);
}
function navigation_hd_toggle_click(group_id) {
	$('#navigation_group_bd_'+group_id).slideToggle();
	var img = document.getElementById('img_navigation_group_toggle_'+group_id);
	img.src = (img.src.indexOf('minus') > -1) ? '/img/icon/plus.gif' : '/img/icon/minus.gif';
}
function navigation_hd_checkbox_click(chk,group_id) {
	var val = chk.value;
	for(var i in overlay_array) {
		if(overlay_array[i].toggler == val) {
			if(chk.checked) {
				overlay_array[i].show();
				if(overlay_array[i].line) overlay_array[i].line.show();
			}
			else {
				overlay_array[i].hide();
				if(overlay_array[i].line) overlay_array[i].line.hide();
			}
		}
	}
}
function toggle_embed_preview() {
	$('#embed_preview_container').slideToggle();
}
function fullscreen() {
	var width = screen.availWidth;
	var height = screen.availHeight;
	var left = 0;
	var top = 0;
	var win = window.open('/map/fullscreen.php?map_id='+map_id, 'fullscreen', 'toolbar=no,menubar=no,scrollbars=yes,resizable=yes,width='+width+',height='+height+',left='+left+',top='+top);
	win.focus();
	return win;
}
function load_overlay() {
	if(map_id != '') {
		$.getJSON('/com/json.php?txid='+get_timestamp()+'&q=overlay&map_id='+map_id+'&list_mode='+list_mode, function(json) {
			overlay_json = json;
			var sel = document.getElementById('overlay_selector');
			var photo_size = [];
			var k = 0;
			if(json.overlays) {
				$.each(json.overlays, function(i,r) {
					photo_size[r.overlay_id] = r.photo_size;
					if(sel) if(r.hide_on_list == '') sel.options.add(new Option(html_decode(r.name),r.overlay_id));
					if(r.elevation_meter && r.elevation_meter != '0.00') {
						array_elevation_meter[k] = {title:r.name,elevation:r.elevation_meter};
						//array_elevation_feet[k] = {title:r.name,elevation:r.elevation_feet};
						k++;
					}
					render_overlay(r);
				});
				if(bounds && !bounds.isEmpty()) map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));
				center_latlng = map.getCenter();
				center_zoom = map.getZoom();

				if(use_cluster == 1) {
					cluster = new MarkerClusterer(map, markers);
				}
				else {
					if(markers.length > 0) {
						mgr = new MarkerManager(map);
						mgr.addMarkers(markers,0,19);
						mgr.refresh();
					}
				}
				if(STATIC_MAP_AUTO_LOAD) load_static_map();
			}
			//create_meta_link_image();

			if(document.getElementById('folder_cmd')) document.getElementById('folder_cmd').style.display = 'inline';
			if(document.getElementById('embed_textarea')) document.getElementById('embed_textarea').value = document.getElementById('embed_preview').innerHTML;
			document.getElementById('map_toolbar').style.display = 'block';

			page_loaded = true;

			if(json.photos) {
				var style = (list_mode != '') ? 'style="margin-left:40px;"' : '';
				$.each(json.photos, function(i,r) {
					var div = document.getElementById('photo_container_'+r.data_id);
					if(div) {
						var size = photo_size[r.data_id];
						var s = '';
						if(size == 'md') {
							s = '<br /><div '+style+'><img src="'+r.md+'" onclick="pho(this,\''+r.lg+'\',\''+r.org+'\')" class="img_md pointer mr10 mb10" align="left" alt="" />';
							if(r.note) s+= r.note;
							s+= '<div class="clear"></div></div>';
						}
						else if(size == 'lg') {
							s = '<br /><div '+style+'><img src="'+r.lg+'" onclick="pho(this,\''+r.lg+'\',\''+r.org+'\')" class="img_md pointer" alt="" /></div>';
							if(r.note) s+= '<div class="mt5">'+r.note+'</div>';
						}
						else {
							s = '<div id="overlay_photo_'+r.photo_id+'" class="photo_item" '+style+'>'+
							'<img src="'+r.sm+'" onclick="pho(this,\''+r.lg+'\',\''+r.org+'\')" class="pointer" alt="" /></div>';
						}
						div.innerHTML += s;
					}
				});
				var arr = [];
				$.each(json.photos, function(i,r) {
					var id = r.data_id;
					if(!arr[id]) document.getElementById('photo_container_'+id).innerHTML += '<div class="clear"></div><br />';
					arr[id] = id;
				});
			}
			show_comment();
		});
	}
}