/* 
******************************************************************************
  Filename    : pub.js
  Language    : JavaScript
  
  Description : 利用者機能
  ==============================================================================
  Change Log  :
  
  Date:         Ver:        Description:
  ------------------------------------------------------------------------------
  2006/10/27	1.00	    Hishikawa@LimeNet
****************************************************************************** 
*/

//==============================================================================
//グローバル変数
//==============================================================================
var g_favorite_cnt = 100;
g_ness_bar_zip = true; //ハイフン必須(宣言は[common.js])
g_ness_bar_tel = true;	//ハイフン必須(宣言は[common.js])

//******************************************************************************
// <summary> お気に入りに登録する
// <param  > 
// <returns>
// <remarks> 
function reg_favorite()
{	
	try
	{
		window.external.addFavorite('http://www.rp-japan.com/index.php','すめーる.NET');	
	}
	catch(e)
	{
		alert("本ブラウザはお気に入り登録に対応しておりません");
	}
}

//******************************************************************************
// <summary> 住所選択、路線・駅選択ページへ遷移する
// <param  > pref_id : 都道府県番号
// <returns>
// <remarks> Flashの都道府県選択時にもコールされる 
function trans_to_al(pref_id)
{
	try
	{	
		//検索方法の要素を取得
		var adr = document.getElementById("src_address");
		var line = document.getElementById("src_line");
		
		//住所が選択されている場合
		if (adr.checked)
		{
			//次ページのページ番号を取得
			var pg = g_pg_address;
			
			//選択された検索方法を取得
			var al = g_al_address;
		}
		else if(line.checked)
		{
			//次ページのページ番号を取得
			var pg = g_pg_line;
			
			//選択された検索方法を取得
			var al = g_al_line;
		}
		else
		{
			alert("検索方法の指定が正しくありません");
			return;
		}
		
		//クエリストリングを取得
		var qs = get_qs();
		
		
		if(qs['yo'] != null)
		{
			//住所が選択されている場合
			if (adr.checked)
			{
				//次ページのページ番号を取得
				var pg = 202;
			}
			else if(line.checked)
			{
				//次ページのページ番号を取得
				var pg = 203;
			}
			
			//路線・駅選択ページ取得(予約物件の場合)
			var url = "./index.php?pg=" + pg + "&kb=" + qs['kb'] + "&tp=" + qs['tp'] + "&yo=" + qs['yo'] + "&al=" + al + "&pr=" + pref_id;
		}else{
			//路線・駅選択ページ取得
			var url = "./index.php?pg=" + pg + "&kb=" + qs['kb'] + "&tp=" + qs['tp'] + "&al=" + al + "&pr=" + pref_id;
		}
		//遷移
		document.location = url;
	}
	catch(e)
	{
		alert(e);
	}	

	return;
}

//******************************************************************************
// <summary> 物件検索を行う
// <param  > 
// <returns>
// <remarks> 
function search_obj()
{
	try
	{
		//クエリストリング取得
		var qs = get_qs();
		
		//ページ番号で分岐(数値へキャスト)
		switch (to_num(qs["pg"]))
		{
			//住所検索
			case 3:
			case 202:
				
				//市区町村が未チェックの場合
				if (!is_checked("ct[]"))
				{
					alert("市区町村がチェックされていません");
					return;
				}
				
				//物件種目が未チェックの場合
				if (!is_checked("ot[]"))
				{
					alert("物件種目がチェックされていません");
					return;
				}
			
				break;
				
			//路線検索
			case 4:
			case 203:
			
				//路線が未チェックの場合
				if (!is_checked("ln[]"))
				{
					alert("路線がチェックされていません");
					return;
				}			
			
				break;

			//駅検索
			case 5:
			case 204:
			
				//駅が未チェックの場合
				if (!is_checked("st[]"))
				{
					alert("駅がチェックされていません");
					return;
				}
				
				//物件種目が未チェックの場合
				if (!is_checked("ot[]"))
				{
					alert("物件種目がチェックされていません");
					return;
				}			
			
				break;
				
			//検索
			case 6:
			case 205:
			
				//物件種目が未チェックの場合
				if (!is_checked("ot[]"))
				{
					alert("物件種目がチェックされていません");
					return;
				}					
				
				break;
			
			//お気に入りリスト
			case 9:
				//特に無し
				break
			
			default:
				alert("ページ番号が不正です[" + qs["pg"] + "]");
				return;
		}
	
		//必須検索条件がチェックされていない場合
	
		document.getElementById("frm_search").submit();
	}
	catch(e)
	{
		alert(e);
	}
}

//******************************************************************************
// <summary> 表示数変更時の、物件検索を行う
// <param  > eid : 表示件数要素のID
// <returns>
// <remarks> 
function search_obj_change_disp_cnt(eid)
{
	try
	{
		//該当の要素の値を、<hidden>項目の表示件数へセット
		document.getElementById('dc').value = document.getElementById(eid).value;
		
		//ページ番号を1へ戻す
		document.getElementById('pn').value = 1;
		
		//検索実行
		search_obj();
		return;		
	}
	catch(e)
	{
		alert(e);
	}
}

