
function addAnswer(strAddAnswerLink, strNewAnswerTemplate, aisCorrectName) {
	// get nodes from DOM
	var addAnswerLink = YAHOO.util.Dom.get(strAddAnswerLink);
	var newAnswerTemplate = YAHOO.util.Dom.get(strNewAnswerTemplate);
	
	// copy template
	var newAnswer = newAnswerTemplate.cloneNode(true);
	newAnswer.id = null;
	
	// insert new answer
	YAHOO.util.Dom.insertBefore(newAnswer, addAnswerLink);

	// increment template answer counter for the checkbox
	var theCheckBox = getFirstElementByName(newAnswerTemplate, 'input', aisCorrectName);
	theCheckBox.value++; 

	// set visible
	YAHOO.util.Dom.setStyle(newAnswer, 'display', 'block');
}

function delAnswer(answerClassName, aisCorrectName, event) {
	// get the del button
	var elemDelButton = YAHOO.util.Event.getTarget(event, false);
	
	// get the Answer div
	var elemAnswer = YAHOO.util.Dom.getAncestorByClassName(elemDelButton, answerClassName);

	// get the parent element
	var questionForm = elemAnswer.parentNode;

	// remove answer from parent form
	questionForm.removeChild(elemAnswer);
	
	// renumber answers - to be sent to the form for back-end processing
	// get all answer children - and set the checkbox value
	var arrAnswers = getChildrenByClassName(questionForm, answerClassName);
	for (i = 0; i < arrAnswers.length; i++) {
		var checkBox = getFirstElementByName(arrAnswers[i], 'input', aisCorrectName);
		checkBox.value = i;
	}
}

function addQuestion(strAddQuestionLink, strNewQuestionTemplate) {
	// get nodes from DOM
	var addQuestionLink = YAHOO.util.Dom.get(strAddQuestionLink);
	var newQuestionTemplate = YAHOO.util.Dom.get(strNewQuestionTemplate);
	
	// copy template
	var newQuestion = newQuestionTemplate.cloneNode(true);
	newQuestion.id = null;
	
	// insert new question
	YAHOO.util.Dom.insertBefore(newQuestion, addQuestionLink);
	
	// set visible
	YAHOO.util.Dom.setStyle(newQuestion, 'display', 'block');
}

function displayQuizBox(qboxClassName, formClassName, event) {
	// get current node
	var currElem = YAHOO.util.Event.getTarget(event, false);
	
	// get qbox parent
	var qbox = YAHOO.util.Dom.getAncestorByClassName(currElem, qboxClassName);

	// get form box
	var formBox = getFirstChildByClassName(qbox, formClassName);
	
	// set display value
	YAHOO.util.Dom.setStyle(formBox, 'display', 'block');	
}

function hideQuizBox(formClassName, event) {
	// get current node
	var currElem = YAHOO.util.Event.getTarget(event, false);
	
	// get qbox from parent
	var formBox = YAHOO.util.Dom.getAncestorByClassName(currElem, formClassName);

	// set display value
	YAHOO.util.Dom.setStyle(formBox, 'display', 'none');	
}

/**
 * Helper functions
 */
function getChildrenByClassName(node, className) {
	var method = function(el) { return YAHOO.util.Dom.hasClass(el, className); };
    return YAHOO.util.Dom.getChildrenBy(node, method);	
}

function getFirstChildByClassName(node, className) {
	var arrChildren = getChildrenByClassName(node, className);
	return arrChildren[0];
}

function getElementsByName(node, tag, elName) {
	var method = function(el) { return el.name == elName; };
    return YAHOO.util.Dom.getElementsBy(method, tag, node);	
}

function getFirstElementByName(node, tag, elName) {
	var arrChildren = getElementsByName(node, tag, elName);
	return arrChildren[0];
}


