var rakutenTrSmartPhonePC = {
	_DISP_SMART_FLG   : 0,
	_DISP_PC_FLG      : 1,
	_LOCATION_HOST    : location.host,
	_LOCATION_PATHNAME: location.pathname,
	_USER_AGENT       : navigator.userAgent,
	_URL              : "https://" + location.host,                                     // 遷移用URL
	smartPhoneUAList  : ["iPad","iPhone","iPod",/(Android.*Mobile|Mobile.*Android)/],  // Androidのスマフォの場合、UAにMobileも含まれる
	getDispSmart      : function(){},
	setDispSmart      : function(){},
	isUAContainedIn   : function(){},
	chkSmartphone     : function(){},
	chkSmartPage      : function(){},
	sendPcPage        : function(){},
	sendSmartPage     : function(){},
	putSmartPageLink  : function(){}
}

/**
 * Cookieへ表示切替フラグを取得する。
 *
 */
rakutenTrSmartPhonePC.getDispSmart = function(){
	var smartPcFlg  = rakutenTrSmartPhonePC.getCookie('smart_pcflg');

	if (!smartPcFlg) {
		smartPcFlg = 0;
	}
	return smartPcFlg;
}

/**
 * UAの中に引数の配列の文字列があるかをチェックする。
 *
 * @param 文字列配列
 */
rakutenTrSmartPhonePC.isUAContainedIn = function(checkList){
	var result     = false;
	var userAgent  = rakutenTrSmartPhonePC._USER_AGENT;
	for (var i = 0, len = checkList.length; i < len; i++) {
		if (userAgent.match(checkList[i])) {
			result = true;
			break;
		}
	}
	return result;
}

/**
 * Cookieへ表示切替フラグを設定する。
 *
 * @param 表示フラグ
 */
rakutenTrSmartPhonePC.setDispSmart = function(dispFlg, hotelNo, gCode){
		dispFlg = dispFlg || 0;
		rakutenTrSmartPhonePC.setCookie('smart_pcflg', dispFlg, 365, this._LOCATION_HOST, '/', false, hotelNo, gCode);
}

/**
 * Smartphoneであればtrueを返す。
 */
rakutenTrSmartPhonePC.chkSmartphone = function(){
	return this.isUAContainedIn(this.smartPhoneUAList) || 0 <= location.pathname.indexOf("/smart");
}

/**
 * 【PC版設置用】
 * Cookieの値を判定してPCページかSmartphoneページかを出し分ける。
 * SmartPhoneページかは、UAにより判定してページへリダイレクト
 */
rakutenTrSmartPhonePC.chkSmartPage = function(){
	var smartPcFlg = rakutenTrSmartPhonePC.getDispSmart();
	if (smartPcFlg != 1) {
		return true;
	}
	return false;
}

/**
 * 【SmartPhone版トップ設置用】
 * PC版表示設定を行い、PC版ページへリダイレクト
 */
rakutenTrSmartPhonePC.sendPcPage = function(hotelNo, gCode){
	var path;

	// /smartが設定されていた場合、/smartを削除する
	if (0 <= rakutenTrSmartPhonePC._LOCATION_PATHNAME.indexOf("/smart")) {
		rakutenTrSmartPhonePC.setDispSmart(rakutenTrSmartPhonePC._DISP_PC_FLG, hotelNo, gCode);
		path = rakutenTrSmartPhonePC._LOCATION_PATHNAME.replace("/smart/", "/");

		location.href = rakutenTrSmartPhonePC._URL + path + location.search;

	} else {
		rakutenTrSmartPhonePC.setDispSmart(rakutenTrSmartPhonePC._DISP_PC_FLG, hotelNo, gCode);
		location.href = rakutenTrSmartPhonePC._URL + rakutenTrSmartPhonePC._LOCATION_PATHNAME + location.search;
	}
}
/**
 * 【PC版トップ設置用】
 * SmartPhone版表示設定を行い、SmartPhone版ページへリダイレクト
 */
