var gmap2 = new Object();

function gmap2Load(post_id, topic_id, uid, page_odr, limit_num){
	//Google Maps利用可能
	if( GBrowserIsCompatible() ){
		gmap2 = ginit(39.15615483953391+0.45, 108.46183776855469+0.1, 9);
		
		initMarker(post_id, topic_id, uid, page_odr, limit_num);
		
		//クリックしたときの座標をアラート表示
		//GEvent.addListener(gmap2, 'click', function(overlay, point){ alert(point); });
	}
	return gmap2;
}
function initMarker(post_id, topic_id, uid, page_odr, limit_num){
	attachMarkers(post_id, topic_id, uid, page_odr, limit_num);
	
	firstMarker = gmap2CreateMarker(
		(gmap2.getCenter()).lat()-0.45,
		(gmap2.getCenter()).lng()-0.3,
		{
			"title":"苗木を植える",
			"draggable":true,
			"bouncy":true
		}
	);
	
	var info01_icon = gmap2CreateIcon(
		"/gmap2/marker/window01/yellow.png",
		"/gmap2/marker/shadow/window01_shadow.png",
		28, 28, 40, 28, 9, 26, 13, 0
	);
	infoMarker01 = gmap2CreateMarker(
		39.15615483953391, 108.46183776855469,
		{
			"icon": info01_icon,
			"title": "[2008年10月25日・26日]坂本さんによる植樹の様子"
		}
	);
	GEvent.addListener(infoMarker01, 'click', function(){
		openInfoWindowInfoMarker02();
	});
	gmap2.addOverlay(infoMarker01);
	
	GEvent.addListener(firstMarker, 'click', function(){
		openInfoWindowFirstMarker(1);
	});
	GEvent.addListener(firstMarker, 'dragend', function(){
		openInfoWindowFirstMarker(1);
	});
	if( post_id == '' && topic_id == '' && uid == '' ){
		gmap2.addOverlay(firstMarker);
		openInfoWindowInfoMarker02();
	}
}
function openInfoWindowInfoMarker01(){
	infoMarker01.openInfoWindowHtml(
		'<img src="/green/map/themes/green01/images/top_info_forest01.jpg" width="557" height="285" border="0" usemap="#Forest01Map" /><map name="Forest01Map"><area shape="rect" coords="220,192,418,240" href="javascript:void(0);" onclick="openForest0102();" /><area shape="rect" coords="12,192,210,240" href="javascript:void(0);" onclick="openForest0101();" /></map>'
	);
}
function openInfoWindowInfoMarker02(){
	infoMarker01.openInfoWindowHtml(
		'<img src="/green/map/themes/green01/images/top_info_forest02.jpg" width="557" height="285" border="0" usemap="#Forest02Map" /><map name="Forest02Map"><area shape="rect" coords="12,192,418,240" href="javascript:void(0);" onclick="openForest02();" /></map>'
	);
}

function ginit(centerLatitudeNum, centerLongitudeNum, zoomLevelNum){
	//Mapをロード
	var gmap2 = gmap2Init('map', centerLatitudeNum, centerLongitudeNum, zoomLevelNum);
	gmap2.disableDoubleClickZoom();
	
	//地図タイプを初期化
	gmap2.getMapTypes().length = 0;
	gmap2.addMapType(G_HYBRID_MAP);
	gmap2.addMapType(G_SATELLITE_MAP);
	//gmap2.addMapType(G_SATELLITE_3D_MAP);
	//地図タイプをハイブリッド型に設定
	gmap2SetMapType(gmap2, 2);
	
	//Mapコントローラを描画
	gmap2AddControl(gmap2, "mapL");
	gmap2AddControl(gmap2, "scale");
	gmap2AddControl(gmap2, "mapType");
	gmap2AddControl(gmap2, "overview");
	
	//砂漠の境界線を描画
	drawDesertBorder(gmap2);
	
	return gmap2;
}
function drawDesertBorder(gmap2){
	var polyline_border = [];
	polyline_border.push(new GLatLng(37.61922073655955, 99.61279296875));
	polyline_border.push(new GLatLng(41.590796851056005, 99.61279296875));
	polyline_border.push(new GLatLng(41.590796851056005, 111.8408203125));
	polyline_border.push(new GLatLng(37.61922073655955, 111.8408203125));
	polyline_border.push(new GLatLng(37.61922073655955, 99.61279296875));
	
	gmap2.addOverlay(new GPolygon(polyline_border, '#FFFFFF', 8, 0.2));
}

