var url_tabsearch = ROOT_URL+"map/images/tab_search.gif";
var url_tabsearch_active = ROOT_URL+"map/images/tab_search_active.gif";
var url_newcomment = ROOT_URL+"map/images/tab_newcomment.gif";
var url_newcomment_active = ROOT_URL+"map/images/tab_newcomment_active.gif";
var url_trackback = ROOT_URL+"map/images/tab_trackback.gif";
var url_trackback_active = ROOT_URL+"map/images/tab_trackback_active.gif";

function initialize() {
	if (navigator.appName=="Microsoft Internet Explorer" && navigator.userAgent.match(/Mac|PPC/)
		&& navigator.userAgent.indexOf('Opera') < 0) {
		document.location = "dontsupport.html";
	} else {
		var xmlhttp = new XMLHttpRequest();
		if (!xmlhttp) return;
		
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				var element = document.getElementById("result");
				element.innerHTML = xmlhttp.responseText;
				initializeMap();
			}
		}
		xmlhttp.open('GET', "gettopsearch.php", true);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.send("");
	}
}

function finalize() {
	var data = (cur_x-0.0000005).toFixed(6) + "_" + (cur_y-0.0000005).toFixed(6) + "_" + (cur_width-0.0000005).toFixed(6);
	setCookie("maplastview", data);
}

function clearSearchForm() {
	document.formSearch.keyword.value = '';
	document.formSearch.area[0].checked = true;
	document.formSearch.x.value = '0';
	document.formSearch.y.value = '0';
	document.formSearch.width.value = '1';
	document.formSearch.id.value = '';
	document.formSearch.name.value = '';
	document.formSearch.hasimage.checked = false;
	document.formSearch.mycomments.checked = false;
	document.formSearch.sort.options[0].selected = true;
}

function initializeMap() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		GEvent.addListener(map, "moveend", function() {
			var center = map.getCenter();
			var bounds = map.getBounds();
			cur_x = center.x;
			cur_y = center.y;
			cur_width = bounds.toSpan().x;
			updatePosition();
		});
		setTimeout("zoomInitial();", 1000);
		setTimeout("plotResultSymbol();", 1000);
	} else {
		alert("ご使用のブラウザが動作環境を満たしていない可能性があります。\nヘルプを参照してください。");
	}
}

function updatePosition() {
	var positionString = '経度 : ' + (cur_x-0.0000005).toFixed(6) + '　経度 : ' + (cur_y-0.0000005).toFixed(6) + '　マップ幅 : ' + (cur_width-0.0000005).toFixed(6);
	var target = document.getElementById('cur_position');
	target.innerHTML = positionString;
}

function plotResultSymbol() {
	var plotsymboldataElement = document.getElementById('plotsymboldata');
	var plottextstring = plotsymboldataElement.innerHTML;
	var plotstrings = plottextstring.split(";");
	icons = new Array(plotstrings.length);
	for (var i = plotstrings.length - 1; i >= 0; i--) {
		var plotparameters = plotstrings[i].split(",");
		plotSymbol(parseFloat(plotparameters[0]), parseFloat(plotparameters[1]), parseInt(plotparameters[2]), plotparameters[3]);
	}
}

function clearSearchResult() {
	clearSearchForm();
	var element = document.getElementById('result');
	element.innerHTML = "";
	clearSymbols();
}

function search() {
	searchparams = "page=" + document.formSearch.page.value;
	if (document.formSearch.area[1].checked) {
		searchparams += "&area=current";
		searchparams += "&x=" + (document.formSearch.x.value-0.00005).toFixed(4);
		searchparams += "&y=" + (document.formSearch.y.value-0.00005).toFixed(4);
		searchparams += "&width=" + (document.formSearch.width.value-0.00005).toFixed(4);
	}
	if (document.formSearch.hasimage.checked) {
		searchparams += "&hasimage=1";
	}
	if (document.formSearch.mycomments.checked) {
		searchparams += "&mycomments=1";
	}
	searchparams += "&sort=" + document.formSearch.sort.value;
	if (document.formSearch.id.value != "") {
		searchparams += "&id=" + document.formSearch.id.value;
	}
	if (document.formSearch.name.value != "") {
		searchparams += "&name=" + encodeURIComponent(document.formSearch.name.value);
	}
	if (document.formSearch.keyword.value != "") {
		searchparams += "&keyword=" + encodeURIComponent(document.formSearch.keyword.value);
	}
	
	document.location = ROOT_URL + "map/search.php?" + searchparams;
}

