
function durationFunc(func, t) {
  setTimeout(function() { 
    eval(func);
  }, parseInt(t));
}

var debug_div = null;
function createDebugBox() {
	return;
	debug_div = $('debug_div');
	if (!debug_div) {
		debug_div = document.createElement('div');
		debug_div.setAttribute('id', "debug_div");
		debug_div.setAttribute('style', "width: 100%; border: solid 2px #000; padding: 15px; margin: 10px;");
		inh = debug_div.innerHTML
		debug_div.innerHTML = inh + "<p style='text-align: center;'><b>Debuging Message</b></p>\n";
		document.body.appendChild(debug_div);
	}
}
function debugPrint(str, start) {
	if (debug_div) {
		var time = new Date();
		if (start) {
			stop_watch = parseInt((time.getTime() - start.getTime()) / 10);
			stop_watch = stop_watch / 100;
			debug_div.innerHTML += str + " <b>time: " + stop_watch + "sec</b><br/>\n";
		} else {
			debug_div.innerHTML += str + "<br/>\n";
		}
		return time;
	}
}

var ScenicMap = Class.create();

ScenicMap.prototype = {
	
	initialize: function(parameters) {
		this.map = parameters.map;
		
		createDebugBox();
	},
	
	createScenicMap: function(url) {
		var s = debugPrint('createScenicMap start');
		//document.getElementById("button_updateToView").innerHTML = "Loading scenic data...";
		
		var ss = debugPrint('currentIds start');
		var sis = ScenicItems.getScenicItems();
		var currentEntryIds = [];
		var currentLandmarkIds = [];
		for (k in sis) {
			if (sis[k].markerClass == 1) {
				currentEntryIds.push(sis[k].entryId);
			} else {
				currentLandmarkIds.push(sis[k].landmarkId);
			}
		}
		debugPrint('currentIds end', ss);

		var http = new JKL.ParseXML(url + "&entryIds=" + currentEntryIds.join(',') + "&landmarkIds=" + currentLandmarkIds.join(','));
		http.setOutputArrayElements(["marker", "comment", "entry"]);
		http.async(this._setScenicItems);
		http.parse();

		debugPrint('createScenicMap end', s);
	},
	
	_preload: function(data) {
		var s = debugPrint('_preload start');
		this.newEntryIds = [];
		this.newLandmarkIds = [];
		
		if (data.markers == undefined || data.markers.marker == undefined) {
			document.getElementById("list").innerHTML = "";
			return false;
		}
		
		for (var i = 0; i < data.markers.marker.length; i++) {
			if(data.markers.marker[i].key !== undefined) {
				var markerObject = data.markers.marker[i];
			} else {
				var markerObject = data.markers.marker;
			}
			key = (markerObject.key !== undefined) ? markerObject.key : "";
			if (key !== "") {
				var keys = ScenicItems.getScenicItemKeys();
				
				markerClass = (markerObject.marker_class !== undefined && markerObject.marker_class !== "") ? parseInt(markerObject.marker_class) : 1;
				if (markerClass == 1) {
					this.newEntryIds.push((markerObject.entry_id !== undefined) ? markerObject.entry_id : "");
				} else {
					this.newLandmarkIds.push((markerObject.landmark_id !== undefined) ? markerObject.landmark_id : "");
				}
			}
		stream.append(" marker_class=\"" + 2 + "\"");
			
		}
		return true;
		debugPrint('_preload end', s);
	},
	
	_setScenicItems: function(data) {
		var s = debugPrint('_setScenicItems start');
		//ScenicItems.clearScenicItems();
		
		var ss = debugPrint('setList start');
		if (data.markers == undefined || data.markers.listHtml == undefined) {
			document.getElementById("list").innerHTML = "";
		} else {
			document.getElementById("list").innerHTML = data.markers.listHtml.html;
		}
		debugPrint('setList end', ss);
		
		var ss = debugPrint('removeEntry start');
		if (data.markers !== undefined && data.markers.removeEntry.keys !== undefined) {
			var keys = data.markers.removeEntry.keys.split(',');
			keys.each(function(key) {
				ScenicItems.removeScenicItem(key);
			});
		}
		debugPrint('removeEntry end', ss);
		
		var ss = debugPrint('removeLandmark start');
		if (data.markers !== undefined && data.markers.removeLandmark.keys !== undefined) {
			var keys = data.markers.removeLandmark.keys.split(',');
			keys.each(function(key) {
				ScenicItems.removeScenicItem(key);
			});
		}
		debugPrint('removeLandmark end', ss);
		
		if (data.markers == undefined || data.markers.marker == undefined) {
			//ScenicItems.clearScenicItems();
		} else {
			var keys = ScenicItems.getScenicItemKeys();
			var addedKeys = [];
			var ss = debugPrint('&nbsp;for markers start');
			for (var i = 0; i < data.markers.marker.length; i++) {
				//if (i >= 0 && i <=2) {
				//	objectsDebug(data.markers.marker[i]);
				//}
				if(data.markers.marker[i].marker_class !== undefined) {
					var markerObject = data.markers.marker[i];
					//ScenicItems.addScenicItem(new ScenicItem(data.markers.marker[i], i));
				} else {
					var markerObject = data.markers.marker;
					//ScenicItems.addScenicItem(new ScenicItem(data.markers.marker, i));
				}
				
				key = (markerObject.key !== undefined) ? markerObject.key : "";
				if (key !== "") {
					//if (ScenicItems.includeByCache(key)) {
					//	ScenicItems.addScenicItemByCache(key, i);
					//} else {
						var k = keys.find(function (k, i) {
																return k == key;
																});
						if (k == undefined) {
							ScenicItems.addScenicItem(new ScenicItem(markerObject, i));
						} else {
							ScenicItems.getScenicItem(key).setIndex(i);
							//var si = ScenicItems.getScenicItem(key);
							//si.setIndex(i);
							//ScenicItems.viewScenicItem(key);
						}
					//}
					addedKeys.push(key);
				}
				
				
				//alert(key);
				//si = ScenicItems.getScenicItemByCache(key);
				//if (si) {
				//	alert(key);
				//	si.setIndex(i);
				//	si.setEvent();
				//	//ScenicItems.addScenicItem(si, i);
				//} else {
				//	ScenicItems.addScenicItem(new ScenicItem(markerObject, i));
				//}
			}
			debugPrint('&nbsp;for markers end', ss);
			//alert(addedKeys);
			//alert(keys);
			/*var ss = debugPrint('&nbsp;keys.each start');
			keys.each(function(key) {
				var k = addedKeys.find(function (k, i) {
														return k == key;
														});
				if (k == undefined) {
					ScenicItems.removeScenicItem(key);
					//ScenicItems.hideScenicItem(key);
				}
			});*/
			debugPrint('&nbsp;keys.each end', ss);
		}
		
		//var ss = debugPrint('setList start');
		//ScenicItems.setList();
		//debugPrint('setList end', ss);
		//ScenicItems.setOverlay();
		
		//ScenicItems.addCache();
		
		//document.getElementById("button_updateToView").innerHTML = "";
		debugPrint('_setScenicItems end', s);
	},
	
	getScenicItem: function(index) {
		return ScenicItems.getScenicItem(index);
	}
	
};

