var domWin = false;
var domMac = false;

if(navigator.userAgent.indexOf("Mac") != -1)
	domMac = true;
else
	domWin = true;

var domMSIE = false;
var domNN4 = false;
var domNN6 = false;
var domFirefox = false;
var domOpera = false;
var domSafari = false;

if(navigator.userAgent.indexOf("MSIE") != -1) {
	// Operaに含まれる場合があるので
	if(navigator.userAgent.indexOf("Opera") == -1) domMSIE = true;
}
else if(navigator.userAgent.indexOf("FireFox") != -1) {
	domFirefox = true;
}
else if(navigator.userAgent.indexOf("Opera") != -1) {
	domOpera = true;
}
else if(navigator.userAgent.indexOf("Safari") != -1) {
	// シイラについては未実装
	if(navigator.userAgent.indexOf("Opera") == -1) domSafari = true;
}
else if(navigator.userAgent.indexOf("Mozilla") != -1) {
	//NN Version判定
	domNN4 = (navigator.userAgent.indexOf("Mozilla/4") != -1);
	//Netscape6.2以上の場合Dom_NN6はtrue
	domNN6 = (navigator.userAgent.indexOf("Netscape6") != -1);

	//NN4.x,6.x以外のNNはNN6として処理
	if(domNN4 != true && domNN6 != true) {
		domNN6=true;
	}
}

function openWin(url, width, height, target, options) {
	var params = "width=" + width + ",height=" + height + ",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,favorites=no,resizable=yes";

	// target指定無し時は_blankに
	if(target == void(0)) target = "_blank";

	// options指定時は指定された項目でparamsの値を置き換える
	if(options != void(0) && options != "") {
		var chengedParams = "";
		var chengedOptions = params.split(",");
		var selectedOptions = options.split(",");

		for(var i = 0; i < chengedOptions.length; i++) {
			var param = splitOf(chengedOptions[i], "=", 0);

			for(var j = 0; j < selectedOptions.length; j++) {
				if(param == splitOf(selectedOptions[j], "=", 0)) {
					chengedOptions[i] = selectedOptions[j];
				}
			}

			if(i != 0) chengedParams += ",";
			chengedParams += chengedOptions[i];
		}

		params = chengedParams;
	}

	var win = window.open(url, target, params);
	win.focus();
}

//-------------------------------------------------------
//                   共通
//-------------------------------------------------------

// 二つの日付の大小を判定
// パラメータ：date1 比較日付1
//             date2 比較日付2
// 戻り値：今日かどうかの真偽値
function compare(date1, date2) {
	var year1 = date1.getYear();
	var year2 = date2.getYear();
	var month1 = date1.getMonth();
	var month2 = date2.getMonth();
	var day1 = date1.getDate();
	var day2 = date2.getDate();

	if(year1 > year2) return 1;				// date1が大きい
	else if(year1 < year2) return -1;	// date1が小さい

	// ここを通り抜けるとyear1 = year2

	if(month1 > month2) return 1;				// date1が大きい
	else if(month1 < month2) return -1;	// date1が小さい

	// ここを通り抜けるとmonth1 = month2

	if(day1 > day2) return 1;				// date1が大きい
	else if(day1 < day2) return -1;	// date1が小さい

	// ここを通り抜けるとday1 = day2
	return 0;
}

// date1とdate2の日付の差異を返す。
function dateDiff(date1, date2) {
	var smallDt = null;
	var bigDt = null;
	var diffDay = 0;

	if(compare(date1, date2) < 0) {
		smallDt = date1;
		bigDt = date2;
	}
	else if(compare(date1, date2) > 0) {
		smallDt = date2;
		bigDt = date1;
	}
	else {
		return 0;
	}

	while(compare(smallDt, bigDt) < 0) {
		var year = smallDt.getFullYear();
		var month = smallDt.getMonth();
		var day = smallDt.getDate();
		var monthMax = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);						// 月ごとの最大数を格納
			if( (year % 4) == 0 && (year % 100) != 0 || (year % 400) == 0 ) monthMax[1] = 29;	// うるう年の判定

		if(day < monthMax[month]) {
			day++;
		}
		else if(day == monthMax[month]) {
			if(month < 11) {
				month++;
				day = 1;
			}
			else {
				year++;
				month = 1;
				day = 1;
			}
		}

		smallDt = new Date(year, month, day);
		diffDay++;

		if(diffDay > 365) return -1; // 365日以上は計算しない
	}

	return diffDay;
}

