
function objForum (id, name, urlpath, newposts, children)
{
	this.id = id;
	this.name = name;
	this.urlpath = urlpath;
	this.newposts = newposts;
	
	if (children) this.children = children;
	else this.children = new Array();
	
	this.draw = objForum_draw;
}

function objForum_draw (level, parent)
{
	var haveChildren = (this.children && this.children.length > 0);
	var indent = 19 * level;
	var postimg = "/styles/list-off.gif";
	var postalt = "No new posts since your last visit";
	var display = "block";
	var plusminus = plusminus_plus;
	
	var forumstr = "";
	
	if (level < 1)
	{
		forumstr += "<div class='forumlist_line_top'>&nbsp;</div><div class='forumlist_line_bottom'>&nbsp;</div>";
	}
	
	forumstr += "<div id='forumlist_item"+this.id+"' parent='"+parent+"' class='forumlist_item' style='padding-left:"+indent+"px'><nobr>";
	
	if (haveChildren)
	{
		if (level >= depth)
		{
			display   = "none";
			plusminus = plusminus_plus;
		}
		else
		{
			plusminus = plusminus_minus;
		}

		forumstr += "<img src='"+plusminus+"' id='forumlist_plusminus"+this.id+"' width=11 height=11 align=absmiddle border=0 hspace=0 onClick='forumlist_switch("+this.id+")' style='cursor:pointer'>";
	}
	else
	{
		forumstr += "<img src='/images/sizer.gif' width=11 height=11 align=absmiddle hspace=0>";
	}
	
	if (this.newposts > 0)
	{
		postimg = "/styles/list-on.gif";
		postalt = "New posts since your last visit";
	}
	else if (this.newposts < 0)
	{
		postimg = "/styles/list-cat.gif";
		postalt = "Category";
	}
	
	forumstr += "<img src='"+postimg+"' alt='"+postalt+"' width=15 height=15 align=absmiddle hspace=4 vspace=2>";
	
	if (this.id == forum_selected) forumstr += "<b>";
	forumstr += "<a href='/forum/"+this.urlpath+"/?s="+sessid+"' class='forumlist_link' title='"+this.name+"'>"+this.name+"</a>";
	if (this.id == forum_selected) forumstr += "</b>";
	
	forumstr += "</nobr></div>";
	
	if (haveChildren)
	{
		forumstr += "<div id='forumlist_item"+this.id+"_children' style='display:"+display+"'>";
		
		for (var i=0; i < this.children.length; i++)
		{
			forumstr += this.children[i].draw(level+1, this.id);
		}
		
		forumstr += "</div>";
	}
	
	return forumstr;
}

function forumlist_switch (id)
{
	var button = document.getElementById('forumlist_plusminus'+id);
	var div    = document.getElementById('forumlist_item'+id+'_children');
	if (!button || !div) return false;

	if (div.style.display == "block")
	{
		forumlist_contract(id);
	}
	else
	{
		forumlist_expand(id);
	}	
}

function forumlist_expand (id)
{
	var button  = document.getElementById('forumlist_plusminus'+id);
	var div     = document.getElementById('forumlist_item'+id+'_children');
	var maindiv = document.getElementById('forumlist_item'+id);
	if (!button || !div || !maindiv) return false;
	
	div.style.display = "block";
	button.src = plusminus_minus;
	
	if (maindiv.parent) forumlist_expand(maindiv.parent);
}

function forumlist_contract (id)
{
	var button = document.getElementById('forumlist_plusminus'+id);
	var div    = document.getElementById('forumlist_item'+id+'_children');
	if (!button || !div) return false;
	
	div.style.display = "none";
	button.src = plusminus_plus;
}

function forumlist_doslide ()
{
	forumlist_slide();
}

function forumlist_slide ()
{
	var flc = document.getElementById('forumlist_container');
	if (!flc) return false;
	
	if (flc.style.pixelLeft)
	{
		var left = flc.style.pixelLeft;
	}
	else
	{
		var left = parseInt(flc.style.left, 10);
	}
	
	if (forumlist_sliding) return true;
	else forumlist_sliding = 1;
	
	if (left == 0)
	{
		forumlist_hide(left - forumlist_stepsize);
	}
	else
	{
		forumlist_show(left + forumlist_stepsize);
	}
}

function forumlist_hide (pos)
{
	var flc = document.getElementById('forumlist_container');
	if (!flc) return false;
	
	if (flc.style.pixelLeft)
	{
		var left = flc.style.pixelLeft;
	}
	else
	{
		var left = parseInt(flc.style.left, 10);
	}
	if (flc.style.pixelWidth)
	{
		var width = flc.style.pixelWidth;
	}
	else
	{
		var width = parseInt(flc.style.width, 10);
	}
	var newleft = forumlist_minleft;
	
	if (pos < newleft) pos = newleft;
	
	if (flc.style.pixelLeft)
	{
		flc.style.pixelLeft = pos;
	}
	else
	{
		flc.style.left = pos+"px";
	}
	
	if (pos > newleft)
	{
		var newpos  = pos - forumlist_stepsize;
		if (newpos < newleft) newpos = newleft;
		
		if (newpos >= newleft)
		{
			window.setTimeout("forumlist_hide("+newpos+");", 30);
		}
	}
	else
	{
		forumlist_sliding = 0;
	}
}