function showFirstMarker(tabSelected){
	var center = gmap2.getCenter();
	firstMarker.setPoint(
		new GLatLng( center.lat()-0.2, center.lng() )
	);
	openInfoWindowFirstMarker(tabSelected);
}
function openInfoWindowFirstMarker(tabSelected){
	var bound = new GLatLngBounds(
		new GLatLng(37.61922073655955, 99.61279296875),
		new GLatLng(41.590796851056005, 111.8408203125)
	);
	var mpoint = firstMarker.getPoint();
	if( bound.contains(mpoint) ){
		var lat = firstMarker.getPoint().lat();
		var lng = firstMarker.getPoint().lng();
		
		var html1 = '<img src="/green/map/themes/green01/images/top_intro2.gif" width="557" height="285" border="0" usemap="#IntroMap" /><map name="IntroMap"><area shape="rect" coords="3,209,302,270" href="javascript:void(0);" onclick="javascript:openInfoGoal02();" /><area shape="rect" coords="345,181,518,271" href="javascript:void(0);" onclick="javascript:openInfoWindowFirstMarker(1);" /></map>';
		
		var html2 = '<div style="text-align:center;width:557px;height:262px;padding:15px 0px;background:url(/green/map/themes/green01/images/map_plant_bg.jpg) no-repeat;"><p style="text-align:center;margin-bottom:15px;"><img src="/green/map/themes/green01/images/map_plant_09.png" width="298" height="21" border="0" class="iepng" /></p>';
		if( loginuser_uid != '' ){
			html2 = html2 + '<p style="text-align:center;padding-bottom:8px;font-size:14px;color:#333333;">こんにちは ' + loginuser_uname + 'さん</p><p style="margin:0 145px;width:250px;padding:12px;border-style:solid;border-width:1px;border-color:#eeeeee;background-color:#FFFFFF;"><span style="font-size:16px;font-weight:bold;"><a href="http://www.tv-osaka.co.jp/green/map/modules/d3forum/index.php?page=newtopic&forum_id=1&glat=' + lat + '&glng=' + lng + '">ここに新しい苗木を植える</a></span></p><div style="padding:10px;"></div><ul style="margin:0 170px;border-style:solid;border-width:1px;border-color:#eeeeee;background-color:#ffffff;width:200px;padding:8px 12px;font-size:12px;color:#666666;text-align:center"><li><a href="http://www.tv-osaka.co.jp/green/map/user.php#topiclist">これまでに植えた苗木をチェックする</a></li><li><a href="http://www.tv-osaka.co.jp/green/map/edituser.php">ユーザ情報を変更する</a></li><li><a href="http://www.tv-osaka.co.jp/green/map/user.php?op=logout">ログアウトする</a></li></ul>';
		}else{
			html2 = html2 + '<p style="width:250px;padding:12px;border-style:solid;border-width:1px;border-color:#eeeeee;margin:0 145px;background-color:#FFFFFF;"><span style="font-size:16px;font-weight:bold;"><a href="http://www.tv-osaka.co.jp/green/map/user.php?xoops_redirect=%2Fgreen%2Fmap%2Fmodules%2Fd3forum%2Findex.php%3Fpage%3Dnewtopic%26forum_id%3D1%26glat%3D' + lat + '%26glng%3D' + lng + '">ログインして植える</a></span><br /><span style="font-size:14px;">※<a href="http://www.tv-osaka.co.jp/green/map/register.php">ユーザ登録（無料）</a>をすると、植えた苗木の成長を確認出来たり、ブログパーツをダウンロードすることが出来ます。</span></p><br /><p style="width:250px;padding:12px;border-style:solid;border-width:1px;border-color:#eeeeee;font-weight:bold;color:#999999;margin:0 145px;background-color:#FFFFFF;"><span style="font-size:16px;"><a href="http://www.tv-osaka.co.jp/green/map/modules/d3forum/index.php?page=newtopic&forum_id=1&glat=&glat=' + lat + '&glng=' + lng + '">ゲストとして植える</a></span></p>';
		}
		html2 = html2 + '<p style="margin:0px;width:557px;font-size:12px;color:#FFFFFF;padding-top:15px;">※<span style="font-weight:bold;">苗木を植える場所を変更することが出来ます。</span><br />このフキダシの下にある赤いマーカーをマウスでドラッグし、<br />植えたい場所まで移動させてください。</p></div>';
		
		var infoTabs = [
			new GInfoWindowTab('はじめに', html1),
			new GInfoWindowTab('苗木を植える', html2)
		];
		firstMarker.openInfoWindowTabsHtml(infoTabs, {selectedTab:tabSelected});
	}else{
		var html = '<div style="font-weight:bold;font-size:14px;color:#FF0000;text-align:center;">※この場所に苗木を植えることはできません。</div><div style="padding:10px;font-color:#666666;">マーカーをドラッグして白い枠線の内側まで移動させるか、<br />白い枠内まで地図の中心を移動させ、上部メニューの「苗木を植える」リンクをクリックしてください。</div>';
		firstMarker.openInfoWindowHtml(html);
	}
}

