/**********************************************************************

  分類一覧

**********************************************************************/

new function() {
	//設定項目
	var scriptPath = 'http://www.108-18.com/site.cgi';
	var dataPath   = 'http://www.108-18.com/lib/webliberty/Plugin/FieldList/field.txt';
	var archiveDir = 'archives';
	var archiveExt = 'html';
	var htmlMode   = 1;	//0 ... 分類別のHTML書き出しに対応しない / 1 ... 分類別のHTML書き出しに対応する
	var fieldList  = {
		'archives/osaka/index.html' : '大阪',
		'archives/hyogo/index.html' : '兵庫',
		'archives/kyoto/index.html' : '京都',
		'archives/etc/index.html' : 'その他',
		'archives/choice/index.html' : 'オハコチョイス',
		'archives/library/index.html' : 'オハコライブラリ',
		'archives/about/index.html' : 'オハコ・WESTについて',
		'archives/info/index.html' : '運営部より',
		'archives/privacy/index.html' : 'プライバシーポリシー',
		'archives/inquiry/index.html' : 'お問合せ',
		'' : ''
};
	var execMode   = 0;	//0 ... 子分類のみ表示する / 1 ... 親分類と子分類を表示する
	var fieldMode  = 1;
	var titleNode  = document.getElementById('field_list_title');
	var screenNode = document.getElementById('field_list');

	//記事情報取得
	var info = new Object;
	var url  = location.href.split('?');
	if (url[1]) {
		var list  = url[1].split('&');
		var query = new Object;
		for (var i = 0; i < list.length; i++) {
			var data = list[i].split('=');
			query[data[0]] = data[1];
		}

		if (query.no || query.id) {
			if (query.no) {
				info.id = query.no;
			} else {
				info.id = query.id;
			}
		} else if (query.field) {
			if (query.field.match(/\D/)) {
				info.field = decodeURIComponent(query.field);
			} else {
				info.field_no = query.field;
			}
		}
	} else {
		if (htmlMode) {
			for (var path in fieldList) {
				if (url[0].indexOf('/' + path, 0) >= 0) {
					info.field = decodeURIComponent(fieldList[path]);
					break;
				}
			}
		}
		if (!info.field) {
			if (url[0].indexOf('/' + archiveDir + '/', 0) >= 0) {
				if (url[0].match(new RegExp('/' + archiveDir + '/(\\w+).' + archiveExt, 'g'))) {
					info.id = RegExp.$1;
				}
			}
		}
	}

	if (!info.id && !info.field && !info.field_no && !execMode) {
		return;
	}

	//XMLHttpRequest作成
	var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new function() {
		try {
			return new ActiveXObject('Msxml2.XMLHTTP');
		} catch (e) {
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
	};

	//イベントハンドラ設定
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				var list = xmlhttp.responseText.split('\n');

				var show_data;

				if (info.id || info.field || info.field_no) {
					//親分類取得
					for (var i = 0; i < list.length; i++) {
						if (list[i]) {
							var data = list[i].replace(/\r/g, '').split('\t');

							var field = data[0];
							var count = data[1];
							var lists = data[2];

							if (info.id) {
								if (lists.match(new RegExp('(^|,)' + info.id + '($|,)', 'g'))) {
									info.field    = field.split('<>')[0];
									info.field_no = i;
									break;
								}
							} else if (info.field) {
								if (info.field == field) {
									info.field    = field.split('<>')[0];
									info.field_no = i;
									break;
								}
							} else if (info.field_no) {
								if (info.field_no == i) {
									info.field    = field.split('<>')[0];
									info.field_no = i;
									break
								}
							}
						}
					}

					//子分類一覧作成
					show_data = '<ul>';

					for (var i = 0; i < list.length; i++) {
						if (list[i]) {
							var data = list[i].replace(/\r/g, '').split('\t');

							var field = data[0];
							var count = data[1];
							var lists = data[2];

							if (field.match(new RegExp(info.field + '<>', 'g'))) {
								var child = field.split('<>')[1];
								var link;
								if (fieldMode) {
									link = encodeURIComponent(field);
								} else {
									link = i + 1;
								}

								show_data += '<li>・<a href="' + scriptPath + '?field=' + link + '">' + child + '</a></li>';
							}
						}
					}

					show_data += '</ul>';

					titleNode.innerHTML = info.field || '未分類';
				} else {
					//親分類一覧作成
					show_data = '<ul>';

					for (var i = 0; i < list.length; i++) {
						if (list[i]) {
							var data = list[i].split('\t');

							var field = data[0];
							var count = data[1];
							var lists = data[2];

							if (!field.match(/<>/g)) {
								var link;
								if (fieldMode) {
									link = encodeURIComponent(field);
								} else {
									link = i + 1;
								}

								show_data += '<li><a href="' + scriptPath + '?field=' + link + '">' + field + '</a></li>';
							}
						}
					}

					show_data += '</ul>';
				}

				//情報反映
				screenNode.innerHTML = show_data;
			} else {
				screenNode.innerHTML = '<ul><li>Error : ' + xmlhttp.status + '</li></ul>';
			}
		} else {
			screenNode.innerHTML = '<ul><li>Now Loading ...</li></ul>';
		}
	};

	//通信開始
	xmlhttp.open('get', dataPath + '?' + new Date().getTime(), true);
	xmlhttp.send('');

	return;
};
