function selectAll(elementPrefix, element) {
	var checks = document.getElementsByTagName('input');
	for ( var x = 0; x < checks.length; x++) {
		if (checks[x].id == element.id
				|| (checks[x].type != 'checkbox' && checks[x].id
						.indexOf(elementPrefix) < 0))
			continue;
		if (element.checked == "checked" || element.checked == true)
			checks[x].disabled = "true";
		else
			checks[x].removeAttribute("disabled");
	}
}

function checkAll(elementPrefix, element) {
	var checks = document.getElementsByTagName('input');
	for ( var x = 0; x < checks.length; x++) {
		if (checks[x].id == element.id
				|| (checks[x].type != 'checkbox' && checks[x].id
						.indexOf(elementPrefix) < 0))
			continue;
		if (element.checked == "checked" || element.checked == true)
			checks[x].checked = "checked";
		else {
			checks[x].checked = false;
			checks[x].removeAttribute("checked");
		}
	}
}

function slidePanel(panelId, linkImageId, newImageSrc) {
	var panel = document.getElementById(panelId);
	if (panel.expanded) {
		colexp(panelId, linkImageId, newImageSrc);
		panel.expanded = false;
	} else {
		expcol(panelId, linkImageId, newImageSrc);
		panel.expanded = true;
	}
}

function expcol(panelId, linkImageId, newImageSrc) {
	switchImages(panelId, linkImageId, newImageSrc, 'colexp');
	changeOpac(0, panelId);
	document.getElementById(panelId).style.display = 'block';
	opacity(panelId, 0, 100, 1000);
}
function colexp(panelId, linkImageId, newImageSrc) {
	switchImages(panelId, linkImageId,
			document.getElementById(linkImageId).oldImage, 'expcol');
	opacity(panelId, 100, 0, 1000);
	document.getElementById(panelId).style.display = 'none';

}
function switchImages(panelId, linkImageId, newImageSrc, fName) {
	var image = document.getElementById(linkImageId);
	image.oldImage = image.src;
	image.src = newImageSrc;
}

function opacity(id, opacStart, opacEnd, millisec) {
	// speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	// determine the direction for the blending, if start and end are the same
	// nothing happens
	if (opacStart > opacEnd) {
		for (i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
			timer++;
		}
	} else if (opacStart < opacEnd) {
		for (i = opacStart; i <= opacEnd; i++) {
			setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
			timer++;
		}
	}
}

// change the opacity for different browsers
function changeOpac(opacity, id) {
	var object = document.getElementById(id);
	changeOpacity(opacity,object);
}

function changeOpacity(opacity,object) {
	object.style.opacity = (opacity / 100);
	object.style.MozOpacity = (opacity / 100);
	object.style.KhtmlOpacity = (opacity / 100);
	object.style.filter = "alpha(opacity=" + opacity + ")";
}

