var delim = '|';
var trailLength = 5;
var textLimit = 50;

var HERE = document.location;
var TITLE = document.title;

function doCrumbs()
{
	if(testCookies())
	{
		crumbList = new CrumbList();
		crumbList.generate();
	}
}

function truncText(strText)
{
	if (strText.length > textLimit)
	{
		//return strText.slice(0, textLimit).slice(0, strText.lastIndexOf(" ")) + "...";
		var strSlice = strText.slice(0, textLimit)
		
		while (strSlice.charAt(strSlice.length - 1) != " ")
		{
			strSlice = strSlice.slice(0, strSlice.length - 1);
		}
		
		return strSlice = strSlice.slice(0, strSlice.length - 1) + "...";
	}
	else
	{
		return strText;
	}
}


function CrumbList()
{
	this.links = new Array();
	this.texts = new Array();
	
	this.rawLinks = new String;
	this.rawTexts = new String;
	
	this.generate = function()
	{
		if(readCookie('TrailLinks')) //If the cookie exists
		{
			this.rawLinks = unescape(readCookie('TrailLinks'));
			this.rawTexts = decodeString(readCookie('TrailText'));
			
			this.links = this.rawLinks.split(delim);
			this.texts = this.rawTexts.split(delim);
		}
		
		this.add();
		this.dropCrumbs();
	}
	
	this.add = function ()
	{
		if (this.links[this.links.length-1] != HERE)
		{
			if (this.check() < 0)
			{
				this.links.push(HERE);
				this.texts.push(truncText(TITLE));
			}
			else
			{
				this.links.splice(this.check()+1, this.links.length-this.check());
				this.texts.splice(this.check()+1, this.texts.length-this.check());
			}
		}
	}
	
	this.check = function ()
	{
		var iCounter = 0;
		
		while (iCounter < this.links.length)
		{
			if (this.links[iCounter] == HERE)
			{
				return iCounter;
			}
			
			iCounter++
		}
		
		return -1;
	}
	
	this.dropCrumbs = function ()
	{
		var crumbString = "<a href='/transactionservices/home/'>Home</a>";
		
		if (this.links.length > trailLength)
		{
			this.links.shift();
			this.texts.shift();
		}
		
		for(var iLink in this.links)
		{
			if (iLink <= trailLength)
			{
				if(iLink == this.links.length-1)
				{
					crumbString = crumbString + "&nbsp;&gt;&nbsp;" + this.texts[iLink];
				}
				else
				{
					crumbString = crumbString + "&nbsp;&gt;&nbsp;<a href='" + this.links[iLink] + "'>" + this.texts[iLink] + "</a>";
				}
			}
		}
		
		$("breadCrumb").innerHTML = crumbString;
		
		eraseCookie('TrailLinks');
		eraseCookie('TrailText');
		
		createCookie('TrailLinks',escape(this.links.join(delim)),1);
		createCookie('TrailText',encodeString(this.texts.join(delim)),1);
		
		this.links = [];
		this.texts = [];
		this.rawLinks = "";
		this.rawTexts = "";
	}
}

function encodeString(textString)
{
	var encodedText = textString.replace(/'/g,"[q]").replace(/"/g,"[qq]");
	return escape(encodedText);
}

function decodeString(textString)
{
	var decodedText = unescape(textString).replace(/%q%/g,"'").replace(/%qq%/g,"\"");
	return decodedText;
}