
var TabCollection = Class.create();
TabCollection.prototype = {
	initialize: function(aHead, aContent, startIndex, trackingElementID) {
		this.activeIndex = startIndex ? startIndex : 0;
		this.aH = aHead    ? aHead    : [];
		this.aB = aContent ? aContent : [];
		this.tracker = trackingElementID ? trackingElementID : '';
		this.AttachEvents();
		this.ShowTabs();
	}
};

TabCollection.prototype.AttachEvents = function() {        
    var elem;
    for(var i=0; i < this.aH.length; i++) {
		elem = $(this.aH[i]);      
        elem.onclick=this.ActivateTab;
        elem.tabObj=this;
    }
};

TabCollection.prototype.AttachTabEvent = function(id, fx) {
	var elem = $(id);
	elem.observe('click', fx);
	return;
};

TabCollection.prototype.ShowTabs = function() {
    var elem;
    //adjust headers
    for(var i=0; i<this.aH.length; i++) {
        elem = $(this.aH[i]);
        if(i==this.activeIndex) {
            elem.className = 'active';
        } else {
            elem.className = '';
        }
    }
    //adjust content
    for(var i=0; i<this.aB.length; i++) {
        elem = $(this.aB[i]);
        if(i==this.activeIndex) {
            elem.show();
        } else {
            elem.hide();
        }
    }
    //update tracker element
    elem = $(this.tracker);
    if(elem) {
        elem.value = this.activeIndex;
    }
};

TabCollection.prototype.ActivateTab = function(event) {
    var thisID = this.id;
    var obj = this.tabObj;
    //find id in array
    for(var i=0; i<obj.aH.length; i++){
        if(thisID==obj.aH[i]) {
            obj.activeIndex=i;
            obj.ShowTabs();
            return;
        }
    }
};