var ScenicItems = {
	//scenicItems: new Array(),
	scenicItems: new Object(),
	scenicItemsCache: new Object(), 
	
	addCache: function() {
		for (var i = 0; i < this.scenicItems.length; i++) {
			var si = this.scenicItems[i];
			if (!this.scenicItemsCache[si.key])
				this.scenicItemsCache[si.key] = si;
			if (this.scenicItemsCache[si.key].eventClickHandle)
				this.scenicItemsCache[si.key].eventClickHandle = null;
		}
	}, 
	
  //addScenicItem: function(scenicItem, index) {
  //  this.scenicItems[index] = scenicItem;
  //},
  
  addScenicItem: function(scenicItem) {
		this.scenicItems[scenicItem.key] = scenicItem;
		var marker = scenicItem.getMarker();
		if (marker) {
			map.addOverlay(marker);
	
			if (scenicItem.isOpenInfo == "true" && !isLoaded) {
				ScenicItems.openInfoWindow(scenicItem.key);
				//map.savePosition();
				//isInitMarker = false;
				//map.openInfoWindowTabsHtml(marker.getPoint(), si.getInfoWindowHtml(), {onCloseFn: closeFunction});
				isLoaded = true;
			}
		}
		this.scenicItemsCache[scenicItem.key] = scenicItem;
  },
  
  addScenicItemByCache: function(key, index) {
		this.scenicItems[key] = this.scenicItemsCache[key];
		this.scenicItems[key].setIndex(index);
		this.scenicItems[key].setEvent();
		var marker = this.scenicItems[key].getMarker();
		if (marker) {
			map.addOverlay(marker);
	
			if (this.scenicItems[key].isOpenInfo == "true" && !isLoaded) {
				ScenicItems.openInfoWindow(key);
				//map.savePosition();
				//isInitMarker = false;
				//map.openInfoWindowTabsHtml(marker.getPoint(), si.getInfoWindowHtml(), {onCloseFn: closeFunction});
				isLoaded = true;
			}
		}
  },
  
  removeScenicItem: function(key) {
		if (this.scenicItems[key]) {
			if (this.scenicItems[key].getMarker())
				map.removeOverlay(this.scenicItems[key].getMarker());
			if (this.scenicItems[key].eventClickHandle)
				GEvent.removeListener(this.scenicItems[key].eventClickHandle);
			delete(this.scenicItems[key]);
		}
  },
  
	viewScenicItem: function(key) {
		var si = this.scenicItems[key];
		if (!si.getDisplay()) {
			si.setDisplay(true);
			var marker = si.getMarker();
			if (marker) {
				map.addOverlay(marker);
		
				if (si.isOpenInfo == "true" && !isLoaded) {
					ScenicItems.openInfoWindow(si.key);
					//map.savePosition();
					//isInitMarker = false;
					//map.openInfoWindowTabsHtml(marker.getPoint(), si.getInfoWindowHtml(), {onCloseFn: closeFunction});
					isLoaded = true;
				}
			}
		}
	},
	
	hideScenicItem: function(key) {
		var si = this.scenicItems[key];
		if (si.getDisplay()) {
			si.setDisplay(false);
			if (si.getMarker())
				map.removeOverlay(si.getMarker());
		}
	},
	
	//getScenicItem: function(index) {
	//	return this.scenicItems[index];
	//},
	
	includeByCache: function(key) {
		return (this.scenicItemsCache[key]);
	},
	
	getScenicItem: function(key) {
		return this.scenicItems[key];
	},
	
	getScenicItemByCache: function(key) {
		return this.scenicItemsCache[key];
	},
	
	getScenicItems: function() {
		return this.scenicItems;
	},
	
	getScenicItemKeys: function() {
		a = [];
		for (var key in this.scenicItems) {
			a.push(key);
		}
		return a;
	},
	
	getScenicItemCount: function() {
		return this.scenicItems.length;
	},
	
	clearScenicItems: function() {
		//var s = debugPrint('clearScenicItems start');
		//var sis = $H(this.scenicItems);
		//$H(this.scenicItems).each(
		//	function (pair, index) {
		//		alert('pair.key:' + pair.key + 'pair.value:' + pair.value + ' index:' + index);
		//	}
		//);
		
		for (var key in this.scenicItems) {
			var si = this.scenicItems[key];
			if (si.getMarker())
				map.removeOverlay(si.getMarker());
			if (si.eventClickHandle)
				GEvent.removeListener(si.eventClickHandle);
		}
		this.scenicItems = new Object();
		//for (var i = 0; i < this.scenicItems.length; i++) {
		//	var si = this.scenicItems[i];
		//	if (si.getMarker())
		//		map.removeOverlay(si.getMarker());
		//	if (si.eventClickHandle)
		//		GEvent.removeListener(si.eventClickHandle);
		//}
		//this.scenicItems = [];
		//debugPrint('clearScenicItems end', s);
	},
	
	setList: function() {
		//var s = debugPrint('setList start');
		var tmp = document.createElement("div");
		var i = -1;
		for (var key in this.scenicItems) {
			i++;
			var si = this.scenicItems[key];
			
			if (si.isList == "true") {
				var listElement = document.createElement("div");
				if ((i%2 === 0)) {
					listElement.className = "pointListLine pointListAccentLinePointName";
				} else {
					listElement.className = "pointListLine pointListLinePointName";
				}
				
				var element = document.createElement("img");
				element.className = "icon";
				if (si.isMarkerPoint) {
					element.setAttribute('src', si.iconListPath);
				} else {
					element.setAttribute('src', si.noPointIconListPath);
				}
				listElement.appendChild(element);
					
				var element = document.createElement("div");
				element.className = "header";
				var element2 = document.createElement("div");
				element2.className = "body";
				if (si.isMarkerClassEntry) {
					var element3 = document.createElement("a");
					if (si.isMarkerPoint) {
						element3.setAttribute('href', 'javascript:ScenicItems.openInfoWindow(\'' + si.key + '\')');
					} else {
						element3.setAttribute('href', si.permalink);
						element3.setAttribute('target', '_blank');
					}
					element3.innerHTML = si.nickName;
					element.appendChild(element3);
					
					element2.innerHTML = si.entryTitle;
				} else {
					var element3 = document.createElement("a");
					element3.setAttribute('href', 'javascript:ScenicItems.openInfoWindow(\'' + si.key + '\')');
					element3.innerHTML = si.landmarkTitle;
					
					element.appendChild(element3);
					
					element2.innerHTML = si.landmarkArea;
	
				}
				listElement.appendChild(element);
				listElement.appendChild(element2);
	
				tmp.appendChild(listElement);
			}
		}
		document.getElementById("list").innerHTML = tmp.innerHTML;
		//debugPrint('setList end', s);
	},
	
	setOverlay: function() {
		//var s = debugPrint('setOverlay start');
		for (var key in this.scenicItems) {
			var si = this.scenicItems[key];
			var marker = si.getMarker();
			if (marker) {
				map.addOverlay(marker);
		
				if (si.isOpenInfo == "true" && !isLoaded) {
					ScenicItems.openInfoWindow(i);
					//map.savePosition();
					//isInitMarker = false;
					//map.openInfoWindowTabsHtml(marker.getPoint(), si.getInfoWindowHtml(), {onCloseFn: closeFunction});
					isLoaded = true;
				}
			}
		}
		/*for (var i = 0; i < this.scenicItems.length; i++) {
			var si = this.scenicItems[i];
			var marker = si.getMarker();
			if (marker) {
				map.addOverlay(marker);
		
				if (si.isOpenInfo == "true" && !isLoaded) {
					ScenicItems.openInfoWindow(i);
					//map.savePosition();
					//isInitMarker = false;
					//map.openInfoWindowTabsHtml(marker.getPoint(), si.getInfoWindowHtml(), {onCloseFn: closeFunction});
					isLoaded = true;
				}
			}
		}*/
		//debugPrint('setOverlay end', s);
	},
	
	/*openInfoWindow: function(index) {
		var si = this.scenicItems[index];
		var marker = si.getMarker();
		if (marker) {
			map.savePosition();
			isInitMarker = false;
			map.openInfoWindowTabsHtml(marker.getPoint(), si.getInfoWindowHtml(), {onCloseFn: closeFunction});
		}
	}, */
	
	openInfoWindow: function(key) {
		var si = this.scenicItems[key];
		var marker = si.getMarker();
		if (marker) {
			map.savePosition();
			isInitMarker = false;
			map.openInfoWindowTabsHtml(marker.getPoint(), si.getInfoWindowHtml(), {onCloseFn: closeFunction});
		}
	}, 
	
	postLandmarkComment: function(key) {
		var state = {
			'landmarkId' : $('landmarkId').value,
			'author' : $('author').value,
			'recommend' : $('recommend').value,
			'text' : $('text').value,
			'cache' : (new Date()).getTime()
		};
		var state_hash = $H(state);
		var cond = state_hash.toQueryString();
	
		var qs = "/cgi-bin/WebObjects/scenic-okhotsk.woa/wa/BlogView/landmarkComment" + '?' + cond;
		
		var url = qs;
		var http = new JKL.ParseXML(url);
		var func = function (data) {
			var errorMessage = "";
			var responseComment = "";
			if (data.response !== undefined) {
				if(data.response.errormessage !== undefined){ 
					errorMessage = data.response.errormessage;
					alert(errorMessage);
				} else {
					var si = ScenicItems.getScenicItem(key);
					si.setLandmarkComment(data.response.author, data.response.text, data.response.time, data.response.recommend_count, data.response.recommend_total);
					
					inh = document.getElementById("landmarkCommentList").innerHTML;
					responseComment += '<div class=landmarkComment>';
					responseComment += '<span class="commentAuther">' + data.response.author + '</span>&nbsp;<span class="commentText">『' + data.response.text + '』</span><span class="commentTime">(' + data.response.time + ')</span>';
					responseComment += '</div>';
					document.getElementById("landmarkCommentList").innerHTML = inh + responseComment;
					
					$('landmarkCommentRecommend').innerHTML = si.getLandmarkCommentRecommendHtml(data.response.recommend_count, data.response.recommend_total);
					$('author').value = "";
					$('recommend').value = 0;
					$('text').value = "";
				}
			}
		};
		http.async(func);
		http.parse();
	}

	/*postLandmarkComment: function(index) {
		var state = {
			'landmarkId' : $('landmarkId').value,
			'author' : $('author').value,
			'recommend' : $('recommend').value,
			'text' : $('text').value,
			'cache' : (new Date()).getTime()
		};
		var state_hash = $H(state);
		var cond = state_hash.toQueryString();
	
		var qs = "/cgi-bin/WebObjects/scenic-okhotsk.woa/wa/BlogView/landmarkComment" + '?' + cond;
		
		var url = qs;
		var http = new JKL.ParseXML(url);
		var func = function (data) {
			var errorMessage = "";
			var responseComment = "";
			if (data.response !== undefined) {
				if(data.response.errormessage !== undefined){ 
					errorMessage = data.response.errormessage;
					alert(errorMessage);
				} else {
					var si = ScenicItems.getScenicItem(index);
					si.setLandmarkComment(data.response.author, data.response.text, data.response.time, data.response.recommend_count, data.response.recommend_total);
					
					inh = document.getElementById("landmarkCommentList").innerHTML;
					responseComment += '<div class=landmarkComment>';
					responseComment += '<span class="commentAuther">' + data.response.author + '</span>&nbsp;<span class="commentText">『' + data.response.text + '』</span><span class="commentTime">(' + data.response.time + ')</span>';
					responseComment += '</div>';
					document.getElementById("landmarkCommentList").innerHTML = inh + responseComment;
					
					$('landmarkCommentRecommend').innerHTML = si.getLandmarkCommentRecommendHtml(data.response.recommend_count, data.response.recommend_total);
					$('author').value = "";
					$('recommend').value = 0;
					$('text').value = "";
				}
			}
		};
		http.async(func);
		http.parse();
	}*/

	
};

