/**
 * @author BYK
 */
if (!eQ)
	var eQ={config: {}};

eQ.simpleTabs={};

eQ.simpleTabs.list=[];

eQ.simpleTabs.historyList={};

eQ.simpleTabs._historyOnChangeHandler=function(event)
{
	if (!(eQ.config.simpleTabs.history.active && eQ.simpleTabs.list.length))
		return;

	var matcher=new RegExp("^" + eQ.config.simpleTabs.history.key, "");
	if (!event.changedKeys.reduce(function(a,b){if (!a) a=matcher.test(b); return a;}))
		return;

	eQ.simpleTabs.historyList=aV.History._get[eQ.config.simpleTabs.history.key];

	for (var tabId in eQ.simpleTabs.historyList) 
	{
		if (!eQ.simpleTabs.historyList.hasOwnProperty(tabId)) 
			continue;

		if (eQ.simpleTabs.list[tabId]) 
		{
			var tabs=document.getElementById(eQ.config.simpleTabs.idFormats.tabs.format(tabId)).getElementsByTagName("LI");
			tabs[eQ.simpleTabs.historyList[tabId]].onclick(
				{
					_type: 'click',
					target: tabs[eQ.simpleTabs.historyList[tabId]]
				}
			);
		}
	}
};

eQ.simpleTabs.adjustHeight=function(contentArea)
{
	var element=contentArea.parentNode;
	if (element.eQSimpleTabs.dontAutoResize) 
	{
		contentArea.style.height='auto';
		return false;
	}
	var footer=element.getElementsByTagName("div");
	footer=footer[footer.length-1];
	contentArea.style.height=(element.clientHeight - 24/*total title height*/ - ((footer.style.display!='none')?footer.offsetHeight:0)) + 'px';
};

eQ.simpleTabs.tabClickHandler=function(event)
{
	var tab=event.target;
	while (tab && tab.tagName!='LI')
		tab=tab.parentNode;

	if (tab.parentNode.parentNode.eQSimpleTabs.selectedTab >= 0) 
	{
		var selectedTab = tab.parentNode.getElementsByTagName("LI")[tab.parentNode.parentNode.eQSimpleTabs.selectedTab];
		if (selectedTab==tab)
			return;
		selectedTab.className = aV.DOM.removeClass(selectedTab, eQ.config.simpleTabs.classNames.selected);
	}
	
	if (tab.parentNode.parentNode.AJAXLoader)
		aV.AJAX.destroyRequestObject(tab.parentNode.parentNode.AJAXLoader);
	
	tab.parentNode.parentNode.eQSimpleTabs.selectedTab = tab.tIndex;
	aV.DOM.addClass(tab, eQ.config.simpleTabs.classNames.selected);
	
	var footer=tab.parentNode.parentNode.getElementsByTagName("div");
	footer=footer[footer.length-1];
	if (tab.getAttribute("hrefmore"))
	{
		footer.getElementsByTagName('a')[0].href=tab.getAttribute("hrefmore");
		footer.style.display='';
	}
	else
		footer.style.display='none';

	var address=tab.getAttribute("href");
	if (tab.parentNode.parentNode.eQSimpleTabs.hrefSuffix) 
		address += ((address.indexOf('?')==-1)?'?':'&') + tab.parentNode.parentNode.eQSimpleTabs.hrefSuffix;
	
	aV.DBGrid.clearAll();
	tab.parentNode.parentNode.AJAXLoader=aV.AJAX.loadContent(
		address,
		eQ.config.simpleTabs.idFormats.contentArea.format(tab.parentNode.parentNode.tabId),
		eQ.simpleTabs._onContentLoadedHandler
	);
};

eQ.simpleTabs._onContentLoadedHandler=function(contentElement)
{
	eQ.simpleTabs.adjustHeight(contentElement);
	if (contentElement.parentNode.eQSimpleTabs.onLoad)
		contentElement.parentNode.eQSimpleTabs.onLoad(contentElement.parentNode);
};

eQ.simpleTabs._checkElement=function(element)
{
	return (eQ.config.simpleTabs.allowedTags.indexOf(element.tagName)>-1)
};

eQ.simpleTabs._setElement=function(element)
{
//	if (element.eQSimpleTabs.selectedTab || !element.eQSimpleTabs.enabled)
//		return;
	if (element.tabId===undefined)
		element.tabId=eQ.simpleTabs.list.push(element)-1;

	var divs=element.getElementsByTagName('DIV');
	var ul=element.getElementsByTagName('UL')[0];
	var classNameMatcher=new RegExp("\\s*" + eQ.config.simpleTabs.classNames.content, "");
	for (var i = 0; i < divs.length; i++) 
	{
		if (divs[i].className.match(classNameMatcher)) 
		{
			divs[i].id=eQ.config.simpleTabs.idFormats.contentArea.format(element.tabId);
			break;
		}
	}

	ul.id=eQ.config.simpleTabs.idFormats.tabs.format(element.tabId);
	var tabs=ul.getElementsByTagName("LI");
	for (var i = 0; i < tabs.length; i++) 
	{
		tabs[i].tIndex=i;
		aV.Events.add(tabs[i], 'click', eQ.simpleTabs.tabClickHandler);
		if (i==(element.eQSimpleTabs.initialTab || 0))
			tabs[i].onclick({_type: "click", target: tabs[i]});
	}
};

eQ.simpleTabs.init=function()
{
	if (eQ.simpleTabs._initialized)
		return;
	
	eQ.simpleTabs._initialized=true;
	aV.aParser.assignAttributesFromFile(
		eQ.config.simpleTabs.ruleFile,
		'eQSimpleTabs',
		eQ.simpleTabs._checkElement,
		eQ.simpleTabs._setElement
	);
};

if (!eQ.config.simpleTabs)
	eQ.config.simpleTabs={};

eQ.config.simpleTabs.unite(
	{
		ruleFile: 'eQSimpleTabsRules.txt',
		allowedTags: ["DIV"],
		classNames:
		{
			content: 'content',
			selected: 'selected'
		},
		history:
		{
			active: true,
			key: 'eQSimpleTabs'
		},
		idFormats:
		{
			contentArea: 'eQsimpleTabs-%s-contentArea',
			tabs: 'eQsimpleTabs-%s-tabs'
		}
	}
);

aV.Events.add(aV.History, "change", eQ.simpleTabs._historyOnChangeHandler);
aV.Events.add(window, "load", eQ.simpleTabs.init);