/*
BreadCrumbs.js
*/
// BreadCrumb configuration
// set up the site prefix
var sitePrefix = "/css/";
// Please note that we don't use the whole prefix, just the important
// part that we need for the server so as to make this script easy for
// us to migrate between testing and live server. You can use whatever you
// like here.
// set up the bread crumb separator text
var breadCrumbSeparator = " > ";
// set up our list of crumb items
// The bread crumb items refer to items on your site that require special
// labels. You can specify a label specifically using the URI of the
// file/folder or generically for all occurences of a file/folder.
var breadCrumbLabels = new Array();
// generic labels
//breadCrumbLabels[""] = "";
// specific labels

breadCrumbLabels["/css/"] = "Home";
//breadCrumbLabels["/"] = "My Website";
//breadCrumbLabels["images/"] = "Images Folder";
function displayBreadCrumbs(attempts)
{
// locate the breadcrumb container
var theBreadCrumbBar = null;
if (document.all)
{
theBreadCrumbBar = document.all.BreadCrumbBar;
}
else
{
theBreadCrumbBar = document.getElementById("BreadCrumbBar");
}
// check to make sure that we have our breadcrumb bar
if (theBreadCrumbBar != null)
{
// get the current url
// we'll want to ensure that we get the start of our site so, we'll
// ignore everything up to and including our site prefix
var thePath = location.href;
var theProtocol = "";
var theSite = "";
// strip out the protocol from the path
theProtocol = thePath.substring(0, thePath.indexOf("://") + 3);
thePath = thePath.substring(thePath.indexOf("://") + 3);
// strip out the site name
theSite = thePath.substring(0, thePath.indexOf(sitePrefix));
thePath = thePath.substring(thePath.indexOf(sitePrefix));
// strip out the site prefix
thePath = thePath.substring(thePath.indexOf(sitePrefix) + sitePrefix.length);
// remove hash links
var theHash = "";
if (thePath.indexOf("#") > -1)
{
theHash = thePath.substring(thePath.indexOf("#"));
thePath = thePath.substring(0, thePath.indexOf("#"));
}
if (thePath != "Default.asp") {
// break out the individual pieces of the location
var crumbs = thePath.split("/");
var currentPath = sitePrefix;
var crumbCount = 0;
// add a "home" link
// create a bread crumb container
var breadCrumb = document.createElement("span");
breadCrumb.setAttribute("class", "breadCrumb");
// determine the crumb label
// first use the default
var crumbLabel = "Home";
// second look for a generic label
if ((breadCrumbLabels[sitePrefix] != null))
{
crumbLabel = breadCrumbLabels[sitePrefix];
}
// third look for a specific label
if ((breadCrumbLabels[currentPath] != null))
{
crumbLabel = breadCrumbLabels[currentPath];
}
// add the text
// check to see if there are any crumbs after this one
if ((0 < crumbs.length) &&
(crumbs[0] != "Default.asp") &&
(crumbs[0] != ""))
{
// create a new link
var linkTag = document.createElement("a");
linkTag.href = theProtocol + theSite + currentPath;
linkTag.appendChild(document.createTextNode(crumbLabel));
breadCrumb.appendChild(linkTag);
}
else
{
// add the text together
breadCrumb.appendChild(document.createTextNode(crumbLabel));
}
theBreadCrumbBar.appendChild(breadCrumb);
// increment our count of crumbs
crumbCount++;
// loop through the crumbs
for (var crumbIndex = 0; crumbIndex < crumbs.length; crumbIndex++)
{
// setup the current path
currentPath += crumbs[crumbIndex];
if (crumbIndex + 1 < crumbs.length)
{
currentPath += "/";
}
if ((crumbs[crumbIndex] != "") &&
(crumbs[crumbIndex].indexOf("Default.asp") == -1))
{
// add this crumb to the list
// create a bread crumb container
var breadCrumb = document.createElement("span");
breadCrumb.setAttribute("class", "breadCrumb");
// add a greater than to the left hand side
if (crumbCount > 0)
{
breadCrumb.appendChild(document.createTextNode(breadCrumbSeparator));
}
// determine the crumb label
// first use the crumb itself
//a, an, and, as, at, but, by, for, from, in, into, of, off, on, or, out, over, the, to, up, with
var crumbLabel = unescape(crumbs[crumbIndex].replace(/_/g, " ").replace(".asp", "")).capitalize();
// second look for a generic label
if ((breadCrumbLabels[crumbs[crumbIndex]] != null))
{
crumbLabel = breadCrumbLabels[crumbs[crumbIndex]];
}
// third look for a specific label
if ((breadCrumbLabels[currentPath] != null))
{
crumbLabel = breadCrumbLabels[currentPath];
}
// add the text
// check to see if there are any crumbs after this one
if ((crumbIndex + 1 < crumbs.length) &&
(crumbs[crumbIndex + 1] != "Default.asp") &&
(crumbs[crumbIndex + 1] != ""))
{
// create a new link
var linkTag = document.createElement("a");
linkTag.href = theProtocol + theSite + currentPath;
linkTag.appendChild(document.createTextNode(unescape(crumbLabel)));
breadCrumb.appendChild(linkTag);
}
/*
else
{
// add the text together
breadCrumb.appendChild(document.createTextNode(crumbLabel));
}
*/
theBreadCrumbBar.appendChild(breadCrumb);
// increment our count of crumbs
crumbCount++;
}
}
}
}
else if (attempts < 5)
{
// try again in a few seconds
attempts++;
setTimeout("displayBreadCrumbs(" + attempts + ");", 1000);
}
}
// add a handy function to the string class
//"a", "an", "and", "as", "at", "but", "by", "for", "from", "in", "into", "of", "off", "on", "or", "out", "over", "the", 		  "to", "up", "with"
var excludedWords = ['^a$','^an$','^and$','^as$','^at$','^but$','^by$','^for$','^from$','^in$','^into$','^of$','^off$','^on$','^or$','^out$','^over$','^the$','^to$','^up$','^with$'];
var excludedWords = new RegExp(excludedWords.join('|'),'i');
String.prototype.capitalize = function()
{
var strIndex = 0;
return this.replace(/\w+/g, function(a)
{
	strIndex = strIndex + 1;
	var inputString = a; 
	var tmpStr, tmpChar, preString, postString, strlen;
	tmpStr = a;
	//alert(strIndex);
	//alert(a.match(excludedWords));
	//alert((a.match(excludedWords)[0]).length);
	if ( (strIndex == 1) || ((strIndex > 1) && (a.match(excludedWords) == null)) ) {
		tmpStr = a.toLowerCase();	
		stringLen = tmpStr.length;
		if (stringLen > 0)
		{
		  for (i = 0; i < stringLen; i++)
		  {
			if (i == 0)
			{
			  tmpChar = tmpStr.substring(0,1).toUpperCase();
			  postString = tmpStr.substring(1,stringLen);
			  tmpStr = tmpChar + postString;
			}
			else
			{
			  tmpChar = tmpStr.substring(i,i+1);
			  if (tmpChar == " " && i < (stringLen-1))
			  {
			  tmpChar = tmpStr.substring(i+1,i+2).toUpperCase();
			  preString = tmpStr.substring(0,i+1);
			  postString = tmpStr.substring(i+2,stringLen);
			  tmpStr = preString + tmpChar + postString;
			  }
			}
		  }
		}
	}
	return tmpStr;
});
};
// set us up to display bread crumbs
displayBreadCrumbs(1);


