//-----------------------------------------------------------------------------
// Breadcrumbs.js
// 2007.10.16 - written by rk7138 for AT&T Communications
// 2007.10.17 - updated to handle external PIDs
//-----------------------------------------------------------------------------
// ASSUMES
// -- writeHTML.js is loaded
// -- LeftNavigation.js is loaded [ uses LeftNavigation.getRenderList() ]
// -- PID.js is loaded
//
// METHODS
//
// USAGE
// -- Breadcrumbs.init() is invoked on window.load
//
// INFORMATION
//   1. Acquires PID from querystring where ?pid=XXXXX
//   2. Sets path = PID[pid]
//   3. Splits path using '/' as delimiter, dropping initial '/' and '.html' if they exist
//   4. For each token starting with the first, constructs breadcrumb trail with
//      each token linking to a specific URL
//   5. Delimits tokens in the trail with delimiter '&gt;'
//   6. Last token will not be linked

var Breadcrumbs = {
	DELIMITER: ' &gt; ',

	getHomeEntry: function (bAtRoot){		
		var homeObj = PID.infoArray[0]['detail'];
		var homePid = 10229;
		var homeToken = homeObj['token'];
		var homeTarget = 'webhosting?pid=' + homePid;
		var homeToolTip = homeObj['tooltip'];
		var homeStr = '';
		
		if (bAtRoot){
			homeStr += "<a href='" + homeTarget + "' title='" + homeToolTip + "'>" + homeToken + "</a>"; 
			homeStr += Breadcrumbs.DELIMITER; 		
		}
		else {
			homeStr += homeToken;
		}
		
		return homeStr;
	},
		
	getExternalEntry: function (valueObj){
		var givenNodeId = valueObj.id;
		var externalPID = valueObj.externalPID;

	
		if (externalPID == -1){
			var detailsObj = PID.getInfo(givenNodeId, false);
			return Breadcrumbs.getBasicEntry (detailsObj, givenNodeId, givenNodeId);
		}
		
		var token = PID.REDIRECTS[externalPID]['token'];
		return token;	
	},
	
	getBasicEntry: function (detailsObj, givenNodeId, nodeId){
		var entryTarget = PID.getDestinationUrl(detailsObj);
		var entryToken = detailsObj['token'];
		var entryTooltip = detailsObj['tooltip'];		
		var entryLevel = detailsObj['level'];
		var entryDuplicate = detailsObj['duplicate'];
		var htmlStr = '';		

		if (!entryToken){ entryToken = detailsObj['label']; }		
		if (entryDuplicate){ entryTarget += '&last=' + nodeId; }
		
		if (givenNodeId != nodeId){
			htmlStr += '<a href="' + entryTarget + '" title="' + entryTooltip + '">' + entryToken + '</a>';
			htmlStr += Breadcrumbs.DELIMITER; 
		}
		else {
			htmlStr += entryToken;
		}
		
		htmlStr += '\n';
	
		return htmlStr;
	},
		
	getEntryHtml: function (valueObj){
		var givenNodeList = valueObj.list;
		var givenNodeId = valueObj.id;
		var finalObj = PID.getInfo(givenNodeId, false);
		
		var htmlStr = '';
		while(givenNodeList.length){
			var nodeId = givenNodeList.pop();
			var detailsObj = PID.getInfo(nodeId, false);
			
			htmlStr += Breadcrumbs.getBasicEntry (detailsObj, givenNodeId, nodeId);
		}

		htmlStr += Breadcrumbs.getExternalEntry (valueObj);
		
		return htmlStr;
	},
			
	getRenderList: function (){	
		var valueObj = LeftNavigation.getCurrent();
		var infoObj = valueObj.infoObj;
		var externalPID = valueObj.externalPID;
		var nodeId = infoObj['nodeId'];	
		var renderList = PID.getAllParentIds(nodeId, false);
		
		return {list: renderList, id: nodeId, externalPID: externalPID};
	}, 
	
	drawNavigation: function (){				
		var htmlStr = '';
		var replaceObj = $('breadcrumb');
		var valueObj = Breadcrumbs.getRenderList();
		var externalPID = valueObj.externalPID;		

		htmlStr += Breadcrumbs.getHomeEntry(true);
		htmlStr += Breadcrumbs.getEntryHtml(valueObj);
		
		if (replaceObj){
			setInnerHTML(replaceObj, htmlStr); 
		}
	},
			
	init: function(){
		PID.init();
		Breadcrumbs.drawNavigation();
	}
}

addEvent(window, 'load', Breadcrumbs.init);