var gintListenCount = 0;

function PageInit()
{
	var s = document.getElementsByTagName('LI');
	var i;

	for (i = 0; i < s.length; ++i) {
		if (s[i].className == 'DesignQuestion') {
			Listen(s[i], 'click', 'QuestionHandler');
		}
	}
}

function GetAnswer(id)
{
	var aArr = document.getElementsByName('AnswerText');
	var a;
	var i;

	for (i = 0; i < aArr.length; ++i) {
		a = aArr[i];
		if (a.id.length > 1 && a.id.substring(1) == id.substring(1)) {
			return(a.value);
		}
	}
	return(null);
}

function QuestionHandler(e)
{
	var q = GetEventSource(e);
	var a = document.getElementById('Answers');
	var t;

	if (e) {
		RemoveChildren(a);
		t = document.createTextNode(GetAnswer(q.id));
		a.appendChild(t);
	}
}

function RemoveChildren(o)
{
	var c;
	var t;

	for (c = o.firstChild; c; c = c.nextSibling) {
		RemoveChildren(c);
		o.removeChild(c);
	}
}

function Listen(objTarget, strEventType, strFuncName)
{
	var strAddListener;
	var boolError = false;

	strFuncName = new String(strFuncName);
	strEventType = strEventType.replace(/^on/i, '');

	++gintListenCount;

	if (objTarget) {
		// Mozilla
		if (objTarget.addEventListener) {
			try {
				// We have to use eval() here because we can't pass, as the second
				// argument to addEventListener, a variable containing the name
				// of the handler.

				eval('objTarget.addEventListener(strEventType, ' + strFuncName + ', false);');
			}
			catch (e) {
				boolError = true;
				DoPrint(
					'<div'
					+ ' style="color: maroon; background-color: yellow; padding: 0px; margin: 0px; border-width: none;"'
					+ '>'
					+ e.name
					+ ': '
					+ e.message
					+ '. '
					+ 'Could not register function '
					+ strFuncName
					+ ' for event '
					+ strEventType
					+ '; count is '
					+ gintListenCount
					+ '; target type is '
					+ typeof(objTarget)
					+ '; target tag is '
					+ objTarget.tagName
					+ '; target value is '
					+ objTarget.value
				);
				DoPrint(
					'<span style="color: aqua; background-color: navy;>"'
					+ '[Error '
					+ e.name
					+ ': '
					+ e.message
					+ ']</span>'
				);
				DoPrint(
					'</div>'
				);
			}
		}
		// IE
		if (objTarget.attachEvent) {
			eval('objTarget.attachEvent("on' + strEventType + '", ' + strFuncName + ');');
		}
	}
}

function UnListen(objTarget, strEventType, strFuncName)
{
	if (objTarget) {
		if (objTarget.removeEventListener) {
			objTarget.removeEventListener(strEventType, strFuncName, false);
		}
		if (objTarget.detachEvent) {
			objTarget.detachEvent('on' + strEventType, strFuncName);
		}
	}
}

function GetEventSource(e)
{
	// IE
	if (e.srcElement) {
		return(e.srcElement);
	}
	// Firefox
	if (e.target) {
		return(e.target);
	}
	return(null);
}


// This is needed to keep the event from percolating
// to the target element's container.
//
function CancelEventBubble(e)
{
	if (e) {
		e.cancelBubble = true;
		if (e.stopPropagation) {
			e.stopPropagation();
		}
	}
}