function searchNew() {
	document.formSearch.page.value = 1;
	document.formSearch.x.value = cur_x;
	document.formSearch.y.value = cur_y;
	document.formSearch.width.value = cur_width;
	search();
}

function searchPage(page) {
	document.formSearch.page.value = page;
	search();
}

function gotoItemBlock(id) {
	var targetBlock = document.getElementById(id.toString(10));
	var scrollY = 0;
	if (getBrowserType() == "IE") {
		scrollY = targetBlock.parentNode.offsetTop + targetBlock.offsetTop;
	} else {
		scrollY = targetBlock.offsetTop;
	}
	window.scrollTo(0,scrollY);
}

function gotoCommentForm() {
	document.formComment.x.value = cur_x;
	document.formComment.y.value = cur_y;
	document.formComment.width.value = cur_width;
	document.formComment.submit();
}

function createMYmap() {
	var searchparams = "sort=" + document.formSearch.sort.value;
	if (document.formSearch.area.value == "current") {
		searchparams += "&area=current";
		searchparams += "&x=" + cur_x;
		searchparams += "&y=" + cur_y;
		searchparams += "&width=" + cur_width;
	}
	if (document.formSearch.hasimage.checked) {
		searchparams += "&hasimage=1";
	}
	if (document.formSearch.mycomments.checked) {
		searchparams += "&mycomments=1";
	}
	if (document.formSearch.id.value != "") {
		searchparams += "&id=" + document.formSearch.id.value;
	}
	if (document.formSearch.name.value != "") {
		searchparams += "&name=" + encodeURIComponent(document.formSearch.name.value);
	}
	if (document.formSearch.keyword.value != "") {
		searchparams += "&keyword=" + encodeURIComponent(document.formSearch.keyword.value);
	}
	
	document.location = "../mymap/code/index.html?" + searchparams;
}

function changeTab(tab) {
	var searchElement = document.getElementById('search');
	var newcommentElement = document.getElementById('newcomment');
	var trackbackElement = document.getElementById('trackback');
	var detailsearchElement = document.getElementById("detailsearch");
	
	if (tab == "search") {
		document.tabsearch.src = url_tabsearch_active;
		document.tabnewcomment.src = url_newcomment;
		document.tabtrackback.src = url_trackback;
		searchElement.style.visibility = "visible";
		if (detailsearchElement.style.visibility == "visible") {
			searchElement.style.height = "240px";
		} else {
			searchElement.style.height = "100px";
		}
		newcommentElement.style.visibility = "hidden";
		newcommentElement.style.height = "1px";
		trackbackElement.style.visibility = "hidden";
		trackbackElement.style.height = "1px";
	} else if (tab == "newcomment") {
		document.tabsearch.src = url_tabsearch;
		document.tabnewcomment.src = url_newcomment_active;
		document.tabtrackback.src = url_trackback;
		searchElement.style.visibility = "hidden";
		searchElement.style.height = "1px";
		newcommentElement.style.visibility = "visible";
		newcommentElement.style.height = "100px";
		trackbackElement.style.visibility = "hidden";
		trackbackElement.style.height = "1px";
	} else if (tab == "trackback") {
		document.tabsearch.src = url_tabsearch;
		document.tabnewcomment.src = url_newcomment;
		document.tabtrackback.src = url_trackback_active;
		searchElement.style.visibility = "hidden";
		searchElement.style.height = "1px";
		newcommentElement.style.visibility = "hidden";
		newcommentElement.style.height = "1px";
		trackbackElement.style.visibility = "visible";
		trackbackElement.style.height = "220px";
	}
}

function switchDetailSearch(){
	var searchElement = document.getElementById('search');
	var detailsearchElement = document.getElementById("detailsearch");
	if (detailsearchElement.style.visibility == "visible") {
		document.treebutton_detailsearch.src=ROOT_URL+"images/tree_plus.gif";
		detailsearchElement.style.height = "5px";
		detailsearchElement.style.visibility = "hidden";
		searchElement.style.height = "100px";
	} else {
		document.treebutton_detailsearch.src=ROOT_URL+"images/tree_minus.gif";
		detailsearchElement.style.height = "140px";
		detailsearchElement.style.visibility = "visible";
		searchElement.style.height = "240px";
	}
}

