
// ページ区分を取得
function getPageType() {
	
	var hdn  = document.hdnForm;
	
	if( hdn == null ) { return ''; }


	var pt = hdn.pagetype;
	
	if( pt == null ) { return ''; }

	return pt.value;
}

// GETパラメータページアドレス
function getQueryString(page) {

	var buff = page;
	var rsv  = null;
	var rsvs = null;
	var val  = '';

	// ----------------------------------------------------
	// ReserveSubCode(アプローチ区分)だけはここでセット
	// ページ名プレフィックス「AP」でアプローチ判別できるから
	// [rsv=1]を省略。ついでに[rsv=0]も省略しちゃえ
	//
	if( buff.indexOf('rsv=') < 0 ) {
		rsvs = document.hdnForm.childNodes;
		for( var i = 0; i < rsvs.length; i++ ) {
			if( rsvs[i].name == 'rsv' ) {
				val = rsvs[i].value;
				if( 0 < val.length ) {
					buff += '&rsv=' + val;
				}
				break;
			}
		}
	}
	
	if( page.toUpperCase().substr(0, 2) == 'AP' ) {
		buff = buff.replace('rsv=1', '');
	} else {
		buff = buff.replace('rsv=0', '');
	}

	buff = buff.replace(new RegExp('[?]&+', 'g'), '\?');	// 不正文字修正
	buff = buff.replace(new RegExp('&+', 'g'),    '\&');
	buff = buff.replace(new RegExp('&$', 'g'),    '');
	buff = buff.replace(new RegExp('[?]$', 'g'),  '');

	return buff;
}

// デフォルトパラメータ(aff等)
function getHiddenParamater() {
	
	var buff = '';
	var elm	 = null;

	for( var i = 0; i < document.hdnForm.elements.length; i++ ) {
		
		elm = document.hdnForm.elements[i];
		
		if(    elm.name == '__VIEWSTATE'
			|| elm.name.substring(0, 1) == '_'
			|| 0 == elm.name.length
			|| 0 == elm.value.length
			|| elm.type  != 'hidden'
			|| elm.name == 'pagetype'
			|| elm.name == 'rsv'
		) {
			continue;	//*** 不要 ***//
		}
		
		buff += '&' + elm.name + '=' + escape(elm.value);
	}

	return buff;
}

// カレンダーを呼び出す
function Calendar() {

	var month = document.getElementById('pim');
	var date  = document.getElementById('pid');
	var aff	  = document.getElementById('aff');
	
	var page  = 'Calendar.aspx';

	var buff = '';
	
	// アフェリエイト考慮
	if( aff != null && 0 < aff.value.length ) {
		buff += '&aff=' + aff.value;
	}
	
	// デフォルト指定日付考慮
	if( month != null && date != null ) {		
		buff += '&dt=' + month.item(month.selectedIndex).value + date.item(date.selectedIndex).value;
	}
	
	page = getQueryString(page + '?' + buff);

	window.open(page, "calendar", "titlebar=no,menubar=no,toolbar=no,location=no,resizable=yes,width=305,height=302");

}

