var Page = {
	_cache_request : {},
	_requesturl_current : undefined,
	_popup_now : false,
	init : function() {
		Page._create_popup();
		var anchorList = $('content_main').getElementsByTagName('a');
		var anchors = $A(anchorList);
		anchors.each(function(a) {		
			if (Element.hasClassName(a, 'word')) {
				var url_json = a.href.replace('.html', '.json');
				var array = url_json.split("#");
				url_json = array[1];
				a.url_json = url_json;
				a.onmouseup = function() {
					Page._popup(false);
					Page._popup(true, this.url_json);
				};
				a.ondblclick   = function() {
					Page._popup(false);
				};
			};
		});
	},
	_create_popup : function() {
		var popup_html = '<div id="popup"><div id="popup_title"></div><div id="popup_text"></div></div>';
		new Insertion.Bottom('page', popup_html);
		Event.observe(document.body, 'click', Page._mouseclick, false);
	},
	_popup : function (bpop, url_json) {
		if(Page._popup_now == bpop) return;
		Page._popup_now = bpop;
		$('popup_title').innerHTML = '読み込み中(Loading)...';
		$('popup_text').innerHTML = '';
		$('popup').style.display = bpop ? 'block' : 'none';
		
		// ajax request
		if(url_json) {
			if(Page._cache_request[url_json]) {
				Page._update_popup(Page._cache_request[url_json]);
				return;
			}
			var options = {
				method:'get',
				onComplete:Page._popuploaded,
				onException:Page._popuploadingexception
				};
			Page._requesturl_current = url_json;
			new Ajax.Request(url_json, options);
		}
	},
	_decodetext : function(text) {
		if(navigator.appVersion.indexOf('KHTML') > -1) {
			var text_esc = escape(text);
			if(text_esc.indexOf('%u') < 0 && text_esc.indexOf('%') > -1)
				text = decodeURIComponent(text_esc);
		}
		return text;
	},
	_popuploadingexception : function(req, e) {
		$('popup').style.display = 'true';
//		$('popup').style.display = 'none';
//		Page._update_popup({title:'Exception',text:e});
	},
	_popuploaded : function(res) {
		var data = eval(Page._decodetext(res.responseText));
		var hobj = $H(data[0]);
		Page._cache_request[Page._requesturl_current] = hobj;
		Page._update_popup(hobj);
	},
	_update_popup : function(hobj) {
		$('popup_title').innerHTML = hobj['title'];
		$('popup_text').innerHTML = hobj['excerpt'];
	},

	_mouseclick: function(e) {
		$('popup').style.left = Event.pointerX(e)+20 + 'px';
		$('popup').style.top = Event.pointerY(e)+20 + 'px';
	}

}
Event.observe(window, 'load', Page.init, false);

