/*
 * cookie.js
 * Created on 2005/11/02
 * 
 */



/**
 * Cookieが使用可能か調べる。
 * Cookieが無効の場合でも以前設定されたCookieが取れてしまうので、
 * 時刻判定しています。
 * 
 * @return 使用可能な場合true、そうでない場合false
 */
function cookieEnabled()
{
	var TEST_KEY = "last_access_time";
	var now = new Date();
	setCookie(TEST_KEY, now);
	var value = getCookie(TEST_KEY);
	return (value == now);
}


/**
 * Cookieに値を設定します。
 * 
 * @param key キー
 * @param value 値。省略可。
 * @param expires このCookieの有効期限。Date型で指定してください。省略可
 *          過去の値を指定するとCookieを削除するようです。
 * @param domain Cookieを発行するWebサーバの名前。省略可
 * @param path このパスにマッチしたページを参照したときにブラウザからこの
 *          Cookieが送られてくるようです。省略可。
 * @param secure セキュアな接続の場合のみCookieが送信されます。省略可。
 */
function setCookie(key, value, expires, domain, path, secure)
{
	if (key == null || key.length == 0) return false;


	var cookie;

	if (value == null)
		cookie = key + "=;";
	else
		cookie = key + "=" + escape(value) + ";";


	if (expires != null) {
		cookie += " expires=" + expires.toGMTString() + ";";
	}

	if (domain != null) {
		cookie += " domain=" + domain + ";";
	}

	if (path != null) {
		cookie += " path=" + path + ";";
	}

	if (secure != null) {
		cookie += " secure;";
	}

	document.cookie = cookie;
}


/**
 * Cookieから値を取得します
 * 
 * @param key キー
 * @return keyに対応するCookieの値
 */
function getCookie(key)
{
	var cookie = document.cookie + ";";
	index1 = cookie.indexOf(key, 0);

	if (index1 != -1){
		cookie = cookie.substring(index1, cookie.length);
		index2 = cookie.indexOf("=", 0) + 1;
		index3 = cookie.indexOf(";", index2);
		return unescape(cookie.substring(index2, index3));
	}

	return "";
}


/**
 * Cookieに設定する有効期限を日数から作成します。
 * 30日間有効とする場合は
 *    expireDays(30);
 * とする事で求められます。
 * 
 * @param days 日数
 * @return 有効期限を設定したDateオブジェクト
 */
function expireDays(days, date)
{
	var now;

	if (date == null)
		now = new Date();
	else
		now = date;

	now.setTime(now.getTime() + (days * 24 * 60 * 60 * 1000));
	return now;
}


/**
 * Cookieを削除します
 * 
 * @param key キー
 */
function removeCookie(key)
{
	// 設定値より前の日付で削除できるので１日前(-1)の日付でsetCookieする
	setCookie(key, null, expireDays(-1));
	return true;
}
