///////////////////////////////////////////////////
// プロモリアン設定
///////////////////////////////////////////////////
var promolian_logger_url	= "www.promo.snr.jp/promolian-logger.php";					//ログ書込用URL テスト環境用
var CookieNameHeader		= "PROMOLIAN";												//クッキー名 タイトル

//************************************************//
//*** Function : GETパラメータ 取得
//************************************************//
function getParameter(key) {
    var tmp1, tmp2, xp1, xp2, xp3;

    tmp1 = location.search.substr(1) + "&";
    xp1 = xp2 = 0;
    len = tmp1.length;
    while (xp1 < len) {
        xp2 = tmp1.indexOf("&", xp1);
        tmp2 = tmp1.substring(xp1, xp2);
        xp3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xp3) == key) {
            return(unescape(tmp2.substring(xp3 + 1, xp2 - xp1 )));
        }
        xp1 = xp2 + 1;
    }
    return("");
}

//************************************************//
//*** Function : Cookie利用可能チェック
//************************************************//
function chkCookieAlive() {

	var strCookieName = "CheckUseCookie";
	var strCookieValue = "check_use_cookie";
	
	//クッキーセット
	setCookie(strCookieName, strCookieValue, 86400*1000);

	//クッキー取得
	var strTemp = document.cookie;
	if (!strTemp) {
		return(1);
	}
	else {
		return(0);
	}
}

//************************************************//
//*** Function : クッキー取得
//************************************************//
function getCookie(key) {
    var tmp1, tmp2, xp1, xp2, xp3;

    tmp1 = " " + document.cookie + ";";
    xp1 = xp2 = 0;
    len = tmp1.length;
    while (xp1 < len) {
        xp2 = tmp1.indexOf(";", xp1);
        tmp2 = tmp1.substring(xp1 + 1, xp2);
        xp3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xp3) == key) {
            return(unescape(tmp2.substring(xp3 + 1, xp2 - xp1 - 1)));
        }
        xp1 = xp2 + 1;
    }
    return("");
}

//************************************************//
//*** Function : クッキーセット
//************************************************//
function setCookie(key, val, tm) {
    var tmp;
	var dt = new Date();

	dt.setTime(dt.getTime() + tm);

	tmp = key + "=" + escape(val) + "; expires=" + dt.toGMTString() + "; path=/; ";

	document.cookie = tmp;
}

//************************************************//
//*** Function : 文字列 ゼロ埋め
//************************************************//
function zeroFormat(num,max){
  var tmp=''+num;

  while(tmp.length<max){
    tmp='0'+tmp;
  }

  return( tmp );
}

//************************************************//
//*** Function : 16進数 → 10進数 変換
//************************************************//
function convHexToDecimal(numX) {

	var numXlen = numX.length;		//文字列の長さ = 桁数
	var numD = 0;					//答え、10進数を格納

	for (i=0; i<numXlen; i++) {
		m=convHexToDecimal2(numX.charAt(i));

		n=parseInt(m)* Math.pow(16,(numXlen-1-i));	//16のべき乗計算		//ある桁をとりあげ、A～Fなら10～15に変換

		numD += n;

	}

	return( numD.toString() ) ;
}

//************************************************//
//*** Function : 16進数 → 10進数 変換
//************************************************//
function convHexToDecimal2(m) {
	switch (m) {
		case 'A': m="10"; break; //余りが10以上の場合の16進数
		case 'B': m="11"; break;
		case 'C': m="12"; break;
		case 'D': m="13"; break;
		case 'E': m="14"; break;
		case 'F': m="15"; break;
	}
        return m;
}

//************************************************//
//*** Function : ユーザーコード生成 （現在までの経過ミリ秒 ＋ 乱数）
//************************************************//
function makeUsercd(){
	var dt = new Date();
	var strDt;
	var strRandom;

	strDt = dt.getTime() + "";
	strRandom = Math.random() + "";

	return( strDt + strRandom );
}


