//======================================
// アクセス履歴登録用パラメータ
//======================================

var gDirectusRegisterURL = "http://bttool.directus.org/access.php";
var gDirectusKeycode = "directusky";
var gCookieDomain = "emm-i.com";
var gCookiePath = "/";
var gCookieExpire = 365;

//======================================
// クッキーを書き込む（※汎用）
//======================================
function DirectusWriteCookie(key, value, days, path, domain)
{
	var str;
	
	str = key + "=" + escape(value) + ";";
	
	if(days) {
		var dt = new Date();
		dt.setTime(dt.getTime() + days * 24 * 60 * 60 * 1000); 
		str += "expires=" + dt.toGMTString() + ";";
	}
	if(domain)	str += "domain=" + domain + ";";
	if(path)	str += "path=" + path + ";";
	
	document.cookie = str;
}

//======================================
// クッキーを読み込む（※汎用）
//======================================
function DirectusReadCookie(key)
{
	var array, tmp;
	
	array = document.cookie.split(";");
	for(i = 0; i < array.length; i++){
		tmp = array[i].replace(/^\s+|\s+$/g, "");
		tmp = tmp.split("=");
		if(tmp[0] == key) return unescape(tmp[1]);
	}
	
	return "";
};

//======================================
// ランダムなユーザIDを作成する（検証用）
//======================================
function DirectusRandomID(length)
{
	var date = new Date();
	var id   = date.getTime().toString(36);
	var loop = length - id.length;
	var rand, i;
	if(loop <= 0) return id;
	
	for(i = 0; i < loop; i++){
		rand = Math.floor(Math.random()*36);
		if(rand <= 9)		id += String.fromCharCode(rand+48);
		else if(rand >= 10)	id += String.fromCharCode(rand+87);
	}
	
	return id;
}

//======================================
// クッキーへユーザIDを登録する
//======================================
function DirectusWriteID(id)
{
	DirectusWriteCookie("DIRECTUS_UID", DirectusEnc(id), gCookieExpire, gCookiePath, gCookieDomain);
}

//======================================
// クッキーへユーザIDを登録する
//======================================
function DirectusWriteID_NoEnc(id)
{
	DirectusWriteCookie("DIRECTUS_UID", "__noenc_" + id, gCookieExpire, gCookiePath, gCookieDomain);
}

//======================================
// クッキーからユーザIDを取得する
//======================================
function DirectusReadID()
{
	return DirectusReadCookie("DIRECTUS_UID");
}

//======================================
// サーバへアクセス履歴を登録する
//======================================
function DirectusAccess(server, item00, item01, item02, item03, item04, item05, item06, item07, item08, item09)
{
	var refer;
	var date;
	var tm;
	var fn;
	var mm, dd, hh, mn, ss;
	var cs;
	var url;
	var sc;
	
	// 日付を取得
	date = new Date();
	mm = "0" + (date.getMonth() + 1);
	dd = "0" + date.getDate();
	hh = "0" + date.getHours();
	mn = "0" + date.getMinutes();
	ss = "0" + date.getSeconds();
	tm = date.getFullYear() + "-" +
		mm.slice(-2) + "-" +
		dd.slice(-2) + " " +
		hh.slice(-2) + ":" +
		mn.slice(-2) + ":" +
		ss.slice(-2);
	fn = "LOG_" + server + "_" + date.getFullYear() + mm.slice(-2);
	
	// リファラを取得
	if(document.referrer.indexOf(gCookieDomain) == -1)	refer = document.referrer;
	else												refer = "internal";
	
	// 文字コードを取得
	if(document.all)	cs = document.charset;			// IEの場合
	else				cs = document.characterSet;		// それ以外の場合
	
	// タグが存在しなければCGI用のイメージタグを追加
	url =
		gDirectusRegisterURL +													// アクセス記録URL
		"?fn=" + encodeURIComponent(fn) +										// データ名
		"&srv=" + encodeURIComponent(server) +									// サーバID
		"&uid=" + encodeURIComponent(DirectusReadCookie("DIRECTUS_UID")) +		// ユーザID ※暗号化されたユーザIDがセットされます
		"&url=" + encodeURIComponent(location.href) +							// アクセス元URL
		"&ref=" + encodeURIComponent(refer) +									// リファラ
		"&dt=" + encodeURIComponent(tm) +										// アクセス日時
		"&cset=" + cs;															// 文字コード
	
	// 以下パラメータ追加
	if(item00 != undefined) url += "&item00=" + encodeURIComponent(item00);
	if(item01 != undefined) url += "&item01=" + encodeURIComponent(item01);
	if(item02 != undefined) url += "&item02=" + encodeURIComponent(item02);
	if(item03 != undefined) url += "&item03=" + encodeURIComponent(item03);
	if(item04 != undefined) url += "&item04=" + encodeURIComponent(item04);
	if(item05 != undefined) url += "&item05=" + encodeURIComponent(item05);
	if(item06 != undefined) url += "&item06=" + encodeURIComponent(item06);
	if(item07 != undefined) url += "&item07=" + encodeURIComponent(item07);
	if(item08 != undefined) url += "&item08=" + encodeURIComponent(item08);
	if(item09 != undefined) url += "&item09=" + encodeURIComponent(item09);
	
	// クロスドメイン出力
	sc = document.createElement("script");
	sc.setAttribute("type","text/javascript");
	sc.setAttribute("src", url);
	document.getElementsByTagName("body").item(0).appendChild(sc);
}

//======================================
// 暗号化処理
//======================================

function DirectusEnc(s)
{
	var i;
	var buf;
	var len, no;
	
	len = gDirectusKeycode.length;
	buf = "";
	
	for(i = 0; i < s.length; i++) {
		no = i % len;
		buf = buf + "%" + (s.charCodeAt(i) +
			(s.length - i) +
			gDirectusKeycode.charCodeAt(no));
	}
	
	return buf;
}

function DirectusDec(s)
{
	var i;
	var buf;
	var div;
	var len, no;
	
	len = gDirectusKeycode.length;
	
	buf = "";
	div = s.split("%");
	
	for(i = 0; i < div.length - 1; i++) {
		no = i % len;
		buf = buf + String.fromCharCode(Number(div[i + 1]) -
			(div.length - i - 1) -
			gDirectusKeycode.charCodeAt(no));
	}
	
	return buf;
}
