/****************** ↓↓↓ サイト運営者設定領域 ↓↓↓ ******************/
/**
 * メッセージフラグ設定
 * 
 * 形式は[ライン]_[表示期限]_[訪問回数]となります。
 * 「,」コンマ区切りで「''」で囲って設定してください。
 *
 * ※ただし、[ライン]が同じで、[訪問回数]が１回のメッセージフラグは
 *   一つしか設定することはできません。
 *
 *   （例１）baby2011_20111005_1   （例２）baby2011_20111005_2  （例３）baby2011_20111005_1
 *           petit_20111007_1              baby2011_20111007_2          baby2011_20111007_1
 *
 *           ・[ライン]が異なる            ・[ライン]が同じ             ・[ライン]が同じ
 *           ・[訪問回数]が１回            ・[訪問回数]が２回           ・[訪問回数]が１回
 *           
 *               ⇒設定可能                     ⇒設定可能                    ⇒設定不可
 */
var message_Flg = new Array(
						 'baby2011_20110229_1'
						,'baby2011_20110229_2'
						,'baby2011_20110229_3'
						,'petitfirst_20120229_1'
						,'petitfirst_20120229_2'
						,'petitfirst_20120229_3'
						,'petit_20120229_1'
						,'petit_20120229_2'
						,'petit_20120229_3'
						,'pocket_20120229_1'
						,'pocket_20120229_2'
						,'pocket_20120229_3'
						,'hop_20120229_1'
						,'hop_20120229_2'
						,'hop_20120229_3'
						,'step_20120229_1'
						,'step_20120229_2'
						,'step_20120229_3'
						,'jump_20120229_1'
						,'jump_20120229_2'
						,'jump_20120229_3'
					);

/**
 * メッセージグループの比率
 * 
 * メッセージグループ（A,B,C）の比率を設定してください。
 *《記述例》
 * メッセージグループ:A ⇒ 40
 * メッセージグループ:B ⇒ 40
 * メッセージグループ:C ⇒ 20
 *  比率の合計は100になるように設定してください。
 * 
 */
var GROUP_A = 100;
var GROUP_B = 0;
var GROUP_C = 0;

/**
 * メッセージグループリセット日付
 * 
 *メッセージグループリセット日付（YYYYMMDDhhmm）を設定してください
 *《記述例》
 *   ⇒2011/8/7 10:00
 *    var GROUP_RESET_DATE = '201108071000'
 */
var GROUP_RESET_DATE = '201109061200'

/**
 * クッキー有効期限日数
 *
 * 保存期間を「日数」で設定してください
 */
var EXPIRES_DAY = 30;

/**
 * 訪問回数カウント上限
 */
var ACCESS_CNT_LIMIT = 100;

/**
 * メッセージフラグ判別用訪問回数上限
 */
var ACCESS_CNT_MSGFLG_LIMIT = 3;

/****************** ↑↑↑ サイト運営者設定領域 ↑↑↑ ******************/

var flg_Repeater = '';		// メッセージフラグ
var UBarMustTime = '';		// 下バー強制表示要求日時


/**
 * 
 * 
 * @return なし
 */
