﻿
// *** 環境定義 ****************************************
// 環境によって、以下の値を変更してください。

// ログイン画面
var const_welcome_login_form_url = 'https://usr.golfdigest.co.jp/pg/frlogin.php?mm_rurl=';
// ログアウト画面
var const_welcome_logout_form_url = 'https://usr.golfdigest.co.jp/pg/frlogout.php';
//var const_welcome_logout_form_url = 'https://usr.golfdigest.co.jp/pg/frlogout.php?mm_rurl=';
// 共通ログイン判定処理URL(通常)
var const_welcome_common_login_check_htm = 'http://www.golfdigest.co.jp/common/UtilLoginPC/Load.aspx';
// 共通ログイン判定処理URL(ssl)
var const_welcome_common_login_check_ssl = 'https://www.golfdigest.co.jp:443/common/UtilLoginPC/Load.aspx';

// *****************************************************

// クエリストリング
var qs = new Array;

// URLを解析し、クエリストリングを取得します
if (location.search.length > 1)
{
	var m_Array = location.search.substr(1).split('&');
	for ( var i=0, le=m_Array.length; i<le; i++ )
	{
		qs.push(m_Array[i].split('='));
	}
}

/// <summary>
/// XMLHttpRequest を生成します
/// </summary>
/// <param name="key">キー</param>
function getQueryString(key)
{
	// クエリストリング配列を検索
	for ( var i=0, le=qs.length; i<le; i++ )
	{
		// 一致するキーがあった場合
		if(qs[i][0] == key)
		{
			// キーの値を返します
			return qs[i][1];
		}
	}
	// キーが見つからない場合は 空文字を返します
	return '';
}

/// <summary>
/// XMLHttpRequest を生成します
/// </summary>
function createHttpRequest()
{
	// 
	var xmlhttp = false;
	
	if(typeof ActiveXObject!="undefined"){ /* IE5, IE6 */
		try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); /* MSXML3 */
		}catch(e){
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); /* MSXML2 */
		}
	}
	if(!xmlhttp && typeof XMLHttpRequest!="undefined"){
		xmlhttp = new XMLHttpRequest(); /* Firefox, Safari, IE7,8 */
	}
	if(!xmlhttp){
		return null;
	}
	else
	{
		return xmlhttp;
	}
}

/// <summary>
/// 共通ログイン判定URLを取得します
/// </summary>
function getLoginCheckUrl()
{
	// 現在のURL
	var now_url = location.href;
	// URLの頭５桁を取得します
	var domain = now_url.substr(0, 5);
	// 戻り値
	var rtn_url = '';
	
	// ssl 確認
	if (domain.toLowerCase() == 'https')
	{
		// ssl
		rtn_url = const_welcome_common_login_check_ssl;
	}
	else
	{
		// 通常
		rtn_url = const_welcome_common_login_check_htm;
	}
	// 戻り値
	return rtn_url;
}

/// <summary>
/// ようこそ 共通ログイン判定呼出
/// </summary>
/// <param name="prm_login_flg">ログインフラグ</param>
/// <param name="prm_secure_flg">セキュアフラグ</param>
/// <param name="prm_nossl_flg">多重ログインフラグ</param>
/// <param name="prm_login_back_url">ログイン後に遷移するURL</param>
/// <param name="prm_logout_back_url">ログアウト後に遷移するURL</param>
function welcome_LoginJudge(
	prm_login_flg,
	prm_secure_flg,
	prm_nossl_flg,
	prm_login_back_url,
	prm_logout_back_url)
{
	try
	{

		// ログインフラグ
		var login_flg = prm_login_flg;
		// ログインフラグが 0、1 以外の場合
		if(login_flg != 0 && login_flg != 1)
		{
			// 0 として扱います
			login_flg = 0;
		}
		
		// 多重ログインフラグ
		var nossl_flg = prm_nossl_flg;
		// ログインフラグが空の場合
		if(nossl_flg == '')
		{
			// 1 として扱います
			nossl_flg = 1;
		}
		
		// ログイン＋ログイン後の戻りURL
		var login_and_back_url = '';
		// ログイン画面の戻りURLを確認します
		if (prm_login_back_url == '')
		{
			login_and_back_url = 
				const_welcome_login_form_url + 
				encodeURIComponent(location.href);
		}
		else
		{
			login_and_back_url = 
				const_welcome_login_form_url + 
				prm_login_back_url;
		}
		
		// ログアウト＋ログアウト後の戻りURL
		var logout_and_back_url = '';
		// ログアウト画面の戻りURLを確認します
		if (prm_logout_back_url == '')
		{
			//logout_and_back_url = 
			//	const_welcome_logout_form_url + 
			//	encodeURIComponent(location.href);
			logout_and_back_url = 
				const_welcome_logout_form_url 
		}
		else
		{
			//logout_and_back_url = 
			//	const_welcome_logout_form_url + 
			//	prm_logout_back_url;
			logout_and_back_url = 
				const_welcome_logout_form_url 
		}
		
		// 共通ログイン判定への送信パラメータ
		var strKey = 
			'login_flag=' + login_flg +
			'&mm_rcd=' + getQueryString('mm_rcd') +
			'&noSSLFl=' + nossl_flg;
		
		// セキュアフラグ確認
		if (prm_secure_flg == "1")
		{
			strKey = strKey + "&secure_flg=" + prm_secure_flg;
		}

		// オブジェクト生成
	  xmlhttp = createHttpRequest();
	  if (xmlhttp == null)
	  {
	  	return false;
	  }

	  // オープン
		xmlhttp.open('POST', getLoginCheckUrl(), true);

	  // ステータス変更イベント
	  xmlhttp.onreadystatechange = function(){
			// 読込完了(readyState == 4)
	    if (xmlhttp.readyState == 4){
				// 読込完了イベント
				xmlhttp_onloaded(xmlhttp, login_and_back_url, logout_and_back_url);
			}
		}
		// ヘッダ
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
		// 送信
	  xmlhttp.send(strKey);
	}
	catch (e)
	{
		// エラー
	}
}

