//----------------------------------------------------------------------------//
//- SBT website 『あなたが最近見たソリューション』表示スクリプト　2009.05.11 -//
//----------------------------------------------------------------------------//
//- 使用条件：本スクリプト（recommends.js）を使い、かつ、ブラウザのJavascriptが
//- 有効であること。また、ページ内に１箇所 id「user_reco」が指定されていること。
//- スクリプトライブラリ（jquery.js）が読み込まれていること。
//- Cookieが有効となっていること。
//- 基本処理：ページ表示時に初期設定を読み込み、ドキュメント情報とセッション情報
//- を確認します。初回のセッションのみユーザPC内のCookie情報を取得します。
//- それ以外はブラウザに保持されているCookie情報を取得します。（例外あり）
//- Cookieの書き込みについては、変更が必要な場合に限り、都度実行されます。
//- （ページ再読み込み等、情報に変更がない場合は実行しません）4096byteまで記録可
//- 日時の取得はローカルPCの日時設定を参照します。
//----------------------------------------------------------------------------//

$(function(){
var sHtmlTagID = 'user_reco';
if(document.getElementById(sHtmlTagID)){

	//- ■初期設定 -//
	var nViewList = 10;						// Max表示件数
	var nMemoryList = 15;						// Max保存件数
	var bQuery = 1;							// パラメータ（?）以降の重複チェック（0：しない、1：する）
	var bAnchor = 0;						// アンカー（#）以降の重複チェック（0：しないのみ）
	var sDefaultPage = 'index.html';				// 「/」で終わるURLの場合、デフォルトページを指定（今は１個まで）
	var sDoubleArray = new Array('/','index.html','detail.html');	// 指定ファイル名のみを保存対象にする。　※１つ目を「/」と指定すると、同一ディレクトリ全てをカウント対象とする。（その場合ファイル名の指定は無効）
	var bDoubleRename = 1; var sDoubleRename = sDefaultPage;	// 指定ファイル、同一ディレクトリを共通のファイル名に変換する（0：しない、1：する　※する場合はファイル名指定）
	var bDouble = 1;						// 重複フラグ（重複ページ判定処理を　0：しない、1：する、-1：該当外）

	//- ■サイト固有の情報 -//
	// 保存ページに該当する条件（カテゴリ）
	var nCategoryNum = -1;						// 該当カテゴリ番号（-1：該当しない、0～：該当番号）
									// ※例外処理：該当カテゴリ直下の sDefaultPage はカウントさせない
	var sCategoryArray = ['/e-business/','/web-marketing/','/integration/','/system-management/','/security/','/mobile/'];
	var nCategoryMax = sCategoryArray.length;			// 該当カテゴリ数
	var sCategoryName = '';						// 該当カテゴリ名（格納用）
	var sCateNameArray = ['eビジネスサービス','Webマーケティング','インテグレーション','システムマネジメント','セキュリティ','モバイル'];
	var sCateImgPath = sCateImgPath_A;
	var sCateImgArray = ['si_btn3_e-business.gif','si_btn3_web-marketing.gif','si_btn3_integration.gif','si_btn3_system-management.gif','si_btn3_security.gif','si_btn3_mobile.gif'];
	var nCateImgWidth = 147;
	var nCateImgHeight = 21;

	//- ■Cookie情報 -//
	var sCookSession = 'sbtSession';				// セッション確認名称
	var sCookSaveArray = 'sbtSaveArray';				// 保存データの名称
	var sCookDate = 'sbtDate';					// 最終保存日時の名称

	//- ■Cookie処理（変更不要） -//
	function getCookie(key,tmp1,tmp2,xx1,xx2,xx3){
		tmp1 = ' ' + document.cookie + ';';
		xx1 = xx2 = 0;
		len = tmp1.length;
		while(xx1 < len){
			xx2 = tmp1.indexOf(';',xx1);
			tmp2 = tmp1.substring(xx1 + 1,xx2);
			xx3 = tmp2.indexOf('=');
			if(tmp2.substring(0,xx3) == key){
				return(unescape(tmp2.substring(xx3 + 1,xx2 - xx1 - 1)));
			}
			xx1 = xx2 + 1;
		}
		return('');
	}
	function setCookie(key,val,tmp){
		tmp = key + '=' + escape(val) + '; expires=Tue, 31-Dec-2030 23:59:59 GMT;path=/;';
		document.cookie = tmp;
	}
	function setCookieSession(key,val,tmp){
		tmp = key + '=' + escape(val) + ';path=/;';
		document.cookie = tmp;
	}
	function clearCookie(key){
		document.cookie = key + '=' + 'xx; expires=Tue, 1-Jan-1980 00:00:00 GMT;path=/;';
	}

	//- ■Cookie削除 -//
	//clearCookie(sCookSession);
	//clearCookie(sCookSaveArray);
	//clearCookie(sCookDate);

	//- ■セッション処理（ブラウザを閉じるまで保持） -//
	var nSession = getCookie(sCookSession);				// セッション状況（''：セッション初期、1：セッション確立、other：セッション継続＆データ保持）
	var sSessionData = '';						// 読み込みデータの保持
	var sSaveDate = getCookie(sCookDate);				// 最終保存時の日時
	if(1 > nSession || '' == nSession){
		setCookieSession(sCookSession,1);
		sSessionData = getCookie(sCookSaveArray);
		//alert('●セッション初期 sSessionData=' + sSessionData);
	}else if(-1 < nSession.indexOf('：')){
		sSessionData = nSession;
		//alert('●セッション継続 sSessionData=' + sSessionData);
	}else{
		sSessionData = getCookie(sCookSaveArray);
		//alert('●セッション確立 sSessionData=' + sSessionData);
	}

/*
//不要テスト用データ
sSessionData = 'ビジネス：/e-business/jjj.html：2009/05/02,IDM統合アカウント管理システム<br />Secured AccoundOne：/web-marketing/kkk.html：2009/05/04,インテグレーション：/integration/lll.html：2009/05/06,システム：/system-management/mmm.html：2009/05/07,セキュリティ：/security/nnn.html：2009/05/10,モバイル：/mobile/ooo.html：2009/05/12,ビジネス２個目：/e-business/jjj2.html：2009/05/01';
*/
	var nMax = 0;

	//- ■表示処理 -//
	if('' == sSessionData || 1 == sSessionData){
		//alert('●表示する情報がありません');
	}else{
		//alert('●表示処理開始');
		var sViewCategoryHtmlArray = new Array();		// 表示用のHTMLソース（配列格納用）
		for(var c = 0;c < nCategoryMax;c++){
			sCategoryName = sCategoryArray[c];
			sViewCategoryHtmlArray[sCategoryName] = new Array();
		}
		var sViewArray = sSessionData.split(',',nViewList);
		nMax = sViewArray.length;
		var nCount = 0;
		//alert('●表示件数=' + nMax + '、とその内容=' + sViewArray);
		if(0 < nMax){for(var m = 0;m < nMax;m++){
			var sHref = sViewArray[m].split('：')[0];
			var sName = sViewArray[m].split('：')[1];
			for(var c = 0;c < nCategoryMax;c++){
				sCategoryName = sCategoryArray[c];
				if(-1 < sHref.indexOf(sCategoryName)){
					if(0 == sViewCategoryHtmlArray[sCategoryName].length){
						sViewCategoryHtmlArray[sCategoryName].push('<div class="si_btn3"><img src="' + sCateImgPath + sCateImgArray[c] + '" width="' + nCateImgWidth + '" height="' + nCateImgHeight + '" alt="' + sCateNameArray[c] + '" /></div>\n<ul class="list_si_02">\n');
					}
					sViewCategoryHtmlArray[sCategoryName].push('<li><a href="' + sHref + '"><span>' + sName + '</span></a></li>\n');
					nCount++;
				}
			}
		}}
		var sNewHtmlText = '';					// 表示用のHTMLソース
		if(0 < nCount){for(var c = 0;c < nCategoryMax;c++){
			sCategoryName = sCategoryArray[c];
			nMax = sViewCategoryHtmlArray[sCategoryName].length;
			if(0 < nMax){
				for(var m = 0;m < nMax;m++){
					sNewHtmlText += sViewCategoryHtmlArray[sCategoryName][m];
				}
				sNewHtmlText += '</ul>\n';
			}
		}}
		//alert('●表示するHTMLソース=\n' + sNewHtmlText);
		document.getElementById(sHtmlTagID).innerHTML = sNewHtmlText;
	}

	//- ■ドキュメント情報 -//
	var sPageTitle = document.title;				// HTMLドキュメントのページタイトル
	var sPageURL = document.URL;					// HTMLドキュメントのURL

	//- ■日時情報（ローカルPC） -//
	function setNowDateTime(){
		var sNewDate = new Date();
		var ye = sNewDate.getYear();		if(ye < 1900) ye += 1900;
		var mo = sNewDate.getMonth() + 1;	if(mo < 10) mo = '0' + mo;
		var da = sNewDate.getDate();		if(da < 10) da = '0' + da;
		var ho = sNewDate.getHours();		if(ho < 10) ho = '0' + ho;
		var mi = sNewDate.getMinutes();		if(mi < 10) mi = '0' + mi;
		var se = sNewDate.getSeconds();		if(se < 10) se = '0' + se;
		var sDateTime = ye + '/' + mo + '/' + da + ' ' + ho + ':' + mi + ':' + se;
		return sDateTime;
	}

	//- ■保存データ変換処理 -//
	function pageUrl(sText){
		var sNewText = '';
		var sSearchStr = '://';
		if(-1 < sText.indexOf(sSearchStr)){
			sNewText = sText.substring(sText.indexOf(sSearchStr) + (sSearchStr.length));
			//alert('●「://」変換後=' + sNewText);
		}
		sSearchStr = '/';
		if(-1 < sText.indexOf(sSearchStr)){
			sNewText = sNewText.substring(sNewText.indexOf(sSearchStr));
			//alert('●「/」ドメインカット後=' + sNewText);
		}
		if(0 == bQuery){					// 「?」以降の処理
			sSearchStr = '?';
			sNewText = sNewText.substring(0,sNewText.indexOf(sSearchStr));
		}
		if('/' == sNewText.charAt(sNewText.length - 1)){	// URLが「/」までの場合の処理
			sNewText += sDefaultPage;
			//alert('●「/」までの場合デフォルトページURL追加=' + sNewText);
		}
		return sNewText;
	}
	function canmaDell(sText){
		return sText.replace(',','');				// カンマ「,」のみ使用禁止（強制的に削除）
	}
	function pageTitle(sText){
		var sNewText = sText.replace('|','｜');			// タイトルの区切り文字（「|」「｜」）を１種類に限定
		var nLen = sNewText.indexOf('｜');
		sNewText = sNewText.substring(0,nLen);
		if('' == sNewText.substring(0,nLen) || ' ' == sNewText.substring(0,nLen)){
			sNewText = sText;				// ページタイトルがない場合は全体のページ名で代用
		}
		if('' == sNewText.substring(0,nLen) || ' ' == sNewText.substring(0,nLen)){
			sNewText = 'SBTソリューションページ';		// 全体のページ名もない場合は代用名を使用
		}
		return sNewText;
	}

	//- ■保存ページのカテゴリチェック -//				// ※例外処理：該当カテゴリ直下の sDefaultPage はカウントさせない
	sPageURL = pageUrl(sPageURL);
	var bSave = 0;							// 保存フラグ（該当ページ判定　0：しない、1：する）
	for(var c = 0;c < nCategoryMax;c++){
		sCategoryName = sCategoryArray[c];
		if(-1 < sPageURL.indexOf(sCategoryName) && -1 == sPageURL.indexOf(sCategoryName + sDefaultPage)){
			bSave = 1;
			break;
		}
	}
	//alert('●保存すべきカテゴリかどうか=' + bSave + '、URL=' + sPageURL);

	//- ■保存ページのチェック＆調整-//
	if(1 == bSave){
		bSave = 0;
		var sDoubleText = sPageURL;
		//alert('●保存ページチェック＆調整開始=' + sDoubleText);
		nMax = sDoubleArray.length;
		for(var m = 0;m < nMax;m++){
			if('/' == sDoubleArray[0]){			// 同一ディレクトリ処理 or 該当ファイル名処理
				sDoubleText = sDoubleText.substring(0,sDoubleText.lastIndexOf('/') + 1);
				bSave = 1;
				break;
			}else if(-1 < sDoubleText.indexOf(sDoubleArray[m])){
				bSave = 1;
				break;
			}
		}
		//alert('●該当ファイル名かどうか=' + bSave);
		if(1 == bDoubleRename && -1 == sDoubleText.indexOf(sDoubleRename)){
			//alert('●重複チェック：共通ファイル名に変換（前）=' + sDoubleText);
			sDoubleText = sDoubleText.substring(0,sDoubleText.lastIndexOf('/') + 1) + sDoubleRename;
			//alert('●重複チェック：共通ファイル名に変換（後）=' + sDoubleText);
		}
	}

	//- ■保存ページの重複チェック -//
	if('' == sSessionData || 1 == sSessionData){
		bDouble = 0;
	}
	if(1 == bSave && 1 == bDouble){
		//alert('●重複チェック開始');
		bSave = 0;

		var nDoubleCheck = sSessionData.indexOf(sDoubleText);
		//alert('●重複チェック：既存データと重複していない（-1）かどうか=' + nDoubleCheck + '\nまた、前回更新や再読み込み（0）は保存不要=' + nDoubleCheck);
		if(-1 == nDoubleCheck){
			bSave = 1;
		}else if(0 == nDoubleCheck){
			bSave = 0;
		}else if(0 < nDoubleCheck){
			bSave = 1;
			var sDoubleCheckArray = new Array();
			sDoubleCheckArray = sSessionData.split(',');
			nMax = sDoubleCheckArray.length;
			//alert('●重複チェック：既存データ並び替えの為、削除（前）=' + sDoubleCheckArray);
			for(var m = 0;m < nMax;m++){
				//alert('●重複チェック：既存データとの合致=' + sDoubleCheckArray[m].split('：')[0].indexOf(sDoubleText));
				if(-1 < sDoubleCheckArray[m].split('：')[0].indexOf(sDoubleText)){
					sDoubleCheckArray.splice(m,1);
					break;
				}
			}
			//alert('●重複チェック：既存データ並び替えの為、削除（後）=' + sDoubleCheckArray);
			sSessionData = sDoubleCheckArray.join(',');
		}
		sPageURL = sDoubleText;					// 保存ページURLは、重複チェックしている場合は内容差し替え
	}

	//- ■保存の実行 -//
	if(1 == bSave && -1 < bDouble){
		//alert('●保存処理開始');
		sSaveDate = setNowDateTime();
		var sSaveText = canmaDell(sPageURL + '：' + pageTitle(sPageTitle) + '：' + sSaveDate);
		if(1 != sSessionData && '' != sSessionData){
			//alert('●保存処理：過去データに追記');
			sSaveText += ',' + sSessionData;
			sSaveText = sSaveText.split(',',nMemoryList).join(',');
		}
		//alert('●保存処理：内容=' + sSaveText);
		if(-1 < sSaveText.indexOf('：')){
			setCookieSession(sCookSession,sSaveText);
			setCookie(sCookSaveArray,sSaveText);
			setCookie(sCookDate,sSaveDate);
		}
	}

}else{
	//alert('●idの指定がありません');
}
});