var closeFunction = function() {
	//map.returnToSavedPosition();
	isInitMarker = true;
	isAutoMove = true;
};

var ScenicItem = Class.create();

ScenicItem.prototype = {
	
	marker: null,
	eventClick: null,
	eventClickHandle: null,
	
	initialize: function(markerObject, index) {
		//var s = debugPrint('initialize(ScenicItem) start');
		//alert('markerObject.markerClass = ' + markerObject.markerClass); 
		this.view = true;
		this.index = index;
		this.key = (markerObject.key !== undefined) ? markerObject.key : "";
		this.markerClass = (markerObject.marker_class !== undefined && markerObject.marker_class !== "") ? eval(markerObject.marker_class) : 1;
		this.isMarkerClassEntry = (this.markerClass == 1);
		this.isMarkerClassLandmark = (this.markerClass == 2);
		this.lat = (markerObject.lat !== undefined) ? eval(markerObject.lat) : "";
		this.lng = (markerObject.lng !== undefined) ? eval(markerObject.lng) : "";
		this.iconPath = (markerObject.icon !== undefined) ? markerObject.icon : "http://www.google.com/mapfiles/marker.png";
		this.iconListPath = (markerObject.icon_list !== undefined) ? markerObject.icon_list : "http://www.google.com/mapfiles/marker.png";
		this.noPointIconListPath = "/images/icon_blog.png";
		this.isMarkerPoint = (this.lat !== "" && this.lng !== "");
		
		this.entryId = (markerObject.entry_id !== undefined) ? markerObject.entry_id : "&nbsp;";
		//this.nickName = (markerObject.nick_name !== undefined) ? markerObject.nick_name : "&nbsp;";
		//this.entryTitle = (markerObject.entry_title !== undefined) ? markerObject.entry_title : "&nbsp;";
		//this.entryText = (markerObject.entry_text !== undefined) ? markerObject.entry_text : "&nbsp;";
		//this.profPhoto = (markerObject.prof_photo !== undefined) ? markerObject.prof_photo : "";
		//this.permalink = (markerObject.permalink !== undefined) ? markerObject.permalink : "&nbsp;";
		//this.bloglink = (markerObject.bloglink !== undefined) ? markerObject.bloglink : "&nbsp;";
		//this.blogTitle = (markerObject.blog_title !== undefined) ? markerObject.blog_title : "&nbsp;";
		//this.blogComment = (markerObject.blog_comment !== undefined) ? markerObject.blog_comment : "&nbsp;";
		//this.profComment = (markerObject.prof_comment !== undefined) ? markerObject.prof_comment : "&nbsp;";
		
		this.landmarkId = (markerObject.landmark_id !== undefined) ? markerObject.landmark_id : "";
		//this.landmarkTitle = (markerObject.landmark_title !== undefined) ? markerObject.landmark_title : "&nbsp;";
		//this.landmarkText = (markerObject.landmark_text !== undefined) ? markerObject.landmark_text : "&nbsp;";
		//this.landmarkArea = (markerObject.landmark_area !== undefined) ? markerObject.landmark_area : "&nbsp;";
		//this.photo = (markerObject.photo !== undefined) ? markerObject.photo : "";
		//this.photoL = (markerObject.photo_l !== undefined) ? markerObject.photo_l : "";
		//this.recommendCount = (markerObject.recommend_count !== undefined) ? eval(markerObject.recommend_count) : 0;
		//this.recommendTotal = (markerObject.recommend_total !== undefined) ? eval(markerObject.recommend_total) : 0;

		//this.update_time = (markerObject.update_time !== undefined) ? markerObject.update_time : "";
		
		//this.isList = (markerObject.is_list !== undefined) ? markerObject.is_list : "false";
		this.isOpenInfo = (markerObject.is_open_info !== undefined) ? markerObject.is_open_info : "false";
		
		//this.entrys = [];
		//if (markerObject.entrys!== undefined && markerObject.entrys.entry !== undefined) {
		//	for (var i = 0; i < markerObject.entrys.entry.length; i++) {
		//		if(markerObject.entrys.entry[i].permalink !== undefined) {
		//			this.entrys.push({permalink: markerObject.entrys.entry[i].permalink, entryTitle: markerObject.entrys.entry[i].entry_title});
		//		} else {
		//			this.entrys.push({permalink: markerObject.entrys.entry.permalink, entryTitle: markerObject.entrys.entry.entry_title});
		//		}
		//	}
		//}
		
		//this.comments = [];
		//if (markerObject.comments!== undefined && markerObject.comments.comment !== undefined) {
		//	for (var i = 0; i < markerObject.comments.comment.length; i++) {
		//		if(markerObject.comments.comment[i].author !== undefined){ 
		//			this.comments.push({author: markerObject.comments.comment[i].author, text: markerObject.comments.comment[i].text, time: markerObject.comments.comment[i].time});
		//		} else {
		//			this.comments.push({author: markerObject.comments.comment.author, text: markerObject.comments.comment.text, time: markerObject.comments.comment.time});
		//		}
		//	}
		//}
		
		//var ss = debugPrint('initialize(ScenicItem) createMarker start');
		this.createMarker();
		//debugPrint('initialize(ScenicItem) createMarker end', ss);
		
		//debugPrint('initialize(ScenicItem) end', s);
	},
	
	setDisplay: function(view) {
		this.view = view;
	},
	
	getDisplay: function() {
		return this.view;
	},
	
	setIndex: function(index) {
		this.index = index;
	}, 
	
	setEvent: function() {
		if (this.eventClick)
			this.eventClickHandle = GEvent.addListener(this.marker, "click", this.eventClick);
	},
	
	getMarkerPoint: function() {
		if (this.isMarkerPoint) {
			return new GLatLng(parseFloat(this.lat), parseFloat(this.lng));
		}
		return null;
	},
	
	createMarker: function() {
		this.marker = null;
		if (this.isMarkerPoint) {
			var point = this.getMarkerPoint();
			if (point) {
				var icon = new GIcon(baseIcon);
				icon.image = this.iconPath;
		
				this.marker = new GMarker(point, icon);

				if (this.eventClick)
					GEvent.removeListener(this.eventClickHandle);
		
				//var infoWindowHtml = this.getInfoWindowHtml();
				
				var key = this.key;
				this.eventClick = function() {
					ScenicItems.openInfoWindow(key);
					//map.savePosition();
					//isInitMarker = false;
					//map.openInfoWindowTabsHtml(point, infoWindowHtml, {onCloseFn: closeFunction});
				}
				this.eventClickHandle = GEvent.addListener(this.marker, "click", this.eventClick);
			}
		}
	},
	
	getMarker: function() {
		return this.marker;
	},
	
	getInfoWindowHtml: function() {
		this._getInfoWindowData();
		
		if (this.isMarkerClassEntry) {
			var infoTabs = [
				new GInfoWindowTab("最新の投稿！", this._getInfoWindowHtmlEntryTab1()),
				new GInfoWindowTab("プロフィール", this._getInfoWindowHtmlEntryTab2())
			];
		} else {
			var infoTabs = [
				new GInfoWindowTab("基本情報", this._getInfoWindowHtmlLandmarkTab1()),
				new GInfoWindowTab("コメント", this._getInfoWindowHtmlLandmarkTab2()),
				new GInfoWindowTab("関連する記事", this._getInfoWindowHtmlLandmarkTab3())
			];
		}
		
		return infoTabs;
	},
	
	_getInfoWindowData: function() {
		var url = '/cgi-bin/WebObjects/scenic-okhotsk.woa/wa/BlogView/map' + '?openWindow=' + (this.isMarkerClassEntry ? 'entry' : 'landmark') + '&entryId=' + this.entryId + '&landmarkId=' + this.landmarkId;
		var http = new JKL.ParseXML(url);
		http.setOutputArrayElements(["marker", "comment", "entry"]);
		//http.async(this._setData);
		//http.parse();
		this._setData(http.parse());
	}, 
	
	_setData: function(data) {
		if (data.markers !== undefined && data.markers.marker !== undefined) {
			for (var i = 0; i < data.markers.marker.length; i++) {
				//if (i >= 0 && i <=2) {
				//	objectsDebug(data.markers.marker[i]);
				//}
				if(data.markers.marker[i].marker_class !== undefined) {
					var markerObject = data.markers.marker[i];
					//ScenicItems.addScenicItem(new ScenicItem(data.markers.marker[i], i));
				} else {
					var markerObject = data.markers.marker;
					//ScenicItems.addScenicItem(new ScenicItem(data.markers.marker, i));
				}

				this.entryId = (markerObject.entry_id !== undefined) ? markerObject.entry_id : "&nbsp;";
				this.nickName = (markerObject.nick_name !== undefined) ? markerObject.nick_name : "&nbsp;";
				this.entryTitle = (markerObject.entry_title !== undefined) ? markerObject.entry_title : "&nbsp;";
				this.entryText = (markerObject.entry_text !== undefined) ? markerObject.entry_text : "&nbsp;";
				this.profPhoto = (markerObject.prof_photo !== undefined) ? markerObject.prof_photo : "";
				this.permalink = (markerObject.permalink !== undefined) ? markerObject.permalink : "&nbsp;";
				this.bloglink = (markerObject.bloglink !== undefined) ? markerObject.bloglink : "&nbsp;";
				this.blogTitle = (markerObject.blog_title !== undefined) ? markerObject.blog_title : "&nbsp;";
				this.blogComment = (markerObject.blog_comment !== undefined) ? markerObject.blog_comment : "&nbsp;";
				this.profComment = (markerObject.prof_comment !== undefined) ? markerObject.prof_comment : "&nbsp;";
				
				this.landmarkId = (markerObject.landmark_id !== undefined) ? markerObject.landmark_id : "";
				this.landmarkTitle = (markerObject.landmark_title !== undefined) ? markerObject.landmark_title : "&nbsp;";
				this.landmarkText = (markerObject.landmark_text !== undefined) ? markerObject.landmark_text : "&nbsp;";
				this.landmarkArea = (markerObject.landmark_area !== undefined) ? markerObject.landmark_area : "&nbsp;";
				this.photo = (markerObject.photo !== undefined) ? markerObject.photo : "";
				this.photoL = (markerObject.photo_l !== undefined) ? markerObject.photo_l : "";
				this.recommendCount = (markerObject.recommend_count !== undefined) ? eval(markerObject.recommend_count) : 0;
				this.recommendTotal = (markerObject.recommend_total !== undefined) ? eval(markerObject.recommend_total) : 0;
		
				this.update_time = (markerObject.update_time !== undefined) ? markerObject.update_time : "";
				
				this.isList = (markerObject.is_list !== undefined) ? markerObject.is_list : "false";
				this.isOpenInfo = (markerObject.is_open_info !== undefined) ? markerObject.is_open_info : "false";
				
				this.entrys = [];
				if (markerObject.entrys!== undefined && markerObject.entrys.entry !== undefined) {
					for (var i = 0; i < markerObject.entrys.entry.length; i++) {
						if(markerObject.entrys.entry[i].permalink !== undefined) {
							this.entrys.push({permalink: markerObject.entrys.entry[i].permalink, entryTitle: markerObject.entrys.entry[i].entry_title});
						} else {
							this.entrys.push({permalink: markerObject.entrys.entry.permalink, entryTitle: markerObject.entrys.entry.entry_title});
						}
					}
				}
				
				this.comments = [];
				if (markerObject.comments!== undefined && markerObject.comments.comment !== undefined) {
					for (var i = 0; i < markerObject.comments.comment.length; i++) {
						if(markerObject.comments.comment[i].author !== undefined){ 
							this.comments.push({author: markerObject.comments.comment[i].author, text: markerObject.comments.comment[i].text, time: markerObject.comments.comment[i].time});
						} else {
							this.comments.push({author: markerObject.comments.comment.author, text: markerObject.comments.comment.text, time: markerObject.comments.comment.time});
						}
					}
				}


			}
		}
	},
	
	_getInfoWindowHtmlEntryTab1: function() {
		
		var retHtml;
		retHtml = "";
		retHtml += '<table>';
		retHtml += '<tr>';
		retHtml += '<td align=center>';
		retHtml += '<div align=left class="infoWindow">';
		retHtml += '<div class="infoWindowNavi">';
		retHtml += '<span class="zoom"><img src="/images/zoom_in.png" border="0"><a href="javascript:void(0)" onclick="map.setZoom(map.getZoom() + 1);">ズームイン</a>&nbsp;<img src="/images/zoom_out.png" border="0"><a href="javascript:void(0)" onclick="map.setZoom(map.getZoom() - 1);">ズームアウト</a></span>&nbsp;<span class="takeout"><img src="/images/phone.png" border="0"><a href="javascript:void(0)" onclick="openPocketWindow(' + this.markerClass + ', ' + this.entryId + ', \'' + this.entryTitle + '\');">テイクアウト</a><img src="/images/printer.png" border="0"></span>';
		retHtml += '</div>';
		retHtml += '<div class=infoWindowHeader>';
		retHtml += '<img class="naviListIcon" align="absmiddle" src="' + this.iconListPath + '" border=0 />';
		retHtml += this.entryTitle;
		retHtml += '</div>';
		retHtml += '<div class=entryInfoWindowBody>';
		retHtml += this.entryText + '<br clear="all" />';
		retHtml += '</div>';
		retHtml += '<div class=infoWindowFooter>';
		retHtml += '<div>';
		retHtml += '<ul>';
		retHtml += '<li><a href="' + this.permalink + '" target="_blank">■この記事の詳細</a></li>';
		retHtml += '<li><a href="' + this.permalink + '#comment" target="_blank">■この記事にコメントする</a></li>';
		retHtml += '</ul>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</td>';
		retHtml += '</tr>';
		retHtml += '</table>';

		return retHtml;
	},
	
	_getInfoWindowHtmlEntryTab2: function() {
		
		var retHtml;
		retHtml = "";
		retHtml += '<table>';
		retHtml += '<tr>';
		retHtml += '<td align=center>';
		retHtml += '<div align=left class="infoWindow">';
		retHtml += '<div class=infoWindowHeader>';
		retHtml += this.nickName;
		retHtml += '</div>';
		retHtml += '<div class=profInfoWindowBody>';
		if (this.profPhoto !== "") {
			retHtml += '<div class=profPhoto><img src=\"' + this.profPhoto + '\" border=0></div>';
		} else {
			retHtml += '';
		}
		retHtml += '<div class=proftext>';
		retHtml += this.profComment + '';
		retHtml += '</div><br clear="all" />';
		retHtml += '</div>';
		retHtml += '<div class=infoWindowFooter>';
		retHtml += '<ul>';
		retHtml += '<li><a href="' + this.bloglink + '" target="_blank">■ブログを見る</a></li>';
		retHtml += '</ul>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</td>';
		retHtml += '</tr>';
		retHtml += '</table>';
		
		return retHtml;
	},
	
	_getInfoWindowHtmlLandmarkTab1: function() {

		var retHtml;
		retHtml = "";
		retHtml += '<table>';
		retHtml += '<tr>';
		retHtml += '<td align=center>';
		retHtml += '<div align=left class="infoWindow">';
		retHtml += '<div class="infoWindowNavi">';
		retHtml += '<span class="zoom"><img src="/images/zoom_in.png" border="0"><a href="javascript:void(0)" onclick="map.setZoom(map.getZoom() + 1);">ズームイン</a>&nbsp;<img src="/images/zoom_out.png" border="0"><a href="javascript:void(0)" onclick="map.setZoom(map.getZoom() - 1);">ズームアウト</a></span>&nbsp;<span class="takeout"><img src="/images/phone.png" border="0"><a href="javascript:void(0)" onclick="openPocketWindow(' + this.markerClass + ', ' + this.landmarkId + ', \'' + this.landmarkTitle + '\');">テイクアウト</a><img src="/images/printer.png" border="0"></span>';
		retHtml += '</div>';
		retHtml += '<div class=infoWindowHeader>';
		retHtml += '<img class="naviListIcon" align="absmiddle" src="' + this.iconListPath + '" border=0 />';
		retHtml += this.landmarkTitle;
		retHtml += '</div>';
		retHtml += '<div class=infoWindowBody>';
		if (this.photo !== "") {
			retHtml += '<div class=photo><a href="' + this.photoL + '" rel="lightbox" title="' + this.landmarkTitle + '" onclick="initLightbox(false); myLightbox.start(this); return false;"><img src=\"' + this.photo + '\" border=0 alt="' + this.landmarkTitle + '" /></a></div>';
			//retHtml += '<div class=photo><a href="' + this.photoL + '" rel="lightbox" title="' + this.landmarkTitle + '"><img src=\"' + this.photo + '\" boder=0 alt="' + this.landmarkTitle + '" /></a></div>';
		} else {
			retHtml += '';
		}
		retHtml += this.landmarkText + '<br clear="all" />';
		retHtml += '</div>';
		retHtml += '<div class=infoWindowFooter>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</td>';
		retHtml += '</tr>';
		retHtml += '</table>';
		
		return retHtml;
	},
	
	_getInfoWindowHtmlLandmarkTab2: function() {

		var retHtml;
		retHtml = "";
		retHtml += '<table>';
		retHtml += '<tr>';
		retHtml += '<td align=center>';
		retHtml += '<div align=left class=landmarkInfoWindowBody>';
		retHtml += '投稿されたコメント一覧&nbsp;&nbsp;';
		
		retHtml += '<span id="landmarkCommentRecommend">';
		retHtml += this.getLandmarkCommentRecommendHtml(this.recommendCount, this.recommendTotal);
		retHtml += '</span>';

		retHtml += '<br />';
		
		retHtml += '<div id="landmarkCommentList" class="landmarkCommentList">';
		
		for (var i = 0; i < this.comments.length; i++) {
			var comment = this.comments[i];
			retHtml += '<div class=landmarkComment>';
			retHtml += '<span class="commentAuther">' + comment.author + '</span>&nbsp;<span class="commentText">『' + comment.text + '』</span><span class="commentTime">(' + comment.time + ')</span>';
			retHtml += '</div>';
		}
		
		retHtml += '</div>';
		retHtml += '<hr size="1" />';
		retHtml += '<div class=commentPost>';
		retHtml += '<div id="commentPostForm">';
		retHtml += 'コメントの投稿';
		retHtml += '<table cellpadding="0" cellspacing="0" border="0">';
		retHtml += ' <tr>';
		retHtml += '  <th nowrap>名前: </th>';
		retHtml += '  <td><input type="hidden" id="landmarkId" name="landmarkId" value="' + this.landmarkId + '" /><input type="textfield" id="author" name="author" /></td>';
		retHtml += '  <th nowrap>評価: </th>';
		retHtml += '  <td><select id="recommend" name="recommend">';
		retHtml += '  <option value="0">-</option>';
		retHtml += '  <option value="1">1(最低)</option>';
		retHtml += '  <option value="2">2</option>';
		retHtml += '  <option value="3">3</option>';
		retHtml += '  <option value="4">4</option>';
		retHtml += '  <option value="5">5(最高)</option>';
		retHtml += '  </select></td>';
		retHtml += ' </tr>';
		retHtml += ' <tr>';
		retHtml += '  <th nowrap>コメント: </th>';
		retHtml += '  <td colspan="2"><input type="textfield" id="text" name="text" /></td>';
//		retHtml += '  <td align="center"><input type="button" value=" 投稿 " class="button" name="button" onclick="ScenicItems.postLandmarkComment(' + this.index + ');" /></td>';
		retHtml += '  <td align="center"><input type="button" value=" 投稿 " class="button" name="button" onclick="ScenicItems.postLandmarkComment(\'' + this.key + '\');" /></td>';
		retHtml += ' </tr>';
		retHtml += '</table>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</td>';
		retHtml += '</tr>';
		retHtml += '</table>';

		return retHtml;
	},
	
	_getInfoWindowHtmlLandmarkTab3: function() {

		var retHtml;
		retHtml = "";
		retHtml += '<table>';
		retHtml += '<tr>';
		retHtml += '<td align=center>';
		retHtml += '<div align=left class="infoWindow">';
		retHtml += '<div class=infoWindowHeader>';
		retHtml += '関連する記事';
		retHtml += '</div>';
		retHtml += '<div class=infoWindowBody>';
		retHtml += '<div id="landmarkEntryList" class="landmarkEntryList">';
		retHtml += '<ul>';
		for (var i = 0; i < this.entrys.length; i++) {
			var entry = this.entrys[i];
			retHtml += '<li><a href="' + entry.permalink + '" target="_blank">' + entry.entryTitle + '</a></li>';
		}
		retHtml += '</ul>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '<div class=infoWindowFooter>';		
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</div>';
		retHtml += '</td>';
		retHtml += '</tr>';
		retHtml += '</table>';
		
		return retHtml;
	},
	
	getLandmarkCommentRecommendHtml: function(recommendCount, recommendTotal) {
		var retHtml = "";
		var recommendAvg = (recommendCount !== 0 && recommendTotal !== 0) ? Math.round((recommendTotal / recommendCount * 10)) / 10 : 0.0;
		retHtml += '評価：' + recommendAvg + ' (' + recommendCount + ')';
		for (var i = 0; i < 5; i++) {
			if (recommendAvg >= 1) {
				retHtml += '<img src="/images/star_1.gif" alt="" height="21" width="21">';
			} else if (recommendAvg < 1 && recommendAvg > 0) {
				retHtml += '<img src="/images/star_05.gif" alt="" height="21" width="21">';
			} else {
				retHtml += '<img src="/images/star_0.gif" alt="" height="21" width="21">';
			}
			recommendAvg--;
		}
		return retHtml;
	},
	
	setLandmarkComment: function(author, text, time, recommendCount, recommendTotal) {
		this.comments.push({author: author, text: text, time: time});
		this.recommendCount = recommendCount;
		this.recommendTotal = recommendTotal;
		
		var marker = this.getMarker();
		
		//if (this.eventClick)
		if (this.eventClickHandle)
			GEvent.removeListener(this.eventClickHandle);
		
		var point = this.getMarkerPoint();
		if (point) {
			var infoWindowHtml = this.getInfoWindowHtml();
			this.eventClick = function() {
				map.savePosition();
				isInitMarker = false;
				map.openInfoWindowTabsHtml(point, infoWindowHtml, {onCloseFn: closeFunction});
			}
			this.eventClickHandle = GEvent.addListener(this.marker, "click", this.eventClick);
		}
	}
	
};