// submit
function onBaseSubmit() {
	
	//*** 引数生成 ***//
	var buff = getHiddenParamater();

	var elm, n, val;
	var key = '', area = '', area12 = '';
	var yyyy = '', mm = '', dd = '', yyyymmdd;
	var date = '';
	var chk = true;
	var enb = true;
	for( var i = 0; i < document.bsForm.elements.length; i++ ) {
		
		elm = document.bsForm.elements[i];
		
		if(    elm.name == '__VIEWSTATE'
			|| elm.name.substring(0, 1) == '_'
			|| 0 == elm.name.length
		) {
			continue;
		}
		
		val = '';
		
		switch( elm.type ) {
			case 'hidden':
			case 'text':
				val = elm.value;
				break;
			case 'select-one':
				n   = elm.selectedIndex;
				val = elm.options[n].value
				break;
			case 'checkbox':
				if( elm.checked ) { val = '1'; }
				break;
			case 'radio':
				if( elm.checked ) { val = elm.value; }
				break;
		}

		val = val.replace(new RegExp('^[ |　]+$', 'g'),  '');
		
		if( 0 < val.length ) {
		
			switch( elm.name ) {

				//*** エリア ***//
				case 'area':
					enb = !elm.disabled;
					area12	= val;
					break;
				case 'jk':
				case 'sa':
				case 'mesh':
					key  = elm.name;
					area = escape(val);
					break;

				//*** 日付はあとで... ***//
				case 'pim':
				case 'pid':
					break;

				//*** 共通 ***//
				default:
					buff += '&' + elm.name + '=' + escape(val);
					break;

			}
			
			//*** 日付チェック用 ***//
			switch( elm.name ) {
				case 'pim':
					yyyy = val.substring(0, 4);
					mm	 = val.substring(4);
					break;
				case 'pid':
					dd = val;
					break;
			}
		}
	}
	
	//*** 日付チェック ***//
	if( 0 < yyyy.length + mm.length + dd.length ) {
		yyyymmdd = new Date(yyyy + '/' + mm + '/' + dd);
		if(!yyyymmdd || (mm - 1) != yyyymmdd.getMonth() ) {
			chk = false;
		} else {
			date = '&dt=' + yyyy + mm + dd;
		}
	}
	
	//*** エリア入力コントロールがあるかどうかチェック ***//
	var isArea = ( document.bsForm.area != null );

	if( !chk ) {
		window.alert('日付を正しく指定してください');	//*** 日付エラー ***//
	} else if( isArea && enb && 0 == key.length ) {
	
		if( getPageType() == 'TOP' && 0 < area12.length ) {
			window.location.href = getQueryString('Map.aspx?area=' + area12 + date + buff);
		} else {
			window.alert('都道府県を選択してください');	//*** エリアエラー ***//
		}
	} else {
	
		// 省略可能な引数
		buff = '?' + key + '=' + area + date + buff;
		buff = buff.replace('?=',		'?');	// 不正文字修正
		buff = buff.replace('dk=all',	'');	// 施設タイプ
		buff = buff.replace('sn=1',		'');	// 泊数
		buff = buff.replace('rn=1',		'');	// 室数

		window.location.href = getQueryString(document.mainForm.action + buff);
	}

	return;
}

// 検索
function onCustomSubmit(key, val)
{
	onCustomSubmit2(document.mainForm.action, key, val);
}

// 検索（ListではなくMapにリンク）
function onCustomSubmitMap(key, val)
{
	var map = document.mainForm.action
	map = map.replace('List','Map')
	
	onCustomSubmit2(map, key, val);
}

// 検索2
function onCustomSubmit2(page, key, val)
{

	val = val.replace(new RegExp('^[ |　]+$', 'g'),  '');
	if( 0 == val.length || 0 == key.length ) { return; }

	var buff = getHiddenParamater();

	window.location.href = getQueryString(page + '?' + key + '=' + escape(val) + buff);
	
	return;
}

// 検索（全パラメータを取得）
function onCustomSubmitParam(val)
{
	onCustomSubmit3(document.mainForm.action, val);
}

// 検索（全パラメータを取得とListではなくMapにリンク）
function onCustomSubmitParamMap(val)
{
	var map = document.mainForm.action
	map = map.replace('List','Map')
	
	onCustomSubmit3(map, val);
}

// 検索3
function onCustomSubmit3(page, val)
{
	var buff = getHiddenParamater();

	window.location.href = getQueryString(page + '?'+ buff + '&' + val );
	
	return;
}

// ラジオボタン条件での検索
function onRadioCustomSubmit(radioItem, val) {
	for(var a = 0; a < radioItem.length; a++)
	{
		if(radioItem[a].checked){
			onCustomSubmit2(document.mainForm.action, radioItem[a].value, val);
		}
	}
}

