function addAnswer(el)
{
  var answerContainer = el.parentNode.parentNode.previousSibling;
  var maxAnswers = answerContainer.className.substring(answerContainer.className.lastIndexOf('_')+1);
  if(maxAnswers>0 && answerContainer.childNodes.length>=maxAnswers)
  {
    alert("You cannot add any more answers to this question.");
    return;
  }
  var lastAnswer = el.parentNode.parentNode.previousSibling.lastChild;
  var newNum = parseInt(lastAnswer.firstChild.firstChild.getAttribute('name').substring(lastAnswer.firstChild.firstChild.getAttribute('name').lastIndexOf('_')+1))+1;
  var newAnswer = lastAnswer.cloneNode(true);
  newAnswer.firstChild.firstChild.setAttribute('name','answer_'+newNum);
  newAnswer.firstChild.firstChild.value='';

  var choices = newAnswer.childNodes[1];

  if(choices.className=='choice_answer')
  {
    for(var i=0; i<choices.childNodes.length; i++)
    {
      var choice = choices.childNodes[i];
      var choiceName = choice.getAttribute('name');
      var firstNamePart = choiceName.substring(0,choiceName.indexOf('_')+1);
      var lastNamePart = choiceName.substring(choiceName.lastIndexOf('_'));
      choice.setAttribute('name',firstNamePart+newNum+lastNamePart);
      choice.value=0;
    }
  }
  lastAnswer.parentNode.appendChild(newAnswer);
  registerDropdownEvents();
}

function removeAnswer(el)
{
  if(el.parentNode.parentNode.parentNode.childNodes.length<=1)
  {
    alert("You must have at least one answer.");
    return;
  }
  el.parentNode.parentNode.parentNode.removeChild(el.parentNode.parentNode);
}

function selectBox(el)
{
  var elId = el.id;
  var elValue = elId.substring(elId.lastIndexOf('_')+1);
  var qText = document.forms[0].name; 
  var selId = qText+'_choice_0'+elId.substring(elId.indexOf('_'),elId.lastIndexOf('_'));
  var selEl = document.getElementById(selId);

  var answerContainer = el.parentNode.parentNode.parentNode;
  var maxAnswers = answerContainer.className.substring(answerContainer.className.lastIndexOf('_')+1);

  var listItems = el.parentNode.childNodes;
  var currentlySelected = getElementsByClassName('selected').length;

  for(var i=0; i<listItems.length; i++)
  {
	var kids = getRealChildren(listItems[i]);
	if(listItems[i].id!=elId)
	{
		kids[0].className='';
	}
	else
	{
		if(kids[0].className=='selected')
		{
			selEl.value = 0;
			kids[0].className='';
		}
		else
		{
			if(maxAnswers==-1 || currentlySelected<maxAnswers)
			{
				selEl.value = elValue;
				kids[0].className='selected';
			}
			else
			{
				alert('You can only select '+maxAnswers+ ' options.');
			}
		}
	}
  }
}

function selectColorBox(el)
{
  var elId = el.id;
  var elValue = elId.substring(elId.lastIndexOf('_')+1);
  var qText = document.forms[0].name; 
  var selId = qText+'_choice_0'+elId.substring(elId.indexOf('_'),elId.lastIndexOf('_'));
  var selEl = document.getElementById(selId);

  var answerContainer = el.parentNode.parentNode.parentNode;
  var maxAnswers = answerContainer.className.substring(answerContainer.className.lastIndexOf('_')+1);

  var listItems = el.parentNode.childNodes;
  var currentlySelected = getElementsByClassName('colorselected').length;

  for(var i=0; i<listItems.length; i++)
  {
	var kids = getRealChildren(listItems[i]);
	if(listItems[i].id!=elId)
	{
		kids[0].className='color'+(i+1);
	}
	else
	{
		if(kids[0].className=='colorselected color'+(i+1))
		{
			selEl.value = 0;
			kids[0].className='color'+(i+1);
		}
		else
		{
			if(maxAnswers==-1 || currentlySelected<maxAnswers)
			{
				selEl.value = elValue;
				kids[0].className='colorselected color'+(i+1);
			}
			else
			{
				alert('You can only select '+maxAnswers+ ' options.');
			}
		}
	}
  }
}

function checkNoRepeats(el)
{
    var valuesSeen = new Array();
    var repeats = false;
    for(var i=0; i<el.elements.length; i++)
    {
        if(el.elements[i].type=='select-one')
        {
            if(el.elements[i].value!=0)
            {
                if(valuesSeen[el.elements[i].value]==true)
                {
                    repeats = true;
                    break;
                }
                valuesSeen[el.elements[i].value] = true;
            }
        }
    }
    if(repeats)
    {
        alert('You can not have the same answer for any of the questions.');
        return false;
    }
    else
    {
        return true;
    }
}

function atLeastOneSelected(el)
{
    var atLeastOneSelected = false;
    for(var i=0; i<el.elements.length; i++)
    {
        if(el.elements[i].type=='select-one')
        {
            if(el.elements[i].value!=0)
            {
                atLeastOneSelected = true;
                break;
            }
        }
    }
    if(!atLeastOneSelected)
    {
        alert('You must select one colour.');
        return false;
    }
    else
    {
        return true;
    }
}
