function tab(tabcontrol, num, label, action, csstab, csstabsel,tracklabel,host)
{
	var tmp_id="tab."+tabcontrol+"."+label;
	tmp_id = tmp_id.replace('\'', '');

	this.num = num;
	this.id=tmp_id;
	this.label = label;
	this.action = action;
	this.selected = false;
	this.tabcontrol = tabcontrol;
	this.url = action;
    this.csstab = csstab;
    this.csstabsel = csstabsel;
    this.controlid = "tabcontent."+this.tabcontrol;
       if(tracklabel != null){
	this.tracklabel = tracklabel;
       }
       if(host != null){
	this.host = host;
       }
	this.getContent = function()
	{
        var tmpdiv = $(this.controlid);

        tmpdiv.update("<p style=\"text-align:center;\"><img src=\"/imgs/fuloaderSmall.gif\" title=\"loading..\" alt=\"loading..\" border=0></p>");

        new Ajax.Updater(tmpdiv, this.action, {
            method: 'get',
            evalScripts: true,
            onComplete: function(transport) {
                if (myLL) {
                    myLL.checkDiv(tmpdiv);
                }
            }
        });
	}

	this.Select = function(val)
	{
		if ( this.selected == val )
		{
			return;
		}
		this.selected = val;

		this.Paint();

		if (this.selected == true) {
			// fill in content here
			//var myTabContent = document.getElementById("tabcontent."+this.tabcontrol);
			//myTabContent.innerHTML = this.action;
			this.getContent();
		}
	}

        this.SelectTracking = function(val)
        {
                if ( this.selected == val )
                {
                        return;
                }
                this.selected = val;

                this.PaintTracking();
                if (this.selected == true) {
                        // fill in content here
                        //var myTabContent = document.getElementById("tabcontent."+this.tabcontrol);
                        //myTabContent.innerHTML = this.action;
                        this.getContent();
                }
        }

	this.Create = function()
	{
		var html = "<div class='tab_wrapper' id='" + this.id + "'></div>";
		return html;
	}

	this.Create_withTracking = function()
        {
                var html = "<div id='" + this.id + "' onClick'if (typeof pageTracker != \"undefined\") { pageTracker._trackPageview(\""+ this.url +"\"); }'></div>";
                return html;
        }

	this.Paint = function()
	{
		var myTab = document.getElementById(this.id);
		var tabclass = this.selected==true?this.csstabsel:this.csstab;
		var html = "<div class='" + tabclass + "' onclick='" + this.tabcontrol + ".SelectTab(" + this.num + ")'>" + this.label + "</div>";
		myTab.innerHTML = html;
	}
	this.PaintTracking = function()
        {
                var myTab = document.getElementById(this.id);
                var tabclass = this.selected==true?this.csstabsel:this.csstab;
		if(this.tracklabel != null && this.host != null){
			var html = "<div class='" + tabclass + "' onclick='" + this.tabcontrol + ".SelectTabTracking(" + this.num + ", \"" + this.url + "\");setCookie(\"last_tab\",\""+this.tracklabel+"\",0,0,0,\"/\",\""+this.host+"\");'>" + this.label + "</div>";
		}else{
                	var html = "<div class='" + tabclass + "' onclick='" + this.tabcontrol + ".SelectTabTracking(" + this.num + ", \"" + this.url + "\");'>" + this.label + "</div>";
		}
                myTab.innerHTML = html;
        }

}

// create a varible and a div
// with the name "FOO", and pass that in here.
// tabs need the right name in order to work.
function tabControl(id,tabclass)
{
	this.id = id;
	this.tabs = new Array();
	this.selectedTab = 0;
    this.tabclass = tabclass;
    this.tabclass || ( this.tabclass = 'tabcontent' );

	this.addTab = function(label, action, csstab, csstabsel)
	{
        csstab || ( csstab = 'tab' );
        csstabsel || ( csstabsel = 'tabsel');
		var idx = this.tabs.length;
		var newtab = new tab(this.id, idx, label, action, csstab, csstabsel);
		this.tabs[this.tabs.length] = newtab;
	}

        this.addTabTracking = function(label, action, tracklabel, host, csstab, csstabsel)
        {
        csstab || ( csstab = 'tab' );
        csstabsel || ( csstabsel = 'tabsel');
                var idx = this.tabs.length;
                var newtab = new tab(this.id, idx, label, action, csstab, csstabsel, tracklabel, host);
                this.tabs[this.tabs.length] = newtab;
        }

	this.SelectTab = function(idx)
	{
		for (var index=0; index<this.tabs.length; index++)
		{
			this.tabs[index].Select(idx==index);
		}
	}

        this.SelectTabTracking = function(idx)
        {
                for (var index=0; index<this.tabs.length; index++)
                {
                        this.tabs[index].SelectTracking(idx==index);
                }
	
        }

	this.Paint = function(deftab)
	{
		var tabDiv = document.getElementById(this.id);

		var html = "<table class='tabs' cellspacing=0 cellpadding=0><tr>";
		for (var index=0; index<this.tabs.length; index++)
		{
			html += "<td class='tab_row' valign='bottom'>" + this.tabs[index].Create() + "</td>";
		}
		html += "</tr><tr><td colspan="+this.tabs.length+">";
		html += "<div class="+this.tabclass+" id=tabcontent."+id+"></div>";
		html += "</td></tr></table>";
		tabDiv.innerHTML = html;

		for (var index=0; index<this.tabs.length; index++)
		{
			this.tabs[index].Paint();
		}

		this.SelectTab(deftab);

	}
	this.PaintTabTracking = function(deftab, tabnum)
        {
                var tabDiv = document.getElementById(this.id);
		
		var tabLen = this.tabs.length;
		var colspanCount = 0;
		var tabCount = 1;
		var cellwidth = 100 / tabnum;
		var cellwidth = cellwidth - 1;		

                var html = "<table class='tabs' cellspacing=0 cellpadding=0><tr>";
                for (var index=0; index<this.tabs.length; index++)
                {
			if(tabCount == tabLen){
			cellwidth = cellwidth + 1;
			colspanCount = colspanCount + 1;
			tabCount = tabCount + 1;
			html += "<td width="+cellwidth+"%>" + this.tabs[index].Create_withTracking() + "</td>";
			}else{
                        html += "<td width="+cellwidth+"%>" + this.tabs[index].Create_withTracking() + "</td><td class='tabSpacer'>&nbsp;</td>";
			colspanCount = colspanCount + 2;
			tabCount = tabCount + 1;
			}
                }
                html += "</tr><tr><td colspan="+colspanCount+">";
                html += "<div class="+this.tabclass+" id=tabcontent."+id+" height='450'></div>";
                html += "</td></tr></table>";
                tabDiv.innerHTML = html;
                for (var index=0; index<this.tabs.length; index++)
                {
                        this.tabs[index].PaintTracking();
                }
                this.SelectTabTracking(deftab);

        }
}
