/*
     Page specific JavaScript functions.     
*/

BRAINS.presetFields = function() 
{
	/*
	 * Private methods.
	 */ 
	var maxSelected = function (f)
	{
	  var MAX_AMOUNT_FIELDS = 8;
	  var checkedCount = 0;
	
	  for(var i = 0; i < f.length; i++) {
	    // Count the amount of checkboxes checked.
	    var e = f.elements[i];
	    if (e.name == "custom") {
	      if(e.checked == true) {
	        checkedCount++;
	      }
	    }
	  }
	
	  if(checkedCount < MAX_AMOUNT_FIELDS) {
	    for(var i = 0; i < f.length; i++) {
	      // Enable all of the checkboxes.
	      var e = f.elements[i];
	      if (e.name == "custom") {
	        e.disabled = false;
	        document.getElementById('add').disabled = false;
	      }
	    }
	  }
	  else if(checkedCount >= MAX_AMOUNT_FIELDS) {
	    for(var i = 0; i < f.length; i++) {
	      // Disable all of the checkboxes except the ones checked.
	      var e = f.elements[i];
	      if (e.name == "custom" && e.checked == false) {
	        e.disabled = true;
	        document.getElementById('add').disabled = true;
	      }
	    }
	  }
	}
	
	var clickHandler = function(e)
	{
		var formElement = document.getElementById("fields");
		var elTarget = YAHOO.util.Event.getTarget(e);
				
		if(elTarget.type == 'checkbox') {
			maxSelected (formElement);
		}
	}
	
	return {
		/*
		 * IMPORTANT: The last method here should not have a trailing comma.
		 * This will cause all of the JavaScript on the page to break with Microsoft I.E.		
		 * 
		 * Public methods.
		 */ 		    
       	init: function () { 
			// Add a click listener to the form.	
			var formElement = document.getElementById("fields");
			YAHOO.util.Event.addListener(formElement, "click", clickHandler, this, true);
		}		
	};
}(); // force the anonymous function to execute and return

BRAINS.group = function() 
{	
	var EXAM = 0;
	var SURVEY = 1;
	var TEST = 2;
	var COMMENT = 3;
	
	/*
	 * Private methods.
	 */ 
	var showQuestionPoints = function (questionsToAsk)
	{
	  if(questionsToAsk.selectedIndex > 0)
	    BRAINS.generic.showLayer("points", true);
	  else
	    BRAINS.generic.showLayer("points", false);
	}
	
	var setQuestionsToAsk = function (questOrder, sectionType)
	{
	  BRAINS.group.setQuestionsToAsk (questOrder, sectionType);		
	}
	
	return {
		/*
		 * IMPORTANT: The last method here should not have a trailing comma.
		 * This will cause all of the JavaScript on the page to break with Microsoft I.E.		
		 * 
		 * Public methods.
		 */ 
		setQuestionOrderOnLoad: function (sectionType)
		{
		  var questionOrder = document.questiongroup.questionorder;
		  var questionsToAsk = document.questiongroup.questionstoask;		 
		
		  var groupType = sectionType[sectionType.selectedIndex].value;		  
		  
		  if(groupType == SURVEY || groupType == COMMENT) { 
		    previousQuestionOrderIndex = questionOrder.selectedIndex;
		
		    questionOrder.selectedIndex = 1;
		    questionOrder.disabled = true;
		  }
		  else {
		    if(questionOrder.disabled == true)
		      questionOrder.selectedIndex = previousQuestionOrderIndex;
		    questionOrder.disabled = false;
		  }
		
		  if(questionOrder.selectedIndex == 1) { // sequential
		    previousQuestionsToAskIndex = questionsToAsk.selectedIndex;
		    questionsToAsk.selectedIndex = 0;
		    questionsToAsk.disabled = true;
		  }
		
		  showQuestionPoints(questionsToAsk);
		},
		
		setQuestionOrder: function (sectionType)
		{		  
		  var questionOrder = document.questiongroup.questionorder;
		  
		  var groupType = sectionType[sectionType.selectedIndex].value;		  
		  
		  if(groupType == SURVEY || groupType == COMMENT) { 
		    previousQuestionOrderIndex = questionOrder.selectedIndex;
		
		    questionOrder.selectedIndex = 1;
		    questionOrder.disabled = true;
		  }
		  else  {
		    if(questionOrder.disabled == true)
		      questionOrder.selectedIndex = previousQuestionOrderIndex;
		    questionOrder.disabled = false;
		  }		
		  
		  setQuestionsToAsk(questionOrder, sectionType);
		},
		
		setQuestionsToAsk: function (questOrder, sectionType)
		{
		  var questionsToAsk = document.questiongroup.questionstoask;
		  
		  var groupType = sectionType[sectionType.selectedIndex].value;		  
		
		  if(questOrder.selectedIndex == 2) { // random
		    questionsToAsk.selectedIndex = previousQuestionsToAskIndex;
		    questionsToAsk.disabled = false;
		  }
		
		  if(questOrder.selectedIndex == 1) { // sequential
		    previousQuestionsToAskIndex = questionsToAsk.selectedIndex;
		    questionsToAsk.selectedIndex = 0;
		    questionsToAsk.disabled = true;
		  }
		  
		  if(groupType == SURVEY || groupType == TEST || groupType == COMMENT) { 
			previousQuestionsToAskIndex = questionsToAsk.selectedIndex;
		    questionsToAsk.selectedIndex = 0;
		    questionsToAsk.disabled = true;
		  }
		  
		  showQuestionPoints(questionsToAsk);
		},
		
		showPoints: function (questionsToAsk) 
		{
			showQuestionPoints(questionsToAsk);
		}
	};
}(); // force the anonymous function to execute and return