// 日付のフォーマットを返す
// パラメータ：dateTime 日付オブジェクト
//             format フォーマット文字列
// 戻り値：日付文字列
function formatDateTime(dateTime, format) {
	var ymd = format;

	if(format.indexOf("yy") >= 0) {
		var y = dateTime.getFullYear();
		ymd = replace(ymd, "yyyy", y);
		ymd = replace(ymd, "yy", (y+"").substring(2,4));
	}
	if(format.indexOf("m") >= 0) {
		var m = dateTime.getMonth() + 1;
		ymd = replace(ymd, "mm", (((m+"").length<2)?("0"+m).substring(0,2):m));
		ymd = replace(ymd, "m", m);
	}
	if(format.indexOf("d") >= 0) {
		var d = dateTime.getDate();
		ymd = replace(ymd, "dd", (((d+"").length<2)?("0"+d).substring(0,2):d));
		ymd = replace(ymd, "d", d);
	}
	if(format.indexOf("h") >= 0) {
		var h = dateTime.getHours();
		ymd = replace(ymd, "hh", (((h+"").length<2)?("0"+h).substring(0,2):h));
		ymd = replace(ymd, "h", h);
	}
	if(format.indexOf("n") >= 0) {
		var n = dateTime.getMinutes();
		ymd = replace(ymd, "nn", (((n+"").length<2)?("0"+n).substring(0,2):n));
		ymd = replace(ymd, "n", n);
	}
	if(format.indexOf("s") >= 0) {
		var s = dateTime.getSeconds();
		ymd = replace(ymd, "ss", (((s+"").length<2)?("0"+s).substring(0,2):s));
		ymd = replace(ymd, "s", s);
	}

	return ymd;
}


// 表示状態切り替え
function changeDisplay(id, action) {
	if(action != void(0)) {
		if(document.getElementById(id).style.display != action)
			document.getElementById(id).style.display = action;
	}
	else {
		if(document.getElementById(id).style.display == "block") {
			document.getElementById(id).style.display = "none";
		}
		else {
			document.getElementById(id).style.display = "block";
		}
	}
}

//-------------------------------------------------------
//                   VBカレンダー
//-------------------------------------------------------

// カレンダーにナビゲーションをセット
function SetCalendarNavigation(type) {

	if(document.getElementsByName("calendar_0").length > 0 && max >= 1) {
		for(var i = 0; i < document.getElementsByName("no_script").length; i++) {
			document.getElementsByName("no_script")[i].style.display = "none";
		}

		for(var i = 0; i < max; i++) {
			// 選択中のカレンダー以外を隠す
			if(i != current) {
				changeView("calendar_" + i, "none");
			}

			// 前の月へのリンクをセット
			if(document.getElementsByName("back_0").length > 0) {
				for(var j = 0; j < document.getElementsByName("back_" + i).length; j++) {
					if(i != min) {
						document.getElementsByName("back_" + i)[j].innerHTML = getNavigaterLink(type, "back", i);
					}
					else {
						document.getElementsByName("back_" + i)[j].innerHTML = getNavigaterLink(type, "noback", i);
					}
				}
			}
			else {
				if(i != min) {
					document.getElementById("back_" + i).innerHTML = getNavigaterLink(type, "back", i);
				}
				else {
					document.getElementById("back_" + i).innerHTML = getNavigaterLink(type, "noback", i);
				}
			}

			// 次の月へのリンクをセット
			if(document.getElementsByName("next_0").length > 0) {
				for(var j = 0; j < document.getElementsByName("next_" + i).length; j++) {
					if(i != (max - 1)) {
						document.getElementsByName("next_" + i)[j].innerHTML = getNavigaterLink(type, "next", i);
					}
					else {
						document.getElementsByName("next_" + i)[j].innerHTML = getNavigaterLink(type, "nonext", i);
					}
				}
			}
			else {
				if(i != (max - 1)) {
					document.getElementById("next_" + i).innerHTML = getNavigaterLink(type, "next", i);
				}
				else {
					document.getElementById("next_" + i).innerHTML = getNavigaterLink(type, "nonext", i);
				}
			}
		}
	}
}

