//<![CDATA[

function setSceneMap( id, lat, lng, title, uid, user_uid, user_name, zoom ) {

	if (GBrowserIsCompatible()) {

		var map = new GMap2(document.getElementById(id));

		map.setCenter(new GLatLng(lat,lng), zoom);

		map.addControl(new GSmallMapControl());
		map.addMapType(G_PHYSICAL_MAP);

		map.enableDoubleClickZoom();

		icon = createMarkerIcon("red");
		marker = createMarker( map, lat, lng, title, uid, user_uid, user_name, icon  );
	}

	return map;
}

function createMarker( map, lat, lng, title, uid, user_uid, user_name, icon )
{
    var point = new GLatLng(lat, lng);
    var option = new Object();
    option.title = title;
    option.icon = icon;
    var marker = new GMarker(point, option);
    map.addOverlay(marker);

    if( title != null )
    {
	    GEvent.addListener( marker, 'click', function() {
	    	openWindow( marker, title, uid, user_uid, user_name )
	        });
    }

    return marker;
}

function openWindow( marker, title, uid, user_uid, user_name ) {

	return marker.openInfoWindowHtml(

			"<div class='mapinfo'>"+
			"<a href='"+webroot+"scenes/view/"+uid+"'>" +
			"<img src='"+webroot+"files/users/"+user_uid+"/"+uid+"s.jpg'></a><br/>" +
			"<a href='"+webroot+"scenes/view/"+uid+"'>" + title+"</a><br/>" +
			"撮影者：<a href='"+webroot+"users/view/"+uid+"'>"+user_name+"</a></div>"

	  );
}

function createMarkerIcon( type ) {

	var icon = new GIcon();
	icon.image = webroot + "img/mm_20_" + type + ".png";
	icon.shadow = webroot + "img/mm_20_shadow.png";
	icon.iconSize=new GSize(12,20);
	icon.shadowSize=new GSize(22,20);
	icon.iconAnchor=new GPoint(6,20);
	icon.infoWindowAnchor=new GPoint(6,0);

	return icon;
}

function setConfirmSceneMap( id, lat, lng, zoom ) {

	if (GBrowserIsCompatible()) {

		var map = new GMap2(document.getElementById(id));

		map.setCenter(new GLatLng(lat,lng), zoom);

		map.setMapType(G_NORMAL_MAP );
		map.addControl(new GLargeMapControl());
		map.addControl(new GOverviewMapControl());
		map.addControl(new GMapTypeControl());

		map.addMapType(G_PHYSICAL_MAP)

		map.enableDoubleClickZoom();

	    var point = new GLatLng(lat, lng);
	    var marker = new GMarker(point);
	    map.addOverlay(marker);
	}
	return map;
}

function setEditSceneMap( id, lat_id, lng_id, zoom ) {

	if (GBrowserIsCompatible()) {

		var map = new GMap2(document.getElementById(id));

		var lng = 139.15;
		var lat = 36.033;

		if( document.getElementById(lat_id).value != "" &&
			document.getElementById(lng_id).value != "" )
		{
			lng = document.getElementById(lng_id).value;
			lat = document.getElementById(lat_id).value;
		}

		map.setCenter(new GLatLng(lat,lng), zoom);

	    document.getElementById(lng_id).value = lng;
	    document.getElementById(lat_id).value = lat;

		map.setMapType(G_NORMAL_MAP );
		map.addMapType(G_PHYSICAL_MAP)
		map.addControl(new GLargeMapControl());
		map.addControl(new GOverviewMapControl());
		map.addControl(new GMapTypeControl());
		map.enableDoubleClickZoom();

		var w = document.getElementById(id).clientWidth;
		var h = document.getElementById(id).clientHeight;

		var imageUrl = webroot + "img/target.png";
		var screenXY = new GScreenPoint(w/2-25, h/2-25);
		var overlayXY = new GScreenPoint(0, 0);
		var sz = new GScreenSize(50, 50);
		var overlay = new GScreenOverlay(imageUrl, screenXY, overlayXY, sz);

		map.addOverlay(overlay);

	    GEvent.addListener(map, 'move', function() {
	    	var xy = map.getCenter();
	        document.getElementById(lng_id).value = xy.lng();
	        document.getElementById(lat_id).value = xy.lat();
		    });
	}
	return map;
}

