"); msgWindow.document.write("
Results for " + title +"

"); } /************************************************ * Perform the final operations needed to create * a secondary window to display results. ************************************************/ function endResultsWindow() { // Create the OK button and the closing HTML tags. msgWindow.document.write("
"); msgWindow.document.write(""); msgWindow.document.close(); msgWindow.focus(); } function closeResultsWindow(){ if (msgWindow!=null) msgWindow.close(); msgWindow=null; } /******************************************************************** * The following functions do setup/housekeeping * for the Response-checking functions. ********************************************************************/ function AnswerElement(questionID, response, correct, value, answer,hint,good,sorry) { this.questionID = questionID; this.response = response.toUpperCase(); this.correct = correct.toUpperCase(); this.value = value; this.answer = answer; this.hint = hint; this.good = good; this.sorry = sorry; return this; } function AnswerBlock(n) { this.length = n; for (var i = 1; i <=n; i++) { this[i] = 0; } return this } function AnswerDump(ab, n) { var output = "Dump\n"; for (var i = 1; i <=n; i++) { output += ab[i].questionID + "=" + ab[i].response + " correct=" + ab[i].correct + "\n"; } alert(output); } function convertBoolean(value) { var result = "" + value; // alert("Result: "+result); return result; } // Look throught the select list and find the selected value. When found // set the answer's response to TRUE. This only works because we have a // fake value as the first item in the options list. Notice that we are // in fact skipping that value since option lists normally start getting // indexed at zero. If the person picks that value, it will be as if no // has been picked. function selectPick(answers,options){ for (var i = 1; i ") } else { msgWindow.document.write(formatted_id + unescape(good) + "
") } } function outputBad(id,value,hint,sorry,chances,attempts,answer) { // Write the incorrect answer in red. // Increment the 'missed' counter, and set a flag. var formatted_id = ""; if (id != "") formatted_id = id + ". "; if (attempts<=chances){ if (sorry == ""){ if (hint==""){ msgWindow.document.write(formatted_id + "Answer for "+unescape(value)+" is incorrect.
"); } else { msgWindow.document.write(formatted_id + "Answer for "+unescape(value)+" is incorrect. "+unescape(hint)+"
"); } } else { if (hint==""){ msgWindow.document.write(formatted_id + ""+unescape(sorry)+"
"); } else { msgWindow.document.write(formatted_id + ""+unescape(sorry)+" "+unescape(hint)+"
"); } } } else { // The response is incorrect and the student has run out of chances. // Write the incorrect answer in red, followed by the correct answer in parentheses. // Increment the 'missed' counter, and set a flag. msgWindow.document.write(formatted_id + "" + "Too many attempts, the correct answer is " + unescape(answer) + "
"); } } function outputHint(hint) { msgWindow.document.write("
"+unescape(hint)+"
"); } /******************************************************************** * Finally, the responses are evaluated by the remaining * functions. This code works closely with the generated * code from the course compiler so be careful when changing it. ********************************************************************/ function checkBoolean(width,height,answers,choices,chances,title,attempts) { // Create the Results window and start writing to it. var found = 0; beginResultsWindow(width,height,title); // Walk the array, looking for the selected item for (var i = 1; i <= choices; i++) { if (answers[i].response == "TRUE") { // We've got the TRUE response, lets see if it is right. Remember that // that the correct should be TRUE since this indicates if it // should have been checked. if (answers[i].response == answers[i].correct){ outputGood("", answers[i].value,answers[i].good); } else { outputBad("", answers[i].value,answers[i].hint,answers[i].sorry,chances,attempts,answers[i].answer); } found = 1; break; } } if (found == 0){ msgWindow.document.write("You must select an answer.
"); } // Write the final HTML to the Results window. endResultsWindow(); return false; } function checkSelect(width,height,answers,choices,chances,title,attempts) { // Create the Results window and start writing to it. var found = 0; beginResultsWindow(width,height,title); // Walk the array, looking for the selected item for (var i = 1; i <= choices; i++) { if (answers[i].response == "TRUE") { // We've got the TRUE response, lets see if it is right. Remember that // that the correct should be TRUE since this indicates if it // should have been checked. var c = parseInt(answers[i].answer,10); if (answers[i].response == answers[i].correct){ outputGood("", answers[i].value,answers[i].good); } else { outputBad("", answers[i].value,answers[i].hint,answers[i].sorry,chances,attempts,answers[c].value); } found = 1; break; } } if (found == 0){ msgWindow.document.write("You must select an answer.
"); } // Write the final HTML to the Results window. endResultsWindow(); return false; } function checkFill(width,height,response,correct,chances,hint,good,sorry,title,attempts) { beginResultsWindow(width,height,title); if ( response.toLowerCase() == correct.toLowerCase() ) { // The response is correct. Confirm it for the student. outputGood("",correct,good); } else { outputBad("",response,hint,sorry,chances,attempts,correct); } endResultsWindow(); return false; } function checkEssay(width,height,response,correct,chances,hint,good,sorry,title,attempts) { beginResultsWindow(width,height,title); msgWindow.document.write("The essay should cover the following topics:
"); outputHint(hint); msgWindow.document.write("
Please make sure your essay contains them."); endResultsWindow(); return false; } function checkMultiboolean(width,height,answers,choices,chances,title,attempts) { var info = ""; // Create the Results window and start writing to it. beginResultsWindow(width,height,title); // Walk the array, looking for the selected item for (var i = 1; i <= choices; i++) { if (answers[i].response == answers[i].correct) { if (answers[i].correct == "FALSE") info = " not selected"; else info = " selected"; outputGood(answers[i].questionID, answers[i].value+info,answers[i].good); } else { outputBad(answers[i].questionID, answers[i].value,answers[i].hint,answers[i].sorry,chances,attempts,answers[i].answer); } } // Write the final HTML to the Results window. endResultsWindow(); return false; } function checkMatch(width,height,answers,answer_count,chances,title,attempts) { // Create the Results window and start writing to it. beginResultsWindow(width,height,title); // Walk the array, checking each answer. for (var i = 1; i <= answer_count; i++) { if (answers[i].response == answers[i].correct) { outputGood(answers[i].questionID, answers[i].value,answers[i].good); } else { outputBad(answers[i].questionID, answers[i].value,answers[i].hint,answers[i].sorry,chances,attempts,answers[i].answer); } } // Write the final HTML to the Results window. endResultsWindow(); return false; } function checkOrder(width,height,answers,answer_count,chances,title,attempts) { // Create the Results window and start writing to it. beginResultsWindow(width,height,title); // Walk the array, checking each answer. for (var i = 1; i <= answer_count; i++) { if (answers[i].response == answers[i].correct) { outputGood(answers[i].questionID, answers[i].value,answers[i].good); } else { outputBad(answers[i].questionID, answers[i].value,answers[i].hint,answers[i].sorry,chances,attempts,answers[i].answer); } } // Write the final HTML to the Results window. endResultsWindow(); return false; } function checkAgain(width,height){ beginResultsWindow(width,height,"Try Again"); msgWindow.document.write("Please try again, the part you click isn't part of the question"); endResultWindow(); } function Debug(s,f){ var count= 0; var rest = s+ "\n"; for (var i = 0; i< f.elements.length; i++) { var e = f.elements[i]; rest += ""+count+". "; if (e.type != null){ // IE 3 does not define type rest += e.type; rest += ": "; } rest += e.name; rest += "="; rest += e.value; if (e.checked != null){ // This would indicate a "radio" or a "checkbox" if (e.checked){ rest += " (checked)"; } } else if (e.options != null ) { // This would indicate a "select" or a "multi-select" if (e.options.length != null) { // Extra test for length. Some browsers still don't work rest += "("; if (e.options[0].selected) rest += "["+e.options[0].text+"]"; else rest += e.options[0].text; for (var j=1; j
  1. MULTIPLE CHOICE

    When emcomm team members are called upon to operate on Public Safety Radio Systems, which of the following may they NOT do?
    A.    Use special "10 codes".
    B.    Use the served agency's standard operating procedure.
    C.    Use the phonetic alphabet employed by the served agency.
    D.    Engage in casual conversations.

     
  2. MULTIPLE CHOICE

    Which of the following is another trademarked version of Continuous Tone Coded Squelch System (CTCSS)?
    A.    Private Guard.
    B.    Private Channel.
    C.    Line Guard.
    D.    Private Line.

     
  3. MULTIPLE CHOICE

    Which of the following best describes the newer Emergency Medical Radio Services?
    A.    Ten UHF duplex frequencies and seven VHF simplex channels.
    B.    Ten simplex VHF frequencies with pulsed tone encoders for each hospital.
    C.    Seven UHF duplex frequencies and ten VHF simplex channels.
    D.    The MedStar system with channels Med 1 through Med 10.

     
  4. MULTIPLE CHOICE

    Which one of the following statements is true about trunked systems?
    A.    Trunked systems are able to operate without the use of computer controllers.
    B.    The number of frequencies on a trunked system is always a multiple of 10.
    C.    Amateur radio does not currently use this type of system.
    D.    Most trunked systems have ample reserve capacity

     
  5. MULTIPLE CHOICE

    When emcomm teams work with a served agency, a number of assumptions are made. Which of the following assumptions are true?
    A.    Amateur radio operators can operate any communication equipment they encounter.
    B.    There are NO significant differences between amateur radio operating procedures and the procedures used by the served agencies.
    C.    Served agencies must provide training if amateur operators are to be used effectively.
    D.    All phonetic alphabets are essentially the same and are thus interchangeable.