﻿/* 閲覧可否時間式制御JavaScript, version 1.0 
* 
/*--------------------------------------------------------------------------*/ 
/**** 以下カスタマイズ可能エリア **************************/ 
// 制限時間の基準時(アクセスが22時ならば次の日の24時まで、07時なら当日の24時までと、 
// アクセス時間によって残り時間を変更出来るようにする際の基準時。1〜23の間で設定可。 
// -1に設定すると、変化をもたせず固定の日数で制御を行います。デフォルトは12時。) 
var _iChangeTime = -1; 
// アクセス可能日数(デフォルトは１日) 
var _iAccessDays = 5; 
// 制限後の表示ページ(例：http://ここに２４時間経過後に変移したいURLを入力) 
var _strURL = "http://www.koshu-gusuri.com/infotop/common.html"; 
// 制限日数の設定（一度見れなくなってからその状態が続く日数） 
var _iRefuseDays = 120;
/**** 以上カスタマイズ可能エリア **************************/ 
// Cookieキー 
var _strKey = "AccessTime"; 
 

// ウィンドウ制御用フラグ 
var _isForcedLocation = false; 
function doInit() { 
	var iStart, iEnd; 
	// Cookieの取得 
	var strTmp = unescape(document.cookie) + ";"; 
	// 制限時刻情報があるか判定する 
	var iKeyPosition = strTmp.indexOf(_strKey, 0); 
	// 制限時刻の設定 
	var sysDateExpires = new Date(); 
	var strDateExpires = ""; 
	if(_iChangeTime != -1) { 
		var sysDate = new Date(); 
		var sysFullYear = "" + sysDate.getFullYear(); 
		var sysMonth = "" + (sysDate.getMonth() + 1); 
		if(sysDate.getHours() - _iChangeTime >= 0) { 
			var sysDay = "" + (sysDate.getDate() + 1); 
		} else { 
			var sysDay = "" + (sysDate.getDate()); 
		} 
		var sysHour = "" + "23"; 
		var sysMinutes = "" + "59"; 
		var sysSeconds = "" + "59"; 
		var sysMSeconds = "" + "999"; 
	} else { 
		var sysDate = new Date(); 
		var sysFullYear = "" + sysDate.getFullYear(); 
 

		var sysMonth = "" + (sysDate.getMonth() + 1); 
		var sysDay = "" + (sysDate.getDate() + _iAccessDays); 
		var sysHour = "" + sysDate.getHours(); 
		var sysMinutes = "" + sysDate.getMinutes(); 
		var sysSeconds = "" + sysDate.getSeconds(); 
		var sysMSeconds = "" + sysDate.getMilliseconds(); 
	} 
	var strLimitDate = sysFullYear + "," + 
	sysMonth + "," + 
	sysDay + "," + 
	sysHour + "," + 
	sysMinutes + "," + 
	sysSeconds + "," + 
	sysMSeconds + ","; 
	// 制限時刻情報がある場合、その情報を元にカウントダウンを行う 
	if(iKeyPosition != -1) { 
		strTmp = strTmp.substring(iKeyPosition, strTmp.length); 
		iStart = strTmp.indexOf("=", 0) + 1; 
		iEnd = strTmp.indexOf(";", iStart); 
		strLimitDate = unescape(strTmp.substring(iStart, iEnd)) 
		controlTimer(strLimitDate); 
		// 制限時刻情報がない場合、制限時刻を設定しカウントダウンを行う 
	} else { 
		sysDateExpires.setDate(sysDate.getDate() + _iRefuseDays); 
		strDateExpires = sysDateExpires.toGMTString(); 
		strTmp = _strKey + "=" + escape(strLimitDate) + ";" + "expires=" + strDateExpires + "; "; 
		document.cookie = strTmp; 
 

		controlTimer(strLimitDate); 
	} 
} 
function controlTimer(strLimitDate) { 
	var iStart, iEnd; 
	// 制限時刻情報を年月日時分秒単位に分解する 
	iStart = 0; 
	iEnd = strLimitDate.indexOf(",", 0); 
	var strLimitYear = strLimitDate.slice(iStart, iEnd); 
	iStart = ++iEnd; 
	iEnd = strLimitDate.indexOf(",", iStart) 
	var strLimitMonth = strLimitDate.slice(iStart, iEnd); 
	iStart = ++iEnd; 
	iEnd = strLimitDate.indexOf(",", iStart) 
	var strLimitDay = strLimitDate.slice(iStart, iEnd); 
	iStart = ++iEnd; 
	iEnd = strLimitDate.indexOf(",", iStart) 
	var strLimitHours = strLimitDate.slice(iStart, iEnd); 
	iStart = ++iEnd; 
	iEnd = strLimitDate.indexOf(",", iStart) 
	var strLimitMinutes = strLimitDate.slice(iStart, iEnd); 
	iStart = ++iEnd; 
	iEnd = strLimitDate.indexOf(",", iStart) 
	var strLimitSeconds = strLimitDate.slice(iStart, iEnd); 
	iStart = ++iEnd; 
	iEnd = strLimitDate.indexOf(",", iStart) 
	var strLimitMSeconds = strLimitDate.slice(iStart, iEnd); 
	// 現在時刻の取得 
	var sysCurrentDate = new Date(); 
	// 制限開始時刻の取得 
	var sysLimitDate = new Date(); 
 

	sysLimitDate.setFullYear(parseInt(strLimitYear)); 
	sysLimitDate.setMonth(parseInt(strLimitMonth) -1); 
	sysLimitDate.setDate(parseInt(strLimitDay)); 
	sysLimitDate.setHours(parseInt(strLimitHours)); 
	sysLimitDate.setMinutes(parseInt(strLimitMinutes)); 
	sysLimitDate.setSeconds(parseInt(strLimitSeconds)); 
	sysLimitDate.setMilliseconds(parseInt(strLimitMSeconds)); 
	// 現在時刻と制限開始時刻の差（＝可読残り時間）を秒単位で取得する 
	var iCurrentSeconds = 0; 
	var iLimitSeconds = 0; 
	iCurrentSeconds = Math.round(sysCurrentDate.getTime()); 
	iLimitSeconds = Math.round(sysLimitDate.getTime()); 
	var iRemainder = iLimitSeconds - iCurrentSeconds; 
	var strRemDays = "" + Math.floor(iLimitSeconds / (24 * 60 * 60 * 1000) - iCurrentSeconds / (24 * 60 * 60 * 1000)); 
	if(_iChangeTime != -1) { 
		if(parseInt(strRemDays) >= 1) { 
			iRemainder = iRemainder - (parseInt(strRemDays) * 24 * 60 * 60 * 1000); 
		} 
	} else { 
		iRemainder = iRemainder - 1; 
	} 
	//var strRemMSecnds = "" + (Math.floor(iRemainder / 3600)) % 1000; 
	//iRemainder = Math.floor(iRemainder / 1000); 
	var strRemHours = "" + (Math.floor(iRemainder / 3600000)); 
	var strRemMinutes = "" + (Math.floor((iRemainder - strRemHours * 3600000) / 60000)); 
	var strRemSecnds = "" + (Math.floor((iRemainder - strRemHours * 3600000 - 
 

	strRemMinutes * 60000) / 1000)); 
	var strRemMSecnds = "" + (Math.floor(iRemainder - strRemHours * 3600000 - strRemMinutes * 60000 - strRemSecnds * 1000)); 
	strRemMSecnds = "" + (Math.floor(parseInt(strRemMSecnds) / 10)); 
	if(strRemHours.length != 2) { 
		strRemHours = "0" + strRemHours; 
	} 
	if(strRemMinutes.length != 2) { 
		strRemMinutes = "0" + strRemMinutes; 
	} 
	if(strRemSecnds.length != 2) { 
		strRemSecnds = "0" + strRemSecnds; 
	} 
	if(strRemMSecnds.length != 2) { 
		strRemMSecnds = "0" + strRemMSecnds; 
	} 
	// Cookie受け入れ不可の場合、以降の処理を中断する 
	if(document.cookie.indexOf(_strKey) == -1) { 
		timerID = clearTimeout(); 
		_isForcedLocation = true; 
		location.href = _strURL; 
	} 
	// 可読残り時間を表示する 
	if(iRemainder > 0) { 
		// カウントダウン文言の設定 
		var strText = ""; 
		if(_iChangeTime != -1) {
			strText = "" + (sysLimitDate.getMonth() + 1 ) + "月" + sysLimitDate.getDate() +
			"日（残り"	+ strRemHours + "時間" + strRemMinutes + "分）";
		} else {
			strText = "" + (sysLimitDate.getMonth() + 1 ) + "月" + sysLimitDate.getDate() +
			"日（残り"	+ strRemHours + "時間" + strRemMinutes + "分）";
		}

		var iSize = document.getElementsByName("days").length;
		if (iSize != undefined) { 
			for (i = 0; i < iSize; i++) { 
				document.getElementsByName("days")[i].value = strText; 
			} 
		} else { 
			document.getElementsByName("days").value = strText; 
		}
		
		// 日数の部分の修正
		var day_number_elm = document.getElementsByName("day_count");
		var dSize = day_number_elm.length;
		if (dSize != undefined) { 
			for (i = 0; i < dSize; i++) { 
				day_number_elm[i].value = _iAccessDays + ""; 
			} 
		} else { 
			day_number_elm.value = _iAccessDays + "";
		}
		
		timerID = setTimeout("doInit()", 100); 
		// 制限時刻以降の場合、カウントダウンを終了し、他画面へ遷移する。 
	} else { 
		timerID = clearTimeout(); 
		_isForcedLocation = true; 
		location.href = _strURL; 
	} 
} 

