addLoadListener(initExpandCollapse);
addLoadListener(enableFilterDropdown);


//Initialises items that are collapsed by default (currently used by Jobs template)
function initExpandCollapse()
{
	var modules = [document.getElementById("panel1"),	document.getElementById("panel2"), document.getElementById("panel3"), document.getElementById("panel4"), document.getElementById("panel5")];
	
	for (var i in modules)
	{
		if (modules[i] != null)
		{
			var h3s = modules[i].getElementsByTagName("h3");

			for (var i = 0; i < h3s.length; i++)
			{
				var newA = document.createElement("a");
				newA.setAttribute("href", "#");
				newA.setAttribute("title", "Expand/Collapse");
				attachEventListener(newA, "mousedown", mousedownExpandCollapse, false);
				newA.onclick = clickExpandCollapse;
				
					var newImg = document.createElement("img");
					newImg.setAttribute("src", "/images/btn-expandcollapse.gif");
					newImg.setAttribute("alt", "Expand/Collapse");
					newA.appendChild(newImg);
					
				h3s[i].appendChild(newA);

				//collapse all by default
				addClass(h3s[i].parentNode, "collapsed");
			}
		}
	}
	
	return true;
};


function enableFilterDropdown()
{
	var filterArea = document.getElementById("jobCategoryFilter");
	if(filterArea == null)
	{
		return;
	}

	if(hasClass(filterArea, "inv"))
		removeClass(filterArea, "inv");
}


//Expands or collapses panels according to the selected category name. (Currently used by Browse Jobs template.)
function filterCategoryItems(selectedCategoryName)
{
	var divTags = document.getElementsByTagName("div");
	var filterApplied = (selectedCategoryName == "All")? false : true;
	
	//Filter only tags with a 'panel' class
	for (var i in divTags)
	{
		if (divTags[i] != null)
		{
			//Only operate on panels that don't have an ID (i.e. exclude panels from Job pages)
			if(hasClass(divTags[i], "job"))
			{
				if(!filterApplied || hasClass(divTags[i], "jobCategory" + selectedCategoryName))
				{
					//Current class = selected category (or no filter applied): display
					if(hasClass(divTags[i], "inv"))
					{
						removeClass(divTags[i], "inv");
						divTags[i].style.display = "block";
					}
				}
				else
				{
					//Current class != selected category (and filter applied): hide
					if(!hasClass(divTags[i], "inv"))
					{
						addClass(divTags[i], "inv");
						divTags[i].style.display = "none";
					}
				}
			}
		}
	}
	
	return true;
};



function mousedownExpandCollapse(event)
{
	if (typeof event == "undefined")
	{
		event = window.event;
	}
	
	if (typeof event.stopPropagation != "undefined")
	{
		event.stopPropagation();
	}
	else
	{
		event.cancelBubble = true;
	}
	
	return true;
};




function clickExpandCollapse()
{
	if (!hasClass(this.parentNode.parentNode, "collapsed"))
	{
		addClass(this.parentNode.parentNode, "collapsed");
	}
	else
	{
		removeClass(this.parentNode.parentNode, "collapsed");
	}
	
	return false;
};


// Event handler for when the filter is changed.
function changeFilterDropdown()
{
	var filterDropdown = document.getElementById("jobCategoryFilterControl");
	if(filterDropdown == null)
	{
		return;
	}
	
	var selectedValue = filterDropdown.options[filterDropdown.selectedIndex].value;
	//alert(selectedValue);
	filterCategoryItems(selectedValue);
}