function openSection(id, dir)
{
	if(FIND(id))
	{
		if(dir)
			FIND(id).style.display = "block";
		else
			FIND(id).style.display = "none";
	}
	else
	{
		alert("Wrong section ID!")
	}
}

function isSectionOpen(id)
{
	if(FIND(id))
	{
		return FIND(id).style.display == "block" ? true : false ;
	}
	else
	{
		alert("Wrong section ID!")
	}
}


var duration = .15;
var officerDuration = .2;
var defaultTimeout = .50;
var officerTimeout = 500;
var aTweenIDListeners = new Array();


function tweenSection(id, dir)
{
	addTweenIDs(id);
					
	if(!aTweenIDListeners[getTweenID(id)].doTween) // delay action when tweening
	{
		setTweenSTimeout(id, dir, ""); return;
	}
	
	if(((dir && !isSectionOpen(id)) || (!dir && isSectionOpen(id))) && aTweenIDListeners[getTweenID(id)].doTween)
	{
		aTweenIDListeners[getTweenID(id)].ot = new OpacityTween(FIND(id), dir?Tween.regularEaseOut:Tween.regularEaseIn, dir?0:100, !dir?0:100, duration);
		aTweenIDListeners[getTweenID(id)].ot.onMotionStarted = function(){aTweenIDListeners[getTweenID(id)].doTween = false; if(dir){openSection(id, true);};};
		aTweenIDListeners[getTweenID(id)].ot.onMotionFinished = function(){aTweenIDListeners[getTweenID(id)].doTween = true; if(!dir){openSection(id, false);};};
		aTweenIDListeners[getTweenID(id)].ot.start();
	}
}

function tweenOfficer(id, lBegin, lFinish, wBegin, wFinish, dir)
{
	addTweenIDs(id);
					
	if(!aTweenIDListeners[getTweenID(id)].doTween) // delay action when tweening
	{
		setTweenCTimeout(id, lBegin, lFinish, wBegin, wFinish, dir, ""); return;
	}
	
	if(((dir && !isSectionOpen(id)) || (!dir && isSectionOpen(id))) && aTweenIDListeners[getTweenID(id)].doTween)
	{
		aTweenIDListeners[getTweenID(id)].lt = new Tween(FIND(id).style, "left", dir?Tween.regularEaseOut:Tween.regularEaseIn, dir?lBegin:lFinish, !dir?lBegin:lFinish, officerDuration, "px");
		aTweenIDListeners[getTweenID(id)].wt = new Tween(FIND(id).style, "width", dir?Tween.regularEaseOut:Tween.regularEaseIn, dir?wBegin:wFinish, !dir?wBegin:wFinish, officerDuration, "px");
		
		aTweenIDListeners[getTweenID(id)].ot = new OpacityTween(FIND(id), dir?Tween.regularEaseOut:Tween.regularEaseIn, dir?0:100, !dir?0:100, officerDuration);
		aTweenIDListeners[getTweenID(id)].ot.onMotionStarted = function(){aTweenIDListeners[getTweenID(id)].doTween = false; if(dir){openSection(id, true);};};
		aTweenIDListeners[getTweenID(id)].ot.onMotionFinished = function(){aTweenIDListeners[getTweenID(id)].doTween = true; if(!dir){openSection(id, false);};};
		
		aTweenIDListeners[getTweenID(id)].lt.start();
		aTweenIDListeners[getTweenID(id)].wt.start();
		aTweenIDListeners[getTweenID(id)].ot.start();
	}
}

function addTweenIDs(id)
{
	for(var i=0; i<aTweenIDListeners.length; i++) if(id == aTweenIDListeners[i]) return;
	
	aTweenIDListeners.push("item" + i);
	aTweenIDListeners[i] = new Object();
	aTweenIDListeners[i].id = id;
	aTweenIDListeners[i].ot = new Object();
	aTweenIDListeners[i].lt = new Object();
	aTweenIDListeners[i].wt = new Object();
	aTweenIDListeners[i].doTween = true;
	aTweenIDListeners[i].timeoutTween = false;
}
function getTweenID(id)
{
	for(var i=0; i<aTweenIDListeners.length; i++) if(id == aTweenIDListeners[i].id) return i;
	return false;
}
function clearTweenTimeout(id)
{
	if(typeof(aTweenIDListeners[getTweenID(id)]) != "undefined" && aTweenIDListeners[getTweenID(id)].timeoutTween)
		clearTimeout(aTweenIDListeners[getTweenID(id)].timeoutTween);
}
function setTweenSTimeout(id, dir, delay)
{
	clearTweenTimeout(id);
	
	if(typeof(aTweenIDListeners[getTweenID(id)]) != "undefined")
		aTweenIDListeners[getTweenID(id)].timeoutTween = setTimeout("tweenSection('" + id + "', " + dir + ")", (delay==""?defaultTimeout:delay));
}
function setTweenCTimeout(id, lBegin, lFinish, wBegin, wFinish, dir, delay)
{
	clearTweenTimeout(id);
	
	if(typeof(aTweenIDListeners[getTweenID(id)]) != "undefined")
		aTweenIDListeners[getTweenID(id)].timeoutTween = setTimeout("tweenOfficer('" + id + "', " + lBegin + ", " + lFinish + ", " + wBegin + ", " + wFinish + ", " + dir + ")", (delay==""?defaultTimeout:delay));
}