// 月のナビゲーションを取得する
function getNavigaterLink(type, action, num) {
	switch(type) {
		case "Air":
			switch(action) {
				case "back":
					return "<a href=\"#\" onclick=\"changeCalendar('back', " + num + "); return false;\">&lt;&lt; 前の月</a>";
				case "noback":
					return "&lt;&lt; 前の月";
				case "next":
					return "<a href=\"#\" onclick=\"changeCalendar('next', " + num + "); return false;\">次の月 &gt;&gt;</a>";
				case "nonext":
					return "次の月 &gt;&gt;";
			}
		case "Tour":
			switch(action) {
				case "back":
					return "<a href=\"#\" class=\"whites\" onclick=\"changeCalendar('back', " + num + "); return false;\">&lt;&lt; 前の月</a>";
				case "noback":
					return "<a class=\"whites\" style=\"text-decoration: none;\">&lt;&lt; 前の月</a>";
				case "next":
					return "<a href=\"#\" class=\"whites\" onclick=\"changeCalendar('next', " + num + "); return false;\">次の月 &gt;&gt;</a>";
				case "nonext":
					return "<a class=\"whites\" style=\"text-decoration: none;\">次の月 &gt;&gt;</a>";
			}
		case "OnlineAir":
			switch(action) {
				case "back":
					return "<div align=\"left\"><a href=\"#\" onclick=\"changeCalendar('back', " + num + "); return false;\">←前の月</a></div>";
				case "noback":
					return "<div align=\"left\">←前の月</div>";
				case "next":
					return "<div align=\"right\"><a href=\"#\" onclick=\"changeCalendar('next', " + num + "); return false;\">次の月→</a></div>";
				case "nonext":
					return "<div align=\"right\">次の月→</div>";
			}
		case "ReserveAirGoing":
			switch(action) {
				case "back":
					return "<a href=\"#\" onclick=\"changeCalendar('back', " + num + "); return false;\">前の月</a>";
				case "noback":
					return "";
				case "next":
					return "<a href=\"#\" onclick=\"changeCalendar('next', " + num + "); return false;\">次の月</a>";
				case "nonext":
					return "";
			}
		case "Ciao":
			switch(action) {
				case "back":
					return "<a href=\"#\" class=\"link-deepblue\" onclick=\"changeCalendar('back', " + num + "); return false;\">← 前の月</a>";
				case "noback":
					return "<a href=\"#\" class=\"link-deepblue\" onclick=\"return false;\">← 前の月</a>";
				case "next":
					return "<a href=\"#\" class=\"link-deepblue\" onclick=\"changeCalendar('next', " + num + "); return false;\">次の月 →</a>";
				case "nonext":
					return "<a href=\"#\" class=\"link-deepblue\" onclick=\"return false;\">次の月 →</a>";
			}
		case "TP":
			switch(action) {
				case "back":
					return "<a href=\"#\" onclick=\"changeCalendar('back', " + num + "); return false;\"><img src=\"../../images/tb/toa/btn_last_month_off.gif\" alt=\"前の月\" border=0></a>";
				case "noback":
					//return "<img src=\"../../images/tb/toa/btn_last_month_off.gif\" alt=\"前の月\" border=0>";
					return "<img src=\"../../images/tb/spacer.gif\" width=120 height=43 border=0>";
				case "next":
					return "<a href=\"#\" onclick=\"changeCalendar('next', " + num + "); return false;\"><img src=\"../../images/tb/toa/btn_next_month_off.gif\" alt=\"次の月\" border=0></a>";
				case "nonext":
					//return "<img src=\"../../images/tb/toa/btn_next_month_off.gif\" alt=\"前の月\" border=0>";
					return "<img src=\"../../images/tb/spacer.gif\" width=120 height=43 border=0>";
			}
		
	}
}

// 表示するカレンダーを変更する
function changeCalendar(type, num) {
	changeView("calendar_" + num, "none");

	if(type == "back") {
		changeView("calendar_" + (num - 1), "block");

		//■2008.10.15 [tsato] No.4826 【A-156】A-4月指定、月移動時の、最低料金等の表示変更制御用。
		if (document.getElementById("min_price_" + (num - 1)) != void(0)) {
			changeValues((num - 1));
		}
	}
	else if(type == "next") {
		changeView("calendar_" + (num + 1), "block");

		//■2008.10.15 [tsato] No.4826 【A-156】A-4月指定、月移動時の、最低料金等の表示変更制御用。
		if (document.getElementById("min_price_" + (num + 1)) != void(0)) {
			changeValues((num + 1));
		}
	}
}

