function HB_Collection() {
    this.setup_items();
    this.cache = [];
    setTimeout('hb_collection.load_first();', 0);
}

HB_Collection.prototype.load_first = function() {
    var div = document.getElementById('collection');
    var first_link = div.getElementsByTagName('a')[0];
    this.click_item(first_link);
}

HB_Collection.prototype.setup_items = function() {
    var div = document.getElementById('collection');
    var item_list = div.getElementsByTagName('ul')[0];
    var item_links = div.getElementsByTagName('a');
    var items = this.items;
    
    for (var i = 0; i < item_links.length; i++) {
        var item_link = item_links[i];
        item_link.onclick = this.click_item;
    }
}

HB_Collection.prototype.click_item = function(param) {    
    if (!param.getAttribute) {
        var target = this;
    } else {
        var target = param;
    }
    
    var list = target.parentNode.parentNode;
    var items = list.getElementsByTagName('li');
    for (var i = 0; i < items.length; i++) {
        items[i].className = '';
    }
    
    target.parentNode.className = 'selected';
    
    var item_rel = target.getAttribute('rel');
    var collection_classes = {
        'weblog': 'HB_Weblog',
        'feed': 'HB_Feed'
    }
    
    if (!hb_collection.cache[item_rel]) {
        var id_parts = item_rel.match(/([a-z]+)([0-9]+)/);
        var type = id_parts[1];
        var id = id_parts[2];
        var title = target.firstChild.nodeValue;
        var url = target.getAttribute('href');
        var class_name = collection_classes[type];
        eval('var selected = new ' + class_name + '(' + id + ', "' + url + '", "' + title + '");');
        hb_collection.cache[item_rel] = selected;
    } else {
        var selected = hb_collection.cache[item_rel];
    }
    
    if (hb_collection.selected) {
        hb_collection.selected.hide();
    }
    hb_collection.selected = selected;
    selected.show();
    
    return false;
}

HB_Collection.prototype.create_item = function(type, id, url, title) {
    
}

var hb_collection;
add_event(window, 'onload', function() {
    hb_collection = new HB_Collection();
});

