

/* Cookie Script */

/*	source copyright orangeproducts reserved.	*/
/*												*/
/*■ソース概要									*/
/*	◆メインダイナミック関数 					*/
/*		｜setCookie(key,value)					*/
/*		｜getCookie(key)						*/
/*		｜clearCookie(key || "all")				*/
/*	◆メイン関数補助サブルーチン				*/
/*		｜echo("key" || "key&value")			*/
/*		｜SaveSpan()							*/
/*		｜GetPath()								*/
/*		｜Cutting(value,space,other)			*/
/*		｜echoError("エラーメッセージ")			*/
/*												*/
/*■それぞれの関数の詳細
		|setCookie関数		：引数（key,value）					：戻り値（なし）
		|getCookie関数		：引数（key）						：戻り値（キーの値）
		|clearCookie関数	：引数（key または "all"）			：戻り値（なし）
		|echo関数			：引数（"key" または "key&value"）	：戻り値（キーの名前かキーの名前と値）
		|SaveSpan関数		：引数（なし）						：戻り値（クッキーのexpireデータ）
		|GetPath関数		：引数（なし）						：戻り値（クッキーのpathデータ）
		|Cutting関数		：引数（value,space,other）			：戻り値（引数に送られたデータの禁則文字"=",";"," "等を削除して返す。詳しくは関数を参照）
		|echoError関数		：引数（"エラーメッセージ"）		：戻り値（ステータスにエラーメッセージを返してくれる）
*/







/* 利用設定:基本的には設置サーバ全体とする */
var save_span = 365; 	// 有効期限設定（日単位）
var path = '/';			// Cookie呼出パス








function setCookie(key,value)
{
	var data = "";

	key = Cutting(key,1,1);
	value = Cutting(value,0,1);
	data += escape(key) + "=" + escape(value) + ";";

	data += "expires=" + SaveSpan() + ";";
	data += "path=" + path + ";";
	document.cookie = data;
}



function getCookie(key)
{

	var keys_ary = new Array();
	var key_val_ary = new Array();
	var cookie_ary = new Array();

	tmp = document.cookie;
	tmp = unescape(tmp);
	keys_ary = tmp.split([";"]);

	for(var i=0; i<keys_ary.length; i++){
		key_val_ary = keys_ary[i].split(["="]);
		key_val_ary[0] = Cutting(key_val_ary[0],1,0);
		cookie_ary[key_val_ary[0]] = key_val_ary[1];

		if(key_val_ary[0] == key){
			return cookie_ary[key];
		}
		else if(i == (keys_ary.length-1) && key != key_val_ary[0]){
			//echoError('Key name "' + key + '" is not existense.');
		}
	}

}



function clearCookie(option)
{
	var key_data;
	var keys_ary = new Array();

	switch(option){
		case "all":
			key_data = echo("key");
			key_data = Cutting(key_data,1,0);
			keys_ary = key_data.split(["/"]);
			break;

		case "":
			alert('   消したいキーの名前は何ですか？全部なら"all"オプションです。     ');
			return;
			break;

		default:
			keys_ary[0] = option;
	}

	var exp_date = new Date();
	exp_date.setTime(exp_date.getTime()-1);
	for(i=0; i<keys_ary.length; i++){
		document.cookie = keys_ary[i] + "=;expire=" + exp_date.toGMTString().replace("UTC","GMT") + ";path=" + path + ";";
	}
	//echoError('クッキーデータ"' + keys_ary[0] + '"のクリアに成功しました。');
}



function echo(option)
{
	var data = "";
	var keys_ary = unescape(document.cookie).split([";"]);

	switch(option){
		case "key":
			for(i=0; i<keys_ary.length; i++)
			{	key_val_ary = keys_ary[i].split(["="]);
				data += key_val_ary[0] + "/";			}
			return data;
			break;

		case "key&value":
			for(i=0; i<keys_ary.length; i++)
			{	data += keys_ary[i] + "/";				}
			return data;

		default:
			alert('欲しい情報はどっちですか？ "key" or "key&value"？    ');
			return;
	}
}



function SaveSpan()
{
	var exp_date = new Date();
	exp_date.setTime(exp_date.getTime() + (1000*60*60*24*save_span));
	return exp_date.toGMTString().replace("UTC","GMT");
}



function GetPath()
{
/*
	var path,postion,dir;

	if(navigator.appName.charAt(0) == "N"){
		path = location.href;
		return path;
	}else{
		path = location.pathname;
		postion = path.lastIndexOf("/",path.length-1);
		dir = path.substr(-path.length,postion+1);
		return dir;
	}
*/
}



function Cutting(value,space,other)
{
	value = new String(value);

	if(space){
		while(value.indexOf(" ") != -1)
			value = value.replace(" ","");
	}
	if(other){
		while(value.indexOf("=") != -1)
		{	value = value.replace("=","");	}

		while(value.indexOf(";") != -1)
		{	value = value.replace(";","");	}
	}
	return value;
}



function echoError(msg)
{
	window.status = msg;
	setTimeout('window.status = ""',100000);
}