// まとめて表示切替
function changeView(elementsName, display) {
	var elements = document.getElementsByName(elementsName);

	for(var i = 0; i < elements.length; i++) {
		elements[i].style.display = display;
	}
}


//■2008.10.15 [tsato] No.4826 【A-156】A-4月指定、月移動時の、最低料金等の表示変更制御用。
// 料金、掲載期間の表示をカレンダーに同期
function changeValues(num) {

	document.getElementById("price").innerHTML = document.getElementById("min_price_" + num).innerHTML;
	document.getElementById("keisai").innerHTML = document.getElementById("cal_month_" + num).innerHTML;

}

//-------------------------------------------------------
//                   Flash検索
//-------------------------------------------------------

/*
function send2fla(sub_param1){
//HTML上のデータ
    sub_param2=form.cityname.value
    sub_param3=form.letter.value
//    sub_param4=form.leave_dt.value

	sub_param4=form.leave_dt_yy.value + "/" + form.leave_dt_mm.value
	if(document.form.leave_dt_dd.value != ""){ sub_param4 += "/" + document.form.leave_dt_dd.value;}
	
	for (i=0;i<document.f.elements.length;i++){
		if(document.form.elements[i].type == "checkbox") {
			if(document.form.elements[i].checked == true) {
		if(i>0){ sub_param5 += + "," }
		sub_param5 += form.elements[i].value;
			}
		}
	}

//FLASH上のデータ
//FLASH上の判別に用いる[sub_param1
	window.document.serch_swf.SetVariable("_level0.receivemsg", sub_param1);
//HTML上のデータをFLASHに送信
	window.document.serch_swf.SetVariable("_level0.receivemsg2", sub_param2);
	window.document.serch_swf.SetVariable("_level0.receivemsg3", sub_param3);
	window.document.serch_swf.SetVariable("_level0.receivemsg4", sub_param4);
	window.document.serch_swf.SetVariable("_level0.receivemsg5", sub_param5);
}

//フラッシュファイルがクッキーに書き込む
function setFlashCookie(myCookie, theTermOfValidity){
	if( myCookie != null ){
		if( theTermOfValidity != null ){
			theTermOfValidity = 1;
		}else{
			theTermOfValidity = eval(theTermOfValidity);
		}
		// 宣言を明示的にする
		var expiredDay = new Date();
		expiredDay.setTime( expiredDay.getTime() + (theTermOfValidity*1000*60*60*24) );
		var expires = expiredDay.toGMTString();
		document.cookie = "CookieEngine=" + escape(myCookie) + ";expires=" + expires;
	}
}
*/

// クッキーの削除
function deleteCookie(cookieName, path)
{
	document.cookie = cookieName + "=;expires=Thu,01-Jan-70 00:00:01 GMT" + ((path!=void(0))?";path="+path:"");

}

// クッキーの値を設定
function setCookie(cookieName, value, path) {
	var expiredDay = new Date();
	expiredDay.setTime( expiredDay.getTime() + (1000*60*60*24) ); // 有効期限を1日に。
	var expires = expiredDay.toGMTString();
	document.cookie = cookieName + "=" + escape(value) + ";expires=" + expires + ((path!=void(0))?";path="+path:"");
}

// クッキーの値を取得
function getCookie(cookieName) {
	var cookieNameEqual = cookieName + "=";
	var start = document.cookie.indexOf(cookieNameEqual);
	var end = document.cookie.indexOf(";", start);
		if(end == -1) end = document.cookie.length;

	// 指定されたクッキーの値が取得できなければ抜ける
	if(start == -1) return "";
	else start += cookieNameEqual.length;

	return unescape(document.cookie.substring(start, end));
}