function forumlist_show (pos)
{
	var flc = document.getElementById('forumlist_container');
	if (!flc) return false;
	
	if (flc.style.pixelLeft)
	{
		var left = flc.style.pixelLeft;
	}
	else
	{
		var left = parseInt(flc.style.left, 10);
	}
	if (flc.style.pixelWidth)
	{
		var width = flc.style.pixelWidth;
	}
	else
	{
		var width = parseInt(flc.style.width, 10);
	}
	var newleft = 0;
	
	if (pos > newleft) pos = newleft;
	
	if (flc.style.pixelLeft)
	{
		flc.style.pixelLeft = pos;
	}
	else
	{
		flc.style.left = pos+"px";
	}
	
	if (pos < newleft)
	{
		var newpos  = pos + forumlist_stepsize;
		if (newpos > newleft) newpos = newleft;
		
		if (newpos <= newleft)
		{
			window.setTimeout("forumlist_show("+newpos+");", 30);
		}
	}
	else
	{
		forumlist_sliding = 0;
	}
}

function forumlist_init ()
{
	if (typeof(forums_data) != "undefined" && forums_data == 1)
	{
		window.clearInterval(forumlist_loadinterval);
		
		forums_load();
		
		var forumstr = "<table border=0 cellspacing=0 cellpadding=0>\n"
			+ "<tr valign=top>\n"
			+ "<td bgcolor='#333333'><img src='/styles/list-title.gif' width=80 height=19 alt='Favourite Forums' border=0>"
			+ "<a href='/usercp.php?s="+sessid+"#favforums'><img src='/styles/list-organise.gif' width=65 height=19 alt='Organise your Favourite Forums list' border=0></a>";
		
		if (forum_selected)
			forumstr += "<a href='/member2.php?s="+sessid+"&action=addsubscription&forumid="+forum_selected+"'><img src='/styles/list-add.gif' width=44 height=19 alt='Add current forum to your Favourite Forums list' border=0></a>";
		
		forumstr += "<br>\n"
			+ "<div id=forumlist class=forumlist></div></td>\n"
			+ "<td width=4 bgcolor='#333333'><img src='/images/sizer.gif' width=4 height=1></td>\n"
			+ "<td width=11 background='/styles/list-right-bg.gif'>"
			+ "<img src='/styles/list-tab.gif' width=11 height=22 border=0 alt='Click to show or hide your Favourite Forums list' onClick='forumlist_doslide();' style='cursor:pointer'></td>"
			+ "</tr>\n"
			+ "<tr>\n"
			+ "<td bgcolor='#333333'><img src='/images/sizer.gif' width=1 height=4></td>\n"
			+ "<td width=15 colspan=2 rowspan=2><img src='/styles/list-bottom-right.gif' width=15 height=5></td>\n"
			+ "</tr>\n"
			+ "<tr>\n"
			+ "<td bgcolor='#000000'><img src='/images/sizer.gif' width=1 height=1></td>\n"
			+ "</tr>\n"
			+ "</table>";
		
		var flc = document.getElementById('forumlist_container');
		flc.innerHTML = forumstr;
		
		forumstr = "";
		for (var i=0; i < forums.length; i++)
		{
			forumstr += forums[i].draw(0, 0);
		}
		var fl = document.getElementById('forumlist');
		fl.innerHTML = forumstr;
		
		if (forum_selected)
		{
			var forum_selected_item = document.getElementById('forumlist_item'+forum_selected);
			if (forum_selected_item && forum_selected_item.parent)
			{
				forumlist_expand(forum_selected_item.parent);
			}
			forumlist_expand(forum_selected);
		}
	}
}

function forumlist_reposition ()
{
	var flc = document.getElementById('forumlist_container');
	if (!flc || !forumlist_pos_top) return true;
	
	var offset_top = 0;
	if (window.innerHeight)
		offset_top = window.pageYOffset;
	else if (document.documentElement && document.documentElement.scrollTop)
		offset_top = document.documentElement.scrollTop;
	else if (document.body)
		offset_top = document.body.scrollTop;
	
	if (flc.style.pixelTop)
	{
		flc.style.pixelTop = (offset_top+forumlist_pos_top);
	}
	else if (flc.style.top)
	{
		flc.style.top = (offset_top+forumlist_pos_top)+"px";
	}
}

var depth  = 3;
var plusminus_plus  = "/styles/list-plus.gif";
var plusminus_minus = "/styles/list-minus.gif";

/*if (navigator.appName.indexOf("Internet Explorer") != -1)
{
	// compensate for MSIE quirks-mode box model
	var forumlist_minleft  = -217;
}
else
{*/
	var forumlist_minleft  = -225;
/*}*/

var forumlist_stepsize = 50;
var forumlist_sliding  = 0;
var forumlist_loadinterval;

window.onscroll=forumlist_reposition;

if (flc = document.getElementById('forumlist_container'))
{
	forumlist_loadinterval = window.setInterval("forumlist_init();", 100);
	flc.style.left = forumlist_minleft;
}

