/*  This script based on [Cookie Crumbs]
	Author : Tom Coote
	Wedsite : http://www.tomcoote.co.uk
*/

function historyList() {
    iNumberOfCrumbs = 6;//保存件数(表示件数+1※現在の表示ページを含むため)
//    maxNumberOfCrumbs = 10;//Cookieへの保存件数
	var that = {}; 

	/* Private Variables */
	var shistoryListSeparator = '|||',	// The value used to separate each 'link & title' pair in the cookie
		sLinkTitleSeparator = '|||',		// The value used to separate link from title for each pair
		sLinkIdSeparator = ':::';
		/* NOTE: don't use the above values in your page titles */


    /* Private Functions */

	function getCookie(name) {
		var start = document.cookie.indexOf(name + "=");
		var len = start + name.length + 1;

		if ((!start) && (name != document.cookie.substring(0, name.length))) {
			return null;
		}

		if (start == -1) {
			return null;
		}

		var end = document.cookie.indexOf( ";", len );

		if (end == -1) {
			end = document.cookie.length;
		}

		return unescape(document.cookie.substring(len, end));
	}

	function setCookie(name, value, expires, path, domain, secure) {
		var today = new Date();
		today.setTime(today.getTime());

		if (expires) {
			expires = expires * 1000 * 60 * 60 * 24 *180;//cookieの保存期間
		}

		var expires_date = new Date(today.getTime() + (expires));
		
		document.cookie = name+"="+escape(value) +
			((expires) ? ";expires="+expires_date.toGMTString() : "") + 
			((path) ? ";path=" + path : "") +
			((domain) ? ";domain=" + domain : "") +
			((secure) ? ";secure" : "");

		return getCookie(name);
	}

	function deleteCookie(name, path, domain) {
		if (getCookie(name)) {
			document.cookie = name + "=" +
			((path) ? ";path=" + path : "") +
			((domain) ? ";domain=" + domain : "") +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
		}
	}

	function setLocation(iPos) {
		var sLocation = formatLastPage(document.location.toString());

		if (sLocation.indexOf('?') !== -1) {
			return sLocation + '&ccp=' + iPos;
		}
		else {
			return sLocation + '?ccp=' + iPos;
		}
	}

	function sliceCookie(Cookie) {
		var sLocation = document.location.toString(),
			iPos = -1, sCookies = '', sCrumbTrail = '', i = 0;

		if (sLocation.indexOf('?ccp=') !== -1) {
			sLocation = sLocation.slice(sLocation.indexOf('?ccp=')+5, sLocation.length); // will always be at the end so can use length
			iPos = parseInt(sLocation,10);
		}

		if (sLocation.indexOf('&ccp=') !== -1) {
			sLocation = sLocation.slice(sLocation.indexOf('&ccp=')+5, sLocation.length);
			iPos = parseInt(sLocation,10);
		}
		
		if (iPos === -1) {
			return Cookie;
		}
		else {
			sCookies = Cookie.split(shistoryListSeparator);

			if (iNumberOfCrumbs-1 === iPos) {
				return Cookie;
			}
			if(iPos < iNumberOfCrumbs){
				for (i=0; i < iPos; i++) {
					sCrumbTrail += shistoryListSeparator + sCookies[i]; 
				}
			}
			else{
				sCrumbTrail ='';
				for (i=0; i < iNumberOfCrumbs; i++) {
					sCrumbTrail += shistoryListSeparator + sCookies[i+1]; 
				}
			}
		}

		sCrumbTrail = (sCrumbTrail === '') ? '||' : sCrumbTrail;
		return setCookie('historyList', sCrumbTrail.replace(shistoryListSeparator,''), 1);
	}

	function formatLastPage(sLastPage) {

		if (sLastPage.indexOf('?ccp=') !== -1) {
			sLastPage = sLastPage.replace(sLastPage.slice(sLastPage.indexOf('?ccp='), sLastPage.length),'');
		}

		if (sLastPage.indexOf('&ccp=') !== -1) {
			sLastPage = sLastPage.replace(sLastPage.slice(sLastPage.indexOf('&ccp='), sLastPage.length),'');
		}

		return sLastPage;
	}

	function canUpdateExistingCookie(sLastPage) {
		if (document.referrer.toString() === document.location.toString()) {
			return false;
		}

		if (document.referrer.toString() === '') {
			return false;
		}

		if (formatLastPage(sLastPage) === document.location.toString()) {
			return false;
		}

		if (formatLastPage(sLastPage) === formatLastPage(document.location.toString())) {
			return false;
		}

		return true;
	}


	/* Public Functions */

	that.GetCrumbs = function() {
		try
		{
			var Cookie = getCookie('historyList'),
				duplicateFlag = 0;
				sCrumbTrail = '',
				sPageTitle = document.getElementsByTagName('h2')[0].innerHTML.replace('<br>','').replace('<BR>','').replace('<br />','') || '',
				sPageId = document.getElementById('programId').innerHTML || '',sCookies = '', sTitle = '', sLink = '', i = 0;
				if(sPageTitle.match("<IMG") ){ sPageTitle = sPageTitle.slice(0,sPageTitle.indexOf("<IMG",0));}
				if(sPageTitle.match("<img")){ sPageTitle = sPageTitle.slice(0,sPageTitle.indexOf("<img",0));}
					if (sPageTitle.length > 70) {
						sPageTitle = sPageTitle.slice(0,70) + '...';
					}
		/*
			if (document.referrer.toString() === '') {
				Cookie = setCookie('historyList', sLinkTitleSeparator + sPageTitle + sLinkIdSeparator + sPageId, 1);
			} 
		else*/ if (Cookie !== null) {
				Cookie = sliceCookie(Cookie);
				sCookies = Cookie.split(sLinkTitleSeparator);
				sameFlag = 0;
				for (i=1 ;i < sCookies.length; i++){
					cId = sCookies[i].split(sLinkIdSeparator)[1];
					if(sPageId === cId) {
						sameFlag = 1;
						here = i;
					}
				}
				if (sameFlag === 1){
					Cookie = '';
					for (i = 1 ;i < sCookies.length-1 ; i++){
						if (i < here) {
							sTitle = sCookies[i].split(sLinkIdSeparator)[0];
							sId = sCookies[i].split(sLinkIdSeparator)[1];
							Cookie += sLinkTitleSeparator + sTitle + sLinkIdSeparator +sId;
						}
						else if (i >= here){
//							sTitle = sCookies[i+1].split(sLinkIdSeparator)[0];
							Cookie +=  sLinkTitleSeparator + sCookies[i+1]
						}
					}
					if(here !== iNumberOfCrumbs ){
						Cookie = setCookie('historyList', Cookie +  sLinkTitleSeparator + sPageTitle + sLinkIdSeparator + sPageId, 1);
					}
					else {
						Cookie = setCookie('historyList', Cookie , 1);
						duplicateFlag = 1;
					}
				}
				else if (sCookies.length > iNumberOfCrumbs){
					Cookie = '';
					for (i=1;i < iNumberOfCrumbs ; i++){
						Cookie += sLinkTitleSeparator + sCookies[i+1];
					}
					Cookie = setCookie('historyList', Cookie + sLinkTitleSeparator + sPageTitle + sLinkIdSeparator + sPageId, 1);
				}
				else {
					Cookie = setCookie('historyList', Cookie + sLinkTitleSeparator + sPageTitle + sLinkIdSeparator + sPageId, 1);
				}
			}
			else {
				Cookie = setCookie('historyList',  sLinkTitleSeparator + sPageTitle + sLinkIdSeparator + sPageId, 1);
			}

			if (Cookie === null) { return ''; } // for browsers that have cookies blocked

			sCookies = Cookie.split(sLinkTitleSeparator);
			if (iNumberOfCrumbs === -1) {
				iNumberOfCrumbs = sCookies.length;
			}
			else {
				iNumberOfCrumbs = (sCookies.length < iNumberOfCrumbs) ? sCookies.length : iNumberOfCrumbs;
			}
			disp = (sCookies.length-1-iNumberOfCrumbs < 1) ? 0 : sCookies.length-1-iNumberOfCrumbs;
			for (i = disp ; i < sCookies.length-1 + duplicateFlag ; i++) {
				if (sCookies[i] !== '') {
					var sLinkTitle = sCookies[i].split(sLinkIdSeparator);
					sCrumbTrail = '<li class="history"><img src="/tabiimg/icon_detail_arrow.gif" width="14" height="12" alt="" />&nbsp;<a href=\'' + unescape(sLinkTitle[1].replace(/ID:/,'')) + '.html\' >' + unescape(sLinkTitle[0].replace(/\+/g,'%20')) + '</a></li>' + sCrumbTrail;
				}
			}

			return sCrumbTrail.replace('&#62; ','');
		}
		catch(err) {
			//return err;  // For debugging
			return '';
		}
	};

	that.DeleteCookieTrail = function() {
		deleteCookie('historyList');
	};

    return that;
}