function updateTrackbackURL() {
	var trackbackurlString = ROOT_URL + "map/comments/tb.cgi/";
	trackbackurlString += "x=" + (cur_x-0.00005).toFixed(4);
	trackbackurlString += "&y=" + (cur_y-0.00005).toFixed(4);
	trackbackurlString += "&width=" + (cur_width-0.00005).toFixed(4);
	if (document.formTrackback.tag.value != "") {
		trackbackurlString += "&tag=" + encodeURIComponent(document.formTrackback.tag.value);
	}
	document.formTrackback.trackbackURL.value = trackbackurlString;
}

function showCommentsComments(id) {
	readContents(ROOT_URL + "map/commentscomments/getcomments.php?id=" + id, "commentscomments" + id);
}

function showCommentsTrackbacks(id) {
	readContents(ROOT_URL + "map/commentscomments/gettrackbacks.php?id=" + id, "commentscomments" + id);
}

function switch_CommentsComments(id){
	target = document.getElementById("commentscomments" + id);
	if (document["treebutton_comments" + id].src == ROOT_URL+"images/tree_minus.gif") {
		document["treebutton_comments" + id].src = ROOT_URL+"images/tree_plus.gif";
		document["treebutton_trackbacks" + id].src = ROOT_URL+"images/tree_plus.gif";
		target.innerHTML = "";
		target.style.height = "5px";
	} else {
		document["treebutton_comments" + id].src = ROOT_URL+"images/tree_minus.gif";
		document["treebutton_trackbacks" + id].src = ROOT_URL+"images/tree_plus.gif";
		target.style.height = "100%";
		target.innerHTML = "コメントデータロード中...";
		showCommentsComments(id);
	}
}

function switch_CommentsTrackbacks(id){
	target = document.getElementById("commentscomments" + id);
	if (document["treebutton_trackbacks" + id].src == ROOT_URL+"images/tree_minus.gif") {
		document["treebutton_trackbacks" + id].src = ROOT_URL+"images/tree_plus.gif";
		document["treebutton_comments" + id].src = ROOT_URL+"images/tree_plus.gif";
		target.innerHTML = "";
		target.style.height = "5px";
	} else {
		document["treebutton_trackbacks" + id].src = ROOT_URL+"images/tree_minus.gif";
		document["treebutton_comments" + id].src = ROOT_URL+"images/tree_plus.gif";
		target.style.height = "100%";
		target.innerHTML = "トラクバックデータロード中...";
		showCommentsTrackbacks(id);
	}
}

function addCommentsComment(id) {
	var formName = "formAddComment" + id;
	var title = document[formName].title.value;
	var excerpt = document[formName].excerpt.value;
	var url = document[formName].url.value;
	var name = document[formName].name.value;
	if (title == "" || excerpt == "") {
		alert("タイトルと本文を入力してください。");
		return;
	}
	
	var xmlhttp = new XMLHttpRequest();
	if (!xmlhttp) return;
	
	var elementCommentsComments = document.getElementById("commentscomments" + id);
	elementCommentsComments.innerHTML = "コメント書き込み中...";
	
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			elementCommentsComments.innerHTML = xmlhttp.responseText;
		}
	}
	xmlhttp.open('POST', ROOT_URL+'map/commentscomments/addcomment.php', true);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlhttp.send("parentid=" + id + "&title=" + encodeURIComponent(title) + "&excerpt=" + encodeURIComponent(excerpt) + "&url=" + encodeURIComponent(url) + "&name=" + encodeURIComponent(name));
}

function deleteConfirmCommentsComment(id, parentid) {
	readContents(ROOT_URL+"map/commentscomments/deleteconfirmcomment.php?id=" + id + "&parentid=" + parentid, "commentscomments" + parentid);
}
function deleteCommentsComment(id, parentid) {
	readContents(ROOT_URL+"map/commentscomments/deletecomment.php?id=" + id + "&parentid=" + parentid, "commentscomments" + parentid);
}

function deleteConfirmCommentsTrackback(id, parentid) {
	readContents(ROOT_URL+"map/commentscomments/deleteconfirmtrackback.php?id=" + id + "&parentid=" + parentid, "commentscomments" + parentid);
}
function deleteCommentsTrackback(id, parentid) {
	readContents(ROOT_URL+"map/commentscomments/deletetrackback.php?id=" + id + "&parentid=" + parentid, "commentscomments" + parentid);
}
