/**
 * TabControl
 */

//Globalis tomb valtozo, indexe a TAB Id, elemei a tabControlData-k
var globalTBList=Array();
var oResizeMW=true;

/**
 * Tombok, melyben egy TabControl adatai tarolodnak
 */
function tabControlData()
{
	this.buttonNode=Array();
	this.buttonNodeId=null;//menu container, amibe a gombok vannak. Ez alapjan fogja azonositani a lastTabot!
	this.divNode=Array();
	this.evalStrs=Array();
	this.active=null;	//aktualis div obj
	this.activeBtnObj=null;//aktualis btn obj
}

/**
 * TabControl letrehozasa
 *
 * @param string menuIdz(UL IDje) mId
 * @param string contentId (DIV IDje) cId
 * @param bool showFirst
 */
function createTabControl(mId,cId,showFirst,disableSetFocus,evalObj)
{
	var _mObj=document.getElementById(mId);	//menu objektum azaz az UL
	var _cObj=null;													//content DIV
	if (!_mObj)	return;
	
	var tData=new tabControlData();					//ebbe teszem a button es div node objektumokat, s ezt toltom be a globalis valtozoba
	tData.buttonNodeId=mId;

	//ha meg nincs inicializalva a globalis valtozo.
	var buttonCounter = 0;
	if (typeof(parent.lastTabButtonIndexes)!='object')	parent.lastTabButtonIndexes={};

	for(var no=0;no<_mObj.childNodes.length;no++) //vegiglepked az UL nodejain
	{
		if (_mObj.childNodes[no].tagName=='LI' || _mObj.childNodes[no].tagName=='DIV') //ha LI-t talaltam, azert kell ez, mert FF alatt van pl #text node is, es az nekunk nem kell
		{
			if (_cObj=getTabControlPage(cId,buttonCounter)) //ha van a menunek div parja
			{
				_cObj.style.display='none'; //elrejtem
				tData.buttonNode[tData.buttonNode.length]=_mObj.childNodes[no];//.childNodes[no1]; //elteszem a buttonNode tombbe a gomb objektumot
				_mObj.childNodes[no]/*.childNodes[no1]*/.onclick=function(){var _kdata=keres(this);atvalt(_kdata[0],_kdata[1],disableSetFocus)}; //onclick esemeny hozzaadasa a gombhoz
				tData.divNode[tData.divNode.length]=_cObj;			//a gombhoz tartozo div obj. tarolasa

				if ((invalidControlCnt=getElementsByClass('invalidControl',null,_cObj).length)>0)
				{
					_cObj.invalidControlCnt=invalidControlCnt;
					addClassName(null,'invalidControlTab',_mObj.childNodes[no]);
				}
				
				tData.evalStrs[tData.divNode.length-1]=((typeof(evalObj)=='object' && (evalS=eval('evalObj.tabButton'+(buttonCounter+1))))?evalS:null);		//a gombhoz tartozo esemeny
				++buttonCounter;
			}
		}
	}
	globalTBList[globalTBList.length]=tData; //eltarolom az objektumot, hozzafuzom a globalis valtozohoz (azert kell globalis valtozo, hogy az onclick esemenynel is hozzaferjek az adatokhoz)

	if (showFirst) //ha kell megjelenitem az elso tab divjet.
	{
//		atvalt(globalTBList.length-1,((parent.lastTabButtonIndex)?parent.lastTabButtonIndex:0),disableSetFocus);
		lastTabButtonIndex=eval('parent.lastTabButtonIndexes.'+tData.buttonNodeId);
//		alert('parent.lastTabButtonIndexes.'+tData.buttonNodeId); parent.lastTabButtonIndexes.ddwrt_tabs
		atvalt(globalTBList.length-1,((lastTabButtonIndex)?lastTabButtonIndex:0),disableSetFocus);
	}
}

function getTabControlPage(containerId,index)
{
	if (_container=document.getElementById(containerId))
	{		
		for(var i=0;i<_container.childNodes.length;i++)
			if (_container.childNodes[i].nodeType==1)
			{
				if (_container.childNodes[i].tagName=='FORM')
				{
					for (var a=0;a<_container.childNodes[i].childNodes.length;a++)
						if (_container.childNodes[i].childNodes[a].nodeType==1 && --index==-1)
						{
							return _container.childNodes[i].childNodes[a];
						}
				}
				else
				{
					if (--index==-1)
						return _container.childNodes[i];
				}
			}
	}
	else
		alert('Container not found: '+containerId);

	return null;
}

/**
 * Megkeresi a tabIndex, es buttonIndex ertekeket
 *
 * @param thisNode
 * @return array [tabIndex,buttonIndex]
 */
function keres(thisNode)
{
	var gt=0;
	var bn=0;
	var found=false;
	while (gt<globalTBList.length)
	{
		if (thisNode==globalTBList[gt].buttonNode[bn])
			break;

		if (++bn==globalTBList[gt].buttonNode.length)
		{
			gt++;
			bn=0;
		}
	}

	return[gt,bn];
}

/**
 * Elrejti az elozo DIV-et, es megjeleniti az aktualis gombhoz tartozot
 *
 * @param int tabIndex
 * @param int buttonIndex
 */
function atvalt(tabIndex,buttonIndex,disableSetFocus)
{
	var tmp=globalTBList[tabIndex];
//	alert(tabIndex+';'+buttonIndex);
	if (typeof(tmp)=='object')
	{
		if (tmp.active) //ha van jelenleg megjelenitett divem, akkor elrejtem
		{
			tmp.active.style.display='none';
			removeClassName(null,'selected',tmp.activeBtnObj);
		}

		eval("parent.lastTabButtonIndexes."+tmp.buttonNodeId+"="+buttonIndex);

		//parent.lastTabButtonIndex=buttonIndex;
		if (tmp.divNode[buttonIndex])
		{
			tmp.active=tmp.divNode[buttonIndex]; //beallitom az uj aktivat
			tmp.active.style.display='block';//megjelenitem
			tmp.activeBtnObj=tmp.buttonNode[buttonIndex];
			if (tmp.evalStrs[buttonIndex]!=null)
				eval(tmp.evalStrs[buttonIndex]);
			addClassName(null,'selected',tmp.activeBtnObj);
		}
	}
	//modalwindow meretezes
	if (typeof(resizeModalWindow)=='function' && oResizeMW)
		resizeModalWindow();
	if (typeof(setFocus)=='function' && !disableSetFocus)
		setFocus();

}