// 文字列の置き換え
// パラメータ：str 置換対象文字列
//             key 置換キー
//             replacement 置換する文字
//             start 開始位置
//             end 終了位置
// 戻り値：置換した文字列が返る。置換無し時はそのままの文字が返る
function replace(str, key, replacement, start, end) {
	var tmp = str;
	var findIndex = tmp.indexOf(key);
	var continue_f;

	if(str == "" || key == "") return "";

	while(findIndex != -1) {
		continue_f = false;

		// 開始位置以前か、終了位置以降の場合はリプレースしない
		if(start != void(0)) {
			if(findIndex + 1 < start) {
				continue_f = true;
			}
		}
		if(end != void(0)) {
			if(findIndex + 1 > end) {
				continue_f = true;
			}
		}

		if(continue_f) {
			findIndex = tmp.indexOf(key, findIndex + 1);
			continue;
		}
		else {
			tmp = tmp.substring(0, findIndex) + tmp.substring(findIndex).replace(key, replacement);
			findIndex = tmp.indexOf(key, findIndex + 1);
		}
	}

	return tmp;
}

// delimiterで分割した配列のn番目を返す
function splitOf(str, delimiter, n) {
	if(str != void(0) && str != "") {
		if(n >= 0 && n < str.split(delimiter).length)
			return str.split(delimiter)[n];
	}
	return "";
}

// クエリストリングの取得
function getQueryString(name) {
	var query = unescape(window.location.search.substring(1));
	var searchName = name + "=";
	var start = query.indexOf(searchName);
		if(start == -1) return "";
		else start += searchName.length;
	var end = query.indexOf("&", start)
		if(end == -1) end = query.length;

	return query.substring(start, end);
}

/*
// FLASH検索
function doSearch(path) {
	var query = "";

	// 日付がデフォルト値の場合は初期化
	iniLeaveDt();

	if(getCookie("CookieEngine") != "") {
		query = replace(replace(getCookie("CookieEngine"), "-", "="), "+", "&");
		// 出発日
		if(document.form.leave_dt_yy.value != "" && document.form.leave_dt_mm.value != "") {
			query += "&leave_dt=" + escape(getLeaveDt());
		}
		// シートクラス
		if(getQueryString("seat_class") != "") {
			query += "&seat_class=" + escape(getQueryString("seat_class"));
		}
		// 出発空港
		query += "&jairport=" + escape(getJairport())

		// リダイレクト
		window.location.href = ((path!="")?"/"+path:"") + "/shop/air/search.aspx?" + query + "&search.x=1";
		return false;
	}

	// POST送信
	return true;
}
*/

// チェックボックスの選択値取得
function getCheckedCheckboxValue(elements) {
	var a = new Array();

	for(var i = 0; i < elements.length; i++) {
		if(elements[i].checked) a.push(elements[i].value);
	}
	return a;
}

// ラジオボタンの選択値取得
function getCheckedRadioValue(elements) {
	for(var i = 0; i < elements.length; i++) {
		if(elements[i].checked) return elements[i].value;
	}
}

// プルダウンの選択値取得
function getSelectedValue(elements) {
	return elements[elements.selectedIndex].value;
}

// 日本発着空港のクッキーを削除
function iniJairport(){
	deleteCookie("jairport", "/");
}

/*
// 日本発着空港をクッキーにセット
function setJairport(){
	setCookie("jairport", getJairport(), "/");
}

// 日本発着空港を取得
function getJairport() {

	if(document.form.jairport == void(0)) return "";
	if(document.form.jairport.length <= 0) return "";

	var jairport = ""

	for (i = 0; i < document.form.jairport.length; i++){
		if(document.form.jairport[i].checked) {
			if(jairport != "") jairport += ",";
			jairport += document.form.jairport[i].value;
		}
	}

	return jairport;
}

// 出発日をクッキーにセット
function setLeaveDt() {
	setCookie("leave_dt", escape(getLeaveDt()), "/"); // /⇒全ての階層で使用可能
}
*/

// 日本発着空港をクッキーにセット
function setJairport(){
	iniJairport();
	setCookie("jairport", getSelectedValue(document.form.jairport), "/");
}

// 日本発着空港のクッキーを削除
function iniSeatClass(){
	deleteCookie("seat_class", "/");
}

// 日本発着空港をクッキーにセット
function setSeatClass(){
	iniSeatClass();
	setCookie("seat_class",getCheckedCheckboxValue(document.form.seat_class), "/");
}