///////////////////////////////////////////////////
// メイン START
///////////////////////////////////////////////////


	//-----------------------------------------------//
	// GETパラメータ 識別コード 10進変換
	//-----------------------------------------------//
	var banner_parameter_i = getParameter("i"); 				//バナー 識別コード

	// パラメータを10進数に変換し、6桁ゼロ埋めをする
	if (banner_parameter_i != "" ) {
		banner_identificationcd = zeroFormat(convHexToDecimal(banner_parameter_i) ,6 );
	}

	// パラメータが無い場合はクリア
	else {
		banner_identificationcd = "";
	}

	//-----------------------------------------------//
	// GETパラメータ プロモーションコード＋広告コード 10進変換
	//-----------------------------------------------//
	var banner_parameter_a = getParameter("a"); 				//バナー プロモーションコード＋広告コード

	// パラメータを10進数に変換し、10桁ゼロ埋め後、パラメータ分解する
	if (banner_parameter_a != "" ) {
		banner_parameter_work = zeroFormat(convHexToDecimal(banner_parameter_a),10 );
		banner_promotioncd = banner_parameter_work.substr(0,3);
		banner_advertisementcd = banner_parameter_work.substr(3,7);
	}

	// パラメータが無い場合はクリア
	else {
		banner_promotioncd = "";
		banner_advertisementcd = "";
	}

	//-----------------------------------------------//
	// 自ページ 識別コード、ページコード取得 （変数が存在しない場合は ALL 0 をセット）
	//-----------------------------------------------//
	var own_identificationcd;
	var own_pagecd;
	
	if (prcd == undefined) {
	    own_identificationcd = "000000";
	    own_pagecd = "0000";
	}    
	else {
	    own_identificationcd = prcd.substr(0,6);
	    own_pagecd = prcd.substr(6,4);
	}
	
	//-----------------------------------------------//
	// 自ページ チェックコード取得 （変数が存在しない場合は ALL Z をセット）
	//-----------------------------------------------//
	var own_checkcd;
	
	if (chcd == undefined) {
	    own_checkcd = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
	}    
	else {
	    own_checkcd = chcd;
	}
	
	//-----------------------------------------------//
	// クッキー名 生成
	//-----------------------------------------------//
	var cookie_advertisementcd_name	= CookieNameHeader + own_identificationcd + "A";	//広告コード
	var cookie_promotioncd_name	= CookieNameHeader + own_identificationcd + "P";		//プロモーションコード
	var cookie_usercd_name	= CookieNameHeader + own_identificationcd + "U";			//ユーザーコード
	
	//-----------------------------------------------//
	// クッキー 取得
	//-----------------------------------------------//
	var cookie_advertisementcd_get_value = getCookie(cookie_advertisementcd_name);		//広告コード
	var cookie_promotioncd_get_value = getCookie(cookie_promotioncd_name);				//プロモーションコード
	var cookie_usercd_get_value = getCookie(cookie_usercd_name);						//ユーザーコード

	//-----------------------------------------------//
	// 広告コード、ログステータスなど セット
	//-----------------------------------------------//
	var log_access_status;
	var cookie_advertisementcd_set_value;
	var cookie_promotioncd_set_value;
	var cookie_usercd_set_value;
	
	//バナー識別コードと自ページ識別コードが同じ バナー経由確定

	if (banner_identificationcd == own_identificationcd ) {
		//クッキー無し 初めてのアクセス
		if (cookie_usercd_get_value == "") {
			log_access_status = 1;													//アクセスステータス
			cookie_advertisementcd_set_value = banner_advertisementcd;				//広告コード
			cookie_promotioncd_set_value = banner_promotioncd;						//プロモーションコード
			cookie_usercd_set_value = makeUsercd();									//ユーザーコード
		}
	
		//クッキー有り 二回目以降のアクセス
		else {
			//バナーとクッキーのプロモーションコードと広告コードが同じ 
			if ( banner_promotioncd == cookie_promotioncd_get_value  && banner_advertisementcd == cookie_advertisementcd_get_value) {
				log_access_status = 2;
				cookie_advertisementcd_set_value = cookie_advertisementcd_get_value;//広告コード そのまま
				cookie_promotioncd_set_value = cookie_promotioncd_get_value;		//プロモーションコード
				cookie_usercd_set_value = cookie_usercd_get_value;					//ユーザーコード そのまま
			}
	
			//バナーとクッキーのプロモーションコードと広告コードが違う 
			else {
				log_access_status = 3;
				cookie_advertisementcd_set_value = banner_advertisementcd;			//広告コード バナーで上書き
				cookie_promotioncd_set_value = banner_promotioncd;					//プロモーションコード バナーで上書き
				cookie_usercd_set_value = cookie_usercd_get_value;					//ユーザーコード そのまま
			}
		}
	
	}
	
	//バナー識別コード無し 直接アクセス もしくは 二回目以降 もしくは 次ページ以降
	else if ( banner_identificationcd == "") {
	
		//クッキー無し 初めてのアクセス
		if (cookie_usercd_get_value == "") {
			log_access_status = 4;													//アクセスステータス
			cookie_advertisementcd_set_value = "0000000";							//広告コード：存在しない
			cookie_promotioncd_set_value = "000";									//プロモーションコード バナーで上書き
			cookie_usercd_set_value = makeUsercd();									//ユーザーコード
		}
	
		//クッキー有り 二回目以降のアクセス
		else {
			log_access_status = 5;
			cookie_advertisementcd_set_value = cookie_advertisementcd_get_value;	//広告コード：クッキー以外の広告コードは存在しない
			cookie_promotioncd_set_value = cookie_promotioncd_get_value;			//プロモーションコード
			cookie_usercd_set_value = cookie_usercd_get_value;						//ユーザーコード
		}
	}
	
	//バナー識別コードとロギングページ識別コードが違う：古い識別コードなど 基本的にはありえない
	else {
	
		//クッキー無し 初めてのアクセス
		if (cookie_usercd_get_value == "") {
			log_access_status = 6;													//アクセスステータス
			cookie_advertisementcd_set_value = banner_advertisementcd;				//広告コード
			cookie_promotioncd_set_value = banner_promotioncd;						//プロモーションコード
			cookie_usercd_set_value = makeUsercd();									//ユーザーコード
		}
	
		//クッキー有り 二回目以降のアクセス
		else {
			log_access_status = 7;
			cookie_advertisementcd_set_value = banner_advertisementcd;	//広告コード
			cookie_promotioncd_set_value = banner_promotioncd;			//プロモーションコード
			cookie_usercd_set_value = cookie_usercd_get_value;						//ユーザーコード
		}
	}
	
	//-----------------------------------------------//
	// クッキー書込
	//-----------------------------------------------//
	
	// クッキー利用可能チェック
	var cookie_alive_flg = chkCookieAlive();
	
	// クッキーが利用可能な場合のみ書込み。
	if (cookie_alive_flg == 0) {
		var cookie_timeout = 86400 * 1000 * 30 * 12 * 5;								//タイムアウト設定 5年間
	
	    setCookie(cookie_advertisementcd_name, cookie_advertisementcd_set_value, cookie_timeout);	//広告コード クッキー書込
	    setCookie(cookie_promotioncd_name, cookie_promotioncd_set_value, cookie_timeout);	//プロモーションコード クッキー書込
	    setCookie(cookie_usercd_name, cookie_usercd_set_value, cookie_timeout);			//ユーザーコード クッキー書込
	}

	//利用不可の場合は、ログ書込の値をクリアする
	else {
		log_access_status = 99;
		cookie_advertisementcd_set_value = "";
		cookie_promotioncd_set_value = "";
		cookie_usercd_set_value = "";
	}


	//-----------------------------------------------//
	// ログ書込プログラムへ遷移
	//-----------------------------------------------//
	document.write("<SC" + "RIPT language='JavaScript' type='text/javascript' " 
	+ "SRC=//" + promolian_logger_url
	+ "?banner_identificationcd=" + banner_identificationcd
	+ "&banner_promotioncd=" + banner_promotioncd
	+ "&banner_advertisementcd=" + banner_advertisementcd
	+ "&before_reffrer=" + escape(document.referrer)
	+ "&own_identificationcd=" + own_identificationcd
	+ "&own_checkcd=" + own_checkcd
	+ "&own_pagecd=" + own_pagecd
	+ "&cookie_promotioncd=" + cookie_promotioncd_set_value
	+ "&cookie_advertisementcd=" + cookie_advertisementcd_set_value
	+ "&cookie_usercd=" + cookie_usercd_set_value
	+ "&access_status=" + log_access_status
	+ "&user_screen_width=" + screen.width
	+ "&user_screen_height=" + screen.height
	+ "&user_screen_color=" + screen.colorDepth
	+ "&cookie_alive_flg=" + cookie_alive_flg
	+ "></SC" + "RIPT>");

///////////////////////////////////////////////////
// メイン END
///////////////////////////////////////////////////

