// JavaScript Document

function setupQA() {
	var dls = document.getElementsByTagName('DL');
	for( i=0; i<dls.length; i++ ) {
		if( elementHasClassName(dls[i],'self-assessment') ) {
			var dds = dls[i].getElementsByTagName('DD');
			for( j=0; j<dds.length; j++ ) {

				// Create links to show/hide the DD -- as separate DD
				var ddTitle = (dds[j].getAttribute('title')) ? dds[j].getAttribute('title') : 'answer';
				
				var ddShowLink = document.createElement('A');
				ddShowLink.appendChild(document.createTextNode('Show ' + ddTitle));
				addEvent(ddShowLink,'click',showAnswer);
				ddShowLink.style.display = 'show';
				
				var ddLabel = document.createElement('DD');
				ddLabel.className = 'ddLabel show'; 
				ddLabel.appendChild(ddShowLink);
				dls[i].insertBefore(ddLabel,dds[j]);
				j++; // compensate for the fact that we just added an extra DD!
				
				// Hide the answer DD
				dds[j].style.display = 'none';
				
			}
		}
	}
	
}

function findDT(node) {
	// Finds the DT of a DD. Assumes only one.
	if( node.nodeName != 'DD' ) return null;
	
	while( node.nodeName != 'DT' ) {
		node = node.previousSibling;
	}
	return node;
}

function findDD(node) {
	// Finds the DD of a DT. Assumes only one.
	if( node.nodeName != 'DT' ) return null;
	
	while( node.nodeName != 'DD' || node.className == 'ddLabel' ) {
		node = node.nextSibling;
	}
	return node;
	
}



function showAnswer(evt) {
	// display: block on the dd; replace "show" with "hide" in label; remove event; add "hide" event
	if (!evt) evt = window.evt // for IE/Win
	var node = findEventOwner(evt);	// link
	var ddLabel = node.parentNode; // DD label
	var dd = ddLabel.nextSibling;
	
	if( ddLabel.className.indexOf('show') != -1 ) {
		dd.style.display = 'block';
		node.firstChild.replaceData(0,4,'Hide');
		ddLabel.className = 'ddLabel hide';
	}
	else {
		dd.style.display = 'none';
		node.firstChild.replaceData(0,4,'Show');
		ddLabel.className = 'ddLabel show';
	}
	return;
}

function hideAnswer(evt) {
	// display: none on the dd; and replace "hide" with "show" in label; remove event; add "show" event
	if (!evt) evt = window.evt // for IE/Win
	var node = findEventOwner(evt);	
	var ddLabel = node.parentNode;
	var dd = ddLabel.nextSibling;
	dd.style.display = 'none';
	node.style.display = 'none';
	node.previousSibling.style.display = 'block';
	return;
}