/**
 * Locate the "breadcrumbs" div, load the cookies, populate the breadcrumbs div for site navigation.
 * rand.
 */
var Breadcrumbs = {
	// constants
	breadcrumbsDivId:'breadcrumbs',
	cookieName:'breadcrumbs',
	maxCrumbLength:60,
	maxCrumbs:20,
	cookieString:null,
	cookieArray:null,
	cookieSeparator:'*',
	titleNameSeparator:',',
	currentPageShortTitle:null,
	breadcrumbsDiv:null,
	// functions
	loadPageInfo:function() {
//		Log.message( Log.debug, 'loadPageInfo' );
		Breadcrumbs.cookieString = Cookies.getCookie( Breadcrumbs.cookieName );
		if( Breadcrumbs.cookieString ) {
			Breadcrumbs.cookieArray = Breadcrumbs.cookieString.split( Breadcrumbs.cookieSeparator );
		}
		Breadcrumbs.currentPageShortTitle = document.title.substring( 0, Breadcrumbs.maxCrumbLength );
	},
	concatBreadcrumbs:function() {
//		Log.message( Log.debug, 'concatBreadcrumbs' );
		if( Breadcrumbs.cookieArray ) {
			var firstItem = Breadcrumbs.cookieArray.length>Breadcrumbs.maxCrumbs?Breadcrumbs.cookieArray.length-Breadcrumbs.maxCrumbs:0;
			Breadcrumbs.cookieString = '';
			for( var crumb=firstItem; crumb<Breadcrumbs.cookieArray.length; ++crumb ) {
				if( 1 < Breadcrumbs.cookieString.length ) Breadcrumbs.cookieString += Breadcrumbs.cookieSeparator;
				Breadcrumbs.cookieString += Breadcrumbs.cookieArray[ crumb ];
			}
		}
	},
	savePageInfo:function() {
//		Log.message( Log.debug, 'savePageInfo' );
		Breadcrumbs.concatBreadcrumbs();
		if( 1 < Breadcrumbs.cookieString.length ) {
			Cookies.setCookie( Breadcrumbs.cookieName, Breadcrumbs.cookieString, 1 );
		} else {
			Cookies.clearCookie( Breadcrumbs.cookieName );
		}
	},
	removeForJump:function( crumbNumber ) {
//		Log.message( Log.debug, 'removeForJump' );
		Breadcrumbs.cookieArray.length = crumbNumber;
		Breadcrumbs.savePageInfo();
		return 1;
	},
	appendCrumbLink:function( crumb ) {
//		Log.message( Log.debug, 'appendCrumbLink' );
		var cookieCrumb = Breadcrumbs.cookieArray[ crumb ].split( Breadcrumbs.titleNameSeparator );
		var breadSpan = document.createElement( 'span' );
		if( 0 != crumb ) {
			var breadSpread = document.createTextNode( '>' );
			breadSpan.appendChild( breadSpread );
		}
		var breadA = document.createElement( 'a' );
		breadA.setAttribute( 'href', cookieCrumb[1] );
		breadA.setAttribute( 'onclick', 'return Breadcrumbs.removeForJump( ' + crumb + ');' );
		var breadAText = document.createTextNode( cookieCrumb[0] );
		breadA.appendChild( breadAText );
		breadSpan.appendChild( breadA );
		Breadcrumbs.breadcrumbsDiv.appendChild( breadSpan );
	},
	isNewPage:function() {
//		Log.message( Log.debug, 'isNewPage' );
		var response = true;
		if( Breadcrumbs.cookieArray ) {
			if( 0 < Breadcrumbs.cookieArray.length ) {
				var lastCrumb = Breadcrumbs.cookieArray.length -1;
				var lastCrumbArray = Breadcrumbs.cookieArray[ lastCrumb ].split( Breadcrumbs.titleNameSeparator );
				if( lastCrumbArray && lastCrumbArray[ 0 ] == Breadcrumbs.currentPageShortTitle ) {
					response = false;
				}
			}
		}
		return response;
	},
	addCurrentPage:function() {
//		Log.message( Log.debug, 'addCurrentPage' );
		if( Breadcrumbs.isNewPage()) {
			if( !Breadcrumbs.cookieArray ) Breadcrumbs.cookieArray = new Array();
			var newEntry = '' + Breadcrumbs.currentPageShortTitle + Breadcrumbs.titleNameSeparator + window.location.pathname;
			Breadcrumbs.cookieArray[ Breadcrumbs.cookieArray.length ] = newEntry;
		}
	},
	constructBreadcrumbs:function() {
//		Log.message( Log.debug, 'constructBreadcrumbs' );
		if( Breadcrumbs.cookieArray ) {
			var crumbs = Breadcrumbs.cookieArray.length-1;
			for( var crumb=0; crumb<crumbs; ++crumb ) {
				Breadcrumbs.appendCrumbLink( crumb );
			}
		}
	},
	loadCrumbs:function() {
//		Log.message( Log.debug, 'loadCrumbs' );
		Breadcrumbs.breadcrumbsDiv = document.getElementById( Breadcrumbs.breadcrumbsDivId );
		if( Breadcrumbs.breadcrumbsDiv ) {
//			Log.message( Log.debug, 'loadCrumbs working with div[' + Breadcrumbs.breadcrumbsDiv + ']' );
			Breadcrumbs.loadPageInfo();
			Breadcrumbs.addCurrentPage();
			Breadcrumbs.constructBreadcrumbs();
			Breadcrumbs.savePageInfo();
		}
	}
};

Events.addListener( window, 'load', Breadcrumbs.loadCrumbs );