function RepeaterFlgJudge() {
	//var lineJudgeFlg	= 0;			// ライン判別フラグ
	var line	= undefined;	// ライン
	
	// 現在URLから各ラインを判定する
	var myURL = location.href;
	
	//現在URLがライン関連のものの場合
	if(myURL) {
		// (1)URLに /baby/2011/ が含まれる場合「baby2011版」
		if(myURL.indexOf("/baby/2011/") != -1) {
			lineJudgeFlg = "/baby2011/";
			// Cookieに「ライン判別フラグ」を保存
			setCookie('lineJudgeFlg', lineJudgeFlg);
		}
		// (2)URLに /petit-first/ の文字列が含まれる場合「ぷちファースト」
		else if(myURL.indexOf("/petit-first/") != -1) {
			lineJudgeFlg = "/petitfirst/";
			// Cookieに「ライン判別フラグ」を保存
			setCookie('lineJudgeFlg', lineJudgeFlg);
		}
		// (3)URLに /petit/ の文字列が含まれる場合「ぷち」
		else if(myURL.indexOf("/petit/") != -1) {
			lineJudgeFlg = "/petit/";
			// Cookieに「ライン判別フラグ」を保存
			setCookie('lineJudgeFlg', lineJudgeFlg);
		}
		// (4)URLに /pocket/ の文字列が含まれる場合「ぽけっと」
		else if(myURL.indexOf("/pocket/") != -1) {
			lineJudgeFlg = "/pocket/";
			// Cookieに「ライン判別フラグ」を保存
			setCookie('lineJudgeFlg', lineJudgeFlg);
		}
		// (5)URLに /hop/ の文字列が含まれる場合「ほっぷ」
		else if(myURL.indexOf("/hop/") != -1) {
			lineJudgeFlg = "/hop/";
			// Cookieに「ライン判別フラグ」を保存
			setCookie('lineJudgeFlg', lineJudgeFlg);
		}
		// (6)URLに /step/ の文字列が含まれる場合「すてっぷ」
		else if(myURL.indexOf("/step/") != -1) {
			lineJudgeFlg = "/step/";
			// Cookieに「ライン判別フラグ」を保存
			setCookie('lineJudgeFlg', lineJudgeFlg);
		}
		// (7)URLに /jump/ の文字列が含まれる場合「じゃんぷ」
		else if(myURL.indexOf("/jump/") != -1) {
			lineJudgeFlg = "/jump/";
			// Cookieに「ライン判別フラグ」を保存
			setCookie('lineJudgeFlg', lineJudgeFlg);
		}
	}

	//現在URLがライン関連のものでない場合もあるので、直前ないし前回保存したライン判別フラグをCookieから取得する
	lineJudgeFlg = getCookie('lineJudgeFlg');
	
	//line変数を確定する
	if(lineJudgeFlg) {
		if(lineJudgeFlg == "/baby2011/") {
			line = "baby2011";
		}
		else if(lineJudgeFlg == "/petitfirst/") {
			line = "petitfirst";
		}
		else if(lineJudgeFlg == "/petit/") {
			line = "petit";
		}
		else if(lineJudgeFlg == "/pocket/") {
			line = "pocket";
		}
		else if(lineJudgeFlg == "/hop/") {
			line = "hop";
		}
		else if(lineJudgeFlg == "/step/") {
			line = "step";
		}
		else if(lineJudgeFlg == "/jump/") {
			line = "jump";
		}
	}

	if(line) {
		// 訪問回数取得
		var accessCnt = getAccessCount();

		// 訪問回数が設定されている場合
		if(accessCnt) {
				// メッセージフラグ送信判別
				checkSendMsgFlg(line, getAccessCntFlg(accessCnt));
		}
	}


}

/**
 * 訪問回数取得
 * 
 * @param nowDate 現在時刻
 * @return 訪問回数
 */
