Diff for /rat/client/parameter.html between versions 1.37 and 1.76

version 1.37, 2006/04/25 15:43:02 version 1.76, 2017/07/13 15:30:01
Line 1 Line 1
 <html>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <!--  <!--
 The LearningOnline Network with CAPA  The LearningOnline Network with CAPA
 Parameter Input Window  Parameter Input Window
Line 29  Parameter Input Window Line 31  Parameter Input Window
 //  //
 -->  -->
 <head>  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>LON-CAPA</title>  <title>LON-CAPA</title>
 </head>  
   
 <script>  <script type="text/javascript">
   // <![CDATA[
   
 var ptype='';  var ptype='';
 var pvalue='';  var pvalue='';
   var pmodval='';
   var pextraval='';
   var pextravaltwo='';
 var preturn='';  var preturn='';
 var pcode='';  var pcode='';
 var pscat='';  var pscat='';
 var pmarker='';  var pmarker='';
   var pmodal='';
 var pname='';  var pname='';
   var precursive='';
   var pnonreccol='';
   var pmarkerst='';
   var pparm='';
   
 var defhour=0;  var defhour=0;
 var defmin=0;  var defmin=0;
Line 67  function selwrite(text) { Line 78  function selwrite(text) {
 }  }
   
 function choicestart() {  function choicestart() {
   this.window.choices.document.clear();    this.window.choices.document.open();
   choicewrite('<html><body bgcolor="#FFFFFF">');    choicewrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
     choicewrite('<html xmlns="http://www.w3.org/1999/xhtml">');
     choicewrite('<head>');
     choicewrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
     choicewrite('<title>LON-CAPA</title>');
     choicewrite('<style type="text/css">');
     choicewrite('<!--');
     choicewrite('body {');
     choicewrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
     choicewrite('line-height:130%;');
     choicewrite('font-size:0.83em;');
     choicewrite('background: #FFFFFF;');
     choicewrite('}');
     choicewrite('table.LC_parmsel_table {font-size: 90%;}');
     choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}');
     choicewrite('-->');
     choicewrite('</style>');
     choicewrite('</head>');
     choicewrite('<body>');
 }  }
   
 function choiceend() {  function choiceend() {
Line 81  function choicewrite(text) { Line 110  function choicewrite(text) {
 }  }
   
 function tablestart(headtext) {  function tablestart(headtext) {
   choicewrite('<table><tr bgcolor="#AAFFAA"><th colspan=3>'+    choicewrite('<table class="LC_parmsel_table"><tr bgcolor="#C5DB99"><th colspan="3">'+
               headtext+'</th></tr>');                headtext+'</th></tr>');
 }  }
   
 function valline(text,id1,id2) {  function valline(text,id1,id2) {
   choicewrite('<tr bgcolor="#AAFFAA"><td>'+text+    choicewrite('<tr><td>'+text+
               '</td><td><input type=text size=4 name=val'+                '</td><td><input type="text" size="4" name="val'+
               id1+'></td><td>incl:<input type=checkbox name=val'+                id1+'" /></td><td>incl:<input type="checkbox" name="val'+
               id2+'></td></tr>');                id2+'" /></td></tr>');
   }
   
   function escapeHTML(text) {
     text = text.replace(/&/g, '&amp;');
     text = text.replace(/"/g, '&quot;');
     text = text.replace(/</g, '&lt;');
     text = text.replace(/>/g, '&gt;');
     return text;
 }  }
   
 function datecalc() {  function datecalc() {
Line 108  function datecalc() { Line 145  function datecalc() {
 function hour() {  function hour() {
    var thishour=cdate.getHours();     var thishour=cdate.getHours();
     var i; var j;      var i; var j;
     choicewrite('<select name=hours onChange="parent.datecalc();">');      choicewrite('<select name="hours" onchange="parent.datecalc();">');
     for (i=0;i<=23;i++) {      for (i=0;i<=23;i++) {
         choicewrite('<option value='+i);          choicewrite('<option value="'+i+'"');
         if (i==thishour) {          if (i==thishour) {
             choicewrite(' selected');              choicewrite(' selected="selected"');
         }          }
         choicewrite('>');          choicewrite('>');
         if (i==12) { choicewrite('noon'); } else {          if (i==12) { choicewrite('noon'); } else {
Line 132  function hour() { Line 169  function hour() {
 function minute() {  function minute() {
    var thisminutes=cdate.getMinutes();     var thisminutes=cdate.getMinutes();
     var i;      var i;
     choicewrite('<select name=minutes onChange="parent.datecalc();">');      choicewrite('<select name="minutes" onchange="parent.datecalc();">');
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         choicewrite('<option value='+i);          choicewrite('<option value="'+i+'"');
         if (i==thisminutes) {          if (i==thisminutes) {
             choicewrite(' selected');              choicewrite(' selected="selected"');
         }          }
         choicewrite('>'+i+'</option>');          choicewrite('>'+i+'</option>');
     }      }
Line 146  function minute() { Line 183  function minute() {
 function second() {  function second() {
    var thisseconds=cdate.getSeconds();     var thisseconds=cdate.getSeconds();
     var i;      var i;
     choicewrite('<select name=seconds onChange="parent.datecalc();">');      choicewrite('<select name="seconds" onchange="parent.datecalc();">');
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         choicewrite('<option value='+i);          choicewrite('<option value="'+i+'"');
         if (i==thisseconds) {          if (i==thisseconds) {
             choicewrite(' selected');              choicewrite(' selected="selected"');
         }          }
         choicewrite('>'+i+'</option>');          choicewrite('>'+i+'</option>');
     }      }
Line 161  function second() { Line 198  function second() {
 function date() {  function date() {
    var thisdate=cdate.getDate();     var thisdate=cdate.getDate();
     var i;      var i;
     choicewrite('<select name=date onChange="parent.datecalc();">');      choicewrite('<select name="date" onchange="parent.datecalc();">');
     for (i=1;i<=31;i++) {      for (i=1;i<=31;i++) {
         choicewrite('<option value='+i);          choicewrite('<option value="'+i+'"');
         if (i==thisdate) {          if (i==thisdate) {
             choicewrite(' selected');              choicewrite(' selected="selected"');
         }          }
         choicewrite('>'+i+'</option>');          choicewrite('>'+i+'</option>');
     }      }
Line 182  function year() { Line 219  function year() {
    if (thisyear>nowyear) { loweryear=nowyear-2; }     if (thisyear>nowyear) { loweryear=nowyear-2; }
    if (thisyear<nowyear) { upperyear=nowyear+5; }      if (thisyear<nowyear) { upperyear=nowyear+5; } 
     var i;      var i;
     choicewrite('<select name=year onChange="parent.datecalc();">');      choicewrite('<select name="year" onchange="parent.datecalc();">');
     for (i=loweryear;i<=upperyear;i++) {      for (i=loweryear;i<=upperyear;i++) {
         choicewrite('<option value='+i);          choicewrite('<option value="'+i+'"');
         if (i==thisyear) {          if (i==thisyear) {
             choicewrite(' selected');              choicewrite(' selected="selected"');
         }          }
         choicewrite('>'+i+'</option>');          choicewrite('>'+i+'</option>');
     }      }
Line 196  function year() { Line 233  function year() {
 function month() {  function month() {
     var thismonth=cdate.getMonth();      var thismonth=cdate.getMonth();
     var i;      var i;
     choicewrite('<select name=month onChange="parent.datecalc();">');      choicewrite('<select name="month" onchange="parent.datecalc();">');
     for (i=0;i<=11;i++) {      for (i=0;i<=11;i++) {
         choicewrite('<option value='+i);          choicewrite('<option value="'+i+'"');
         if (i==thismonth) {          if (i==thismonth) {
             choicewrite(' selected');              choicewrite(' selected="selected"');
         }          }
         choicewrite('>'+months[i]+'</option>');          choicewrite('>'+months[i]+'</option>');
     }      }
Line 211  function month() { Line 248  function month() {
 function intminute() {  function intminute() {
    var thisminutes=cmins;     var thisminutes=cmins;
     var i;      var i;
     choicewrite('<select name=minutes onChange="parent.intcalc();">');      var result = '';
       result += '<select name="minutes" onchange="parent.intcalc();">';
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         choicewrite('<option value='+i);          result += '<option value="'+i+'"';
         if (i==thisminutes) {          if (i==thisminutes) {
             choicewrite(' selected');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
       return result;
 }   } 
   
 function inthour() {  function inthour() {
    var thishours=chours;     var thishours=chours;
     var i;      var i;
     choicewrite('<select name=hours onChange="parent.intcalc();">');      var result = '';
       result += '<select name="hours" onchange="parent.intcalc();">';
     for (i=0;i<=23;i++) {      for (i=0;i<=23;i++) {
         choicewrite('<option value='+i);          result += '<option value="'+i+'"';
         if (i==thishours) {          if (i==thishours) {
             choicewrite(' selected');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
 }       return result;
   }
   
 function intsecond() {  function intsecond() {
    var thisseconds=csecs;      var thisseconds=csecs;
     var i;      var i;
     choicewrite('<select name=seconds onChange="parent.intcalc();">');      var result = '';
       result += '<select name="seconds" onchange="parent.intcalc();">';
     for (i=0;i<=59;i++) {      for (i=0;i<=59;i++) {
         choicewrite('<option value='+i);          result += '<option value="'+i+'"';
         if (i==thisseconds) {          if (i==thisseconds) {
             choicewrite(' selected');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
       return result;
 }   } 
   
   
 function intday() {  function intday() {
    var thisdate=cdays;     var thisdate=cdays;
     var i;      var i;
     choicewrite('<select name=date onChange="parent.intcalc();">');      var result ='';
       result += '<select name="date" onchange="parent.intcalc();">';
     for (i=0;i<=31;i++) {      for (i=0;i<=31;i++) {
         choicewrite('<option value='+i);          result += '<option value="'+i+'"';
         if (i==thisdate) {          if (i==thisdate) {
             choicewrite(' selected');              result += ' selected="selected"';
         }          }
         choicewrite('>'+i+'</option>');          result += '>'+i+'</option>';
     }      }
     choicewrite('</select>');      result += '</select>';
       return result;
 }  }
   
 function intcalc() {  function intcalc() {
Line 271  function intcalc() { Line 316  function intcalc() {
              sform.hours.options[sform.hours.selectedIndex].value*1)*60+               sform.hours.options[sform.hours.selectedIndex].value*1)*60+
              sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+               sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+
              sform.seconds.options[sform.seconds.selectedIndex].value*1;               sform.seconds.options[sform.seconds.selectedIndex].value*1;
     draw();      if ((ptype=='date') && (pscat=='interval')) {
           var newpmodval = '';
           var newpextraval = '';
           var newpextravaltwo = 'Done';
           if (sform.donebutton.length) {
               for (var i=0; i<sform.donebutton.length; i++) {
                   if (sform.donebutton[i].checked) {
                       if (sform.donebutton[i].value == '_done') {
                           newpmodval = sform.donebutton[i].value;
                           newpextravaltwo = sform.donebutton_text.value;
                       } else {
                           if (sform.donebutton[i].value == '_done_proctor') { 
                               newpmodval = sform.donebutton[i].value;
                               newpextraval = sform.donebutton_proctorkey.value;
                               newpextravaltwo = sform.donebutton_text.value;
                               newpextravaltwo = newpextravaltwo.replace(/:/g,'');
                           }
                       }
                   }
               }
           }
           pmodval = newpmodval;
           pextraval = newpextraval;
           pextravaltwo = newpextravaltwo;
           draw();
           if (pmodval) {
               var doneRegExp = /^(_done)(|_proctor)$/;
               var donevals = pmodval.match(doneRegExp);
               if (donevals.length == 3) {
                   svalue += donevals[1];
               }
               if (newpextravaltwo) {
                   if (newpextravaltwo != 'Done') { 
                       svalue += ':'+newpextravaltwo+':';
                   }
               }
               if (donevals[2] != '') {
                   svalue += donevals[2];
                   if (pextraval != '') {
                       svalue += '_'+pextraval;
                   }
               }
           }
       } else {
           draw();
       }
   }
   
   function toggleSecret() {
       var sform=choices.document.forms.sch;
       if (sform.donebutton.length) {
           for (var i=0; i<sform.donebutton.length; i++) {
               if (sform.donebutton[i].checked) {
                   if (sform.donebutton[i].value == '') {
                       if (document.getElementById('donebuttontextdiv')) {
                           document.getElementById('donebuttontextdiv').style.display='none';
                       }
                   } else {
                       if (document.getElementById('donebuttontextdiv')) {
                           document.getElementById('donebuttontextdiv').style.display='block';
                       }
                   }
                   if (sform.donebutton[i].value == '_done_proctor') {
                       if (document.getElementById('done_proctorkey')) {
                           document.getElementById('done_proctorkey').type='text';
                       }
                   } else {
                       if (document.getElementById('done_proctorkey')) {
                           document.getElementById('done_proctorkey').type='hidden';
                           document.getElementById('done_proctorkey').value='';
                       }
                   }
               }
           }
       }
   }
   
   function validateInterval() {
       var sform=choices.document.forms.sch;
       if (sform.donebutton.length) {
           for (var i=0; i<sform.donebutton.length; i++) {
               if (sform.donebutton[i].checked) {
                   if (sform.donebutton[i].value == '_done_proctor') {
                       if ((sform.donebutton_proctorkey.value == '') || 
                           (sform.donebutton_proctorkey.value == null)) {
                           alert('Please provide a key for a proctor to enter when a student uses the "Done" button.');
                           return;
                       }
                   }
               }
           }
       }
       intcalc();
       assemble();
 }  }
   
 function integereval() {  function integereval() {
Line 306  function stringeval() { Line 444  function stringeval() {
    draw();     draw();
 }  }
   
   function ipstringeval() {
       var patternIp = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
       var acctypes = new Array;
       acctypes = ['allow','deny'];
       svalue = '';
       for (var i=0; i<acctypes.length; i++) {
           var items = choices.document.getElementsByName('setip'+acctypes[i]);
           if (items.length > 0) { 
               for (var j=0; j<items.length; j++) {
                   if (items[j].type == "text") {
                       var possip = items[j].value
                       possip = possip.replace(/^\s+|\s+$/g,'');
                       if (patternIp.test(possip)) {
                           if (acctypes[i] == 'deny') {
                               possip = '!'+possip;
                           }
                           if (svalue == '') {
                               svalue = possip;
                           } else {
                               svalue += ','+possip;
                           }
                       }
                   }
               }
           }
       }
   }
   
   function addIpRule(iptype) {
       var frame = window.frames["choices"];
       if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
           var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
           var count = innerDiv.childNodes.length 
           var ipDiv = frame.document.createElement('div');
           ipDiv.innerHTML = '<input type="text" size="10" name="setip'+iptype+'" onblur="parent.ipstringeval();" />'+
                             '<a href="#" onclick="parent.removeIpRule(\''+iptype+'\',\''+count+'\')">Remove</a>';
           frame.document.getElementById('LC_string_ipacc_inner_'+iptype).appendChild(ipDiv);
       }
       return false;
   }
   
   function removeIpRule(iptype,num) {
       var frame = window.frames["choices"];
       if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
           var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
           for (var i=0; i<innerDiv.childNodes.length; i++) {
               if (i==num) {
                   innerDiv.removeChild(innerDiv.childNodes[i]);
                   ipstringeval();
                   break;
               }
           }
       }
   }
   
 function radiostringeval(newval) {  function radiostringeval(newval) {
    svalue=newval;     svalue=newval;
    draw();     draw();
 }  }
   
 function callradiostringeval(newval) {  function callradiostringeval(newval) {
    return 'onChange="parent.radiostringeval(\''      return 'onclick="parent.radiostringeval(\''+newval+'\')"';
           +newval+'\')" onClick="parent.radiostringeval(\''  
           +newval+'\')"';  
 }  }
   
   function lenienteval(newval) {
       if (newval == 'weighted') {
           if (document.getElementById('lenientweighteddiv')) {
               document.getElementById('lenientweighteddiv').style.display='block';
           }
           var patternRelWeight = /^\-?[\d.]+$/;
           var sform=choices.document.forms.sch; 
           if ((sform.lenientrelwt.length != 'undefined')  && (sform.lenientrelwt.length) != 'null') {
               for (var i=0; i<sform.lenientrelwt.length; i++) {
                   var relweight = sform.lenientrelwt[i].value;
                   relweight = relweight.replace(/^\s+|\s+$/g,'');
                   if (!patternRelWeight.test(relweight)) {
                       if (i<2) {
                           relweight = '1.0';
                       } else {
                           relweight = '0.0';
                       }
                   }
                   sform.lenientrelwt[i].value = relweight;
                   if (i==0) {
                       svalue = relweight;
                   } else {
                       svalue += ','+relweight;
                   }
               }
           }
       } else {
           if (document.getElementById('lenientweighteddiv')) {
               document.getElementById('lenientweighteddiv').style.display='none';
           }
           svalue=newval;
       }
       draw();
   }
   
   function calllenientradioeval(newval) {
       return 'onclick="parent.lenienteval(\''+newval+'\')"';
   }
   
   function callintervalpmodval() {
       return 'onclick="parent.intcalc();parent.toggleSecret()"';
   } 
   
 function intervaldis() {  function intervaldis() {
     csecs=svalue;      csecs=svalue;
     cdays=Math.floor(csecs/86400);      cdays=Math.floor(csecs/86400);
Line 325  function intervaldis() { Line 559  function intervaldis() {
     csecs-=chours*3600;      csecs-=chours*3600;
     cmins=Math.floor(csecs/60);      cmins=Math.floor(csecs/60);
     csecs-=cmins*60;      csecs-=cmins*60;
     choicewrite(cdays+' days '+chours+' hours '      return cdays+' days '+chours+' hours '+cmins+' mins '+csecs+' secs';
                +cmins+' mins '+csecs+' secs');  
 }  }
   
 function pickcolor(picked) {  function pickcolor(picked) {
Line 347  function colorfield(ir,ig,ib) { Line 580  function colorfield(ir,ig,ib) {
   
 function draw() {  function draw() {
    choicestart();     choicestart();
    choicewrite('<form name=sch');     choicewrite('<form name="sch"');
    if (ptype=='int') {     if (ptype=='int') {
       choicewrite(' action="javascript:integereval();"');        choicewrite(' action="javascript:integereval();"');
    }     }
Line 355  function draw() { Line 588  function draw() {
       choicewrite(' action="javascript:floateval();"');        choicewrite(' action="javascript:floateval();"');
    }     }
    if (ptype=='string') {     if (ptype=='string') {
       choicewrite(' action="javascript:stringeval();"');        if (pscat == 'ip') {
             choicewrite(' action="javascript:ipstringeval();"');
         } else {
             choicewrite(' action="javascript:stringeval();"');
         }
      }
      if (ptype != 'int' && ptype != 'float' && ptype != 'string') {
          choicewrite(' action=""');
    }     }
    choicewrite('>');     choicewrite('>');
    if (ptype=='tolerance') {     if (ptype=='tolerance') {
Line 439  function draw() { Line 679  function draw() {
          tablestart('Date and time');           tablestart('Date and time');
       }        }
       if (pscat=='interval') {        if (pscat=='interval') {
            var proctorkeytype = 'hidden'; 
            var donebuttontext = 'none';
            if (pmodval == '_done_proctor') {
                proctorkeytype = 'text';
                donebuttontext = 'block';
            }
            if (pmodval == '_done') {
                donebuttontext = 'block';
            }
          tablestart('Time interval');           tablestart('Time interval');
          choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>');           choicewrite( [
          intervaldis();              '<tr><td colspan="3">'+intervaldis()+'</td></tr>',
          choicewrite('</td></tr><tr bgcolor="#AAFFAA"><td>Time:'              '<tr><td>Time:</td><td colspan="2">',
          +'</td><td colspan=2>');                  '<span style="white-space:nowrap">'+intday()+' days </span>',
          intday();choicewrite('days ');                  '<span style="white-space:nowrap">'+inthour()+' hours</span>',
          inthour();choicewrite('hours ');                  '<span style="white-space:nowrap">'+intminute()+' mins</span>',
          intminute(); choicewrite('mins '); intsecond();                  '<span style="white-space:nowrap">'+intsecond()+' secs</span>',
          choicewrite('secs</td></tr></table>');                       '</td></tr>',
       } else {               '</table>',
          choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>'              '<br />',
               ].join("\n"));
            tablestart('Provide a "Done" button to students?');
            choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<label><input name="donebutton" value=""'+
                        ' type="radio" '+callintervalpmodval());
            if (pmodval == '') { choicewrite(' checked="checked"'); }
            choicewrite(' /> No</label><br />');
            choicewrite('<label><input name="donebutton" value="_done"'+
                        ' type="radio" '+callintervalpmodval());
            if (pmodval == '_done') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Yes</label><br />');
            choicewrite('<span style="white-space:nowrap">'+
                        '<label><input name="donebutton" value="_done_proctor"'+
                        ' type="radio" '+callintervalpmodval());
            if (pmodval == '_done_proctor') { choicewrite(' checked="checked"'); }
            choicewrite(' /> Yes, with proctor key</label>');
            choicewrite('&nbsp;<input name="donebutton_proctorkey" value='+
                        '"'+escapeHTML(pextraval)+'" type="'+proctorkeytype+
                        '" id="done_proctorkey" size="10"'+
                        ' onblur="parent.intcalc();" /></span><br />'+
                        '<div id="donebuttontextdiv" style="display:'+donebuttontext+'">'+
                        '<br /><span style="white-space:nowrap">'+
                        'Button text:'+
                        '<input name="donebutton_text" value='+
                        '"'+escapeHTML(pextravaltwo)+'" type="text" '+
                        'size="10" onblur="parent.intcalc();" /></span></div>');
            choicewrite('</td></tr></table>');
         } else {
            choicewrite('<tr><td colspan="3">'
          +cdate.toString()+           +cdate.toString()+
          '</td></tr><tr bgcolor="#AAFFAA"><td>Date:</td><td colspan=2>');           '</td></tr><tr><td>Date:</td><td colspan="2">');
          month();date();year();           month();date();year();
          choicewrite('</td></tr><tr bgcolor="#AAFFAA"><td>Time:'           choicewrite('</td></tr><tr><td>Time:'
          +'</td><td colspan=2>');hour();choicewrite('h ');minute();           +'</td><td colspan="2">');hour();choicewrite('h ');minute();
          choicewrite('m ');second();           choicewrite('m ');second();
          choicewrite('s</td></tr></table>');           choicewrite('s</td></tr></table>');
       }        }
Line 471  function draw() { Line 749  function draw() {
       } else {        } else {
        if (pscat=='range') {         if (pscat=='range') {
          tablestart('Integer range');                 tablestart('Integer range');      
          choicewrite('<tr bgcolor="#AAFFAA"><td>Lower Value:'+           choicewrite('<tr><td>Lower Value:'+
               '</td><td colspan=2><input type=text size=4 name=val2'+                '</td><td colspan="2"><input type="text" size="4" name="val2'+
               '></td></tr>');                '" /></td></tr>');
          choicewrite('<tr bgcolor="#AAFFAA"><td>Upper Value:'+           choicewrite('<tr><td>Upper Value:'+
               '</td><td colspan=2><input type=text size=4 name=val4'+                '</td><td colspan="2"><input type="text" size="4" name="val4'+
               '></td></tr></table>');                '" /></td></tr></table>');
          var range=new Array;           var range=new Array;
          if ((svalue!='') && (typeof(svalue)!="undefined")) {           if ((svalue!='') && (typeof(svalue)!="undefined")) {
             range=svalue.split(',');              range=svalue.split(',');
Line 499  function draw() { Line 777  function draw() {
         if (pscat=='any') {          if (pscat=='any') {
            tablestart('Integer');             tablestart('Integer');
         }          }
         choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');          choicewrite('<tr><td>Value:</td><td colspan="2">');
         choicewrite('<input name=intval size=10 value="'+svalue+          choicewrite('<input name="intval" size="10" value="'+escapeHTML(svalue)+
                     '" name=intval onChange="parent.integereval()">');                      '" onchange="parent.integereval()" />');
         choicewrite('</td></table>');          choicewrite('</td></tr></table>');
       }        }
      }       }
    }     }
Line 521  function draw() { Line 799  function draw() {
         if (pscat=='any') {          if (pscat=='any') {
            tablestart('Floating point number');             tablestart('Floating point number');
         }          }
         choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');          choicewrite('<tr><td>Value:</td><td colspan="2">');
         choicewrite('<input name=floatval size=10 value="'+svalue+          choicewrite('<input name="floatval" size="10" value="'+escapeHTML(svalue)+
                     '" name=floatval onChange="parent.floateval()">');                      '" onchange="parent.floateval()" />');
         choicewrite('</td></table>');          choicewrite('</td></tr></table>');
       }        }
    }     }
   
    if (ptype=='string') {     if (ptype=='string') {
       if (pscat=='default') {          if ((pscat=='any') || (pscat=='') || (pscat=='default') ||  
          tablestart('Default value or none');              (typeof(pscat)=='undefined')) {
          choicewrite('</table>');           
       } else {  
         if ((pscat=='any') || (pscat=='') || (typeof(pscat)=='undefined')) {  
            tablestart('Text');             tablestart('Text');
    choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');             choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<input name="stringval" size="20" value="'+svalue+             choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
                     '" type="text" onChange="parent.stringeval()">');                      '" type="text" onchange="parent.stringeval()" />');
         }          }
         if (pscat=='yesno') {          if (pscat=='yesno') {
            tablestart('Yes/No');             tablestart('Yes/No');
    choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');     choicewrite('<tr><td>Value:</td><td colspan="2">');
              choicewrite('<label><input name="stringval" value="yes"'+
                     ' type="radio" '+callradiostringeval('yes'));
              if (svalue=='yes') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes</label><br />');
              choicewrite('<label><input name="stringval" value="no"'+
                     ' type="radio" '+callradiostringeval('no'));
              if (svalue=='no') { choicewrite(' checked="checked"'); }
              choicewrite(' /> No</label><br />');
           }
           if (pscat=='problemstatus') {
              tablestart('Problem Status');
      choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<label><input name="stringval" value="yes"'+             choicewrite('<label><input name="stringval" value="yes"'+
                   ' type="radio" '+callradiostringeval('yes'));                    ' type="radio" '+callradiostringeval('yes'));
            if (svalue=='yes') { choicewrite(' checked'); }             if (svalue=='yes') { choicewrite(' checked="checked"'); }
            choicewrite('> Yes</label><br />');             choicewrite(' /> Yes</label><br />');
              choicewrite('<label><input name="stringval" value="answer"'+
                     ' type="radio" '+callradiostringeval('answer'));
              if (svalue=='answer') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes, and show correct answer if they exceed the maximum number of tries.</label><br />');
            choicewrite('<label><input name="stringval" value="no"'+             choicewrite('<label><input name="stringval" value="no"'+
                   ' type="radio" '+callradiostringeval('no'));                    ' type="radio" '+callradiostringeval('no'));
            if (svalue=='no') { choicewrite(' checked'); }             if (svalue=='no') { choicewrite(' checked="checked"'); }
            choicewrite('> No</label><br />');             choicewrite(' /> No, don\'t show correct/incorrect feedback.</label><br />');
              choicewrite('<label><input name="stringval" value="no_feedback_ever"'+
                     ' type="radio" '+callradiostringeval('no_feedback_ever'));
              if (svalue=='no_feedback_ever') { choicewrite(' checked="checked"'); }
              choicewrite(' /> No, show no feedback at all.</label><br />');
         }          }
         if (pscat=='examtype') {          if (pscat=='examtype') {
            tablestart('Exam Type');             tablestart('Exam Type');
    choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');     choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<label><input name="stringval" value="online"'+             choicewrite('<label><input name="stringval" value="online"'+
                 ' type="radio" '+callradiostringeval('online'));                  ' type="radio" '+callradiostringeval('online'));
            if (svalue=='online') { choicewrite(' checked'); }             if (svalue=='online') { choicewrite(' checked="checked"'); }
            choicewrite('> Online</label><br />');             choicewrite(' /> Online</label><br />');
            choicewrite('<label><input name="stringval" value="checkout"'+             choicewrite('<label><input name="stringval" value="checkout"'+
               ' type="radio" '+callradiostringeval('checkout'));                ' type="radio" '+callradiostringeval('checkout'));
            if (svalue=='checkout') { choicewrite(' checked'); }             if (svalue=='checkout') { choicewrite(' checked="checked"'); }
            choicewrite('> Check out</label><br />');             choicewrite(' /> Check out</label><br />');
        }         }
         if (pscat=='questiontype') {          if (pscat=='questiontype') {
            tablestart('Question Type');             tablestart('Question Type');
    choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');     choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<label><input name="stringval" value="problem"'+             choicewrite('<label><input name="stringval" value="problem"'+
                ' type="radio" '+callradiostringeval('problem'));                 ' type="radio" '+callradiostringeval('problem'));
            if (svalue=='problem') { choicewrite(' checked'); }             if (svalue=='problem') { choicewrite(' checked="checked"'); }
            choicewrite('> Standard Problem</label><br />');             choicewrite(' /> Standard Problem</label><br />');
 //   choicewrite('<label><input name="stringval" value="quiz"'+  //   choicewrite('<label><input name="stringval" value="quiz"'+
 //                ' type="radio" '+callradiostringeval('quiz'));  //                ' type="radio" '+callradiostringeval('quiz'));
 //         if (svalue=='quiz') { choicewrite(' checked'); }  //         if (svalue=='quiz') { choicewrite(' checked="checked"'); }
 //         choicewrite('> Quiz</label><br />');  //         choicewrite(' /> Quiz</label><br />');
            choicewrite('<label><input name="stringval" value="practice"'+             choicewrite('<label><input name="stringval" value="practice"'+
                   ' type="radio" '+callradiostringeval('practice'));                    ' type="radio" '+callradiostringeval('practice'));
            if (svalue=='practice') { choicewrite(' checked'); }             if (svalue=='practice') { choicewrite(' checked="checked"'); }
            choicewrite('> Practice</label><br />');             choicewrite(' /> Practice</label><br />');
            choicewrite('<label><input name="stringval" value="exam"'+             choicewrite('<label><input name="stringval" value="exam"'+
                   ' type="radio" '+callradiostringeval('exam'));                    ' type="radio" '+callradiostringeval('exam'));
            if (svalue=='exam') { choicewrite(' checked'); }             if (svalue=='exam') { choicewrite(' checked="checked"'); }
            choicewrite('> Exam</label><br />');             choicewrite(' /> Bubblesheet Exam</label><br />');
 //         choicewrite('<label><input name="stringval" value="assess"'+  //         choicewrite('<label><input name="stringval" value="assess"'+
 //              ' type="radio" '+callradiostringeval('assess'));  //              ' type="radio" '+callradiostringeval('assess'));
 //         if (svalue=='assess') { choicewrite(' checked'); }  //         if (svalue=='assess') { choicewrite(' checked="checked"'); }
 //         choicewrite('> Assessment</label><br />');  //         choicewrite(' /> Assessment</label><br />');
            choicewrite('<label><input name="stringval" value="survey"'+             choicewrite('<label><input name="stringval" value="survey"'+
                 ' type="radio" '+callradiostringeval('survey'));                  ' type="radio" '+callradiostringeval('survey'));
            if (svalue=='survey') { choicewrite(' checked'); }             if (svalue=='survey') { choicewrite(' checked="checked"'); }
            choicewrite('> Survey</label><br />');             choicewrite(' /> Survey</label><br />');
 //         choicewrite('<label><input name="stringval" value="form"'+  //         choicewrite('<label><input name="stringval" value="form"'+
 //                ' type="radio" '+callradiostringeval('form'));  //                ' type="radio" '+callradiostringeval('form'));
 //         if (svalue=='form') { choicewrite(' checked'); }  //         if (svalue=='form') { choicewrite(' checked="checked"'); }
 //         choicewrite('> Input Form</label><br />');  //         choicewrite('> Input Form</label><br />');
              choicewrite('<label><input name="stringval" value="surveycred"'+
                   ' type="radio" '+callradiostringeval('surveycred'));
              if (svalue=='surveycred') { choicewrite(' checked="checked"'); }
              choicewrite('> Survey (credit for submission)</label><br />');
              choicewrite('<label><input name="stringval" value="anonsurvey"'+
                   ' type="radio" '+callradiostringeval('anonsurvey'));
              if (svalue=='anonsurvey') { choicewrite(' checked="checked"'); }
              choicewrite('> Anonymous Survey</label><br />');
              choicewrite('<label><input name="stringval" value="anonsurveycred"'+
                   ' type="radio" '+callradiostringeval('anonsurveycred'));
              if (svalue=='anonsurveycred') { choicewrite(' checked="checked"'); }
              choicewrite('> Anonymous Survey (credit for submission)</label><br />');
              choicewrite('<label><input name="stringval" value="randomizetry"'+
                   ' type="radio" '+callradiostringeval('randomizetry'));
              if (svalue=='randomizetry') { choicewrite(' checked="checked"'); }
              choicewrite('> New Randomization Each N Tries (default N=1)</label><br />');
            choicewrite('<label><input name="stringval" value="library"'+             choicewrite('<label><input name="stringval" value="library"'+
                ' type="radio" '+callradiostringeval('library'));                 ' type="radio" '+callradiostringeval('library'));
            if (svalue=='library') { choicewrite(' checked'); }             if (svalue=='library') { choicewrite(' checked="checked"'); }
            choicewrite('> Library</label><br />');             choicewrite(' /> Library</label><br />');
           }
           if (pscat=='lenient') {
              var patternLenientStd = /^(yes|no|default)$/;
              var patternLenientRel = /^([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)$/;
              var lenientweighted = 'none';
              var relatives = new Array;
              tablestart('Lenient Grading (Partial Credit)');
              choicewrite('<tr><td>Value:</td><td colspan="2">');
              choicewrite('<label><input name="stringval" value="yes"'+
                     ' type="radio" '+calllenientradioeval('yes'));
              if (svalue=='yes') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes</label><br />');
              choicewrite('<label><input name="stringval" value="no"'+
                     ' type="radio" '+calllenientradioeval('no'));
              if (svalue=='no') { choicewrite(' checked="checked"'); }
              choicewrite(' /> No</label><br />');
              choicewrite('<label><input name="stringval" value="default"'+
                  ' type="radio" '+calllenientradioeval('default'));
              if (svalue=='default') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Default (only bubblesheet grading is lenient)</label><br />');
              choicewrite('<label><input name="stringval" value="weighted"'+
                  ' type="radio" '+calllenientradioeval('weighted'));
              if (!patternLenientStd.test(svalue) && svalue != '') {
                 choicewrite(' checked="checked"');
                 lenientweighted='block';
                 var relatives = svalue.match(patternLenientRel);
              }
              choicewrite(' />Yes, weighted (optionresponse in checkbox mode)</label><br /><br />'+
                          '<div id="lenientweighteddiv" style="display:'+lenientweighted+'">'+
                          '<table class="LC_parmsel_table"><tr bgcolor="#C5DB99">'+
                          '<th colspan="2">Foil submission status</th><th>Points</th></tr>');
              var lenienttypes = ['Correct (checked)','Correct (unchecked)','Incorrect (checked)','Incorrect (unchecked)'];
              for (var i=0; i<lenienttypes.length; i++) {
                  var j = i+1;
                  if (relatives[j] == '') {
                      if (i < 2) {
                          relatives[j] = '1.0';
                      } else {
                          relatives[j] = '0.0';
                      }
                  }
                  choicewrite('<tr><td colspan="2">'+lenienttypes[i]+'</td>'+
                              '<td><input type="text" name="lenientrelwt" value="'+relatives[j]+'"'+
                              ' size="3" onblur="parent.lenienteval(\'weighted\')" /></td></tr>');
              }
              choicewrite('</table></div>');
           }
           if (pscat=='discussvote') {
              tablestart('Discussion Voting');
              choicewrite('<tr><td>Value:</td><td colspan="2">');
              choicewrite('<label><input name="stringval" value="yes"'+
                     ' type="radio" '+callradiostringeval('yes'));
              if (svalue=='yes') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes</label><br />');
              choicewrite('<label><input name="stringval" value="notended"'+
                     ' type="radio" '+callradiostringeval('notended'));
              if (svalue=='notended') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes, unless discussion ended</label><br />');
              choicewrite('<label><input name="stringval" value="no"'+
                     ' type="radio" '+callradiostringeval('no'));
              if (svalue=='no') { choicewrite(' checked="checked"'); }
              choicewrite(' /> No</label><br />');
         }          }
         if (pscat=='ip') {          if (pscat=='ip') {
            tablestart('IP Number/Name');              var currallow = new Array; 
    choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');              var currdeny = new Array;
            choicewrite('<input name="stringval" size="20" value="'+svalue+              if ((svalue != '') && (svalue != null)) {
                     '" onChange="parent.stringeval()">');                  var patternComma = /,/;
                   var patternAllow = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
                   var patternDeny = /^\!([\[\]a-zA-Z\.\d\*\-]+)$/;
                   var current = new Array;
                   if (patternComma.test(svalue)) {  
                       current = svalue.split(',');
                   } else {
                       current = (svalue);
                   }
                   for (var i=0; i<current.length; i++) {
                       if (patternDeny.test(current[i])) {
                           var denied = current[i].replace(/^!/,'');
                           currdeny.push(denied);
                       } else {
                           if (patternAllow.test(current[i])) {
                               currallow.push(current[i]);
                           } 
                       }
                   }
               }
               if (currdeny.length == 0) {
                   currdeny = ('');
               }
               if (currallow.length == 0) {
                   currallow = ('');
               }
               var curripaccess = [currallow,currdeny];
               tablestart('IP Number/Name');
               choicewrite('<tr><th>Allow from</th><th>Deny from</th></tr><tr>');
               var acctypes = ['allow','deny'];
               for (var i=0; i<acctypes.length; i++) {
                   choicewrite('<td valign="top">'+
                               '<div class="LC_string_ipacc_wrap" id="LC_string_ipacc_'+acctypes[i]+'">'+
                               '<div class="LC_string_ipacc_inner" id="LC_string_ipacc_inner_'+acctypes[i]+'">');
                   for (var j=0; j<curripaccess[i].length; j++) {
                       choicewrite('<div><input type="text" size="10" name="setip'+acctypes[i]+'" value="'+curripaccess[i][j]+'" onblur="parent.ipstringeval();" />');
                       choicewrite('<a href="#" onclick="parent.removeIpRule(\''+acctypes[i]+'\',\''+j+'\')">Remove</a>');
                       choicewrite('</div>');
                   }
                   choicewrite('</div><button onclick="parent.addIpRule(\''+acctypes[i]+'\');">Add item</button>');
               }
               choicewrite('</div></td></tr></table>');
         }          }
         if (pscat=='fileext') {          if (pscat=='fileext') {
             tablestart('Allowed File Extensions');              tablestart('Allowed File Extensions');
    choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');     choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<label><input name="radstringval" value="txt"'+             choicewrite('<label><input name="radstringval" value="txt"'+
                ' type="radio" '+callradiostringeval('txt'));                 ' type="radio" '+callradiostringeval('txt'));
            if (svalue=='txt') { choicewrite(' checked'); }             if (svalue=='txt') { choicewrite(' checked="checked"'); }
            choicewrite('> Plain Text</label><br />');             choicewrite(' /> Plain Text</label><br />');
            choicewrite('<label><input name="radstringval" value="png,jpg,jpeg,gif"'+             choicewrite('<label><input name="radstringval" value="png,jpg,jpeg,gif"'+
                ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));                 ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));
            if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked'); }             if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked="checked"'); }
            choicewrite('> Picture File</label><br />');             choicewrite(' /> Picture File</label><br />');
            choicewrite('<label><input name="radstringval" value="doc,xls,ppt"'+             choicewrite('<label><input name="radstringval" value="doc,docx,xls,xlsx,ppt,pptx"'+
                ' type="radio" '+callradiostringeval('doc,xls,ppt'));                 ' type="radio" '+callradiostringeval('doc,docx,xls,xlsx,ppt,pptx'));
            if (svalue=='doc,xls,ppt') { choicewrite(' checked'); }             if (svalue=='doc,docx,xls,xlsx,ppt,pptx') { choicewrite(' checked="checked"'); }
            choicewrite('> Office Document</label><br />');             if (svalue=='doc,xls,ppt') { choicewrite(' checked="checked"'); }
            choicewrite('<input name="stringval" size="20" value="'+svalue+             choicewrite(' /> Office Document</label><br />');
                     '" onChange="parent.stringeval()">');             choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
                       '" onchange="parent.stringeval()" />');
        }         }
        if (pscat=='useslots') {         if (pscat=='useslots') {
            tablestart('Slots control access');             tablestart('Slots control access');
    choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');     choicewrite('<tr><td>Value:</td><td colspan="2">');
            choicewrite('<label><input name="stringval" value="no"'+             choicewrite('<label><input name="stringval" value="no"'+
                   ' type="radio" '+callradiostringeval('no'));                    ' type="radio" '+callradiostringeval('no'));
            if (svalue=='no') { choicewrite(' checked'); }             if (svalue=='no') { choicewrite(' checked="checked"'); }
            choicewrite('> No</label><br />');             choicewrite(' /> No</label><br />');
            choicewrite('<label><input name="stringval" value="resource"'+             choicewrite('<label><input name="stringval" value="resource"'+
                   ' type="radio" '+callradiostringeval('resource'));                    ' type="radio" '+callradiostringeval('resource'));
            if (svalue=='resource') { choicewrite(' checked'); }             if (svalue=='resource') { choicewrite(' checked="checked"'); }
            choicewrite('> Yes, and the scope of student selected slot is a single resource.</label><br />');             choicewrite(' /> Yes, and the scope of student selected slot is a single resource.</label><br />');
            choicewrite('<label><input name="stringval" value="sequence"'+             choicewrite('<label><input name="stringval" value="map"'+
                   ' type="radio" '+callradiostringeval('sequence'));                    ' type="radio" '+callradiostringeval('map'));
            if (svalue=='sequence') { choicewrite(' checked'); }             if (svalue=='map') { choicewrite(' checked="checked"'); }
            choicewrite('> Yes, and the scope of student selected slot is the enclosing map/folder.</label><br />');             choicewrite(' /> Yes, and the scope of student selected slot is the enclosing map/folder. When checking in, it applies to only one resource.</label><br />');
        }             choicewrite('<label><input name="stringval" value="map_map"'+
         choicewrite('</td></table>');                    ' type="radio" '+callradiostringeval('map_map'));
              if (svalue=='map_map') { choicewrite(' checked="checked"'); }
              choicewrite(' /> Yes, and the scope of student selected slot is the enclosing map/folder. When checking in, all resources in the map/folder are checked in.</label><br />');
           choicewrite('</td></tr></table>');
       }        }
    }     }
         
Line 648  function draw() { Line 1066  function draw() {
       choicewrite('<table>');        choicewrite('<table>');
       if (svalue) {        if (svalue) {
          choicewrite('<tr><td colspan="9">Current choice:</td><td bgcolor="'+           choicewrite('<tr><td colspan="9">Current choice:</td><td bgcolor="'+
                      svalue+'" colspan="2">&nbsp;</td></tr>');                       escapeHTML(svalue)+'" colspan="2">&nbsp;</td></tr>');
       }        }
       for (var ir=0; ir<=10; ir++) {        for (var ir=0; ir<=10; ir++) {
           for (var ig=0; ig<=10; ig++) {            for (var ig=0; ig<=10; ig++) {
Line 662  function draw() { Line 1080  function draw() {
       choicewrite('</table></td></table>');        choicewrite('</table></td></table>');
    }     }
   
    choicewrite('</table></form>');     choicewrite('</form>');
    choiceend();     choiceend();
 }  }
   
 function sopt(va,text) {  function sopt(va,text) {
    selwrite('<option value="'+va+'"');     selwrite('<option value="'+va+'"');
    if (va==pscat) {     if (va==pscat) {
      selwrite(' selected');       selwrite(' selected="selected"');
    }     }
    selwrite('>'+text+'</option>');     selwrite('>'+text+'</option>');
 }  }
Line 680  function catchange() { Line 1098  function catchange() {
    draw();     draw();
 }  }
   
   function recursechange() {
      var rform=selector.document.forms.frec;
      var count = rform.recurse.length;
      if (count > 0) {
          for (var i=0; i<count; i++) {
              if (rform.recurse[i].checked) {
                  var colnum = pnonreccol;
                  if (rform.recurse[i].value == 1) {
                      colnum++;
                  }
                  pmarker = pmarkerst+'_'+pparm+'&'+colnum; 
              }
          }
      }
   }
   
 function assemble() {  function assemble() {
     if ((ptype=='date') && (pscat!='interval')) {      if ((ptype=='date') && (pscat!='interval')) {
         svalue=Math.round(cdate.getTime()/1000);          svalue=Math.floor(cdate.getTime()/1000);
     }      }
     if (ptype=='tolerance') {      if (ptype=='tolerance') {
        if (pscat=='relative_sym') {         if (pscat=='relative_sym') {
Line 730  function assemble() { Line 1164  function assemble() {
 function init() {  function init() {
   var i;    var i;
   var subs=new Array();    var subs=new Array();
     var doneRegExp = /_done(|\:[^\:]+\:)/;
     var doneproctorRegExp = /_done(|\:[^\:]+\:)_proctor/;
     var proctorkeyRegExp = /^(\d+)_(.+)$/;
     var donetextRegExp = /\:([^\:]+)\:/;
     var markerRegExp = /^(.+)_([A-Za-z0-9]+)\&(\d+)$/; 
   var namevalue=this.window.location.search.split('&');    var namevalue=this.window.location.search.split('&');
   namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);    namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);
   
Line 751  function init() { Line 1190  function init() {
      if (pair[0]=='call') { pcode=pair[1]; }       if (pair[0]=='call') { pcode=pair[1]; }
      if (pair[0]=='marker') { pmarker=pair[1]; }       if (pair[0]=='marker') { pmarker=pair[1]; }
      if (pair[0]=='name') { pname=pair[1]; }       if (pair[0]=='name') { pname=pair[1]; }
        if (pair[0]=='modal') { pmodal=pair[1]; }
      if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {       if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {
          defhour=pair[1];           defhour=pair[1];
      }       }
Line 758  function init() { Line 1198  function init() {
      if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }       if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }
   }    }
   
     var tablecol = ''; 
     var ismap = '';
     if (markerRegExp.test(pmarker)) {
         var markerinfo = pmarker.match(markerRegExp);
         if (markerinfo.length == 4) {
             pmarkerst = markerinfo[1];
             pparm = markerinfo[2];
             tablecol = markerinfo[3]; 
             if (tablecol == 17 || tablecol == 16) {
                 ismap = 1;
                 if (tablecol == 17) {
                     precursive = 1;
                 }
                 pnonreccol = 16;
             } else if (tablecol == 11 || tablecol == 10) { 
                 ismap = 1;
                 if (tablecol == 11) {
                     precursive = 1;
                 }
                 pnonreccol = 10;
             } else if (tablecol == 7 || tablecol == 6) {
                 ismap = 1;
                 if (tablecol == 7) {
                     precursive = 1;
                 }
                 pnonreccol = 6;
             } else if (tablecol == 3 || tablecol == 2) {
                 ismap = 1;
                 if (tablecol == 3) {
                     precursive = 1;
                 }
                 pnonreccol = 2;
             }
         }
     }
   
   
     if (ptype=='date' && pscat == 'interval') {
         if (doneproctorRegExp.test(pvalue)) {
             var current = pvalue.match(doneproctorRegExp);
             if (current.length == 2) {
                 var textstr = current[1];
                 if (textstr != '') {
                     var textvals = textstr.match(donetextRegExp);
                     if (textvals.length == 2) {
                         pextravaltwo = textvals[1];
                     }
                 }
             }
             var intervalwithkey = pvalue.replace(doneproctorRegExp,'');
             if (proctorkeyRegExp.test(intervalwithkey)) {
                 var currvals = intervalwithkey.match(proctorkeyRegExp);
                 if (currvals.length == 3) {
                     pvalue = currvals[1];
                     pextraval = currvals[2];
                     pmodval = '_done_proctor';
                 } else {
                     pmodval = '';
                 }
             }
         } else {
             if (doneRegExp.test(pvalue)) {
                 var current = pvalue.match(doneRegExp); 
                 if (current.length == 2) {
                     var textstr = current[1];
                     if (textstr != '') {
                         var textvals = textstr.match(donetextRegExp);
                         if (textvals.length == 2) {
                             pextravaltwo = textvals[1];
                         }
                     }
                 }
                 var pnumval = pvalue.replace(doneRegExp,'');
                 pmodval = '_done';
                 pvalue = pnumval;
             }
         }
     }
   svalue=pvalue;    svalue=pvalue;
   if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&    if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&
       (pscat=='default') &&         (pscat=='default') && 
Line 778  function init() { Line 1296  function init() {
      }       }
   }    }
   
   this.window.selector.document.clear();    this.window.selector.document.open();
   selwrite('<html><body bgcolor="#FFFFFF">');    selwrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
     selwrite('<html xmlns="http://www.w3.org/1999/xhtml">');
   selwrite('<form name="fsel"><b>'+pname+'</b><br>');    selwrite('<head>');
   selwrite('<select name="fcat" onChange="parent.catchange();">');    selwrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
     selwrite('<title>LON-CAPA</title>');
     selwrite('<style type="text/css">');
     selwrite('<!--');
     selwrite('body {');
     selwrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
     selwrite('line-height:130%;');
     selwrite('font-size:0.83em;');
     selwrite('background: #FFFFFF;');
     selwrite('}');
     selwrite('-->');
     selwrite('</style>');
     selwrite('</head>');
     selwrite('<body>');
     selwrite('<form name="fsel" action=""><b>'+pname+'</b><br />');
     selwrite('Format of Value(s): <select name="fcat" onchange="parent.catchange();">');
   
   if (ptype=='tolerance') {    if (ptype=='tolerance') {
      sopt('default','Default');       sopt('default','Default');
Line 793  function init() { Line 1326  function init() {
   }    }
   
   if (ptype=='date') {    if (ptype=='date') {
      sopt('default','Default');       if (pscat != 'interval') {
      sopt('start','Starting Date');           sopt('default','Default');
      sopt('end','Ending Date');   sopt('start','Starting Date');
      sopt('interval','Time Interval');   sopt('end','Ending Date');
             } else {
            sopt('interval','Time Interval');
        }
   
      if ((pvalue!='') && (typeof(pvalue)!="undefined")) {       if ((pvalue!='') && (typeof(pvalue)!="undefined")) {
         cdate.setTime(pvalue*1000);          cdate.setTime(pvalue*1000);
      } else {               } else {        
Line 838  function init() { Line 1374  function init() {
   }    }
   
   if (ptype=='string') {    if (ptype=='string') {
      sopt('default','Default');       //sopt('default','Default');
        if (pscat == 'yesno')        { sopt('yesno','Yes/No'); }
        else if (pscat == 'problemstatus'){ sopt('problemstatus','Problem Status'); }
        else if (pscat == 'examtype')     { sopt('examtype','Exam Type'); }
        else if (pscat == 'questiontype') { sopt('questiontype','Question Type'); }
        else if (pscat == 'lenient')      { sopt('lenient','Lenient Grading (Partial Credit)'); }
        else if (pscat == 'discussvote')  { sopt('discussvote','Discussion Voting'); }
        else if (pscat == 'ip')           { sopt('ip','IP Number/Name'); }
        else if (pscat == 'fileext')      { sopt('fileext','File Extension'); }
        else if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }
        else { pscat = 'any'; }
      sopt('any','String Value');       sopt('any','String Value');
   }    }
   
Line 848  function init() { Line 1394  function init() {
   }    }
   
   selwrite('</select></form>');    selwrite('</select></form>');
     if (ismap = 1) {
   selwrite('<a href="javascript:parent.assemble();');        if ((pparm != 'hiddenresource') && (pparm != 'encrypturl')) {
             selwrite('<form name="frec" action="">');
             selwrite('Recursive: <label><input type="radio" name="recurse" value="1" ');
             if (precursive == 1) {
                 selwrite('checked="checked" ');
             }
             selwrite('onclick="parent.recursechange();" />Yes</label>&nbsp;&nbsp;');
             selwrite('<label><input type="radio" name="recurse" value="0" ');
             if (precursive != 1) {
                 selwrite('checked="checked" ');
             }
             selwrite('onclick="parent.recursechange();" />No</label>'); 
             selwrite('</form><br />');
         }
     }
     var targ='parent.opener';
     if (pmodal==1) {
        targ='parent.parent';
     }
     if ((ptype=='date') && (pscat=='interval')) {
         selwrite('<a href="javascript:parent.validateInterval();');
     } else {
         selwrite('<a href="javascript:parent.assemble();');
     }
   if (preturn!='') {    if (preturn!='') {
      selwrite(       selwrite(targ+'.document.'+preturn+'_value.value=parent.window.svalue;');
       'parent.opener.document.'+preturn+'_value.value=parent.window.svalue;');       selwrite(targ+'.document.'+preturn+'_type.value=parent.window.stype;');
      selwrite(  
       'parent.opener.document.'+preturn+'_type.value=parent.window.stype;');  
   }    }
   if (pmarker!='') {    if (pmarker!='') {
      selwrite(       selwrite(targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');  
   }    }
   if (pcode!='') {    if (pcode!='') {
      selwrite('parent.opener.'+pcode+'();');       selwrite(targ+'.'+pcode+'();');
   }    }
   selwrite('">Store</a>&nbsp;&nbsp;');    selwrite('">Save</a>&nbsp;&nbsp;');
   
   selwrite('<a href="javascript:');    selwrite('<a href="javascript:');
      selwrite(    selwrite(targ+'.document.'+preturn+'_value.value='+"'';");
       'parent.opener.document.'+preturn+'_value.value='+"'';");  
   if (pmarker!='') {    if (pmarker!='') {
      selwrite(       selwrite(
      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');       targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
   }    }
   if (pcode!='') {    if (pcode!='') {
      selwrite('parent.opener.'+pcode+'();');       selwrite(targ+'.'+pcode+'();');
   }    }
   selwrite('">Delete</a>&nbsp;&nbsp;');    selwrite('">Delete</a>&nbsp;&nbsp;');
     
   selwrite('<a href="javascript:');  
 // Old code :  
 //----------------------------------------------------------------------  
 //  if (preturn!='') {  
 //     selwrite('parent.opener.document.'+preturn+'_value.value='+"'';");  
 //     selwrite('parent.opener.document.'+preturn+'_type.value='+"'';");  
 // }  
 //  if (pmarker!='') {  
 //     selwrite('parent.opener.document.'+preturn+'_marker.value='+"'';");  
 //  }  
 //  if (pcode!='') {  
 //     selwrite('parent.opener.'+pcode+'();');  
 //  }  
 //----------------------------------------------------------------------  
 // Just close the window to 'cancel' the operation.  There are javascript  
 // errors in the above commented out code that I have not been able to   
 // track down.  I think they reside in 'parent.opener.'+pcode+'();'  
 //  
   selwrite('this.parent.close();');  
   selwrite('">Cancel</a>');   
    
   selwrite('</body></html>');    selwrite('</body></html>');
   this.window.selector.document.close();    this.window.selector.document.close();
   draw();    draw();
       
 }  }
   
   // ]]>
 </script>  </script>
   </head>
   
 <frameset rows="120,*" onLoad="init();">  <frameset rows="125,*" onload="init();">
 <frame name=selector src="empty.html">  <frame name="selector" src="empty.html" />
 <frame name=choices src="empty.html">  <frame name="choices" src="empty.html" />
 </frameset>  </frameset>
   
   

Removed from v.1.37  
changed lines
  Added in v.1.76


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.