var maxQuestions = 50;
var nextQuestion = 1;
var numOfCatBoxes = 3;
var numOfQuestions = 0;

function init() {
   // functions to run on each page view
   noInputBg();
}

function createQuestionNode_typeA(i, ary) {   
   var qu = "";
   qu += "<p><strong>"+i+".</strong> <input type=\"text\" name=\""+i+"_Q\" size=\"50\" maxlength=\"200\" /></p>";
   for (var j = 0; j <= 4; j++) {
      qu += "<p><input type=\"radio\" name=\""+i+"\" value=\""+ary[j]+"\" /> <label>"+ary[j].toUpperCase()+". </label>";
      qu += "<input type=\"text\" name=\""+i+"_"+ary[j].toUpperCase()+"\" size=\"40\" maxlength=\"200\" /></p>";
   }
  
   return qu;
}

function createQuestionNode_typeB(i, ary) {   
   var qu = "";
   qu += "<p><label><strong>"+i+".</strong></label> <input type=\"text\" name=\""+i+"_Q\" size=\"50\" maxlength=\"200\" /></p>";
   for (var j = 0; j <= 4; j++) {
      qu += "<p><label>+1 for </label><select name=\"addpoint_"+i+"_"+ary[j].toUpperCase()+"\"></select>";
      qu += " <input type=\"text\" name=\""+i+"_"+ary[j].toUpperCase()+"\" size=\"40\" maxlength=\"200\" /></p>";
   }  
   return qu;
}

function addQuestion(quizType) {
   var div = document.getElementById("questions");
   var noq = document.getElementById("num_of_questions");
   var ary = new Array("a", "b", "c", "d", "e");
   var qnode = document.createElement("div");
   qnode.cloneNode(true);
   var qtxt;

   if (nextQuestion <= maxQuestions) {
      if (quizType == 2) qtxt = createQuestionNode_typeB(nextQuestion++, ary);
      else qtxt = createQuestionNode_typeA(nextQuestion++, ary);
      qnode.className = "question";
      qnode.innerHTML = qtxt;
      div.appendChild(qnode);
      numOfQuestions++;
      noq.value++;
      updateCats();
   }
}

function updateCats() {
   // update select boxes
   var catValues = new Array();
   var cats = document.getElementsByTagName("SELECT");
   var catLen = cats.length;
   var option = document.createElement("option");
   option.cloneNode(true);   
   
   for (var i = 1; i <= 10; i++) {
      if (document.getElementById("cat_"+i)) {
         catValues[i] = document.getElementById("cat_" + i).value;
      }
   }
   
   // for each select box on the document, except the first one
   for (var i = 1; i < catLen; i++) {
      cats[i].options[0] = new Option("", "");
      for (var j = 1; j < catValues.length; j++) {
         cats[i].options[j] = new Option(catValues[j], j);
      }
   }
}

function addCatBox() {      
   if (numOfCatBoxes < 10) {
      numOfCatBoxes++;
      var br = document.createElement("br");
      var catBox = createNamedElement("input", "cat_"+numOfCatBoxes);
      catBox.maxLength = "100";
	   catBox.id = "cat_"+numOfCatBoxes;
      catBox.size = "20"; 
      catBox.setAttribute("onchange", "updateCats()");
      catBox.setAttribute("type", "text");      
            
      // add to DOM
      document.getElementById("catboxes").appendChild(catBox);
      document.getElementById("catboxes").appendChild(br);
   }
}

function quizStart(quizType) {   
   for (var i = 1; i <= 10; i++) addQuestion(quizType);   
}

function checkQuiz_typeB(form) {
	var cat, qValue, numOfCats=0, qCounter=0;
	
   // check for a quiz name
   if (document.getElementById("quiz_name").value == "") {
      alert("Please enter a quiz name");
      document.getElementById("quiz_name").focus();
      return false;
   }
      
   // check that there are at least 2 non-empty cats
	for (var i = 1; i <= 10; i++) {
		if (document.getElementById("cat_" + i)) {
         cat = document.getElementById("cat_" + i).value;
         if (cat != "") numOfCats++;
      }
	}
	if (numOfCats < 2) {
		alert("Please have at least 2 categories for your quiz!");
		document.getElementById("cat_1").focus();
		return false;
	}
   
   // check that there are at least 2 questions
	for (i = 1; i <= numOfQuestions; i++) {
      if (document.getElementsByName(i + "_Q")[0]) {
         qValue = document.getElementsByName(i + "_Q")[0].value;
         if (qValue != "") qCounter++;
      }
   }
   if (qCounter < 2) {
      alert("Please have at least 2 questions for your quiz!");
		return false;
   }
   
	// quiz passed testing, submit to form
	return true;
}

function checkQuiz_typeA(form) {
	var qValue, qCounter=0;
	
   // check for a quiz name
   if (document.getElementById("quiz_name").value == "") {
      alert("Please enter a quiz name");
      document.getElementById("quiz_name").focus();
      return false;
   }
   
   // check that there are at least 2 questions
	for (i = 1; i <= numOfQuestions; i++) {
      if(document.getElementsByName(i+"_Q")[0])
         qValue = document.getElementsByName(i+"_Q")[0].value;
      if (qValue != "") qCounter++;
   }
   if (qCounter < 2) {
      alert("Please have at least 2 questions for your quiz!");
		return false;
   }
	
	// quiz passed testing, submit to form
	return true;
}

   
   
// from:
// http://www.thunderguy.com/semicolon/2005/05/23/setting-the-name-attribute-in-internet-explorer/
function createNamedElement(type, name) {
   var element = null;
   // Try the IE way; this fails on standards-compliant browsers
   try {
      element = document.createElement('<'+type+' name="'+name+'">');
   } catch (e) {
   }
   if (!element || element.nodeName != type.toUpperCase()) {
      // Non-IE browser; use canonical method to create named element
      element = document.createElement(type);
      element.name = name;
   }
   return element;
}

// if input is checkbox or radio, theres no background
function noInputBg() {
   var inputs = document.getElementsByTagName("INPUT");
   for(var i=0; i<inputs.length; i++) {
      if (inputs[i].type == "radio")
         inputs[i].style.background = "none";
      if (inputs[i].type == "checkbox")
         inputs[i].style.background = "none";
   }
}


