//******************************************************************************
// <summary> 表示順変更時の、物件検索を行う
// <param  > so : ソート種別
// <returns>
// <remarks> 
function search_obj_change_sort(so)
{
	try
	{
		//ソート種別を、<hidden>項目のソート種別へセット
		document.getElementById('so').value = so;
		
		//ページ番号を1へ戻す
		document.getElementById('pn').value = 1;		

		//検索実行
		search_obj();
		return;		
	}
	catch(e)
	{
		alert(e);
	}
}

//******************************************************************************
// <summary> 表示順変更時の、物件検索を行う
// <param  > pn : ページ番号
// <returns>
// <remarks> 
function search_obj_change_page(pn)
{
	try
	{
		//ページ番号を、<hidden>項目のソート種別へセット
		document.getElementById('pn').value = pn;

		//検索実行
		search_obj();
		return;		
	}
	catch(e)
	{
		alert(e);
	}
}

//******************************************************************************
// <summary> 物件区分変更時の、物件検索を行う
// <param  > eid : 物件区分要素のID
// <returns>
// <remarks> お気に入りリスト
function search_obj_change_kb(eid)
{
	try
	{
		//該当の要素の値を、<hidden>項目の表示件数へセット
		document.getElementById('kb').value = document.getElementById(eid).value;
		
		//検索実行
		search_obj();
		return;		
	}
	catch(e)
	{
		alert(e);
	}
}

//******************************************************************************
// <summary> お気に入りリストをクッキーに保存する
// <param  > target : 登録対象物件ID
//                      →未設定の場合は「chk[]」要素から取得する
// <returns>
// <remarks> 
function save_favorite(target)
{

	try
	{
		//対象格納配列生成
		var arr_chk = new Array();
		
		//対象が未設定の場合
		if (target == null)
		{
			//チェック済みの物件IDを取得
			//==============================================================================		
			
			//チェックされていない場合
			if (!is_checked("chk[]"))
			{
				alert("チェックされていません");
				return;
			}
			
			arr_chk = get_checked_arr("chk[]");		
		}
		//設定されている場合
		else
		{
			//文字列へ変換
			target = to_str(target);
			
			//対象を、カンマで配列展開してセット
			arr_chk = target.split(",");		
		}

		//クッキーに保存されている物件IDとの存在チェック
		//==============================================================================
		
		//クッキーマネージャー生成
		var manager = new CookieManager();				
		
		//クッキー名取得
		var ck_name = _get_ck_name();

		//クッキーに保存されている物件ID取得
		var saved = manager.getCookie(ck_name);

		//保存候補を生成
		var arr_reg = new Array();

		//存在しない場合
		if (saved == null)
		{		
			//チェックした全てを保存対象
			arr_reg = arr_chk;

			//保存数が上限を超える場合
			if (arr_reg.length > g_favorite_cnt)
			{
				alert("追加できる件数は" + g_favorite_cnt + "件までです");
				return;
			}	
		}
		//存在する場合
		else
		{
			//配列展開
			var arr_saved = saved.split(",");
			
			//チェックされたものを全ループ
			for (var i = 0; i < arr_chk.length; i++)
			{
				//該当物件IDが、既に保存されている場合
				if (in_array(arr_chk[i],arr_saved))
				{
					continue;
				}
				
				//保存候補へ追加
				arr_reg.push(arr_chk[i]);
			}
			
			//追加対象がない場合
			if (arr_reg.length == 0)
			{
				alert("該当物件は既に追加されています");
				return;				
			}
			
			//既存の保存数に、追加分を足した保存数が上限を超える場合
			if (arr_saved.length + arr_reg.length > g_favorite_cnt)
			{
				alert("追加できる件数は" + g_favorite_cnt + "件までです");
				return;
			}
			
			//既存配列に登録候補を追加
			arr_reg = arr_saved.concat(arr_reg);
		}
		
		//登録件数が上限を超える場合

		//クッキーへ物件IDを保存
		//==============================================================================
		
		//クッキーへ保存
		//→保存対象の物件IDをカンマで連結する
		manager.setCookie(ck_name,arr_reg.join(","));
		
		alert("お気に入りリストに追加しました");
	}
	catch(e)
	{
		alert(e);
	}
}