function getAccessCount() {
	// Cookieに保存されているの「訪問回数」を取得
	var accessCnt = getCookie('accessCnt');
	var prevVisitDate = '';
	
	// 現在日時を取得（YYYY/MM/DD）
	var nowDate = getNowTime().substring(0, 10);

	// 現在日時を取得（YYYYMMDDhhmm）	
	var strNowDate = getNowDate();
	//  メッセージグループ変更日付の取得	
	var uBarMessageGroupResetDate = getCookie('uBarMessageGroupResetDate');
	
	// Cookieに保存されている「前回機能実行日時（YYYY/MM/DD hh:mm）」より「前回機能実行日付（YYYY/MM/DD）」を取得
	prevVisitDate = getCookie('prevVisitTime').substring(0, 10);
	setCookie('uBarLastVisitDate',prevVisitDate);
	
	// 初回訪問時などCookieが存在しない場合
	if(!accessCnt && !prevVisitDate) {
		accessCnt = 1;
		//メッセージグループ取得
		getMessageGroupFlg();
	}
	// Cookieが存在する場合
	else if(accessCnt && prevVisitDate) {
		accessCnt = ~~accessCnt;
		
		// 現在日付＞「前回機能実行日付」の場合
		if(nowDate > prevVisitDate) {
			// 訪問回数が訪問回数カウント上限の設定未満のみ実施
			if(accessCnt < ACCESS_CNT_LIMIT) {
				// 訪問回数をインクリメント
				accessCnt = accessCnt + 1;
			}
		}
		
		//メッセージグループリセット機能
		if(GROUP_RESET_DATE.length != 0){
		    //現在日付<メッセージグループリセット日付
		    //メッセージグループリセット機能でメッセージグループを変更した場合、Cookieが削除されるまで再度リセットは行われない
		    
	        //メッセージグループリセット日付が変更された場合メッセージグループリセットフラグをリセットする
	        if(uBarMessageGroupResetDate < GROUP_RESET_DATE){
	            // メッセージグループリセット日付を保存
	            setCookie('uBarMessageGroupResetDate',GROUP_RESET_DATE);
	            setCookie('uBarMessageGroupFlg','');
	        }
		    
			if(GROUP_RESET_DATE <= strNowDate && !getCookie('uBarMessageGroupFlg')){
				//メッセージグループ取得
				getMessageGroupFlg();
				setCookie('uBarMessageGroupFlg','1');
			}

		}
	}
	else {
		// Cookie情報が不正の場合はメッセージフラグは送信しない（空文字を設定）
		return '';
	}
	
	// Cookieに「訪問回数」を保存
	setCookie('accessCnt', accessCnt);

	return accessCnt;
}

/**
 * メッセージフラグ用訪問回数取得
 * 
 * @param accessCnt 訪問回数
 * @return メッセージフラグ用訪問回数
 */
function getAccessCntFlg(accessCnt) {
	var msgFlgAcsCnt = 0;

	// 訪問回数がメッセージフラグ用訪問回数上限の設定以上
	if(accessCnt >= ACCESS_CNT_MSGFLG_LIMIT) {
		// 訪問回数はメッセージフラグ用訪問回数上限の設定で固定
		msgFlgAcsCnt = ACCESS_CNT_MSGFLG_LIMIT;
	}
	else {
		msgFlgAcsCnt = accessCnt;
	}

	return msgFlgAcsCnt;
}

/**
 * メッセージフラグ送信判別
 * 
 * @param line ライン
 * @param acsCnt メッセージフラグ用訪問回数
 */
function checkSendMsgFlg(line, acsCnt) {
	// 送信候補メッセージフラグ配列
	var checkMsgFlgAry = new Array();
	for(var i = 0; i < message_Flg.length; i++) {
		var flgInfoAry = message_Flg[i].split('_');
		
		// 各引数と設定メッセージフラグの[ライン]と[訪問回数]が一致
		if(flgInfoAry[0] == line && flgInfoAry[2] == acsCnt) {
			// Cookieに保存されている「前回機能実行日時（YYYY/MM/DD hh:mm）」より「前回機能実行日付（YYYYMMDD）」を取得
			var prevVisitDate = getCookie('prevVisitTime').substring(0, 4)
							  + getCookie('prevVisitTime').substring(5, 7)
						      + getCookie('prevVisitTime').substring(8, 10);
			
			// 「前回機能実行日付」＜=設定メッセージフラグの[表示期限]
			if(prevVisitDate <= flgInfoAry[1]) {
				// 送信メッセージフラグが未設定
				if(flg_Repeater == '') {
					// 送信メッセージフラグ設定
					flg_Repeater = message_Flg[i];
				}
				else {
					var sendFlgInfoAry = message_Flg[i].split('_');
					// 送信対象メッセージフラグの[表示期限]＞送信候補メッセージフラグの[表示期限]
					if(sendFlgInfoAry[1] > flgInfoAry[1]) {
						// 送信メッセージフラグ入れ替え
						flg_Repeater = message_Flg[i];
					}
				}
			}
		}
	}
	
	// 送信メッセージフラグが設定されている場合
	if(flg_Repeater != '') {
		// 下バー強制表示要求日時設定
		UBarMustTime = getUbarMustTime(flg_Repeater);
	}
	
	// Cookieに「前回機能実行時刻」を保存
	setCookie('prevVisitTime', getNowTime());
}

