//////////////////////////////////////////////////////////////////////////////
//                         Nifty Breadcrumbs Script                         //
//////////////////////////////////////////////////////////////////////////////
// 
// This is a neat little script that takes your site's file/folder structure
// and converts it into breadcrumbs. As an added bonus, it forces you to
// create a structure that is optimal for search engines to index and rank!
//
// CONTRIBUTORS:
//
// Original Creator:
//     Paul Hirsch
//     www.paulhirsch.com - personal site
//
// Tested by:
//     International Web Developers Network (IWDN)
//     www.iwdn.net - home page
//     www.iwdn.net/index.php - forums/community where testing took place
//
// Other Contributors:
//
//     [INSERT YOUR NAME AND BRIEF DESCRIPTION OF YOUR CONTRIBUTION HERE]
//
// VERSIONS:
//
// 1.2
//     - Removed all requirements for a file extension to be set.
//     - Folder roots have been eliminated.  Now, when visitors step up the
//       breadcrumbs, they are taken to the parent folder via "../" only.
//     - Removed the script portion that parses the jumplink octothorpe. It
//       wasn't really doing anything all that useful.
//     - Updated instructions.  The script is now much easier to use!
//
// 1.1
//     - A little code cleanup.  Double quotes replaced with single quotes,
//       escaped characters unescaped.
//     - Word separators (underscore, hyphen, etc.) are now user-declared.
//     - Custom word replacement now available.  Use your own words in place
//       of your folder/file names.
// 1.0
//     - Original breadcrumbs script released.
//
// INSTRUCTIONS:
//
// 1.  Create your site structure using folders and files with useful names.
//     You may choose any character you'd like to replace spaces in your
//     URLs.  I recommend using underscores (as in the example below), but
//     this script will allow you to specify any single character you'd like
//     to be the replacement for spaces.  If you use something other than
//     underscores, you will need to make a change in the variables section.
//
//     EXAMPLE: http://www.squid.com/My_Pet_Squid/Meet_Rocky.html shows good
//     name choices to describe an area of content and the contents of a page.
//    
//     Alternatively, you can setup mod_rewrite via your .htaccess file to
//     create friendly URLs such as the one above.
//
// 2.  Fill in the settings for the variables in the next section of this
//     script.  They should be pretty self-explanatory.
//
// 3.  Add the following to your site wherever you want your breadcrumbs
//     to appear (change the path to point to wherever you put this script):
//
//     <div id="breadcrumbs"></div>
//     <script type="text/javascript" src="scripts/breadcrumbs.js"></script>
//
// LICENSE:
//
// This script is protected under General Public License (GPL).  Feel free to
// redistribute this script, so long as you do not alter any of the contents
// specifying authorship.  If you add to or modify this script, you may add
// your name to the "Other Contributors" list at the top of this script.  As
// a courtesy, please email me and let me know how you've improved my script!
// You may not profit from the direct sale of this script.  You may use this
// script in commercial endeavors however (i.e. as part of a commercial site).
//
// Email me here: http://www.paulhirsch.com/contact_me.php
//
// Copyright 2006, Paul Hirsch. All rights specified herein and within GPL
// documentation: http://www.gnu.org/licenses/gpl.txt
//
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
// Change the following variables as instructed                             //
//////////////////////////////////////////////////////////////////////////////

// Enter your domain name here, 
var url = "Javiers.com";

// Enter the word you want to use to describe the home page of your site
var home = "Home";

// Enter the character(s) you want to use to separate your breadbrumbs
var divide = "&#187;";

// Enter text you'd like to see.  You can make this blank as well - "";
var pre = "";

// Enter the character that replaces spaces in your URL (i.e. - or _ or %20)
var sp = "_";

// Want to replace any folder names with custom names of your own?  Create
// replacement pairs in the following format: swap[i] = 'Old Words|New Words';
swap = new Array(); // Don't touch this line!
// Remove comments from swap array variables below to put them into use.
// Create additional replacement items by increasing the array number [i] as
// you add more lines. 

