﻿/**
* 定義値
* siteObject:データ管理オブジェクト
* myPageName:ページ名、gaugingStartメソッドの引数で渡して任意のページ名に設定する必要がある
* cookieManager:クッキー操作オブジェクト
*/
var startTime;
var myPageName;
var cookieManager = new CookieManager();

/**
* 各ページのオンロードとアンオンロードにて以下の処理を呼び出す必要あり
* オンロード、アンオンロードにて別途何か処理をしているページでは、それに
* 合わせて呼び出し方を変える必要も出てくるかも
*/
/*
window.onload = function() {
	gaugingStart( "未定義ページ" );
}
*/
window.onbeforeunload = function() {
	gaugingStop();
}

window.onblur = function() {
	gaugingStop();
	resetStartTime();
}

function toRequest( url ) {
	gaugingStop();
	resetStartTime();
}

function gaugingStart( pageName ) {
	startTime = getSecondTime();
	gaugingPageStart( pageName );
}

function gaugingPageStart( pageName ) {
	myPageName = pageName;
}

function gaugingStop() {
	if( undefined == myPageName || "" == myPageName ) {
		return;
	}
	var siteObject = getSiteObject();
	setSiteStart( siteObject );
	setContentsEnd( siteObject );
	if( null != siteObject ) {
		cookieManager.setCookie( "siteObject", escape( Object.toJSON( siteObject ) ) );
	}
}

/**
********************************************************************************************************/
/**
* 時間計測などに必要なメソッド
*/

function setSiteStart( obj ) {
	var sec = getSecondTime();
	setSiteStartTime( obj, startTime );
}

function resetStartTime() {
	startTime = getSecondTime();
}

function setContentsEnd( obj ) {
	var sec = getSecondTime();

	if( "undefined" == typeof( obj.contents ) ) {
		obj.contents = {};
		obj.number = 0;
	}
	if( "undefined" == typeof( obj.contents[ myPageName ] ) ) {
		obj.contents[ myPageName ] = {};
		obj.number++;
	}

	if( "undefined" != typeof( obj.contents ) && "undefined" != typeof( obj.contents[ myPageName ] ) ) {
		var totalTime = "undefined" == typeof( obj.contents[ myPageName ][ "totalTime" ] ) ? 0 : obj.contents[ myPageName ][ "totalTime" ];
		obj.contents[ myPageName ][ "totalTime" ] = totalTime + ( sec - startTime );
		obj.contents[ myPageName ][ "number" ] = "undefined" == typeof( obj.contents[ myPageName ][ "number" ] ) ? obj.number : obj.contents[ myPageName ][ "number" ];
	}
}

/**
********************************************************************************************************/
/**
* 汎用ライブラリ的な、、メソッド
*/

function getSiteObject() {
	var siteObject = cookieManager.getCookie( "siteObject" );
	siteObject = null == siteObject ? {} : eval( "(" + unescape( siteObject ) + ")" );
	return siteObject;
}

function getBData() {
	var b_data;
	b_data = cookieManager.getCookie( "bData" );
	b_data = null == b_data ? null : eval( "(" + unescape( b_data ) + ")" );
	return b_data;
}

function setSiteStartTime( obj, sec ) {
	var startTime = obj[ "startTime" ];
	obj[ "startTime" ] = "undefined" != typeof( startTime ) ? startTime : sec;
}

function getSecondTime() {
	var now = new Date();
	var sec = parseInt( now.getTime() / 1000 );
	return sec;
}

/*
***************************************************************************************************************/
