//
// @copyright X-Cell Communications GmbH
// @author R. Backes
// @date 02/2010
//

var tmstmp = function()
{
	var now = new Date();
	return (now.getTime() / 1000.0);
}

var toCallFunctionsAfterInit = Array();

var setHtmlClass = function(myNode, className)
{
	myNode.setAttribute('class', className);
	myNode.setAttribute('className', className);
};

var handleSlideMenuItemClick = function(myNode)
{
	var item = myNode;
	var list = item.smList;
	var dur = list.smDuration;
	var nowTime = (new Date()).getTime();
	if(list.smBlockTime < nowTime)
	{
		list.smBlockTime = nowTime + dur.ms + 100;
		var oldItem = list.smActiveItem;
		var newItem = item;
		if(oldItem != newItem)
		{
			if(oldItem != null)
			{
				Effect.BlindUp(oldItem.smText, { duration: dur.s });
			}
			
			list.smActiveItem = newItem;
			Effect.BlindDown(newItem.smText, { duration: dur.s });
		}
	}
};

var initSlideMenuHtmlFunction = function(myNode)
{
	switch(myNode.getAttribute('data-slideMenu'))
	{
		case "list":
		{
			myNode.smActiveItem = null;
			myNode.smBlockTime = 0;
			
			myNode.smDuration = new Object;
			myNode.smDuration.ms = parseInt(myNode.getAttribute('data-smDuration'));
			myNode.smDuration.s = myNode.smDuration.ms / 1000.0;
			
			myNode.smTitleClass = myNode.getAttribute('data-smTitleClass');
			
			break;
		}
		case "text":
		{
			myNode.smList = myNode.parentNode.parentNode;
			myNode.smItem = myNode.parentNode;
			myNode.smItem.smText = myNode;
			
			myNode.style.display = 'none';
			break;
		}
		case "title":
		{
			myNode.smList = myNode.parentNode.parentNode;
			myNode.smItem = myNode.parentNode;
			myNode.smItem.smTitle = myNode;
			
			setHtmlClass(myNode, myNode.smList.smTitleClass);
			myNode.onclick = function(){ handleSlideMenuItemClick(myNode.smItem); };
			break;
		}
		case "item":
		{
			myNode.smList = myNode.parentNode;

			if(myNode.getAttribute('data-smActivateMeOnLoad') === 'true') toCallFunctionsAfterInit.push(function(){  handleSlideMenuItemClick(myNode); });
			break;
		}
		default: break;
	}
};

var handleContentDisplayerClick = function(myNode)
{
	var item = myNode;
	
	var group = item.cdGroup;
	var title = item.cdTitle;
	var content = item.cdContent;
	var target = $(item.cdTargetId);
	
	if(target.activeCdItem != null)
	{
		setHtmlClass(target.activeCdItem.cdTitle, group.cdTitleClass);
	}
	
	target.activeCdItem = item;
	setHtmlClass(title, group.cdActiveTitleClass);
	
	target.innerHTML = content.innerHTML;
};

var initContentDisplayerHtmlFunction = function(myNode)
{
	switch(myNode.getAttribute('data-contentDisplayer'))
	{
		case "group":
		{
			var titleClass = myNode.getAttribute('data-cdTitleClass');
			var activeTitleClass = myNode.getAttribute('data-cdActiveTitleClass');
			
			myNode.cdTitleClass = titleClass;
			
			if(activeTitleClass != null)
			{
				myNode.cdActiveTitleClass = activeTitleClass;
			}
			else
			{
				myNode.cdActiveTitleClass = titleClass;
			}
			
			break;
		}
		case "item":
		{
			var item = myNode;
			item.cdGroup = item.parentNode;
			item.cdTargetId = 'contentDisplayerTarget';
			
			if(item.getAttribute('data-cdActivateMeOnLoad') === 'true') toCallFunctionsAfterInit.push(function(){ handleContentDisplayerClick(item); });
			break;
		}
		case "title":
		{
			var title = myNode;
			title.cdItem = title.parentNode;
			title.cdGroup = title.cdItem.parentNode;
			title.cdItem.cdTitle = myNode;
			
			title.href = '#';
			title.onclick = function(){handleContentDisplayerClick(title.cdItem); return false;};
			setHtmlClass(title, title.cdGroup.cdTitleClass);
			break;
		}
		case "content":
		{
			var content = myNode;
			content.cdItem = content.parentNode;
			content.cdItem.cdContent = content;
			
			content.style.display = 'none';
			break;
		}
		default: break;
	}
};

var specialHtmlFunctionsHandlers = Array();
specialHtmlFunctionsHandlers.push(initSlideMenuHtmlFunction);
specialHtmlFunctionsHandlers.push(initContentDisplayerHtmlFunction);


var checkAllNodesForHtmlFunctions = function(myNodes)
{
	toCallFunctionsAfterInit = Array();
	checkNodesForHtmlFunctionsRecursive(myNodes);
	for(var i=0; i < toCallFunctionsAfterInit.length; i++)
	{
		toCallFunctionsAfterInit[i]();
	}
}


var checkNodesForHtmlFunctionsRecursive = function(myNodes)
{
	for(var i=0; i<myNodes.length; i++)
	{
		var myNode = myNodes[i];
		
		// First node itself (so we can use parent attributes)
		if(myNode.getAttribute)
		{
			for(var u=0; u<specialHtmlFunctionsHandlers.length; u++)
			{
				specialHtmlFunctionsHandlers[u](myNode);
			}
		}
		
		// Then all childs
		checkNodesForHtmlFunctionsRecursive(myNode.childNodes);
	}
};