/// <summary>
/// cookie を読み込みます
/// </summary>
/// <param name="key">キー</param>
function ReadCookie(key)
{
	// Cookie文字列
	var js_cookie = document.cookie;
	// ; で区切って"キー=値"の配列にする
	var js_data = js_cookie.split(';');
	// すべての半角スペースを表す正規表現
	var js_reg = new RegExp(' ', 'g');
	// 引数keyから半角スペースを除去
	key = key.replace(js_reg, '');
	// インデックス
	var js_index = 0;
	
	/* 語句ごとの処理 : マッチする要素を探す */
	while (js_data[js_index])
	{
		// さらに = で区切る
		var js_word = js_data[js_index].split('=');
		// 半角スペース除去
		js_word[0] = js_word[0].replace(js_reg, '');
		// マッチしたら値を返す
		if (key == js_word[0])
		{
			return unescape(js_word[1]);
		}
		// 要素数を超えたら抜ける
		if (++js_index >= js_data.length)
		{
			break;
		}
	}
	// 見つからない時は空文字を返す
	return '';
}

/// <summary>
/// XML の 項目の値を取得します
/// </summary>
/// <param name="xml_obj">XMLオブジェクト</param>
/// <param name="key">キー</param>
function getXmlValue(xml_obj, key)
{
	// 
	var rtn = '';
	// 
	if(xml_obj.responseXML.getElementsByTagName(key)[0].firstChild != null)
	{
		// 
		rtn = xml_obj.responseXML.getElementsByTagName(key)[0].firstChild.nodeValue;
	}
	// 戻り値
	return rtn;
}

/// <summary>
/// 読込完了イベント
/// </summary>
/// <param name="xml_obj">xml object</param>
/// <param name="prm_login_url">ログイン画面</param>
/// <param name="prm_logout_url">ログアウト画面</param>
function xmlhttp_onloaded(xml_obj, prm_login_url, prm_logout_url)
{
	// ログイン状態(xml)
	var rt_showflg = '';
	// ログイン状態
	var js_welcome_login_check_result = false;
	// ユーザ名
	var js_welcome_user_name = '';
	// ポイント
	var js_welcome_point = '';
	// ハンディキャップ
	var js_welcome_handicap = '';

	var login_and_back_url;

	// 正常終了(status == 200)の場合
	if(xml_obj.status == 200)
	{
		// ログイン状態
		rt_showflg = getXmlValue(xml_obj, 'rt_showflg');

		// 自動ログイン
		if (rt_showflg == '3')
		{
			login_and_back_url = const_welcome_login_form_url + encodeURIComponent(location.href);
			location.replace(login_and_back_url);
		}
		// ユーザ名
		js_welcome_user_name = getXmlValue(xml_obj, 'last_name') + getXmlValue(xml_obj, 'first_name');
		// GDO ポイント
		js_welcome_point = getXmlValue(xml_obj, 'point_num');
		// GDO ハンディキャップ
		js_welcome_handicap = getXmlValue(xml_obj, 'gdo_handicap');
	}

	// 置換処理
	welcome_DisplayReplace(
		prm_login_url,					// ログインURL
		prm_logout_url,					// ログアウトURL
		rt_showflg,	// ログイン状態
		js_welcome_user_name,			// ユーザ名
		js_welcome_point,				// ポイント
		js_welcome_handicap);			// ハンディキャップ

}