var mainMap;
var mainMapRequest;
var mainMapMarkers = new Array();

function setMainMap( id, lat, lng, zoom )
{
	if (GBrowserIsCompatible())
	{
		var map = new GMap2(document.getElementById(id));

		map.setCenter(new GLatLng(lat,lng), zoom);

		map.addMapType(G_PHYSICAL_MAP)
		map.setMapType(G_SATELLITE_MAP );
		map.addControl(new GLargeMapControl());
		map.addControl(new GOverviewMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());

		map.enableDoubleClickZoom();

		mainMap = map;
		mainMapRequest = GXmlHttp.create();

		GEvent.addListener(mainMap, 'zoomend', onZoom );
		GEvent.addListener(mainMap, 'moveend', onMoveEnd );

		requestMapXml( lat, lng, zoom, 100 );

	}
}


function onZoom(oldZoomLevel, newZoomLevel) {
	var xy = mainMap.getCenter();
	var zoom = mainMap.getZoom();
	requestMapXml( xy.lat(), xy.lng(), zoom, 100 );
}

function onMoveEnd() {
	var xy = mainMap.getCenter();
	var zoom = mainMap.getZoom();

	requestMapXml( xy.lat(), xy.lng(), zoom, 100 );
}

function requestMapXml( lat, lng, zoom, max ) {

	var url = webroot+ 'scenes/mapxml?lat=' + lat + '&lng=' + lng + '&zoom=' +zoom + '&max=' + max;
	mainMapRequest.open("GET", url , true );

//	window.open(webroot+ '/scenes/mapxml?lat=' + lat + '&lng=' + lng + '&zoom=' +zoom + '&max=' + max);

	mainMapRequest.onreadystatechange  = function()
	{
		if (mainMapRequest.readyState == 4)
		{
			var xmlDoc = mainMapRequest.responseXML;
			var scenes = xmlDoc.documentElement.getElementsByTagName("scene");

		//	mainMap.clearOverlays();

			var len = scenes.length;
			icon = createMarkerIcon("red");

			var html = '<div class="panorama_list">';

			for (i = 0; i < len; i++)
			{
				var uid = scenes[i].getAttribute("uid");
				var title = scenes[i].getAttribute("title");
				var y  = parseFloat(scenes[i].getAttribute("y"));
				var x  = parseFloat(scenes[i].getAttribute("x"));
				var user_uid = scenes[i].getAttribute("user_uid");
				var user_name = scenes[i].getAttribute("user_name");

				if( i < 12 ) {

					if( i%3 == 0 ) html += "<div>";

					html += 	'<div class="panorama_thumb"><div class="image">' + "<a href='"+webroot+"scenes/view/"+uid+"'>" +
								"<img src='"+webroot+"files/users/"+user_uid+"/"+uid+"s.jpg'></a></div>" +
								"<div class='title'><a href='"+webroot+"scenes/view/"+uid+"'>" + title+"</a></div>" +
								"<div class='caption'>撮影者：<a href='"+webroot+"users/view/"+uid+"'>"+user_name+"</a></div></div>";

					if( i%3 == 2 ) html += "<div class='clearer'></div></div>";
				}

				if( checkMarker(uid) == null )
				{
					marker = createMarker( mainMap, y, x, title, uid, user_uid, user_name, icon);
					mainMapMarkers.push( [uid,marker] );
				}
			}
			if( i<12 && i%3 != 2 ) html += "<div class='clearer'></div></div>";

			html += "<div class='clearer'></div></div>";
			document.getElementById("panolist").innerHTML = html;
		}
	}
	mainMapRequest.send(null);
}

function checkMarker( uid )
{
	var n = mainMapMarkers.length;
	for( var i=0; i<n; i++ ) {
		if( mainMapMarkers[i][0] === uid ) return mainMapMarkers[i];
	}

	return null;
}


//]]>

