/* 
 * Makes breadcrumbs based on the href of the current page.
 *
 * The breadcrumbs are marked up in a list, like this:
 *     <ul id="breadcrumbs">
 *         <li class="first">
 *             ...
 *         </li>
 *         <li>
 *             ...
 *         </li>
 *         <li>
 *             ...
 *         </li>
 *         <li class="second-to-last">
 *             ...
 *         </li>
 *         <li class="last">
 *             ...
 *         </li>
 *     </ul>
 *     
 * As the :nth-child selector is not yet widely supported, classes are added to
 * the first, second to last and last breadcrumbs for stying with CSS.
 *
 * NOTE: This script extends the jQuery JavaScript framework
 *       http://docs.jquery.com/Attributes/html#val
 */

(function($) {
    $.fn.breadcrumbs = function() {
        var href = window.location.href;
        // Handle tertiary links
        href = href.replace(/-([^-])/, ".htm/$1")
        // TODO: Add an array of possible default page names? (Copy from IIS?)
        var href_parts = href.replace(/index\..+/, "").match(/(\/[^\/]+)/g);
        var string_buffer = "";
        var acronymns = ["IT", "HS", "CTO", "TV", "and", "to", "VoIP", "VPN", "for", "MercerConnect", "MercerLive"];
        var start_at = 2;

        for (var i = start_at; i < href_parts.length; i++) {
            var href_part = href_parts[i];
            // Handle tertiary links
            var link = (href.split(href_part)[0] + href_part).replace(".htm/", "-");
            var classes = []
            var breadcrumb_name = unescape(href_part)
                .slice(1, href_part.length)      // Chop off leading slash
                .replace(/^([^\.]+)\..*/, "$1")  // Everything up to the 1st dot
                .humanize()                      // Underscores to spaces
                .title_case();                   // Every word is capitalized

            // Fix acronymns
            for (var j = 0; j < acronymns.length; j++) {
                var acronymn = acronymns[j];
                var regex = new RegExp("\\b" + acronymn + "\\b", "ig");
                breadcrumb_name = breadcrumb_name.replace(regex, acronymn);
            }

            // CSS Styling hooks
            if (start_at == i)              classes.push("first");
            if (href_parts.length - 2 == i) classes.push("second-to-last");
            if (href_parts.length - 1 == i) classes.push("last");

            string_buffer += "<li"
            if (0 < classes.length) string_buffer += " class=\"" + classes.join(" ") + "\" ";
            string_buffer += "><a href=\"" + link + "\">" + breadcrumb_name + "</a></li>";
        }
        return "<ul id=\"breadcrumbs\">" + string_buffer + "</ul>";
    }
})(jQuery);