var Pageindex = {
	_URL_JSON : '/ja/index.json.dat',
	_URL : '',
	_lang : 'ja',
	_retrievelocation : function() {
		var loc = location.href;
		var loc_search = loc.indexOf('?');
		var loc_hash = loc.indexOf('#');
		if(loc_search > 0) loc = loc.substr(0, loc_search);
		else if(loc_hash > 0) loc = loc.substr(0, loc_hash);
		
		// http://[^/]+を削除
		var loc_http = loc.indexOf('http://');
		if(loc_http == 0) loc = loc.substr(7);
		var first_sep = loc.indexOf('/');
		if(first_sep) loc = loc.substr(first_sep);
		Pageindex._URL = loc;
	},
	init : function(lang) {
		if(lang) Pageindex._lang = lang;
		Pageindex._URL_JSON = '/'+Pageindex._lang+'/index.json.dat';
		
		$('content_index').innerHTML = Pageindex._lang=='ja' ? '読み込み中...' : 'Loading index...';
		// location
		Pageindex._retrievelocation();
		
		// ajax request
		var t = Math.round(new Date().getTime()/60000);
		var q = $H({'t' : t });
		var options = {
			method:'get',
			parameters:q.toQueryString(),
			onComplete:Pageindex._onload,
			onException:Pageindex._onexception
			};
		new Ajax.Request(Pageindex._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;
	},
	_ul_index : 0,
	_htmlconvert : function(lst_index, d, force_display) {
		if(!d) d = 1;
		var ul_id = 'index_ul'+Pageindex._ul_index;
		Pageindex._ul_index++;
		var selected = false;
		var num = 1;
		// 表示してるページ以外のところを閉じる
		var str_child = '';
		var selection_focused = false;
		lst_index.each(function(i) {
			// 先にchildを
			var ret = i['child'] ? Pageindex._htmlconvert($A(i['child']), d+1, i['url']?true:false) : {};
			var url = i['url'] || (ret['ul_id'] ? 'javascript:Pageindex.toggle(\''+ret['ul_id']+'\');' : '#');
			if(ret['selected']) selected = true;
			var num_str = d==3 ? '・' : num++;
			if(url == Pageindex._URL) {
				str_child += '<li class="li'+d+'"><span class="index_num'+d+'"><span class="index_selected">'+num_str+'</span></span><span class="index_text'+d+'"><span class="index_selected">'+i['title']+'</span></span>'
				selected = true;
				
				//
				$('title_num1').innerHTML = i['order1'];
				$('title_num2').innerHTML = '-'+i['order2'];
				selection_focused = true;
			} else {
				if(selected && (selection_focused==false)) {
					// 
					str_child += '<li class="li'+d+'"><span class="index_num'+d+'"><span class="index_selected">'+num_str+'</span></span><span class="index_text'+d+'"><a href="'+url+'"><span class="index_selected">'+i['title']+'</span></a></span>';
					selection_focused = true;
				} else 
				{
					str_child += '<li class="li'+d+'"><span class="index_num'+d+'">'+num_str+'</span><span class="index_text'+d+'"><a href="'+url+'">'+i['title']+'</a></span>'
				}
			}
			if(i['child']) str_child += ret['str'];
			str_child += '</li>';
			if(d==1)selected = false;
		});
		var style_display = force_display ? 'block' : (selected||d==1 ? 'block' : 'none');
		var str = '<ul id="'+ul_id+'" class="ul'+d+'" style="display:'+style_display+';">'+str_child+'</ul>';
		return { 'str':str, 'ul_id':ul_id, 'selected':selected };
	},
	toggle : function(ul_id) {
		if(ul_id == undefined) return;
		var style_display = $(ul_id).style.display=='block' ? 'none' : 'block';
		$(ul_id).style.display = style_display;
	},
	_onload : function(res) {
		var data = eval(Pageindex._decodetext(res.responseText));
		var lst_index = $A(data);
		var ret = Pageindex._htmlconvert(lst_index);
		$('content_index').innerHTML = ret['str'];
	},
	_onexception : function() {
		$('content_index').innerHTML = Pageindex._lang=='ja' ? '索引の読み込みに失敗しました' : 'Failed loading index.';
	}
}
