﻿// top.js
// トップページ表示制御用JS

// ステータスデータ保存用
var status_data = {}
var save_data = {}

var area =	$H({
	0: '全国' ,
	1: '北海道', 
	110: '東北エリア',
	120: '関東エリア',
	130: '甲信越エリア',
	140: '北陸エリア',
	150: '東海エリア',
	160: '近畿エリア',
	170: '中国エリア',
	180: '四国エリア',
	190: '九州・沖縄エリア' 
});

var prefecture = {
	'全国':[],
	'北海道':[],
	'東北エリア':['青森県', '岩手県', '宮城県', '秋田県', '山形県', '福島県'],
	'関東エリア':['茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '東京都23区内', '東京都下', '神奈川県'],
	'甲信越エリア':['新潟県', '山梨県', '長野県' ],
	'北陸エリア':['富山県', '石川県', '福井県'],
	'東海エリア':['岐阜県', '静岡県', '愛知県', '三重県'],
	'近畿エリア':['滋賀県', '京都府', '大阪府', '兵庫県', '奈良県', '和歌山県'],
	'中国エリア':['鳥取県', '島根県', '岡山県', '広島県', '山口県'],
	'四国エリア':['徳島県', '香川県', '愛媛県', '高知県'],
	'九州・沖縄エリア':['福岡県', '佐賀県', '長崎県', '熊本県', '大分県', '宮崎県', '鹿児島県', '沖縄県']
};

var prefValue =	{'青森県':2, '岩手県':3, '宮城県':4, '秋田県':5, '山形県':6, '福島県':7, '茨城県':8, '栃木県':9, '群馬県':10, '埼玉県':11, '千葉県':12, '東京都23区内':13, '東京都下':14, '神奈川県':15, '新潟県':16, '山梨県':20, '長野県':21, '富山県':17, '石川県':18, '福井県':19, '岐阜県':22, '静岡県':23, '愛知県':24, '三重県':25, '滋賀県':26, '京都府':27, '大阪府':28, '兵庫県':29, '奈良県':30, '和歌山県':31, '鳥取県':32, '島根県':33, '岡山県':34, '広島県':35, '山口県':36, '徳島県':37, '香川県':38, '愛媛県':39, '高知県':40, '福岡県':41, '佐賀県':42, '長崎県':43, '熊本県':44, '大分県':45, '宮崎県':46, '鹿児島県':47, '沖縄県':48};

document.observe('dom:loaded', init);

// 初期化
function init() {
	$('category1').style.display = "block";
	$('detail1').style.display = "block";
	$('search_tbl1').checked = true;
	$('direct_flg').disabled = true;

	// エリア選択用option要素の生成
	area.each(
		function (item, index) {
			for (var i = 1; i <= 3; i++) {
				$('area' + i).options.add(new Option(item.value, item.key));
			}
		}
	);
	
	//選択肢の内容が変わったときにareaChangedが呼び出されるようにイベント登録
	$('area1').observe('change', function(e){areaChanged(1);}, false);
	$('area2').observe('change', function(e){areaChanged(2);}, false);
	$('area3').observe('change', function(e){areaChanged(3);}, false);

	areaChanged(1);


}

//instead of the setStatus() button
function setStatusBtn(){
	var buf;
	$('searchForm').getElements().each(function(v){
		buf = $(v).name;
		if(buf == 'search_tbl'){//direct_flg ON/OFF
			$(v).observe('change', function(e){toggleDirect();}, false);
		}else if(buf != ''&&buf != 'undefined'&&buf != 'kywd'&&buf != 'send'&&buf != 'q'){
			if($(v).type == 'radio'||$(v).type == 'checkbox'){
				$(v).observe('click', function(e){setStatus(current);}, false);
			}else{
				$(v).observe('change', function(e){setStatus(current);}, false);
			}
		}
	});
	/*
	Event.observe('searchForm', 'change',function(event){
		alert("HERE!");
		var elm = Event.element(event);
		if(elm.name != 'search_tbl' && elm.name != 'kywd')
			setStatus(current);
	});*/
}

//observe search_tbl3 -> direct_flg
function toggleDirect(){
	$('direct_flg').disabled = ($('search_tbl3').checked == true)?false:true;
}

// 全体用リセットボタン
function allReset() {
	selectCategory(1);
}

// 情報の種類ラジオボタンに対応するオプション検索項目を表示する
var current = 1;
var set;
function selectCategory(num) {
	//フォーム内容とステータスをリセット
	document.searchForm.reset();
	for (var i = 1; i <= 20; i++) {
		$('st' + i).update("");
	}
	
	// ステータス保存用オブジェクトのプロパティを削除する
	for (var name in status_data) {
		delete status_data[name];
	}
	save_data = {}
	
	$('search_tbl' + num).checked = true;
	areaChanged(num);
	
	// 条件ボタンセットの表示を切り替える
	$('category' + num).style.display = "block";
	for (var i = 1; i <= 3; i++) {
		if (i != num) {
			$('category' + i).style.display = "none";
		}
	}
	
	$('op' + current).src =	'image/top/op' + current + '.jpg';

	// 選択された条件ボタンセットに対応する詳細エリアの１項目目を表示する
	switch (num) {
		case 1:	
			$('detail1').style.display = "block";
			$('op1').src =	'image/top/op1_on.jpg';
			set = "1";
			break;
		case 2:
			$('detail5').style.display = "block";
			$('op5').src =	'image/top/op5_on.jpg';
			set = "5";
			break;
		case 3:
			$('detail19').style.display = "block";
			$('op19').src =	'image/top/op19_on.jpg';
			set = "19";
			break;
	}
	
	// 現在の詳細エリアを非表示
	if (set != current) {
		$('detail' + current).style.display = "none";
	}
	current = set;
}

// 条件ボタンに対応する詳細エリアを表示する
function selectOptions(num) {
	$('detail' + num).style.display = "block";

	// 現在の詳細エリアを非表示
	if (current != num) {
		$('detail' + current).style.display = "none";
		current = num;
	}
}

// 選択されたエリアに対応する都道府県を表示する
function areaChanged(num) {
	// エリアのリスト内で選択されたものを調べる
	var selectedArea = $F('area' + num);
	var areaName = area.get(selectedArea);
	
	// 選択肢を削除する
	removeChild('prefecture' +num);
	
	// 選択肢を設定する	
	if (areaName) {
		prefecture[areaName].each(
			function (value, index) {
				var tmpl = new Template(
					'<li><label><input type ="checkbox" name="#{name}" value="#{value}">#{label}</label></li>'
				);
				
				var chkboxstr = tmpl.evaluate(
					{
						label :  value.escapeHTML(),
						value : prefValue[value],
						name : 'pref_arr[]'
					}
				);
			$('prefecture' +num).insert(chkboxstr);
			}
		);
	}

	//add button function
	setStatusBtn();
}

function removeChild (elementID) {
	// 子を削除する
	var element = $(elementID);
	while (element.firstChild) {
		element.removeChild(element.firstChild);
	}
}

var params = {
	2:['大学病院', '市中病院'],
	3:['1次救急', '2次救急', '3次救急'],
	4:['あり', 'なし'],
	6:['300床以下', '301床～500床', '501床～800床', '801床～1000床', '1001床以上'],
	7:['1次救急', '2次救急', '3次救急'],
	8:['5名以下', '6～10名', '11名～20名', '21名～30名', '31名以上'],
	9:['10名以下', '11～20名', '21名～30名', '31名～40名', '41名以上'],
	10:['なし', '月3回以下', '月4回', '月4回以上'],
	11:['～35万円', '36～45万円', '46～55万円', '56万円～'],
	14:['大学病院', '市中病院'],
	15:['1次救急', '2次救急', '3次救急'],
	16:['5名以下', '6～10名', '11名～20名', '21名～30名', '31名以上'],
	17:['なし', '月3回以下', '月4回', '月4回以上'],
	18:['～35万円', '36～45万円', '46～55万円', '56万円～'],
	19:['循環器内科', '消化器内科', '呼吸器内科', '内分泌・代謝科', '腎臓内科', '神経内科', '血液内科', 'その他（内科系）', , '消化器外科', '心臓血管外科', '呼吸器外科', '乳腺外科', 'その他（外科系）', '総合診療科', '家庭医', '整形外科', '脳神経外科', '小児科', '泌尿器科', '産婦人科', '耳鼻咽喉科', '眼科', '精神科', '皮膚科', '放射線科', '麻酔科', '救急救命科', '他科', , , , '形成外科', , , '小児外科', , 'アレルギー・リウマチ科', '心療内科', , , '病理診断科', '内科', '腫瘍内科', '糖尿病内科', '感染症内科', '外科', '腫瘍外科', '産科', '婦人科', '緩和ケア', 'リハビリテーション科', '漢方']
};

var exception = {
	1:'area1',
	5:'area2',
	13:'area3',
	12:[],
	20:[]
};

var parentUL = {
	1:'prefecture1',
	5:'prefecture2',
	13:'prefecture3'
};

var others = {
	'hsp_kind_arr':['大学', '市中'],
	'intern_comment':'研修医からのコメント',
	'dwelling':'住宅・宿舎',
	'abroad':'留学の可能性',
	'nursery':'保育施設',
	'academic_allow':'学会参加補助',
	'schedule_select':'スケジュール選択期間が半年以上設定されている'
}


// 選択されたフォーム要素の内容をステータスエリアに表示する
function setStatus (num) {
	var elems = $('detail' + num).getElementsByTagName('input');
	var target = 'st' + num;
	var display = "";
	var i, j, k;
	var vals = new Array();

	// エリア選択用の処理
	if (num == '1' || num == '5' || num == '13') {
		display = area.get($F(exception[num]));
		for (i=0; i<elems.length; i++) {
			if (elems[i].checked) {
				display += "...";
				break;
			}
		} 

		for (i=0; i<elems.length; i++) {
				if (elems[i].checked) {
					if (elems[i].className != 'single') {
						vals.push(elems[i].value);
					}
				}
			}

		vals.push($F(exception[num]));
		status_data[$(exception[num]).name] = vals;
		
	} else {
		// ステータス欄に選択状態を表示する
		for (i=0; i<elems.length; i++) {
			if (elems[i].checked) {
				if (!display) {
					if (num == '12' || num == '20') {
						if (elems[i].name.sub(/\[.*$/,'') == 'hsp_kind_arr') {
							display = others.hsp_kind_arr[elems[i].value -1];
						} else {
							display = others[elems[i].name.sub(/^[2|3]/,'')];
						}
					} else {
						display = params[num][parseInt(elems[i].value) - 1];
					}
				} else {
					display += "...";
					break;
				}
			}
		}
	
		// 選択された項目を保存
		for (i=0; i<elems.length; i++) {
			if (elems[i].checked) {
				// 単一の値しかもたない要素の場合
				if (elems[i].className == 'single') {
					status_data[elems[i].name] = elems[i].value;
				} else {
					// 複数の値を持つ可能性のある要素は配列に保存
					vals.push(elems[i].value);
				}
			}
		}
	
		for (i=0; i<elems.length; i++) {
			if (elems[i].checked) {
				if (elems[i].className != 'single') {
					status_data[elems[i].name] = vals;
				}
			}
		}
	}

	$(target).update(display);
	save_data = Form.serialize('searchForm');
}

// 現在選択中の条件のみリセットする
function currReset (num) {
	var elems = $('detail' + num).getElementsByTagName('input');
	var target = 'st' + num;
	var i, parent;
	
	// option要素は初期化
	if (num == '1' || num == '5' || num == '13') {
		removeChild(exception[num]);

		area.each(
			function (item, index) {
				$(exception[num]).options.add(new Option(item.value, item.key));
			}
		);
		
		removeChild(parentUL[num]);
	}
	
	 for (i=0; i<elems.length; i++) {
		if (elems[i].checked) {
			elems[i].checked = false;
			// 保存用オブジェクトのプロパティも削除する
			delete status_data[elems[i].name];
		}
	}
	
	// ステータスをリセット
	$(target).update("");
	save_data = {}
}


// ボタンロールオーバー
function rollover(img_name, img_file) {
	eval("document." + img_name + ".src = 'image/top/" + img_file + "'");
}

// ボタン状態の復元
function restore(current) {
	for (var i = 1; i <= 20; i++) {
		if (i != current) {
			$('op' + i).src =	'image/top/op' + i + '.jpg';
		}
	}
}


function sendStatus(form) {

}

function sendNext(){
//	var tbl = $A($('searchForm').search_tbl).find(function(element){
//		return element.checked;
//	}).getValue();
	if(typeof save_data.toQueryParams != 'function') return false;
	var save_buf = save_data.toQueryParams();
	var new_buf = {}
	for(i in save_buf){
		if(!status_data[i] && i != 'direct_flg') continue;
		new_buf[i] = save_buf[i];
	}
	save_data = $H(new_buf).toQueryString();
	$('q').value = save_data;
}