rakutenTrSmartPhonePC.sendSmartPage = function(hotelNo, gCode){
	rakutenTrSmartPhonePC.setDispSmart(rakutenTrSmartPhonePC._DISP_SMART_FLG, hotelNo, gCode);;

	var path;

	// スマートフォン用のURLではない場合、スマートフォン用のURLに変更する。
	if (0 > rakutenTrSmartPhonePC._LOCATION_PATHNAME.indexOf("/smart")) {
		path = rakutenTrSmartPhonePC._LOCATION_PATHNAME.substr(rakutenTrSmartPhonePC._LOCATION_PATHNAME.lastIndexOf("/"));
		var prepath = rakutenTrSmartPhonePC._LOCATION_PATHNAME.substr(0, rakutenTrSmartPhonePC._LOCATION_PATHNAME.lastIndexOf("/"));
		path = rakutenTrSmartPhonePC._URL + prepath + "/smart" + path;
	} else {
		path = rakutenTrSmartPhonePC._URL + rakutenTrSmartPhonePC._LOCATION_PATHNAME;
	}

	// フォームデータの送信方法によってはパラメータが存在しない場合があるため、ドキュメントから取得
	urlparam = document.getElementsByName("urlparam")[0].value;

	if (null != urlparam && 0 < urlparam.length) {
		path += urlparam;
	}

	location.href = path;
}

/**
 * 【PC版トップ設置用】
 * ユーザーエージェントを判別し、SmartPhoneからであれば
 * SmartPhone版ページへのリンクバナーを表示する。
 *
 * @param hotelNo 施設番号
 * @param gCode グループコード
 * @param lang 言語コード
 */
rakutenTrSmartPhonePC.putSmartPageLink = function(id, hotelNo, gCode, lang){
	if (this.chkSmartphone()) {

		var bannerHtml = [ '<a href="javascript:void(0)" onClick="rakutenTrSmartPhonePC.sendSmartPage(hotelNo, gCode);">'
						 , '<img src="/pages/sp/images/' + lang + '/btn_sp_link.png">'
						 , '</a>'
						 ];
	}
    rakutenTrSmartPhonePC.setCookie('smart_pcflg', rakutenTrSmartPhonePC._DISP_PC_FLG, 365, this._LOCATION_HOST, '/', false, hotelNo, gCode);
    $('#' + id).prepend($(bannerHtml.join("")));
    return;
}



/**
 * 予約ステップ用 Cookie の値をセットする
 */
rakutenTrSmartPhonePC.setReservCookie = function(hotelNo, gCode, refererUrl) {
	if (0 <= refererUrl.indexOf("/smart/")) {
		rakutenTrSmartPhonePC.setCookie('smart_pcflg', rakutenTrSmartPhonePC._DISP_SMART_FLG, 365, this._LOCATION_HOST, '/', false, hotelNo, gCode);
	}
}

/**
 * Cookie の値を取得する
 */
rakutenTrSmartPhonePC.getCookie = function(key) {
	var all_cookie = document.cookie;
	var cookie_list = all_cookie.split(';');
	for (var i =0, len = cookie_list.length; i < len; i++) {
		var key_value = cookie_list[i].split('=');
		var cookie_key = key_value[0].trim();
		if (cookie_key == key) {
			return key_value[1];
		}
	}
}

/**
 * Cookie の値をセットする
 */
rakutenTrSmartPhonePC.setCookie = function(key, value, expires, domain, path, secure, hotelNo, gCode) {
	var cookie_key = key;
	if (gCode != null && gCode != '') {
		cookie_key += "_" + gCode;
	} else {
		cookie_key += "_" + hotelNo;
	}

	var cookie_param = cookie_key + '=' + value + ';';

	// ブラウザを閉じたときにクッキーを消すため、設定しない。
//	if (expires) {
//		var expires_date = new Date();
//		expires_date.setDate(expires_date.getDate() + expires);
//		cookie_param += "expires=" + expires_date.toGMTString() + ";";
//	}
	// サブドメインまで指定し、サブドメイン単位でクッキーを指定する。
	if (domain) {
		cookie_param += "domain=rwiths.net" + ";";
	}
	if (path) {
		cookie_param += "path=" + path + ";";
	}
	if (secure) {
		cookie_param += "secure";
	}
	document.cookie = cookie_param;
}
