var dragObj = null;
var offsetX = 0;
var offsetY = 0;

if (!document.all) {
	(function() {
		var events = ["mousedown", "mouseover", "mouseout", "mousemove",
					  "mousedrag", "click", "dblclick", "keydown"];
		for (var i = 0; i < events.length; i++){
			window.addEventListener(events[i], function(e) {
			window.event = e;
		}, true);
	}
	}());
}

window.onload = function() {
	var fans_prev = $("fans_prev");
	var fans_next = $("fans_next");
	var favorite = $("favorite");
	var doreview = $("doreview");
	var review_form = $("review_form");
	var review_head = $("review_head");
	var map_area = $("map");
	var opinion_form = $("opinion_form");
	var opinion_head = $("opinion_head");
	if (fans_prev) {
		fans_prev.onclick = function() {
			previousPageFan();
		}
	}
	if (fans_next) {
		fans_next.onclick = function() {
			nextPageFan();
		}
	}
	if (favorite) {
		favorite.onclick = function() {
			if ($("member").value == 0) {
				goLogin();
			} else if (confirm("お気に入りに追加しますか?")) {
				this.disabled = true;
				addFavorite();
			}
			return false;
		}
	}
	if (doreview) {
		doreview.onclick = function() {
			//if ($("member").value == 0) {
			//	goLogin();
			//} else {
				showReviewForm(0);
			//}
			return false;
		}
	}
	if (review_head) {
		review_head.onmousedown = function() {
			if (!review_form) return false;
			dragObj = review_form;
			offsetX = parseInt(dragObj.style.left.replace("/px/g", "")) - event.clientX;
			offsetY = parseInt(dragObj.style.top.replace("/px/g", "")) - event.clientY;
			return false;
		}
		review_head.onmouseup = function() {
			dragObj = null;
		}
	}
	if (opinion_head) {
		opinion_head.onmousedown = function() {
			if (!opinion_form) return false;
			dragObj = opinion_form;
			offsetX = parseInt(dragObj.style.left.replace("/px/g", "")) - event.clientX;
			offsetY = parseInt(dragObj.style.top.replace("/px/g", "")) - event.clientY;
			return false;
		}
		opinion_head.onmouseup = function() {
			dragObj = null;
		}
	}
	if ($("shopping")) getProductJSONP();
	if ($("fans")) loadFan();
	if ($("columns")) loadColumn();
	if (!map_area) return;
	if ($("latlng")) {
		var latlng = $("latlng").value.split(",");
		showMap(latlng[0], latlng[1], map_area);
	} else {
		var gls = new GlocalSearch();
		gls.setSearchCompleteCallback(this, onLocalSearch, [null]);
		gls.execute($("address").firstChild.nodeValue);
		function onLocalSearch() {
			if (gls.results.length == 0) return;
			var first = gls.results[0];
			var	lat = parseFloat(first.lat);
			var lng = parseFloat(first.lng);
			showMap(lat, lng, map_area);
		}
	}
}

window.onunload = function() {
	if ($("map")) {
		GUnload();
	}
}

window.document.onmousemove = function() {
	if (!dragObj) return;
	dragObj.style.left = (event.clientX + offsetX) + "px";
	dragObj.style.top = (event.clientY + offsetY) + "px";
	return false;
}

function addColumn(xml) {
	var columns = $("columns");
	var counts = xml.getElementsByTagName("count");
	var count = counts[0].firstChild.nodeValue;
	if (count == 0) {
		columns.style.display = "none";
		return;
	}
	var columnsCount = $("columns_count");
	dropChild(columnsCount);
	columnsCount.appendChild($T(" [" + count + "件]"));
	var columnsBody = $("columns_body");
	dropChild(columnsBody);
	var numbers = xml.getElementsByTagName("number");
	var dates = xml.getElementsByTagName("date");
	var titles = xml.getElementsByTagName("title");
	for (var i = 0; i < numbers.length; i++) {
		var number = numbers[i].firstChild.nodeValue;
		var date = dates[i].firstChild.nodeValue;
		var title = titles[i].firstChild.nodeValue;
		var column = $E("div");
		column.className = "column_mb5";
		column.appendChild($T(date + " "));
		var a = $E("a");
		a.href = "http://www.livetown.jp/common/column020.php?number=" + number;
		a.title = title;
		a.appendChild($T(title));
		column.appendChild(a);
		columnsBody.appendChild(column);
	}
	columns.style.display = "block";
}

function clientWidth() {
	return document.documentElement.clientWidth || window.innerWidth;
} 

function clientHeight() {
	return document.documentElement.clientHeight || window.innerHeight;
}

