/* Copyright (C) 2006 thinkPond.org */

function expandPre(expandLink, pre)
{
	pre.style.height = pre.scrollHeight + "px";
	pre.style.overflowY = "hidden";
	pre.style.borderStyle = "solid";
	if (expandLink !== null)
	{
		expandLink.innerHTML = "Collapse";
	}
}

function collapsePre(expandLink, pre, collapseHeight)
{
	pre.style.height = collapseHeight + "px";
	pre.style.overflowY = "scroll";
	pre.style.borderStyle = "dashed";
	if (expandLink !== null)
	{
		expandLink.innerHTML = "Expand";
	}
}

function createExpandBar()
{
	var bar = document.createElement("div");
	var barLinkHtml = '<a href="#expandtext" class="tabs">Expand</a>';
	bar.innerHTML = '<div class="expandbar">' + barLinkHtml + '</div>';
	return bar;
}

function initExpandingPre(pre, i)
{
    var collapseHeight = 150;
	pre.style.marginTop = 0;
	
    collapsePre(null, pre, collapseHeight);
	if (pre.offsetHeight >= pre.scrollHeight)
	    return;
	    
	var bar = createExpandBar();
	pre.parentNode.insertBefore(bar, pre);
	var barLinks = bar.getElementsByTagName("a");
	
	var expandLink = barLinks[0];
	var expanded = false;
	
	expandLink.onclick = function()
	{
		if (expanded)
		{
			collapsePre(expandLink, pre, collapseHeight);
		}
		else
		{
			expandPre(expandLink, pre);
		}
		expanded = !expanded;
		return false;
	};
}

function initExpandingPres()
{
	var pres = document.getElementsByTagName("pre");
	for (var i = 0; i < pres.length; ++i)
	{
		initExpandingPre(pres[i], i);
	}
}

window.onload = function()
{
    initExpandingPres();
}
