// Breadcrumb Links Script, by Nate Baldwin (www.mindpalette.com)



var homePage = "Home";			// text name for home page link

var sepChars = " &gt; ";		// character(s) to sepCharsarate links

var linkHome = "/";				// base URL for links

var hideIndex = true;			// hide the index page name at end of links

var UToSpace = true;			// change all underscores to spaces in folder names

var DToSpace = true;			// change all dashes to spaces in folder names

var changeCaps = 1;			// 0 = no change, 1 = Initial Caps, 2 = All Upper, 3 = All Lower

var hideExt = true;				// hide extenion in file name

var usePageTitle = false;	// use page title for current page name



// these find-replace pairs will be applied to the title in order before

// the title is used as the currentPage name.

var titleTransforms = [

	/*

		For reasons I cannot deduce, the \s+ only works with an escaped

		backslash, while the \.+ only works with an unescaped one. \s is not a

		special character in Javascript.

		

		String.fromCharCode(171) is an &laquo;. We have to find the actual

		character, not the string "&laquo;".

	*/

	[new RegExp("\\s+" + String.fromCharCode(171) + "\.+"), ""]

];



//-------------------------------------------------------------------------

// SCRIPT FUNCTIONS  (shouldn't need to edit code below)...

//-------------------------------------------------------------------------



// build breadcrumb links...

function MPJSBackLinks() {

var linkHTML = '';

var thisURL = window.location + '';

var urlPair = thisURL.split('//');

if (urlPair.length > 1) thisURL = urlPair[1];

var dirArray = thisURL.split('/');

var linkArray = dirArray.slice(1);

var linkDir = '/';

var currentPage = '';

if (linkHome != '' && linkHome != '/') {

	var thisTest = linkHome.split('//');

	if (thisTest.length > 1) linkHome = thisTest[1];

	startArray = linkHome.split('/');

	var backCount = 0;

	for (var n=0; n<startArray.length; n++) {

		if (startArray[n] == '..') backCount++;

			else break;

		}

	if (backCount > 0) {

		var part1 = dirArray.slice(0, (dirArray.length - backCount - 1));

		var part2 = startArray.slice(backCount);

		startArray = part1.concat(part2);

		} else {

		var newStart = new Array(dirArray[0]);

		for (var n=1; n<startArray.length; n++) {

			var thisTest = (typeof dirArray[n] != "undefined") ? dirArray[n] : false;

			if (thisTest && thisTest == startArray[n]) newStart[n] = startArray[n];

				else break;

			}

		startArray = newStart;

		}

	if (startArray.length > 1) {

		var lastOne = startArray[startArray.length - 1];

		if (lastOne != '') {

			var thisTest = lastOne.split('.');

			if (thisTest.length > 1) startArray[startArray.length - 1] = '';

				else startArray[startArray.length] = '';

			}

		if (homePage == '') homePage = startArray[startArray.length-2];

		linkArray = dirArray.slice(startArray.length - 1);

		if (startArray[0] != '') startArray[0] = "http://"+startArray[0];

		linkDir = startArray.join('/');

		} else linkArray = dirArray.slice(1);

	} else {

	linkArray = dirArray.slice(1);

	if (homePage == '') homePage = dirArray[0];

	}

var backTrack = 1;

if (linkArray[linkArray.length - 1] != '') {

	var lastOne = linkArray[linkArray.length - 1];

	var testName = lastOne.split('.');

	if (testName[0] == 'index' || testName[0] == 'default') {

		backTrack = 2;

		currentPage = linkArray[linkArray.length - 2];

	}

	else if (usePageTitle) {

		currentPage = document.title;

		for (var i in titleTransforms) {

			currentPage = currentPage.replace(titleTransforms[i][0], titleTransforms[i][1]);

		}

	} else if (hideExt) {

		currentPage = testName[0];

	}

	else {

		currentPage = lastOne;

	}

} else {

	backTrack = 2;

	currentPage = linkArray[linkArray.length - 2];

}



var html = '';

if (linkArray.length >= backTrack) {

	linkArray = linkArray.slice(0, linkArray.length - backTrack);

	var links = new Array();

	if (homePage != '') {

		homePage = MPBCParseText(homePage, UToSpace, DToSpace, changeCaps);

		links[links.length] = '<a href="'+linkDir+'">'+homePage+'</a>';

		}

	var baseDir = linkDir;

	for (var n=0; n<linkArray.length; n++) {

		baseDir += linkArray[n] + '/';

		var thisText = MPBCParseText(linkArray[n], UToSpace, DToSpace, changeCaps);

		links[links.length] = '<a href="'+baseDir+'">'+thisText+'</a>';

		}

	if (currentPage != '') links[links.length] = MPBCParseText(currentPage, UToSpace, DToSpace, changeCaps);

	html = '<div class="mp_backlinks">'+links.join(sepChars)+'<\/div>';

	}

return html;

}

// parse string through text filters

function MPBCParseText(thisText, UToSpace, DToSpace, changeCaps) {

if (typeof thisText != "undefined" && thisText) {

	if (DToSpace) thisText = MPBCReplaceChar('-', ' ', thisText);

	if (UToSpace) thisText = MPBCReplaceChar('_', ' ', thisText);

	if (changeCaps) thisText = MPBCFixCaps(thisText, changeCaps);

	} else thisText = '';

return thisText;

}

// find and replace single character in string...

function MPBCReplaceChar(oldChar, newChar, thisString) {

var newString = '';

for (var n=0; n<thisString.length; n++) {

	newString += (thisString.charAt(n) == oldChar) ? newChar : thisString.charAt(n);

	}

return newString;

}

// determine changes in capitalization...

function MPBCFixCaps(thisString, changeCaps) {

if (changeCaps == 1) thisString = MPBCUCWords(thisString);

	else if (changeCaps == 2) thisString = thisString.toUpperCase();

	else if (changeCaps == 3) thisString = thisString.toLowerCase();

return thisString;

}

// capitalize the first letter of every word...

function MPBCUCWords(thisString) {

var thisArray = thisString.split(' ');

var newString = '';

for (var n=0; n<thisArray.length; n++) {

	var firstChar = thisArray[n].charAt(0).toUpperCase();

	var theRest = thisArray[n].substring(1, thisArray[n].length);

	newString += firstChar+theRest+' ';

	}

return newString.substring(0, newString.length - 1);

}

document.write(MPJSBackLinks());