/**
 * 下バー強制表示要求日時取得
 * 
 * @param flg_Repeater 送信メッセージフラグ
 * @return 下バー強制表示要求日時(YYYY/MM/DD mm:ss)
 */
function getUbarMustTime(flg_Repeater) {
	var uBarMustTimeStr = '';
	var flgRepInfoAry = flg_Repeater.split('_');
	
	uBarMustTimeStr = flgRepInfoAry[1].substring(0, 4)
					+ '/' + flgRepInfoAry[1].substring(4, 6)
					+ '/' + flgRepInfoAry[1].substring(6, 8)
					+ ' ' + '23:59';
	
	return(uBarMustTimeStr);
}

/**
 * 現在時刻取得
 * 
 * @return 現在時刻文字列（YYYY/MM/DD hh:mm）
 */
function getNowTime() {
	var date = new Date();
	
	var year  = date.getFullYear();
	var month = date.getMonth() + 1;
	if(month < 10) {
		month = '0' + month;
	}
	var day   = date.getDate();
	if(day < 10) {
		day = '0' + day;
	}
	var hour  = date.getHours();
	if(hour < 10) {
		hour = '0' + hour;
	}
	var min   = date.getMinutes();
	if(min < 10) {
		min = '0' + min;
	}
	
	return (year + '/' + month + '/' + day + ' ' + hour + ':' + min);
}

/**
 * クッキー有効期限取得
 * 
 * @return クッキー有効期限日の世界標準時文字列
 */
function getExpiresDay() {
	var date = new Date();
	
	date.setTime(date.getTime() + (EXPIRES_DAY * 1000 * 60 * 60 * 24));
	
	return(date.toGMTString());
}

/**
 * クッキー取得
 * 
 * @param key 取得するクッキーのキー
 * @return 取得した値（キーが存在しなければ空文字）
 */
function getCookie(key) {
	 var result = "";
	 
	 if(document.cookie) {
		 // Cookieを「; 」で区切る
		 var cookieAry	= document.cookie.split("; ");
		 for(var i = 0; i < cookieAry.length; i++) {
			 var sp	 = cookieAry[i].split("=");
			 if(key == sp[0]) {
				 result = unescape(sp[1]);
				 break;
			 }
		 }
	 }
	 
	 return result;
}

/**
 * クッキー保存
 * 
 * @param key 保存対象のクッキーのキー
 * @param val 保存する値
 */
function setCookie(key, val) {
	document.cookie = key + '=' + escape(val) + '; expires=' + getExpiresDay() + '; path=/' ;
}

/**
 * メッセージグループ取得
 */
function getMessageGroupFlg() {
	var flg_message_group = getCookie('group');
	if(flg_message_group == ""){
		var randnum = Math.random();
		var total = GROUP_A + GROUP_B + GROUP_C;
		
		// メッセージの設定
		if(randnum <= GROUP_A/total){
			flg_message_group = 'A';
			setCookie('uBarMessageGroup', flg_message_group);
		}else if(randnum <= (GROUP_A + GROUP_B)/total){
			flg_message_group = 'B';
			setCookie('uBarMessageGroup', flg_message_group);
		}else{
			flg_message_group = 'C';
			setCookie('uBarMessageGroup', flg_message_group);
		}
	}
}

/**
 * 現在時刻取得
 * 
 * @return 現在時刻文字列（YYYYMMDDhhmm）
 */
function getNowDate() {
	var date = new Date();
	
	var year  = date.getFullYear();
	var month = date.getMonth() + 1;
	if(month < 10) {
		month = '0' + month;
	}
	var day   = date.getDate();
	if(day < 10) {
		day = '0' + day;
	}
	var hour  = date.getHours();
	if(hour < 10) {
		hour = '0' + hour;
	}
	var min   = date.getMinutes();
	if(min < 10) {
		min = '0' + min;
	}
	
	return (year + month + day + hour + min);
}