//マーカーを設置
function attachMarkers(post_id, topic_id, uid, page_odr, limit_num){
	var request = GXmlHttp.create();
	var pathXml = "http://www.tv-osaka.co.jp/green/map/modules/d3forum/index.php?page=xml&forum_id=1";
	
	if( topic_id != '' ){
		pathXml = pathXml + "&topic_id=" + topic_id;
	}
	if( uid != '' ){
		pathXml = pathXml + "&uid=" + uid;
	}
	if( page_odr != '' ){
		pathXml = pathXml + "&page_odr=" + page_odr;
	}
	if( limit_num != '' ){
		pathXml = pathXml + "&limit_num=" + limit_num;
	}
	
	request.open('GET', pathXml, true);
	request.onreadystatechange = function(){
		if(request.readyState == 4){
			var xmlDoc = request.responseXML;
			var entries = xmlDoc.documentElement.getElementsByTagName("post");
			var mManager = new GMarkerManager(gmap2);
			var markers = [];
			entryInfo = [];
			postID = [];
			commentID = [];
			for(var i=0; i<entries.length; i++){
				var id = parseInt(entries[i].getAttribute("id"));
				var title = GXml.value(entries[i].getElementsByTagName("title")[0]);
				var content = GXml.value(entries[i].getElementsByTagName("content")[0]);
				var pubDate = parseInt(GXml.value(entries[i].getElementsByTagName("pubDate")[0]));
				var pid = parseInt(GXml.value(entries[i].getElementsByTagName("pid")[0]));
				var uid_each = parseInt(GXml.value(entries[i].getElementsByTagName("uid")[0]));
				var guest_name = GXml.value(entries[i].getElementsByTagName("guest_name")[0]);
				var approval = parseInt(GXml.value(entries[i].getElementsByTagName("approval")[0]));
				if( pid == 0 ){
					var topic_id_each = parseInt(GXml.value(entries[i].getElementsByTagName("topic_id")[0]));
					var topic_views = parseInt(GXml.value(entries[i].getElementsByTagName("topic_views")[0]));
					var topic_posts_count = parseInt(GXml.value(entries[i].getElementsByTagName("topic_posts_count")[0]));
					var latnum = parseFloat(GXml.value(entries[i].getElementsByTagName("lat")[0]));
					var longnum = parseFloat(GXml.value(entries[i].getElementsByTagName("long")[0]));
					
					var marker = createMarker(latnum, longnum, id, title, topic_views);
					markers.push(marker);
					
					postID[topic_id_each] = id;
				}else{
					var topic_id_each = '';
					var topic_views = '';
					var topic_posts_count = '';
					var latnum = '';
					var longnum = '';
					var marker = '';
					
					if( commentID[pid] == undefined ){
						commentID[pid] = [];
					}
					commentID[pid].push(id);
				}
				entryInfo[id] = {
					"marker": marker,
					"title": title,
					"content": content,
					"pubDate": pubDate,
					"topic_views": topic_views,
					"topic_posts_count": topic_posts_count,
					"topic_id": topic_id_each,
					"pid": pid,
					"uid": uid_each,
					"guest_name": guest_name,
					"approval": approval
				};
			}
			mManager.addMarkers(markers, 5, 17);
			mManager.refresh();
			
			if( post_id != '' ){
				gmap2.setZoom(12);
				focusMarker(parseInt(post_id), 0, true, '');
			}else if( topic_id != '' ){
				gmap2.setZoom(12);
				focusMarker(0, parseInt(topic_id), true, '');
			}else if( uid != '' ){
				gmap2.setZoom(7);
			}
		}
	}
	request.send(null);
}
function createMarker(latnum, longnum, id, title, topic_views){
	var treeLevel = getTreeLevel(topic_views);
	if( treeLevel == 0 ){
		var markerIcon = '/gmap2/marker/tree/tree01a.png';
	}else if( treeLevel == 1 ){
		var markerIcon = '/gmap2/marker/tree/tree01b.png';
	}else if( treeLevel == 2 ){
		var markerIcon = '/gmap2/marker/tree/tree01c.png';
	}else if( treeLevel == 3 ){
		var markerIcon = '/gmap2/marker/tree/tree01d.png';
	}else if( treeLevel == 4 ){
		var markerIcon = '/gmap2/marker/tree/tree01e.png';
	}
	var icon = gmap2CreateIcon(
		markerIcon,
		"/gmap2/marker/tree/tree01_shadow.png",
		21,30, 37,30, 10,27, 10,1
	);
	var marker = gmap2CreateMarker(latnum, longnum, {"icon":icon,"title":title});
	
	GEvent.addListener(marker, 'click', function(){
		focusMarker(id, 0, false, '');
	});
	
	return marker;
}
function focusMarker(post_id, topic_id, pan, tabSelected){
	var id;
	var pid;
	if( postID[topic_id] != undefined ){
		id = postID[topic_id];
		pid = 0;
	}else{
		if( entryInfo[post_id]['pid'] == 0 ){
			id = post_id;
			pid = 0;
		}else{
			id = entryInfo[post_id]['pid'];
			pid = id;
		}
	}
	var info = entryInfo[id];
	
	var markerIcon = info['marker'].getIcon().image;
	
	var commentLinkHtml = '';
	if( info['approval'] == 1 ){
		commentLinkHtml = '<li><a href="http://www.tv-osaka.co.jp/green/map/modules/d3forum/index.php?page=reply&post_id=' +id+ '">この苗木にコメントを贈る</a></li>';
	}
	var bpartsHtml = '';
	var userLinkHtml = '';
	if( info['uid'] != 0 ){
		bpartsHtml = '<p style="padding:10px 0px;line-height:140%;">ブログパーツ設置用タグ[<a href="javascript:void(0);" onclick="focusMarker(' + id + ',0,false,2)">詳細</a>] <input type="text" size="25" value="&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot; src=&quot;http://www.tv-osaka.co.jp/green/blogparts01.php?id=' + id + '&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;" onclick="this.select();" /></p>';
		userLinkHtml = '<a href="http://www.tv-osaka.co.jp/green/map/userinfo.php?uid=' +info['uid']+ '">植えたユーザ</a>';
	}else{
		userLinkHtml = '<span style="font-size:80%;">ゲスト:</span> ' + info['guest_name'];
	}
	treeLevel = getTreeLevel(info['topic_views']);
	if( treeLevel == 0 ){
		var pathTreeImage = '/green/map/themes/green01/images/map_green01.png';
	}else if( treeLevel == 1 ){
		var pathTreeImage = '/green/map/themes/green01/images/map_green02.png';
	}else if( treeLevel == 2 ){
		var pathTreeImage = '/green/map/themes/green01/images/map_green03.png';
	}else if( treeLevel == 3 ){
		var pathTreeImage = '/green/map/themes/green01/images/map_green04.png';
	}else if( treeLevel == 4 ){
		var pathTreeImage = '/green/map/themes/green01/images/map_green05.png';
	}
	var treeImage = '<img src="'+pathTreeImage+'" width="406" height="381" class="iepng" />';
	
	var html1 = '<div style="position:relative;display:block;width:646px;height:324px;"><div style="width:240px;margin:0px;pading:10px;"><div style="float:right;padding:10px;">' + userLinkHtml + '</div><h2 style="background:url(' + markerIcon + ') no-repeat left center;" class="iepngfix">' + info['title'] + '</h2><div style="overflow:auto;width:210px;height:50px;padding:8px;border-style:dotted;border-width:1px;border-color:#AAAAAA;">' + info['content'] + '</div><p style="padding:10px 0px;line-height:140%;">' + dateFormat(info['pubDate']) + ' に植樹<br />この苗木のクリック数： <span style="font-weight:bold;" id="topic_views' + info['topic_id'] + '">' + info['topic_views'] + '</span><br />この苗木のコメント数： <span style="font-weight:bold;">' + info['topic_posts_count'] + '</span></p><ul style="padding:0px 0px 10px 0px;">' + commentLinkHtml + '<li><a href="mailto:?subject=%83e%83%8c%83r%91%e5%8d%e3%83N%83%8a%83b%83N%95%e5%8b%e0%207%82%cc%91%90%8c%b4%83L%83%83%83%93%83y%81%5b%83%93&body=http://www.tv-osaka.co.jp/green/map/modules/d3forum/index.php%3Fpost_id=' + id + '">友達にメールで教える</a></li></ul><div style="margin:0px;"><hr style="width:230px;color:#EFEFEF;" /></div>' + bpartsHtml + '</div><p id="thankyou" style="color:#FF0000;font-size:11px;position:absolute;top:326px;left:240px;width:406px;text-align:center;"></p><div style="position:absolute;top:-56px;left:240px;">' + treeImage + '</div></div></div>';
	
	var infoTabs = [
		new GInfoWindowTab('苗木の状態', html1)
	];
	
	if( info['approval'] == '1' ){
		var html2 = '<div style="float:right;"><a href="http://www.tv-osaka.co.jp/green/map/modules/d3forum/index.php?page=reply&post_id=' + id + '">この苗木にコメントを贈る</a></div><h2 style="background:url(' + markerIcon + ') no-repeat left center;" class="iepngfix">コメント一覧</h2><div style="overflow:auto;width:95%;height:230px;padding:12px;border-style:dotted;border-width:1px;border-color:#A6C000;">';
		if( info['topic_posts_count'] > 0 ){
			for(var i=0; i<commentID[id].length; i++){
				var comment = entryInfo[commentID[id][i]];
				if( comment.uid != 0 ){
					var commentUserHtml = '<a href="http://www.tv-osaka.co.jp/green/map/userinfo.php?uid=' + comment.uid + '">コメントしたユーザ</a>';
				}else{
					var commentUserHtml = 'ゲスト: ' + comment.guest_name;
				}
				html2 = html2 + '<div style="float:right;padding-top:4px;padding-right:4px;">' + dateFormat(comment.pubDate) + '</div>' + '<p style="background-color:#EFEFEF;padding:4px;"><span style="font-weight:bold;">' + comment.title + '</span> - ' + commentUserHtml + '</p><p style="padding:4px 4px 8px;">' + comment.content + '</p>';
			}
		}else{
			html2 = html2 + 'コメントはまだありません。';
		}
		html2 = html2 + '</div>';
		infoTabs.push( new GInfoWindowTab('コメント(' + info['topic_posts_count'] + ')', html2) );
	}
	if( info['uid'] != '0' ){
		var html3 = '<p style="float:right;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="160" height="333" id="tvo_blogparts01" align="middle"><param name="allowScriptAccess" value="always" /><param name="movie" value="http://www.tv-osaka.co.jp/green/swf/blogparts01.swf" /><param name="quality" value="autohigh" /><param name="wmode" value="opaque" /><param name="bgcolor" value="#FFFFFF" /><param name="menu" value="false" /><param name="flashvars" value="id=' + id + '" /><embed src="http://www.tv-osaka.co.jp/green/swf/blogparts01.swf" quality="autohigh" wmode="opaque" bgcolor="#FFFFFF" flashvars="id=' + id + '" width="160" height="333" name="tvo_blogparts01" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object></p><div style="float:left;"><h2 style="background:url(' + markerIcon + ') no-repeat left center;" class="iepngfix">ブログパーツ</h2><p style="padding:15px;width:420px;">下記のタグをコピーして、ブログに貼り付けてください。<br /><span style="color:#999999;">お使いのブログやホームページの仕様によっては、動作しない場合があります。<br />あらかじめご了承ください。</span></p><p style="padding:20px;border-style:dotted;border-width:1px;border-color:#A6C000;margin:10px;width:350px;font-weight:bold;">ブログパーツ設置用タグ<br /><textarea name="textarea" cols="30" rows="3" wrap="VIRTUAL" onclick="this.select();">&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot; src=&quot;http://www.tv-osaka.co.jp/green/blogparts01.php?id=' + id + '&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;</textarea></p></div>';
		infoTabs.push( new GInfoWindowTab('ブログパーツ', html3) );
	}
	
	if( tabSelected == '' ){
		if( pid == 0 ){
			var tabSelected = 0;
		}else{
			var tabSelected = 1;
		}
	}
	
	if( pan == true ){
		gmap2.panTo(info['marker'].getPoint());
	}
	info['marker'].openInfoWindowTabsHtml(infoTabs, {selectedTab:tabSelected});
	
	GDownloadUrl('http://www.tv-osaka.co.jp/green/map/modules/d3forum/index.php?page=json&forum_id=1&count_up=1&topic_id=' + info['topic_id'], countUpAllClicks);
}
function countUpAllClicks(json){
	json = eval("("+json+")");
	if( json.isCount ){
		var all_clicks = parseInt(document.getElementById("all_clicks").innerHTML);
		var all_topics_count = parseInt(document.getElementById("all_topics_count").innerHTML);
		all_clicks = all_clicks + 1;
		document.getElementById("all_clicks").innerHTML = all_clicks;
		var click = parseInt(document.getElementById("topic_views"+json.id).innerHTML);
		document.getElementById("topic_views"+json.id).innerHTML = click + 1;
		entryInfo[postID[json.id]]['topic_views']++;
		
		document.getElementById("thankyou").innerHTML = "キャンペーンにご参加ありがとうございます。クリック数が1回加算されました。";
	}
}

function getTreeLevel(topic_views){
	if( topic_views < 10 ){
		return 0;
	}else if( topic_views < 40 ){
		return 1;
	}else if( topic_views < 200 ){
		return 2;
	}else if( topic_views < 1000 ){
		return 3;
	}else{
		return 4;
	}
}