// ラジオボタン条件での検索2
function onRadioCustomSubmit2(radioItem, val) {
	var page = 'List.aspx'
	
	for(var a = 0; a < radioItem.length; a++)
	{
		if(radioItem[a].checked){
			window.location.href = getQueryString(page + '?' + radioItem[a].value + '=' + val);
			
			return;
		}
	}
}

// 予約内容確認・取消（crew）
function onCustomSubmitLinkCrew(val)
{
	var buff = getHiddenParamater();
	buff = buff.replace('aff=','seq=0&link=') 

	window.location.href = getQueryString(val + buff);
	
	return;
}

// 予約内容確認・取消（bskt）
function onCustomSubmitLinkBskt(val)
{
	var buff = getHiddenParamater();
	buff = buff.replace('aff=','si=') 

	window.location.href = getQueryString(val + buff);
	
	return;
}

// ポップアップウィンドウ表示
function popupwindow(url, target) {
	window.open(url, target, 'titlebar=no,menubar=no,toolbar=no,location=no,resizable=yes,width=422,height=370');
}

// 部屋サイズ入力フォーム設定(Changeイベント用)
function SetRoomSize(v1) {

	var nrz  = document.getElementById('rz');

	var rzs	 = nrz.getElementsByTagName('option');
	var rz1s = document.getElementById('_rz1').getElementsByTagName('option');
	var rz2s = document.getElementById('_rz2').getElementsByTagName('option');

	var vrz	 = (1 < rzs.length) ? rzs[1].value : '';
	var vrz1 = rz1s[0].value;
	var vrz2 = rz2s[0].value;
	
	var newv = ( v1 == 'WT' || v1 == 'SB' || v1 == 'TB' || v1 == 'DB' ) ? vrz1 : vrz2;

	if( 0 < v1.length && ( vrz == newv ) ) {
		nrz.disabled = '';
		return;
	}

	nrz.selectedIndex = 0;

	//*** 一度リフレッシュ ***//
	var i = 0;
	while( 1 < rzs.length ) {
		nrz.removeChild(rzs[1]);
	}

	if( v1 == '' ) {
		nrz.disabled = 'disabled';
	} else {
		nrz.disabled = '';
	}

	//*** 設定

	var newNode;
	var node;

	//*** 平米 ***//
	if( v1 == '11' || v1 == 'WT' || v1 == 'SB' || v1 == 'TB' || v1 == 'DB' ) {
		for( i = 0; i < rz1s.length; i++ ) {
			newNode = rz1s[i];
			node	= document.createElement('option');
			node.value = newNode.value;
			node.innerHTML = newNode.innerHTML;
			
			nrz.appendChild(node)
		}
	}

	//*** 帖 ***//
	if( v1 == '00' || v1 == 'JP' || v1 == 'JW' ) {
		for( i = 0; i < rz2s.length; i++ ) {
			newNode = rz2s[i];
			node	= document.createElement('option');
			node.value		= newNode.value;
			node.innerHTML	= newNode.innerHTML;
			nrz.appendChild(node)
		}
	}

	return;

}

// 部屋サイズ入力フォーム設定(OnLoadイベント用)
function InitRoomSize(v1, v2) {

	var rs = document.getElementById('rs');

	if( rs == null ) { return; }

	rs.value = v1;		//*** 選択中客室様式セット ***//

	var v;

	if( rs.selectedIndex < 0 ) {
		rs.getElementsByTagName('option')[0].setAttribute('selected', 'selected');
		v = '';
	} else {
		v = v1;
	}
	
	//*** 客室様式指定あり＋サイズ指定あり の場合のフォロー ***//
	if( 0 == v.length && 0 < v2.length ) {
		if( 0 <= v2.indexOf('H') ) {
			v = '11';
		} else if( 0 <= v2.indexOf('J') ) {
			v = '00';
		}
	}

	SetRoomSize(v);		//*** 部屋サイズ情報セット ***//

	if( 0 == rs.selectedIndex && 0 == v2.length ) { return; }

	//*** 選択中部屋サイズセット ***//
	var nrz, rzs, i;

	nrz  = document.getElementById('rz');

	rzs	 = nrz.getElementsByTagName('option');

	for( i = 0; i < rzs.length; i++ ) {
		if( v2 == rzs[i].value ) {
			nrz.selectedIndex = i;							// Firefox用
			rzs[i].setAttribute('selected', 'selected');	// IE用
			break;
		}
	}
	
	//*** 最終的に選択できなかった場合のフォロー ***//
	if( nrz.selectedIndex < 0 ) {
		rzs[0].setAttribute('selected', 'selected');
	}
	if( v == '00' || v == '11' ) {
		nrz.setAttribute('disabled', 'disabled');
	}

	return;
}

