function createThisCallback(obj,strFunc)
{	var temp=obj;var args=[];
	for (var i=2;i<arguments.length;i++)
		args.push(arguments[i]);
	return function ()
	{	for (var i=0;i<arguments.length;i++)
			args.push(arguments[i]);
		if (temp[strFunc])
			return temp[strFunc].apply(obj,args);
	}
}

function TabbedBox(parent, tabs, initial)
{	this.tabs	= tabs;
	this.tabdiv= [];
	this.tabimg= [];
	this.content= new Array(tabs.length);
	this.iSel	= -1;
	
	this.getSelectedTabIndex = function()
	{	return this.iSel;
	}
	
	this.handleTabClick = function(iTab)
	{	if (this.iSel == iTab)
			return;
		if (this.iSel != -1)
		{	this.tabdiv[this.iSel].className = "tb_nonsel";
			if (this.content[this.iSel]) this.content[this.iSel].style.display = "none";
		}
		this.tabdiv[iTab].className = "tb_sel";
		this.iSel = iTab;
		this.updateTabContent();
	}
	
	this.updateTabContent = function()
	{	if (!this.content[this.iSel])
		{	this.content[this.iSel] = this.tdContent.appendChild(document.createElement("div"));
			if (this.tabs[this.iSel].docId)
			{	var e = document.getElementById(this.tabs[this.iSel].docId);
				e.parentNode.removeChild(e);
				this.content[this.iSel].appendChild(e);
				e.style.display = "block";
				e.style.visibility = "visible";
				if (this.tabs[this.iSel].fncRender)
					this.tabs[this.iSel].fncRender(this.content[this.iSel]);

			}
		}
		this.content[this.iSel].style.display = "block";
		this.content[this.iSel].style.visibility = "visible";
		if (this.tabs[this.iSel].fncClick)
			this.tabs[this.iSel].fncClick();
	}
	
	var table = parent.appendChild(document.createElement("table"));
	table.cellPadding = "0";
	table.cellSpacing = "0";
	table.border = "0";
	table.className = "tb_header";
	var tbody = table.appendChild(document.createElement("tbody"));
	var tr = tbody.appendChild(document.createElement("tr"));	
	var iCol = 0;
	for(var i=0; i < tabs.length; i++)
	{	var fSel = tabs[i].id == initial;
		if (fSel) this.iSel = i;
		var td = tr.appendChild(document.createElement("td"));
		td.className = "tb_tabtd tab" + tabs[i].id;
		var div;
		if (tabs[i].tabId)
		{	div = document.getElementById(this.tabs[i].tabId);
			div.parentNode.removeChild(div);
			div.style.display="block";
			td.appendChild(div);
		}
		else
		{	div = td.appendChild(document.createElement("div"));
			div.innerHTML = tabs[i].caption;
		}
		
		div.className = fSel?"tb_sel":"tb_nonsel";
		this.tabdiv.push(div);
                                if (tabs[i].docId) div.onclick = createThisCallback(this, "handleTabClick", i);
		iCol++;
	}
	iCol++;
	var td = tr.appendChild(document.createElement("td"));
	td.className = "tb_empty";
	iCol++;
	var tr = tbody.appendChild(document.createElement("tr"));
	var td = tr.appendChild(document.createElement("td"));
	td.className = "tb_content";
	td.colSpan = iCol;
	this.tdContent = td;

	var tr = tbody.appendChild(document.createElement("tr"));
	var td = tr.appendChild(document.createElement("td"));
	td.className = "tb_bottom";
	td.colSpan = iCol;

	this.updateTabContent();
}