swap[0] = 'Replace Me|Different Text';
swap[1] = 'www.|';
swap[2] = ':8080|';
swap[3] = ':_| ';
swap[4] = 'Index2|Home';
swap[5] = 'index2|home';
// swap[2] = 'Replace Me|My Replacement';
// etc.

//////////////////////////////////////////////////////////////////////////////
// DO NOT TOUCH ANYTHING BELOW THIS LINE                                    //
// unless you know damned well what you're doing!                           //
//////////////////////////////////////////////////////////////////////////////

divide = ' ' + divide + ' '; // Adds some space around the breadcrumb divider.
var a = '' + window.location; // Adds some space around the breadcrumb divider.
a = a.substring(0,a.lastIndexOf('.')); // Strips away everything after the last file name.
var b, code, left, x, y = ''; // Declaring these for later.
var foo = ''; // Creates a variable we can use to call the root file of a given folder at a later time.

left = a.lastIndexOf("/"); // Identifies the last forward slash in the page URL.

// If the last character within the URL is a forward slash, this bit of code adds the root folder word to the end of it, so other parts of this script will be able to process things properly.
if (a.substring(a.lastIndexOf('/')) == '/') {
	a = a + root;
}

b = a.substring(left+1); // Makes the variable "b" equal to everything on the right side of the last forward slash in the URL: the page name, minus the file extension (removed in line [A])
b = b.replace(new RegExp(sp, 'g'),' '); // Replaces all word separators (underscore, hyphen, etc.) with spaces. Separator in use is a user-declared variable.

code = divide + b; // [B] Makes the variable "code" equal to the name of the page, as stored in variable "b", plus a breadcrumb divider is added in front.
b = '/' + b; // The slash is added back to the beginning of variable "b".  It was discarded in line [B].
b = b.replace(/ /g,sp); // The user-specified word separators are put back into the file name.

a = a.replace(b,''); // Removes the segment that was just used from the variable holding the URL.

// This loop will continue the breadcrumb creation process, so long as the last forward slash is not preceded by another forward slash (which signifies the beginning of the URL)
if (a.substring(left-1) != '/') {
	do  {
		left = a.lastIndexOf('/'); // Identifies the last forward slash in the remaining URL.
		b = a.substring(left+1); // Makes the variable "b" equal to everything on the right side of the last forward slash in the URL: a folder in which a page or deeper folder is being stored.
		b = b.replace(new RegExp(sp, 'g'),' '); // Replaces all user-specified word separators with spaces.

		code = divide + '<a href="' + foo + '">' + b + '</a>' + code; // Updates the variable code to include the name of the folder and the URL necessary to reach the folder root.
		foo = '../' + foo; // Adds an additional level to the variable that determines the path to the folder that will be assigned in the breadcrumb loop.
		b = '/' + b; // The slash is added back to the beginning of variable "b".
		b = b.replace(/ /g,sp); // The user-specified word separators are put back into the file name.

		a = a.replace(b,''); // Removes the segment that was just used from the variable holding the URL.
	} while (a.substring(left-1) != '/'); // Checks to make sure there's still more string to parse.
}

code = code.replace(url,home); // The remaining URL is replaced with whatever word was specified for the home page of the site.
code = (code.substring(code.indexOf('<'))); // The "code" string contains an unwanted bullet at the beginning.  This snippet causes it to be removed/ignored.
code = pre + code; // Any verbiage specified by the author to precede the breadcrumbs is inserted here.

// This loop looks for folder names the user wants to replace with custom text, as specified in the user variables section of this script.  It will run one loop for every replacement item specified.
for (i=0 ; i<swap.length ; i++) {
	x = swap[i].substr(0,swap[i].lastIndexOf('|')); // Extracts the words that are to be replaced and sets them to variable x.
	y = swap[i].substr(swap[i].lastIndexOf('|')+1); // Extracts the words that will be used in place of x, and sets them to y.
	code = code.replace(new RegExp(x, "g"),y); // This line does the actual words replacement.
}

document.getElementById('breadcrumbs').innerHTML = code; // The final code string is inserted into the Web page at the point where it sees an object with the ID "breadcrumbs".