var g_jiskencd	= '';
var g_subarea	= '';
var g_mesh		= '';

//-------------------------------
//	入力チェック
function InputCheck(PageName){

	if(PageName == "List.aspx"){

		var v = document.bsForm.jk.options[document.bsForm.jk.selectedIndex].value;

		if(v == "" || v == "00"){
			alert("都道府県を選択してください");
			return false;
		}
	}
	
	return true;
}

//-------------------------------
//	List画面　初期表示
function InitArea(area12, ken, subarea, mesh)
{

	// ------------------------------------------------
	// 地区系のコントロールの存在チェック
	//
	var chk = document.getElementsByName('area');

	if( 0 == chk.length ) {
	
		return;
		
	}	// ない場合何もできない

	var area = '';

	if( 0 == area12.length ){
		area = document.bsForm.area.value;
	} else {
		area = area12;
	}

	g_jiskencd	= ken;
	g_subarea	= subarea;
	g_mesh		= mesh;
	
	onChangePref(area);
}

//-------------------------------
//	Area12　変更時
function onChangePref(v){
	resetKen();
	//resetSubArea();
	//resetMesh();
		
	//if(v == "" || v == "00"){
	if(v == ""){
		g_jiskencd		= "";
		g_subarea = "";
		g_mesh	= "";
		
	}else{

		var area11 = document.bsForm.region.value.toString();
		dynamicLoad(area11, 1);		//動的読込関数（県情報）
		
	}

}

//-------------------------------
//	Ken情報読込
function reloadKen(){

	var s = 1;

	// 配列情報（県コード,県名称）をセレクトボックスに反映
	for(i=0;i<array_Ken.length;i=i+2){
		document.bsForm.pref.length++;
		document.bsForm.pref[s].value = array_Ken[i];
		document.bsForm.pref[s].text = array_Ken[i+1];
		s++;
	}

	// 県コードが既に指定されている場合
	if(g_jiskencd != ""){
		// 対象の県を選択状態にする
		for(i=0;i<document.bsForm.pref.length;i++){
			if(g_jiskencd == document.bsForm.pref[i].value){
				document.bsForm.pref.options[i].selected = true;
				break;
			}
		}
		g_jiskencd = "";
		// 県コードに対応したサブエリアを取得
		onChangeKen(document.bsForm.pref.options[document.bsForm.pref.selectedIndex].value);
	}
}

//-------------------------------
//	Ken　変更時
function onChangeKen(v){
	resetSubArea();
	resetMesh();
	
	if(v != ""){
		dynamicLoad(v, 2);	//動的読込関数（サブエリア情報）
	}
}

//-------------------------------
//	SubArea情報読込
function reloadSubArea(){
	var s = 1;

	// 配列情報（サブエリアコード,サブエリア名称）をセレクトボックスに反映
	for(i=0;i<array_SubArea.length;i=i+2){
		document.bsForm.sa.length++;
		document.bsForm.sa[s].value = array_SubArea[i];
		document.bsForm.sa[s].text = array_SubArea[i+1];
		s++;
	}

	// サブエリアコードが既に指定されている場合
	if(g_subarea != ""){
		// 対象のサブエリアを選択状態にする
		for(i=0;i<document.bsForm.sa.length;i++){
			if(g_subarea == document.bsForm.sa[i].value){
				document.bsForm.sa.options[i].selected = true;
				break;
			}
		}
		g_subarea = "";
		// サブエリアコードに対応したメッシュを取得
		onChangeSubArea(document.bsForm.sa.options[document.bsForm.sa.selectedIndex].value);
	}
}

