//tmpl上での画面遷移を引き起こさないユーザー操作をサーバ上のログするcommandLoggerを作成する。
//@param	pageGeneratedLogid_	tmplを生成した処理のlogidを指定する。
//@return	commandLoggerを返す。
//	//指定のcommandCodeをログに記録する。
//	commandLogger.write( commandCode )
function	makeCommandLogger( pageGeneratedLogid_ )
{
	var	cmdlog_cookieKey = 'cmdlog';
	var	pageGenLogid_cookieKey = 'pageGeneratedLogid';
	var	startTime = (new Date()).getTime();

	var	pageGeneratedLogid = pageGeneratedLogid_;
	if( typeof(pageGeneratedLogid)!='string' || pageGeneratedLogid.length==0 ) {
		//指定されていない場合はクッキーからの取得を試みる
		pageGeneratedLogid = $.cookie(pageGenLogid_cookieKey);
	}

	//指定のuserActionCodeをログに記録する。
	function	write( commandCode )
	{
		//処理負荷を下げるためにログはクッキーに記録し、次回サーバにアクセスしたときにサーバ側で回収する。

		var	logJsonStr = $.cookie(cmdlog_cookieKey);
		var	log_a = [];
		if( logJsonStr ) {
			try{
				log_a = JSON.parse(logJsonStr);
			}
			catch(e){
				log_a = [];
			}
		}

		var	cmd = {	c:commandCode,	t:(((new Date()).getTime())-startTime)	};
		if( 0<log_a.length && log_a[ log_a.length-1 ].from_logid == pageGeneratedLogid ) {
			var	l = log_a.pop();
			l.ary.push( cmd	);
			log_a.push( l );
		}else{
			log_a.push(
				{
					from_logid:pageGeneratedLogid,
					ary:[ cmd ]
				}
			);
		}
		$.cookie(cmdlog_cookieKey, JSON.stringify(log_a), {expires:10*365, path:'/'} );
	}

	return	{
		//指定のcommandCodeをログに記録する。
		write:	function( commandCode ){
			write( commandCode );
		}
	};
}


