var rakutenTr_SmartPhone = {
	_DISP_SMART_FLG   : 0,
	_DISP_PC_FLG      : 1,
	_URL_PC           : "http://" + location.host + "/",           //PC版トップページ
	_URL_SMART        : "http://" + location.host + "/smart/",     //SmartPhone版トップページ
	_URL_TABLET       : "http://" + location.host + "/tablet/",    //Tablet版トップページ
	smartPhoneUAList  : ["iPhone","iPod",/(Android.*Mobile|Mobile.*Android)/],  //Androidのスマフォの場合、UAにMobileも含まれる
	tabletUAList      : ["iPad",/(?!(Android.*Mobile)+)Android/],               //Androidのタブレットの場合、UAにMobileは含まれない
	getDispSmart      : function(){},
	setDispSmart      : function(){},
	isUAContainedIn   : function(){},
	chkSmartphone     : function(){},
	chkTablet         : function(){},
	chkSmartPage      : function(){},
	sendPcPage        : function(){},
	putSmartPageLink  : function(){}
}
/**
 * Cookieへ表示切替フラグを取得する。
 *
 */
rakutenTr_SmartPhone.getDispSmart = function(){
	var smartPcFlg  = rakutenTr_SmartPhone.getCookie('smart_pcflg');
	if (!smartPcFlg) {
		smartPcFlg = 0;
	}
	return smartPcFlg;
}
/**
 * UAの中に引数の配列の文字列があるかをチェックする。
 *
 * @param 文字列配列
 */
rakutenTr_SmartPhone.isUAContainedIn = function(checkList){
	var result     = false;
	var userAgent  = navigator.userAgent;
	for (var i = 0, len = checkList.length; i < len; i++) {
		if (userAgent.match(checkList[i])) {
			result = true;
			break;
		}
	}
	return result;
}
/**
 * Cookieへ表示切替フラグを設定する。
 *
 * @param 表示フラグ
 */
rakutenTr_SmartPhone.setDispSmart = function(dispFlg){
	dispFlg = dispFlg || 0;
	rakutenTr_SmartPhone.setCookie('smart_pcflg', dispFlg, 365, location.host, '/', false);
}
/**
 * Smartphoneであればtrueを返す。
 */
rakutenTr_SmartPhone.chkSmartphone = function(){
	return this.isUAContainedIn(this.smartPhoneUAList);
}
/**
 * Tabletであればtrueを返す。
 */
rakutenTr_SmartPhone.chkTablet = function(){
	return this.isUAContainedIn(this.tabletUAList);
}
/**
 * 【PC版トップ設置用】
 * Cookieの値を判定してPCページかSmartphone/Tabletページかを出し分ける。
 * SmartPhoneページかTabletページかは、UAにより判定してページへリダイレクト
 */
rakutenTr_SmartPhone.chkSmartPage = function(){
	var smartPcFlg       = rakutenTr_SmartPhone.getDispSmart();
	if (smartPcFlg != 1) {
		if (this.chkTablet()) {
			location.href = this._URL_TABLET;
		}
		else if (this.chkSmartphone()) {
			location.href = this._URL_SMART;
		}
	}
	return;
}
/**
 * 【SmartPhone版トップ設置用】
 * PC版表示設定を行い、PC版トップページへリダイレクト
 */
rakutenTr_SmartPhone.sendPcPage = function(){
	rakutenTr_SmartPhone.setDispSmart(rakutenTr_SmartPhone._DISP_PC_FLG);
	location.href = rakutenTr_SmartPhone._URL_PC;
}

/**
 * 【PC版トップ設置用】
 * ユーザーエージェントを判別し、SmartPhoneからであれば
 * SmartPhone版トップページへのリンクバナーを表示する。
 * Tabletからであれば、Tablet版トップページへのリンクバナーを表示する。
 *
 * @param バナー配置場所のID
 */
rakutenTr_SmartPhone.putSmartPageLink = function(id){
	if (this.chkTablet()) {
		var bannerHtml = [ '<a href="' + this._URL_TABLET + '">'
		                 , '<img src="/tablet/images/btn_tblt_link.png">'
		                 , '</a>'
		                 ];
	}
	else if (this.chkSmartphone()) {
		var bannerHtml = [ '<a href="' + this._URL_SMART + '">'
		                 , '<img src="/share/smart/images/btn_sp_link.png">'
		                 , '</a>'
		                 ];
	}
	$('#' + id).prepend($(bannerHtml.join("")));
	return;
}
/**
 * Cookie の値を取得する
 */
rakutenTr_SmartPhone.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 の値をセットする
 */
rakutenTr_SmartPhone.setCookie = function(key, value, expires, domain, path, secure) {
	var cookie_param = 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=" + domain + ";";
	}
	if (path) {
		cookie_param += "path=" + path + ";";
	}
	if (secure) {
		cookie_param += "secure";
	}
	document.cookie = cookie_param;
}
String.prototype.trim = function() {
	return this.replace(/^ *| *$/g,"");
}
try {
	var url = location.href;
	if (url == "http://travel.rakuten.co.jp/" || url == "http://travel.rakuten.co.jp/index.html") {
		rakutenTr_SmartPhone.chkSmartPage();
	}
} catch(e) {}