//-------------------------------
//	SubArea　変更時
function onChangeSubArea(v){
	resetMesh();
	
	if(v != ""){
		dynamicLoad(v, 3);	//動的読込関数（メッシュ情報）
	}
}

//-------------------------------
//	Mesh情報読込
function reloadMesh(){

	var s = 1;

	// 配列情報（メッシュコード,メッシュ名称）をセレクトボックスに反映
	for(i=0;i<array_Mesh.length;i=i+2){
		document.bsForm.mesh.length++;
		document.bsForm.mesh[s].value = array_Mesh[i];
		document.bsForm.mesh[s].text = array_Mesh[i+1];
		s++;
	}

	// メッシュコードが既に指定されている場合
	if(g_mesh != ""){
		// 対象のメッシュを選択状態にする
		for(i=0;i<document.bsForm.mesh.length;i++){
			if(g_mesh == document.bsForm.mesh[i].value){
				document.bsForm.mesh.options[i].selected = true;
				break;
			}
		}
		g_mesh = "";
	}
}

//-------------------------------
//	Ken初期化
function resetKen(){
	document.bsForm.pref.length = 1;
	document.bsForm.pref.options[0].value = "";
	document.bsForm.pref.options[0].text = "すべて表示";
	document.bsForm.pref.options[0].selected = true;
}

//-------------------------------
//	SubArea初期化
function resetSubArea(){
	document.bsForm.sa.length = 1;
	document.bsForm.sa.options[0].value = "";
	document.bsForm.sa.options[0].text = "指定なし";
	document.bsForm.sa.options[0].selected = true;
}

//-------------------------------
//	Mesh初期化
function resetMesh(){
	document.bsForm.mesh.length = 1;
	document.bsForm.mesh.options[0].value = "";
	document.bsForm.mesh.options[0].text = "指定なし";
	document.bsForm.mesh.options[0].selected = true;
}

//-------------------------------
//	動的読込関数
function dynamicLoad(jsFileName, num) {

	//--for cache 
	var now = new Date();
	var getData;
	
	switch( num ) {
		case 1 :
			getData = './parts/area/' + jsFileName + '.txt';
			break;
		case 2 :
			getData = './Parts/AreaData/Ken/' + jsFileName + '.txt';
			break;
		default:
			getData = './Parts/AreaData/SubArea/' + jsFileName + '.txt';
			break;
	}

	//確認用アラーム
	//alert(getData + ":" + num + ":" + jsFileName);
	var cnode;

    if( document.all ){ 
		
		//ユーザーエージェント取得（Windowsの場合）
		if( navigator.userAgent.indexOf("Win")!=-1 ){
			eval(document.all('dynld' + num)).src = getData;
			
			
		//ユーザーエージェント取得（Macの場合）
		} else if( navigator.userAgent.indexOf("Mac")!=-1 ){

			//--for document.all && Mac
			document.body.insertAdjacentHTML('BeforeEnd', '<script src="' + getData + '"><script/>');
		}

    } else if(document.getElementById){

		//--for w3c-dom  widthout document.all 
		if(num == 1){
			cnode =document.getElementById('dynld1');
		}else{
			cnode =document.getElementById('dynld2');
		}

		var nnode = document.createElement('script');
		nnode.src = getData;
		if(num == 1){
			nnode.id  = 'dynld1';
		}else{
			nnode.id  = 'dynld2';
		}
		cnode.parentNode.replaceChild(nnode, cnode);

	} else {

		//--for nondhtml(n4...)
		if(document.images){
	        var datasrc   = new Image();
		    datasrc.src   = getData;
			location.href = datasrc.src;
		}
    }
}

document.write('<script id="dynld1"></script>');
document.write('<script id="dynld2"></script>');
document.write('<script id="dynld3"></script>');