BRAINS.settings = function() 
{	
	var previousSeeGrade = 0;
	var previousSeeReviewQuestions = 0;
	var previousSeeReviewAnswers = 0;
	var previousSkipCustomFields = 0;
	var previousMode = 0;
	
	return {
		/*
		 * IMPORTANT: The last method here should not have a trailing comma.
		 * This will cause all of the JavaScript on the page to break with Microsoft I.E.		
		 * 
		 * Public methods.
		 */ 
		setSkipCustomLoginFields: function (fieldsPerPage)
		{
		  var DISPLAY_PRESET_WITH_CUSTOM_FIELDS = "8888";
		  var settings = document.assessmentsettings;
		
		  if(fieldsPerPage.value == DISPLAY_PRESET_WITH_CUSTOM_FIELDS) {
		    previousSkipCustomFields = document.assessmentsettings.skipcustomfields.selectedIndex;
		    settings.skipcustomfields.selectedIndex = 1;
		    settings.skipcustomfields.disabled = true;
		  }
		  else {
		    if(settings.skipcustomfields.disabled == true)
		      settings.skipcustomfields.selectedIndex = previousSkipCustomFields;
		    settings.skipcustomfields.disabled = false;
		  }
		},
		
		setReviewOptions: function (showReview)
		{
		  var settings = document.assessmentsettings;
		  
		  if(showReview.value == "no") { // no review
		    previousSeeGrade = settings.seegrade.selectedIndex;
		    previousSeeReviewQuestions = settings.seereviewquestions.selectedIndex;
		    previousSeeReviewAnswers = settings.seereviewanswers.selectedIndex;
		    settings.seegrade.selectedIndex = 1;
		    settings.seereviewquestions.selectedIndex = 1;
		    settings.seereviewanswers.selectedIndex = 1;
		    settings.seegrade.disabled = true;
		    settings.seereviewquestions.disabled = true;
		    settings.seereviewanswers.disabled = true;
		  }
		  else {
		    if(settings.seegrade.disabled == true
		       && settings.seereviewquestions.disabled == true
		       && settings.seereviewanswers.disabled == true) {
		      settings.seegrade.selectedIndex = previousSeeGrade;
		      settings.seereviewquestions.selectedIndex = previousSeeReviewQuestions;
		      settings.seereviewanswers.selectedIndex = previousSeeReviewAnswers;
		    }
		    settings.seegrade.disabled = false;
		    settings.seereviewquestions.disabled = false;
		    settings.seereviewanswers.disabled = false;
		  }
		},
		
		setTimed: function (timedIndex)
		{
		  var UNTIMED = 0;
		  var ASSESSMENT = 1;
		  var QUESTION = 2;
		
		  var settings = document.assessmentsettings; 
		  var timedBy = settings.timed[timedIndex].value;
		
		  if(timedBy == ASSESSMENT) {
		    BRAINS.generic.showLayer("timeAssessment", true);
		    BRAINS.generic.showLayer("timeQuestion", false);			
		  }
		  else if(timedBy == QUESTION) {
		    BRAINS.generic.showLayer("timeAssessment", false);
		    BRAINS.generic.showLayer("timeQuestion", true);			
		  }
		  else if(timedBy == UNTIMED)
		  {
		    BRAINS.generic.showLayer("timeAssessment", false);
		    BRAINS.generic.showLayer("timeQuestion", false);					
		  }
		  else // legacy timing
		  {
		    settings.timed.selectedIndex = 1;
		    BRAINS.generic.showLayer("timeAssessment", true);
		    BRAINS.generic.showLayer("timeQuestion", false);
		  }
		  
		  if(timedBy == QUESTION) {
		     // The assessment mode should be "Forward Only".
		     previousMode = document.assessmentsettings.mode.selectedIndex;
		     settings.mode.selectedIndex = 2;
		     settings.mode.disabled = true;
		  }
		  else {
		    if(settings.mode.disabled == true) {
		      settings.mode.selectedIndex = previousMode;
		    }
		
		    settings.mode.disabled = false;
		  }
		}
	};
}(); // force the anonymous function to execute and return

