/* a DOM-compliant breadcrumbs widget authored by Antonio Malcolm, copyleft 2009, all wrongs reserved, released under a GPLv3 license */

event.addEvent(window, 'load', breadcrumbs);

function breadcrumbs() {
    
    /* get elements (ul) by classname */
    var crumbTag = document.getElementsByTagName("ul");
    
    for (var i=0; i < crumbTag.length; i++) {
        
       if (crumbTag[i].getAttribute("class") == "breadcrumbs") {
    
    var root = "/";
    var crumbSplitter = " / ";
    
    var path = location.href;
    var protocol = path.substring(0, path.indexOf("://") +3);
                           path = path.substring(path.indexOf("://") +3); 
    var siteName = path.substring(0, path.indexOf(root));
                           path = path.substring(path.indexOf(root));          
     
                           path = path.substring(path.indexOf(root) + root.length);
                   
    /* clean up the URL - cut it off at the question mark */               
    var questionMark = "";
    
                   if (path.indexOf("?") > -1) {
                    
                    questionMark = path.substring(path.indexOf + ("?"));
                    path = path.substring(0, path.indexOf("?"));
                    
                   }   
                   
    /* clean up the URL - cut it off at the hash */               
    var hashMark = "";
    
                   if (path.indexOf("#") > -1) {
                    
                    questionMark = path.substring(path.indexOf + ("#"));
                    path = path.substring(0, path.indexOf("#"));
                    
                   }                              
                                         
    var labels = new Array();
    var crumbTrail = path.split("/");
    var tracePath = root;
    var crumbs = 0;
    
    /* build the list items, append with anchor tags, and do it again for each new subpage */
       
    var crumb = document.createElement("li");
        crumb.setAttribute("class", "crumb");
                
                var label = "intro";
                
                if ((labels[root] != null)) {
                    
                    label = labels[root];
                }
                
                if ((labels[tracePath] != null)) {
                    
                    label = labels[tracePath];
                    
                } 
                  
                if ((0 < crumbTrail.length) && (crumbTrail[0] != "index.html") && (crumbTrail[0] != "")) {
                    
                var crumbLink = document.createElement("a");
                      crumbLink.setAttribute("href", protocol + siteName + tracePath);
                      crumbLink.appendChild(document.createTextNode(label));
                      crumb.appendChild(crumbLink);
                    
                } else {
                    
                    crumb.appendChild(document.createTextNode(label));
                }
                
        crumbTag[i].appendChild(crumb);
        
        crumbs++;
        
        for (var crumbCanister = 0; crumbCanister < crumbTrail.length; crumbCanister++) {
            
            tracePath += crumbTrail[crumbCanister];
            
            if (crumbCanister + 1 < crumbTrail.length) {
                 
                tracePath += "/";
            }
            
            if ((crumbTrail[crumbCanister] != "") && (crumbTrail[crumbCanister].indexOf("index.html") == -1)) {
                
            var crumb = document.createElement("li");
                crumb.setAttribute("class", "crumb");
                
            if (crumbs > 0) {
                
                crumb.appendChild(document.createTextNode(crumbSplitter));
                
            }
            
            var label = crumbTrail[crumbCanister];
            
            if ((labels[crumbTrail[crumbCanister]] != null)) {
                
                label = labels[crumbTrail[crumbCanister]];
                
            }
            
            if ((labels[tracePath] != null)) {
                
                label = labels[tracepath];
                
            }
            
            if ((crumbCanister +1 < crumbTrail.length) && (crumbTrail[crumbCanister + 1] != "index.html") && (crumbTrail[crumbCanister +1] != "")) {
                
                var crumbLink = document.createElement("a");
                      crumbLink.setAttribute("href", protocol + siteName + tracePath);
                      crumbLink.appendChild(document.createTextNode(label));
                      crumb.appendChild(crumbLink);
                    
            } else {
                
                crumb.appendChild(document.createTextNode(label));
                
            }
            
           crumbTag[i].appendChild(crumb);
            
            crumbs++;
            
            }
            
        }
        
        }
    }
    
    
}



