// return an array of all elements of type "tag" and class "cls"
function getElementsByClass(tag,cls)
{
    var elm, elms = document.getElementsByTagName(tag);
	var i = -1, j = 0;
	var out = [];
	while (elm = elms[++i])
	{
		if( elm.className == cls )
		{
			out[j] = elm;
			j++;
		}
	}
	return out;
}

// remove HTML tags from string "str"
function stripTags(str)
{
   return str.replace(/<([^>]+)>/g,'');
}

// Allows blog entries to be expanded / contracted by clicking the "more" link
function weblog_setup()
{
	var entries = getElementsByClass("div","weblog_post");
	var texts   = getElementsByClass("div","weblog_body");
	var ext     = getElementsByClass("div","weblog_extended");
	var mores   = getElementsByClass("img","weblog_more");
	var numChars = 300;	// number of characters to cause contraction of entry
	var H = '95px';		// height of contracted blog entry

	for (x in entries)
	{
		if ( stripTags(texts[x].innerHTML).length > numChars )
		{
			weblog_contract(x);
			mores[x].className = x;
			mores[x].onclick = weblog_toggle;
		}
	}

	function weblog_toggle()
	{
		num = this.className;
		if (entries[num].isContracted)
			weblog_expand(num);
		else
			weblog_contract(num);
	}

	function weblog_contract(num)
	{
		texts[num].style.height=H;
		texts[num].style.overflow='hidden';
		ext[num].style.padding = '2px 0 10px 0';
		ext[num].innerHTML = '[. . .]' + ext[num].innerHTML;
		entries[num].isContracted = true;
		mores[num].src='/images/site/links/buttonmore.gif';
	}

	function weblog_expand(num)
	{
		texts[num].style.height='';
		texts[num].style.overflow='';
		ext[num].style.padding = '';
		ext[num].innerHTML = ext[num].innerHTML.substring(7);
		entries[num].isContracted = false;
		mores[num].src='/images/site/links/buttonless.gif';
	}
}


