/*++ header */

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<script language="javascript">
  var onlyClientSide = true;

function setAnswers(elem, questionIDs, aForm, onlyJS, notesName) {
   var notesHVArr = null;
   var theNotesDropdownArr = null;
   if ( questionIDs != null) {
      // parse question ids (comma separated)
      var qArr = questionIDs.split(",");
      var qMap = new Array();
      for(var i = 0; i < qArr.length; ++i) {
         qMap[ qArr[i].toString() ] = qArr[i];
      }     
      theNotesDropdownArr = findNotesDropdowns(qMap, aForm);
   } else {
     // all questions in this page
     theNotesDropdownArr = findNotesDropdowns(null, aForm);
   }
   
   onlyClientSide = onlyJS; 
   if ( !onlyJS) {
     aForm.skippedQuestions.value = questionIDs;
   }     
   var skip_select = eval("elem.form."+notesName);
   setFields(elem, skip_select, theNotesDropdownArr);
     
   return false;
}

function setFields(skip_obj, skip_select, theNotesDropdownArr) {
     var skip_dataClassification = skip_select.options[skip_select.selectedIndex].text;
     if (theNotesDropdownArr != null) { 
       for(var j = 0; j < theNotesDropdownArr.length; ++j) {
         theNotesDropdownArr[j].value = skip_dataClassification;
         theNotesDropdownArr[j].selectedIndex = skip_select.selectedIndex;
         noteBlurHandler(theNotesDropdownArr[j]);
       }
    }

    if ( !onlyClientSide) {
       if ( skip_obj != null) {
         var form = skip_obj.form;
         form.action.value="Skip";
         form.dataClassificationForSkipped.value = skip_dataClassification;
	 form.submit();
       }
    }     
  }

function findForm(formName) {
     for(i=0; i < document.forms.length; ++i) {
       if ( document.forms[i].name == formName)
         return document.forms[i];
     }
     return null;
  }

function findNotesDropdowns(qArr, aForm) {
    var noteDropdowns = new Array();
    if (qArr == null) {
      var idx = 0;
      for(var i = 0; i < aForm.elements.length; ++i) {
        var elem = aForm.elements[i];
        var index=elem.name.indexOf("_note_handler");
        if (index != -1)
        {
          noteDropdowns[idx++] = elem; 
        }
      }
    } else {
        var idx = 0;
        var len = aForm.elements.length;
        for(var i = 0; i < len; ++i) {
          var elem = aForm.elements[i];
          var index=elem.name.indexOf("_note_handler");
          if (index != -1)
          {
             var qid = extractQuestionID(elem.name);      
             if ( qArr[qid.toString() ]) {
               noteDropdowns[idx++] = elem;
	     }
	   }
        }	  
    }
    return noteDropdowns;
  }

function extractQuestionID(aNotesVarName) {
     var idx = aNotesVarName.indexOf("_");
     if (idx == -1) {
       return null; 
     }
     return aNotesVarName.substring(1,idx);
  }

 function addAnswer(form, qid) {
    form.action.value="Add";
    form.selectedQuestion.value = qid;
    form.submit();
 }

 function deleteLastAnswer(form, qid) {
    form.action.value="RemoveLast";
    form.selectedQuestion.value = qid;
    form.submit();
 }

 function submitAssessment(form, actionValue) {
    form.action.value = actionValue;
    form.submit();
    return false;
 }

function noteBlurHandler(obj, noWidthChange)
{
  var index=obj.name.indexOf("_note_handler");
  var base_str = obj.name.substring(0, index);

  var border_str = base_str+"_note_border";
  var border_obj = document.getElementById(border_str);
  if (border_obj != null)
  {
    var value = (obj.options && obj.selectedIndex >= 0) ?   obj.options[obj.selectedIndex].text.length : 0;1
    if (value != 0)
    {
      border_obj.style.borderColor='red';
    }
    else
    {
      border_obj.style.borderColor='white';
    }
  }
  var notes_str = base_str+"_notes";
  var hidden_obj = eval("obj.form."+notes_str);
  hidden_obj.value = obj.options[obj.selectedIndex].text;
  if (!noWidthChange && document.all) {
    obj.style.width = '20px';
  }
}

function noteChangeFocusHandler(obj)
{
  noteBlurHandler(obj,true);
}

function noteFocusHandler(obj) {
   if ( document.all) { // IE
     obj.style.width='200px';
   }
}

</script>
<br>
<br>
/*++ calcFields */

function isEmpty(val) {
    if (val.length == 0 || val == null) {
       return true;
    } else {
       var trval = trim(val); 
       if ( trval.length == 0) {
          return true;
       }  
       return false;
    }
  }

  function trim(val) {
     if (val.length == 0) {
       return val;
     }
     var leftIdx = 0;
     for(var i = 0; i < val.length; i++) {
         var c = val.charAt(i);
         if ( c != ' ') {
            break;
         } else {
           leftIdx++;
         }
     }
     var rightIdx =  val.length;
     for(var i = val.length -1; i >= leftIdx; i--) {
         if ( val.charAt(i) != ' ') {
            break;
         } else {
           rightIdx--;
         }
     }
     return val.substring(leftIdx, rightIdx);
  }

/*++ footer */

  <SCRIPT LANGUAGE="JavaScript">
    var elements = document.getElementsByTagName('select');
    for (var i=0; i<elements.length; i++)
    {
      //Look for a trailing "_note_handler" and a leading 'q'
      var index=elements[i].name.indexOf("_note_handler");
      if ((index != -1) && (elements[i].name.substring(0,1) == "q"))
      {
        //Select what the user had entered previously, if extant; otherwise, select blank.
	var base_str = elements[i].name.substring(0, index);
	var notes_str = base_str+"_notes";
	var hidden_value = eval("elements[i].form."+notes_str);
        for (var j=0; j<elements[i].options.length; j++)
        {
          if (elements[i].options[j].text == hidden_value.value)
          {
            elements[i].options[j].selected = true;
          }
        }
        noteBlurHandler(elements[i]);
      }
    }
  </SCRIPT>
