
var g_clExtending;
var g_clRetracting;
var g_iStartTime;
var g_iTransitionTime = 200; /* 0.6 Seconds */
var g_clAccordion;
var g_iTimeEquationBased = true;
var g_iNonEquationBasedStep = 5;
var g_bReady = false;

function accordion_transition()
{
	var clDate = new Date();
	var iTime = clDate.getTime();
	var iDiff = iTime - g_iStartTime;
	var bExtended = false;
	var bRetracted = false;
	var bDone = false;
	var iExtendHeight;
	var iRetractHeight;
	
	if (iDiff > g_iTransitionTime)
		iDiff = g_iTransitionTime;
	
	if (g_clExtending)
	{
		if (!g_iTimeEquationBased)
		{
			iExtendHeight = parseInt(g_clExtending._clHolder.style.height);
			
			iExtendHeight += g_iNonEquationBasedStep;
			
			if (iExtendHeight >= g_clExtending._clContent.offsetHeight)
			{
				iExtendHeight = g_clExtending._clContent.offsetHeight;
				bExtended = true;
			}
			
			if (!g_clRetracting && bExtended)
				bDone = true;
		}
		else
		{
			iExtendHeight = (iDiff / g_iTransitionTime) * parseInt(g_clExtending._clContent.offsetHeight);
		}
		
		g_clExtending._clHolder.style.height = iExtendHeight.toString() + "px";
	}
	else
		bExtended = true;

	if (g_clRetracting)
	{
		if (!g_iTimeEquationBased)
		{
			iRetractHeight = parseInt(g_clRetracting._clHolder.style.height);
			iRetractHeight -= g_iNonEquationBasedStep;
			
			if (iRetractHeight <= 0)
			{
				iRetractHeight = 0;
				bRetracted = true;
			}
		}
		else
			iRetractHeight = (1.0 - (iDiff / g_iTransitionTime)) * parseInt(g_clRetracting._clContent.offsetHeight);
		
		g_clRetracting._clHolder.style.height = iRetractHeight.toString() + "px";
		
		if (bExtended && bRetracted)
			bDone = true;
	}


	if (!g_iTimeEquationBased)
	{
		if (bDone)
			accordion_endtransition(g_clAccordion, g_clExtending);
		else
			setTimeout("accordion_transition()", 1);
	}
	else if (iDiff == g_iTransitionTime)
		accordion_endtransition(g_clAccordion, g_clExtending);
	else
		setTimeout("accordion_transition()", 1);
}

function accordion_endtransition(clAccordion, clClickedEntry)
{
	if (clAccordion._clSelected)
		clAccordion._clSelected._clHolder.style.height = "0px";
	
	clAccordion._clSelected = clClickedEntry;
	
	g_bReady = true;
}

function accordion_slideout(sAccordionId, sEntryId)
{
	if (!g_bReady)
		return;
	
	var clAccordion = document.getElementById(sAccordionId);
	var clClickedEntry = document.getElementById(sEntryId);

	g_clAccordion = clAccordion;
		
	if (clClickedEntry == clAccordion._clSelected)
	{
		g_clExtending = null;
		g_clRetracting = clClickedEntry;
	}
	else
	{
		g_clExtending = clClickedEntry;
		g_clRetracting = clAccordion._clSelected;
	}
		
	g_bReady = false;
	
	clClickedEntry._clHolder.style.height = "0px";
	
	g_iStartTime = (new Date()).getTime();
	accordion_transition();
}

function init()
{
	var clAccordion;		
	var i;
	var nAccordions = 0;

	while (1)
	{
		nAccordions++;
		sAccordionId = "accordion" + nAccordions.toString();
		clAccordion = document.getElementById(sAccordionId);

		if (!clAccordion)
			break;

		i = 0;

		sNewHTML = clAccordion.innerHTML;
		sNewHTML = sNewHTML.replace(/\r/g, "");
		sNewHTML = sNewHTML.replace(/\n/g, "");
		sNewHTML = sNewHTML.replace(/\t/g, "");

		clAccordion.innerHTML = sNewHTML;

		for (var clEntry = clAccordion.firstChild; clEntry != null; clEntry = clEntry.nextSibling)
		{
			clAccordion._clSelected = null;
			
			i++;

			var clLink = clEntry.firstChild;

			clHolder = document.createElement("div");
			clHolder.className = "accordion_content_scroll";
			
			clEntry.appendChild(clHolder);
			clEntry.className = "accordion_entry";

			clEntry._clContent = clLink.nextSibling;
			
			if (!clEntry._clContent.innerHTML)
				clEntry._clContent = clEntry._clContent.nextSibling;

			clEntry._clContent.className = "accordion_content";

			sNewHTML = clEntry._clContent.innerHTML;
			sNewHTML = sNewHTML.replace(/\r/g, "");
			sNewHTML = sNewHTML.replace(/\n/g, "");
			sNewHTML = sNewHTML.replace(/\t/g, "");

			

			var clIEFix = document.createElement("div");
			clIEFix.innerHTML = sNewHTML;
			
			clHolder.style.height = "0px";
			clHolder.appendChild(clIEFix);
			
			clEntry._clHolder = clHolder;

			clLink.className = "accordion_link";
			clLink.href = "javascript:void(0)";
			clLink.onclick = new Function("accordion_slideout('" + sAccordionId + "', '" + clEntry.id + "');");
		
		}
	}
	
	g_bReady = true;
}