// ポータルのクッキーを削除
function iniPortal(){
	deleteCookie("portal", "/");
}

// ポータルをクッキーにセット
function setPortal(){
	iniPortal();
	setCookie("portal",document.form.portal.value, "/");
}

// 国内エリアのクッキーを削除
function iniJarea(){
	deleteCookie("jarea", "/");
}

// 国内エリアをクッキーにセット
function setJarea(){
	iniJarea();
	setCookie("jarea",document.form.jarea.value, "/");
}

/*
// 出発日をクッキーにセット
function getLeaveDt() {
	var y = document.form.leave_dt_yy.value;
	var m = document.form.leave_dt_mm.value;
		m = ((m!=""&&m.length<2)?"0"+m:m)
	var d = document.form.leave_dt_dd.value;
		d = ((d!=""&&d.length<2)?"0"+d:d)

	return y + "/" + m + ((d!="")?"/"+d:"");
}
*/

// 出発日の初期化
function iniLeaveDt() {
	// 日付がデフォルト値の場合は初期化
	if(document.form.leave_dt_yy.value == "YYYY" && document.form.leave_dt_mm.value == "MM") {
		document.form.leave_dt_yy.value = "";
		document.form.leave_dt_mm.value = "";
		document.form.leave_dt_dd.value = "";
	}
}
function iniArriveDt() {
	// 日付がデフォルト値の場合は初期化
	if(document.form.arrive_dt_yy.value == "YYYY" && document.form.leave_dt_mm.value == "MM") {
		document.form.arrive_dt_yy.value = "";
		document.form.arrive_dt_mm.value = "";
		document.form.arrive_dt_dd.value = "";
	}
}

// 渡されたフォームのactionにhashNameを設定する
function setActionHashName(formElement, hashName) {
	var action = formElement.action;

	if(action != "" && hashName != "") {
		if(action.split("#").length == 2) {
			formElement.action = replace(action, splitOf(action, "#", 1), hashName);
		}
		else {
			formElement.action += ("#" + hashName);
		}
	}
}

//-------------------------------------------------------
//                ダブルクリック制御
//-------------------------------------------------------

var dblClickControl = false;

// ダブルクリックの制御
function checkDblClick() {
  if(!dblClickControl) {
    dblClickControl = true;
    return true;
  }
  else {
    return false;
  }
}

//-->

//-------------------------------------------------------
//                他のカテゴリーも見る
//-------------------------------------------------------

function toggle_view_hotelcategory( elementID ){

	var element = document.getElementById(elementID);

	if(element != void(0) && element.style != void(0)) {
		if (element.style.display == 'none'){
			element.style.display = 'inline';
		}else{
			element.style.display = 'none';
		}
	}
}

function disp_category_link( hotels ){

	var data = hotels.split(',')
	for(var i=0; i < data.length ; i++){
		var element =document.getElementById( 'disp_category_link_' + data[i] );
		if(element != void(0) && element.style != void(0)) {
			element.style.display = 'none';
		}
	}

}

//-------------------------------------------------------
//                mail mobiledomain check
//-------------------------------------------------------

function checkMobileMailDomain(mail, message) {
	var errorMessage = message;
	if(errorMessage == void(0) || errorMessage == "") errorMessage = "メールアドレスにはパソコンのメールアドレスをご入力ください。" // default

	if(mail != "") {
		var disableDomains = new Array("c.vodafone.ne.jp", "d.vodafone.ne.jp", "docomo.ne.jp", "docomo-bill.ne.jp", "docomo-camera.ne.jp", "ebilling.ne.jp", "ezweb.ne.jp", "h.vodafone.ne.jp", "ido.ne.jp", "k.vodafone.ne.jp", "mail.visualnet.mopera.ne.jp", "n.vodafone.ne.jp", "pdx.ne.jp", "q.vodafone.ne.jp", "r.vodafone.ne.jp", "s.vodafone.ne.jp", "sky.tkc.ne.jp", "sky.tkk.ne.jp", "sky.tu-ka.ne.jp", "softbank.ne.jp", "t.vodafone.ne.jp");

		for(var i = 0; i < disableDomains.length; i++) {
			if(mail.indexOf(disableDomains[i]) > 0) {
				window.alert(errorMessage);
				return false;
			}
		}
	}

	return true;
}