function addEvent(obj, evType, fn){
 if (obj.addEventListener){
   obj.addEventListener(evType, fn, false);
   return true;
 } else if (obj.attachEvent){
   var r = obj.attachEvent("on"+evType, fn);
   return r;
 } else {
   return false;
 }
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

addEvent(window, "load", initExpanders);

function initExpanders() {

	expanders = getElementsByClass("expander", document, "div");

	for (var i = 0; i < expanders.length; i++) {
		var labelText = getElementsByClass("label-text", expanders[i], "div");
		expanders[i].labelText = labelText[0].innerHTML;
		var collapsePlus = getElementsByClass("collapse-plus", expanders[i], "div");
		if (collapsePlus[0]) {
			collapsePlus = collapsePlus[0].getElementsByTagName("a");
			collapsePlus[0].id = i;
			collapsePlus[0].onclick = expanderOnclick;
		}
	}

}

function expanderOnclick() {
	var content = getElementsByClass("content", expanders[this.id], "div");
	var expandImg = this.getElementsByTagName("img");
	if (content.length > 0) {
		expanders[this.id].removeChild(content[0]);
		expandImg[0].src = "/images/plus.gif";
		hideBox(expanders[this.id].labelText);
	} else {
		var contentDiv = document.createElement("div");
		contentDiv.className = "content";
		contentDiv.innerHTML = "<img src=\"/images/bigrotation2.gif\">";
		expanders[this.id].appendChild(contentDiv);
		expandImg[0].src = "/images/minus.gif";
		expandBox(expanders[this.id].labelText, this.id);
	}
	return false;
}

// This function should do a AJAX call to the server to get the content HTML
// and set the users preferences
function expandBox(labelText, id) {
	// As an example, pseudo server side call
	setTimeout("updateContent('" + id + "')", 2000);
}

// This function should do an AJAX call to the server to set the users preferences
function hideBox(labelText) {
}


// Pseudo server call back
function updateContent(id) {
	var content = getElementsByClass("content", expanders[id], "div")
	if (content.length > 0)
		content[0].innerHTML = "<h2>Poll 1</h2><h2>Poll 2</h2><h2>Poll 3</h2><div class=\"tmp-separator\"></div><div class=\"events-menu\"><a href=\"#\">View</a><span>|</span><a href=\"#\">Edit</a><span>|</span><a href=\"#\">Relate</a></div>";
}