YAHOO.namespace("ps.Breadcrumb");
(function () {
    var Dom  = YAHOO.util.Dom,
    	Ev   = YAHOO.util.Event,
    	Bc   = YAHOO.ps.Breadcrumb;
	
    // Elements
    var container,
    	items,
    	defaultItems;
    
    var buildItems = function () {
    	// Clear list first then rebuild
    	container.innerHTML = '';

		for(var i in items) {
			if (YAHOO.lang.hasOwnProperty(items, i)) {
				container.appendChild(items[i]);
			}
		}
    };
    
    var resetItems = function () {
    	items = defaultItems;
    	buildItems();
    };
    
    var getItems = function () {
    	return items;
    };
    
	var addItem = function (itemId, node, text, click, margin) {
		// Last element needs current class removed so 
		var oldItem = items[items.length-1];
		Dom.removeClass(oldItem, 'current');
		      
		var newItem = document.createElement(node);
		newItem.id = itemId;
		newItem.className = 'current';
		newItem.appendChild(document.createTextNode(text));
		// Add left margin if set, some items 
		if (!YAHOO.lang.isUndefined(margin)) {
			newItem.style.marginLeft = margin + 'px';
		}
		
		// Add new item to breadcrumb
		container.appendChild(newItem);
		// If click is an object set it as a listener
		if (YAHOO.lang.isObject(click)) {
			Ev.addListener(newItem, 'click', click);
		}
		// Update item list
		items = Dom.getChildren(container);
    };
    
    var removeItem = function () {
    	// Remove last child
		var removeItem = items[items.length-1];
    	container.removeChild(removeItem);
		// Update item list
    	items = Dom.getChildren(container);
    };
	
	var initBreadcrumb = function () {	
    	container = Dom.get('breadcrumb');
    	// Get children and set default
    	items = Dom.getChildren(container);
    	defaultItems = items;
    }; 
    
    Ev.onDOMReady(function () {
    	initBreadcrumb();
    });

    // Public functions
    Bc.resetItems = resetItems;
    Bc.removeItem = removeItem;
    Bc.getItems   = getItems;
    Bc.addItem    = addItem;
})();