//******************************************************************************
// <summary> お気に入りリストをクッキーから削除する
// <param  > target : 登録対象物件ID
//                      →未設定の場合は「chk[]」要素から取得する
// <returns>
// <remarks> 
function delete_favorite(target)
{
	try
	{
		//対象格納配列生成
		var arr_chk = new Array();
		
		//対象が未設定の場合
		if (target == null)
		{
			//チェック済みの物件IDを取得
			//==============================================================================		
			
			//チェックされていない場合
			if (!is_checked("chk[]"))
			{
				alert("チェックされていません");
				return;
			}
			
			arr_chk = get_checked_arr("chk[]");		
		}
		//設定されている場合
		else
		{
			//対象を、カンマで配列展開してセット
			arr_chk = target.split(",");
		}
		
		if (!confirm("お気に入りから削除しますか？"))
		{
			return;
		}

		//クッキーに保存されている物件IDとの存在チェック
		//==============================================================================
		
		//クッキーマネージャー生成
		var manager = new CookieManager();				
		
		//クッキー名取得
		var ck_name = _get_ck_name();

		//クッキーに保存されている物件ID取得
		var saved = manager.getCookie(ck_name);

		//保存候補を生成
		var arr_reg = new Array();

		//存在しない場合
		if (saved == null)
		{		
			//ここは通らないはず
		}
		//存在する場合
		else
		{
			//配列展開
			var arr_saved = saved.split(",");
			
			//登録されているものを全ループ
			for (var i = 0; i < arr_saved.length; i++)
			{
				//該当物件IDが、削除対象の場合
				if (in_array(arr_saved[i],arr_chk))
				{
					continue;
				}
				
				//保存候補へ追加
				arr_reg.push(arr_saved[i]);
			}
		}
		
		//登録件数が上限を超える場合

		//クッキーへ物件IDを保存
		//==============================================================================
		
		//一旦削除
		manager.clearCookie(ck_name);

		//登録対象がある場合
		if (arr_reg.length > 0)
		{
			//クッキーへ保存
			//→保存対象の物件IDをカンマで連結する
			manager.setCookie(ck_name,arr_reg.join(","));				
		}
		
		//再表示
		search_obj();
	}
	catch(e)
	{
		alert(e);
	}
}

//******************************************************************************
// <summary> 物件区分に応じた、クッキー名を取得する
// <param  > 
// <returns>
// <remarks> 
function _get_ck_name()
{
	//クエリ取得
	var qs = get_qs();
	
	if (qs["kb"] == 1 || qs["kb"] == 2)
	{
	return "favorite[" + qs["kb"] + "]";
	}
	else
	{
		return null;
	}
}

//******************************************************************************
// <summary> メールフォームの入力内容をチェックし、送信する
// <param  > 
// <returns>
// <remarks> 
function check_to_confirm()
{
	try
	{
		//入力チェック
		if (!check_form("frm_input"))
		{
			return;
		}
		
		//連絡方法に依存したチェック
		//===========================================================================
		
		//各連絡方法の要素を取得
		var rr_mail = document.getElementById("i_rr1");
		var rr_tel = document.getElementById("i_rr2");
		var rr_fax = document.getElementById("i_rr3");
		var rr_post = document.getElementById("i_rr4");
		
		//各入力要素を取得
		var i_mail = document.getElementById("i_mail");
		var i_tel = document.getElementById("i_tel");
		var i_fax = document.getElementById("i_fax");
		var i_zip = document.getElementById("i_zip");
		var i_pref = document.getElementById("i_pref");
		var i_city = document.getElementById("i_city");
		var i_address = document.getElementById("i_address");
		
		//電話チェック時に、電話番号未設定の場合
		if (rr_tel.checked && i_tel.value.length == 0)
		{
			alert("電話番号を入力して下さい");
			i_tel.focus();
			return;
		}
		
		//FAXチェック時に、FAX未設定の場合
		if (rr_fax.checked && i_fax.value.length == 0)
		{
			alert("FAX番号を入力して下さい");
			i_fax.focus();
			return;
		}		
		
		//郵送チェック時
		if (rr_post.checked)
		{
			//郵便番号が未設定の場合
			if (i_zip.value.length == 0)
			{
				alert("郵便番号を入力して下さい");
				i_zip.focus();
				return;
			}
			
			//都道府県が未設定の場合
			if (i_pref.value.length == 0)
			{
				alert("都道府県を選択して下さい");
				i_pref.focus();
				return;
			}			
			
			//市区郡町村が未設定の場合
			if (i_city.value.length == 0)
			{
				alert("市区郡町村を入力して下さい");
				i_city.focus();
				return;
			}
			
			//町名番地が未設定の場合
			if (i_address.value.length == 0)
			{
				alert("町名番地を入力して下さい");
				i_address.focus();
				return;
			}			
		}
		
		//送信
		document.getElementById("frm_input").submit();
	}
	catch(e)
	{
		alert(e);
	}
}

//******************************************************************************
// <summary> 問い合わせ内容を送信する
// <param  > 
// <returns>
// <remarks> 
function send_inquiry()
{
	try
	{
		//送信
		document.getElementById("frm_input").submit();
	}
	catch(e)
	{
		alert(e);
	}	
}

//******************************************************************************
// <summary> 問い合わせ内容を送信する
// <param  > 
// <returns>
// <remarks> 
function pjump(selOBJ)
{
		var n = selOBJ.selectedIndex;
		var url = "./scom.php?pref=" + selOBJ.options[n].value; 
		location.href = url; 

}