function hideOpinionForm()	{
	var opinionForm = $("opinion_form");
	opinionForm.style.display = "none";
}

function hideReviewForm()	{
	var reviewForm = $("review_form");
	reviewForm.style.display = "none";
}

function loadColumn() {
	var req = createHttpRequest();
	if (req == null) return false;
	req.onreadystatechange = function() {
		if (req.readyState == 4 && req.responseText) {
			addColumn(req.responseXML);	
		}
	}
	req.open("GET", "http://" + location.hostname + "/ajax/column_load.php" + 
					"?owner=" + $("number").value
			, true);
	req.send(null);
}

function removeReview(number) {
	if (confirm("削除しますか?")) {
		$("bbs").value = number;
		return true;
	} else {
		return false;
	}
}

function rollover(menu, state) {
	if (state == 0) {
		menu.className = "";
	} else {
		menu.className = "menubar_hover";
	}
}

function rolloverg(menu, state) {
	if (state == 0) {
		menu.className = "view_link";
	} else {
		menu.className = "view_hover";
	}
}

function scrollLeft() {
	return document.body.scrollLeft || document.documentElement.scrollLeft;
} 

function scrollTop() {
	return document.body.scrollTop || document.documentElement.scrollTop;
}

function showMap(lat, lng, div) {
	if (!GBrowserIsCompatible()) return;
	div.style.display = "block";
	var map = new GMap2(div);
	map.setCenter(new GLatLng(lat, lng), 15);
	map.panTo(new GLatLng(lat, lng));
	map.addControl(
	new GSmallZoomControl()); 
	var marker = new GMarker(new GLatLng(lat, lng));
	map.addOverlay(marker);
	var html = "<center><span style='font-size: 12px'>"
			 + "<span style='font-weight:bold'>" + $("name").innerHTML + "</span><br>"
			 + $("address").innerHTML + "&nbsp;" + $("tenant").innerHTML + "<br>"
			 + $("tel").innerHTML
			 + "</span></center>";
	marker.openInfoWindowHtml(html);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});
}

function showOpinionForm()	{
	if ($("member").value == 0) {
		goLogin();
		return false;
	}
	if ($("review_form") && $("review_form").style.display == "block") {
		hideReviewForm();
	}
	var opinionForm = $("opinion_form");
	var opinionButton = $("opinion_button");
	var opinionText = $("opinion_text");
	var newText = "";
	//
	opinionButton.name = "opinion";
	opinionButton.value = "ご意見・ご要望の書き込み";
	opinionText.value = newText;
	opinionButton.onclick = function() {
		var value = opinionText.value;
		if (value == "") {
			alert("ご意見・ご要望を入力してください。");
			return false;
		} else if (value.length > 500) {
			alert("500文字までです。");
			return false;
		} else if (confirm("書き込みますか?")) {
			return true;
		} else {
			return false;
		}
	}
	//
	opinionForm.style.display = "block";
	opinionForm.style.left = scrollLeft() + parseInt((950 - opinionForm.offsetWidth) * 0.5) + "px";
	opinionForm.style.top = scrollTop() + parseInt((clientHeight() - opinionForm.offsetHeight) * 0.5) + "px";
}

function showReviewForm(number)	{
	if ($("opinion_form") && $("opinion_form").style.display == "block") {
		hideOpinionForm();
	}
	var reviewForm = $("review_form");
	var reviewButton = $("review_button");
	var reviewText = $("review_text");
	var newText = "";
	//
	if (number == 0) {
		reviewButton.name = "add";
		reviewButton.value = "レビューの書き込み";
	} else {
		reviewButton.name = "update";
		reviewButton.value = "レビューを更新する";
		var parent = $("review" + number);
		var child = parent.firstChild;
		while (child) {
			if (child.nodeValue) {
				newText += child.nodeValue.replace("\n", "");
			} else {
				newText += "\n";
			}
			child = child.nextSibling;
		}
	}
	reviewText.value = newText;
	reviewButton.onclick = function() {
		var value = reviewText.value;
		if (value == "") {
			alert("レビューを入力してください。");
			return false;
		} else if (value.length > 500) {
			alert("500文字までです。");
			return false;
		} else if (confirm("書き込みますか?")) {
			$("bbs").value = number;
			return true;
		} else {
			return false;
		}
	}
	//
	reviewForm.style.display = "block";
	reviewForm.style.left = scrollLeft() + parseInt((950 - reviewForm.offsetWidth) * 0.5) + "px";
	reviewForm.style.top = scrollTop() + parseInt((clientHeight() - reviewForm.offsetHeight) * 0.5) + "px";
}