Annotation of rat/client/parameter.html, revision 1.71.6.2

1.56      raeburn     1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
                      2:     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
                      3: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
1.1       www         4: <!--
                      5: The LearningOnline Network with CAPA
                      6: Parameter Input Window
1.16      albertel    7: //
1.71.6.2! raeburn     8: // $Id: parameter.html,v 1.71.6.1 2020/01/14 17:44:27 raeburn Exp $
1.16      albertel    9: //
                     10: // Copyright Michigan State University Board of Trustees
                     11: //
                     12: // This file is part of the LearningOnline Network with CAPA (LON-CAPA).
                     13: //
                     14: // LON-CAPA is free software; you can redistribute it and/or modify
                     15: // it under the terms of the GNU General Public License as published by
                     16: // the Free Software Foundation; either version 2 of the License, or
                     17: // (at your option) any later version.
                     18: //
                     19: // LON-CAPA is distributed in the hope that it will be useful,
                     20: // but WITHOUT ANY WARRANTY; without even the implied warranty of
                     21: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     22: // GNU General Public License for more details.
                     23: //
                     24: // You should have received a copy of the GNU General Public License
                     25: // along with LON-CAPA; if not, write to the Free Software
                     26: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                     27: //
                     28: // /home/httpd/html/adm/gpl.txt
                     29: //
                     30: // http://www.lon-capa.org/
                     31: //
1.1       www        32: -->
                     33: <head>
1.56      raeburn    34: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1.1       www        35: <title>LON-CAPA</title>
                     36: 
1.46      albertel   37: <script type="text/javascript">
1.56      raeburn    38: // <![CDATA[
1.1       www        39: 
                     40: var ptype='';
                     41: var pvalue='';
1.68      raeburn    42: var pmodval='';
1.70      raeburn    43: var pextraval='';
1.71      raeburn    44: var pextravaltwo='';
1.1       www        45: var preturn='';
                     46: var pcode='';
1.2       www        47: var pscat='';
                     48: var pmarker='';
1.63      www        49: var pmodal='';
1.1       www        50: var pname='';
                     51: 
1.31      www        52: var defhour=0;
                     53: var defmin=0;
                     54: var defsec=0;
                     55: 
1.1       www        56: var svalue;
1.2       www        57: var stype;
                     58: var smarker;
1.1       www        59: 
                     60: var vars=new Array();
                     61: 
1.2       www        62: var cdate=new Date();
                     63: 
                     64: var csec;
                     65: var cmin;
                     66: var chour;
                     67: var cday;
                     68: 
                     69: var months=new Array();
                     70: 
                     71: 
1.1       www        72: function selwrite(text) {
                     73:   this.window.selector.document.write(text);
                     74: }
                     75: 
                     76: function choicestart() {
1.61      raeburn    77:   this.window.choices.document.open();
1.62      raeburn    78:   choicewrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
                     79:   choicewrite('<html xmlns="http://www.w3.org/1999/xhtml">');
1.55      bisitz     80:   choicewrite('<head>');
1.62      raeburn    81:   choicewrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
                     82:   choicewrite('<title>LON-CAPA</title>');
1.55      bisitz     83:   choicewrite('<style type="text/css">');
                     84:   choicewrite('<!--');
                     85:   choicewrite('body {');
                     86:   choicewrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
                     87:   choicewrite('line-height:130%;');
                     88:   choicewrite('font-size:0.83em;');
                     89:   choicewrite('background: #FFFFFF;');
                     90:   choicewrite('}');
                     91:   choicewrite('table.LC_parmsel_table {font-size: 90%;}');
                     92:   choicewrite('table.LC_parmsel_table tr td { padding: 5px; border: 1px solid #C8C8C8;}');
                     93:   choicewrite('-->');
                     94:   choicewrite('</style>');
                     95:   choicewrite('</head>');
1.62      raeburn    96:   choicewrite('<body>');
1.1       www        97: }
                     98: 
                     99: function choiceend() {
                    100:   choicewrite('</body></html>');
                    101:   this.window.choices.document.close();
                    102: }
                    103: 
                    104: function choicewrite(text) {
                    105:   this.window.choices.document.write(text);
                    106: }
                    107: 
                    108: function tablestart(headtext) {
1.55      bisitz    109:   choicewrite('<table class="LC_parmsel_table"><tr bgcolor="#C5DB99"><th colspan="3">'+
1.1       www       110:               headtext+'</th></tr>');
                    111: }
                    112: 
                    113: function valline(text,id1,id2) {
1.52      bisitz    114:   choicewrite('<tr><td>'+text+
1.51      bisitz    115:               '</td><td><input type="text" size="4" name="val'+
1.53      bisitz    116:               id1+'" /></td><td>incl:<input type="checkbox" name="val'+
                    117:               id2+'" /></td></tr>');
1.1       www       118: }
                    119: 
1.46      albertel  120: function escapeHTML(text) {
                    121:   text = text.replace(/&/g, '&amp;');
                    122:   text = text.replace(/"/g, '&quot;');
                    123:   text = text.replace(/</g, '&lt;');
                    124:   text = text.replace(/>/g, '&gt;');
                    125:   return text;
                    126: }
                    127: 
1.2       www       128: function datecalc() {
                    129:     var sform=choices.document.forms.sch;
                    130: 
                    131:     cdate.setHours(sform.hours.options[sform.hours.selectedIndex].value);
                    132:     cdate.setMinutes(sform.minutes.options[sform.minutes.selectedIndex].value);
                    133:     cdate.setSeconds(sform.minutes.options[sform.seconds.selectedIndex].value);
                    134:     cdate.setDate(sform.date.options[sform.date.selectedIndex].value);
                    135:     cdate.setMonth(sform.month.options[sform.month.selectedIndex].value);
                    136:     cdate.setFullYear(sform.year.options[sform.year.selectedIndex].value);
                    137: 
                    138:     draw();
                    139: }
                    140: 
                    141: function hour() {
                    142:    var thishour=cdate.getHours();
                    143:     var i; var j;
1.53      bisitz    144:     choicewrite('<select name="hours" onchange="parent.datecalc();">');
1.2       www       145:     for (i=0;i<=23;i++) {
1.54      bisitz    146:         choicewrite('<option value="'+i+'"');
1.2       www       147:         if (i==thishour) {
1.54      bisitz    148:             choicewrite(' selected="selected"');
1.2       www       149:         }
                    150:         choicewrite('>');
                    151:         if (i==12) { choicewrite('noon'); } else {
                    152:            if (i==0) { choicewrite('midnight') } else {
                    153:               
                    154:                  if (i<12) { choicewrite(i+' am'); } else {
                    155:                     j=i-12; choicewrite(j+' pm');
                    156:                  }
                    157:               
                    158:            }
                    159:         }
                    160:         choicewrite('</option>');
                    161:     }
                    162:     choicewrite('</select>');
                    163: }
                    164: 
                    165: function minute() {
                    166:    var thisminutes=cdate.getMinutes();
                    167:     var i;
1.53      bisitz    168:     choicewrite('<select name="minutes" onchange="parent.datecalc();">');
1.2       www       169:     for (i=0;i<=59;i++) {
1.54      bisitz    170:         choicewrite('<option value="'+i+'"');
1.2       www       171:         if (i==thisminutes) {
1.54      bisitz    172:             choicewrite(' selected="selected"');
1.2       www       173:         }
                    174:         choicewrite('>'+i+'</option>');
                    175:     }
                    176:     choicewrite('</select>');
                    177: } 
                    178: 
                    179: function second() {
                    180:    var thisseconds=cdate.getSeconds();
                    181:     var i;
1.53      bisitz    182:     choicewrite('<select name="seconds" onchange="parent.datecalc();">');
1.2       www       183:     for (i=0;i<=59;i++) {
1.54      bisitz    184:         choicewrite('<option value="'+i+'"');
1.2       www       185:         if (i==thisseconds) {
1.54      bisitz    186:             choicewrite(' selected="selected"');
1.2       www       187:         }
                    188:         choicewrite('>'+i+'</option>');
                    189:     }
                    190:     choicewrite('</select>');
                    191: } 
                    192: 
                    193: 
                    194: function date() {
                    195:    var thisdate=cdate.getDate();
                    196:     var i;
1.53      bisitz    197:     choicewrite('<select name="date" onchange="parent.datecalc();">');
1.2       www       198:     for (i=1;i<=31;i++) {
1.54      bisitz    199:         choicewrite('<option value="'+i+'"');
1.2       www       200:         if (i==thisdate) {
1.54      bisitz    201:             choicewrite(' selected="selected"');
1.2       www       202:         }
                    203:         choicewrite('>'+i+'</option>');
                    204:     }
                    205:     choicewrite('</select>');
                    206: }
                    207: 
                    208: function year() {
                    209:    var thisyear=cdate.getFullYear();
1.19      www       210:    var nowdate=new Date();
                    211:    var nowyear=nowdate.getFullYear();
1.33      albertel  212:    if ( !thisyear ) { thisyear=nowyear; }
1.19      www       213:    var loweryear=thisyear-2;
                    214:    var upperyear=thisyear+5;
                    215:    if (thisyear>nowyear) { loweryear=nowyear-2; }
                    216:    if (thisyear<nowyear) { upperyear=nowyear+5; } 
1.2       www       217:     var i;
1.53      bisitz    218:     choicewrite('<select name="year" onchange="parent.datecalc();">');
1.19      www       219:     for (i=loweryear;i<=upperyear;i++) {
1.54      bisitz    220:         choicewrite('<option value="'+i+'"');
1.2       www       221:         if (i==thisyear) {
1.54      bisitz    222:             choicewrite(' selected="selected"');
1.2       www       223:         }
                    224:         choicewrite('>'+i+'</option>');
                    225:     }
                    226:     choicewrite('</select>');
                    227: }
                    228: 
                    229: function month() {
                    230:     var thismonth=cdate.getMonth();
                    231:     var i;
1.53      bisitz    232:     choicewrite('<select name="month" onchange="parent.datecalc();">');
1.2       www       233:     for (i=0;i<=11;i++) {
1.54      bisitz    234:         choicewrite('<option value="'+i+'"');
1.2       www       235:         if (i==thismonth) {
1.54      bisitz    236:             choicewrite(' selected="selected"');
1.2       www       237:         }
                    238:         choicewrite('>'+months[i]+'</option>');
                    239:     }
                    240:     choicewrite('</select>');
                    241: }
                    242:     
                    243:     
                    244: function intminute() {
                    245:    var thisminutes=cmins;
                    246:     var i;
1.69      musolffc  247:     var result = '';
                    248:     result += '<select name="minutes" onchange="parent.intcalc();">';
1.2       www       249:     for (i=0;i<=59;i++) {
1.69      musolffc  250:         result += '<option value="'+i+'"';
1.2       www       251:         if (i==thisminutes) {
1.69      musolffc  252:             result += ' selected="selected"';
1.2       www       253:         }
1.69      musolffc  254:         result += '>'+i+'</option>';
1.2       www       255:     }
1.69      musolffc  256:     result += '</select>';
                    257:     return result;
1.2       www       258: } 
                    259: 
                    260: function inthour() {
                    261:    var thishours=chours;
                    262:     var i;
1.69      musolffc  263:     var result = '';
                    264:     result += '<select name="hours" onchange="parent.intcalc();">';
1.2       www       265:     for (i=0;i<=23;i++) {
1.69      musolffc  266:         result += '<option value="'+i+'"';
1.2       www       267:         if (i==thishours) {
1.69      musolffc  268:             result += ' selected="selected"';
1.2       www       269:         }
1.69      musolffc  270:         result += '>'+i+'</option>';
1.2       www       271:     }
1.69      musolffc  272:     result += '</select>';
                    273:     return result;
1.71      raeburn   274: }
1.2       www       275: 
                    276: function intsecond() {
1.69      musolffc  277:     var thisseconds=csecs;
1.2       www       278:     var i;
1.69      musolffc  279:     var result = '';
                    280:     result += '<select name="seconds" onchange="parent.intcalc();">';
1.2       www       281:     for (i=0;i<=59;i++) {
1.69      musolffc  282:         result += '<option value="'+i+'"';
1.2       www       283:         if (i==thisseconds) {
1.69      musolffc  284:             result += ' selected="selected"';
1.2       www       285:         }
1.69      musolffc  286:         result += '>'+i+'</option>';
1.2       www       287:     }
1.69      musolffc  288:     result += '</select>';
                    289:     return result;
1.2       www       290: } 
                    291: 
                    292: 
                    293: function intday() {
                    294:    var thisdate=cdays;
                    295:     var i;
1.69      musolffc  296:     var result ='';
                    297:     result += '<select name="date" onchange="parent.intcalc();">';
1.2       www       298:     for (i=0;i<=31;i++) {
1.69      musolffc  299:         result += '<option value="'+i+'"';
1.2       www       300:         if (i==thisdate) {
1.69      musolffc  301:             result += ' selected="selected"';
1.2       www       302:         }
1.69      musolffc  303:         result += '>'+i+'</option>';
1.2       www       304:     }
1.69      musolffc  305:     result += '</select>';
                    306:     return result;
1.2       www       307: }
                    308: 
                    309: function intcalc() {
                    310:     var sform=choices.document.forms.sch;
                    311:     svalue=((sform.date.options[sform.date.selectedIndex].value*24+
                    312:              sform.hours.options[sform.hours.selectedIndex].value*1)*60+
                    313:              sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+
                    314:              sform.seconds.options[sform.seconds.selectedIndex].value*1;
1.68      raeburn   315:     if ((ptype=='date') && (pscat=='interval')) {
                    316:         var newpmodval = '';
1.70      raeburn   317:         var newpextraval = '';
1.71      raeburn   318:         var newpextravaltwo = 'Done';
1.68      raeburn   319:         if (sform.donebutton.length) {
                    320:             for (var i=0; i<sform.donebutton.length; i++) {
                    321:                 if (sform.donebutton[i].checked) {
                    322:                     if (sform.donebutton[i].value == '_done') {
                    323:                         newpmodval = sform.donebutton[i].value;
1.71      raeburn   324:                         newpextravaltwo = sform.donebutton_text.value;
1.70      raeburn   325:                     } else {
                    326:                         if (sform.donebutton[i].value == '_done_proctor') { 
                    327:                             newpmodval = sform.donebutton[i].value;
                    328:                             newpextraval = sform.donebutton_proctorkey.value;
1.71      raeburn   329:                             newpextravaltwo = sform.donebutton_text.value;
                    330:                             newpextravaltwo = newpextravaltwo.replace(/:/g,'');
1.70      raeburn   331:                         }
1.68      raeburn   332:                     }
                    333:                 }
                    334:             }
                    335:         }
                    336:         pmodval = newpmodval;
1.70      raeburn   337:         pextraval = newpextraval;
1.71      raeburn   338:         pextravaltwo = newpextravaltwo;
1.68      raeburn   339:         draw();
                    340:         if (pmodval) {
1.71      raeburn   341:             var doneRegExp = /^(_done)(|_proctor)$/;
                    342:             var donevals = pmodval.match(doneRegExp);
                    343:             if (donevals.length == 3) {
                    344:                 svalue += donevals[1];
                    345:             }
                    346:             if (newpextravaltwo) {
                    347:                 if (newpextravaltwo != 'Done') { 
                    348:                     svalue += ':'+newpextravaltwo+':';
                    349:                 }
                    350:             }
                    351:             if (donevals[2] != '') {
                    352:                 svalue += donevals[2];
                    353:                 if (pextraval != '') {
                    354:                     svalue += '_'+pextraval;
                    355:                 }
                    356:             }
1.70      raeburn   357:         }
1.68      raeburn   358:     } else {
                    359:         draw();
                    360:     }
1.2       www       361: }
                    362: 
1.70      raeburn   363: function toggleSecret() {
                    364:     var sform=choices.document.forms.sch;
                    365:     if (sform.donebutton.length) {
                    366:         for (var i=0; i<sform.donebutton.length; i++) {
                    367:             if (sform.donebutton[i].checked) {
1.71      raeburn   368:                 if (sform.donebutton[i].value == '') {
                    369:                     if (document.getElementById('donebuttontextdiv')) {
                    370:                         document.getElementById('donebuttontextdiv').style.display='none';
                    371:                     }
                    372:                 } else {
                    373:                     if (document.getElementById('donebuttontextdiv')) {
                    374:                         document.getElementById('donebuttontextdiv').style.display='block';
                    375:                     }
                    376:                 }
1.70      raeburn   377:                 if (sform.donebutton[i].value == '_done_proctor') {
                    378:                     if (document.getElementById('done_proctorkey')) {
                    379:                         document.getElementById('done_proctorkey').type='text';
                    380:                     }
                    381:                 } else {
                    382:                     if (document.getElementById('done_proctorkey')) {
                    383:                         document.getElementById('done_proctorkey').type='hidden';
                    384:                         document.getElementById('done_proctorkey').value='';
                    385:                     }
                    386:                 }
                    387:             }
                    388:         }
                    389:     }
                    390: }
                    391: 
                    392: function validateInterval() {
                    393:     var sform=choices.document.forms.sch;
                    394:     if (sform.donebutton.length) {
                    395:         for (var i=0; i<sform.donebutton.length; i++) {
                    396:             if (sform.donebutton[i].checked) {
                    397:                 if (sform.donebutton[i].value == '_done_proctor') {
                    398:                     if ((sform.donebutton_proctorkey.value == '') || 
                    399:                         (sform.donebutton_proctorkey.value == null)) {
                    400:                         alert('Please provide a key for a proctor to enter when a student uses the "Done" button.');
                    401:                         return;
                    402:                     }
                    403:                 }
                    404:             }
                    405:         }
                    406:     }
                    407:     intcalc();
                    408:     assemble();
                    409: }
                    410: 
1.6       www       411: function integereval() {
                    412:    svalue=choices.document.forms.sch.intval.value;
                    413:    svalue=Math.round(svalue);
                    414:    if (pscat=='zeropos') { svalue=Math.abs(svalue); }
                    415:    if ((pscat=='pos') && (svalue==0)) {
                    416:       svalue='';
                    417:    }
1.12      www       418:    if (pscat.indexOf('inrange')!=-1) {
1.10      www       419:       var rangeparts=new Array;
                    420:       rangeparts=split('_',pscat);
1.12      www       421:       rangeparts=split(',',rangeparts[1]);
1.10      www       422:       if (svalue<rangeparts[0]) { svalue=rangeparts[0]; }
                    423:       if (svalue>rangeparts[1]) { svalue=rangeparts[1]; }
                    424:    }
1.6       www       425:    draw();
                    426: }
                    427: 
                    428: function floateval() {
                    429:    svalue=choices.document.forms.sch.floatval.value;
                    430:    svalue=1.0*svalue;
                    431:    if (pscat=='pos') { svalue=Math.abs(svalue); }
                    432:    if ((pscat=='zeroone') && ((svalue<0) || (svalue>1))) {
                    433:       svalue='';
                    434:    }
                    435:    draw();
                    436: }
                    437: 
                    438: function stringeval() {
                    439:    svalue=choices.document.forms.sch.stringval.value;
                    440:    draw();
                    441: }
                    442: 
1.71.6.1  raeburn   443: function ipstringeval() {
                    444:     var patternIp = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
                    445:     var acctypes = new Array;
                    446:     acctypes = ['allow','deny'];
                    447:     svalue = '';
                    448:     for (var i=0; i<acctypes.length; i++) {
                    449:         var items = choices.document.getElementsByName('setip'+acctypes[i]);
                    450:         if (items.length > 0) {
                    451:             for (var j=0; j<items.length; j++) {
                    452:                 if (items[j].type == "text") {
                    453:                     var possip = items[j].value;
                    454:                     possip = possip.replace(/^\s+|\s+$/g,'');
                    455:                     if (patternIp.test(possip)) {
                    456:                         if (acctypes[i] == 'deny') {
                    457:                             possip = '!'+possip;
                    458:                         }
                    459:                         if (svalue == '') {
                    460:                             svalue = possip;
                    461:                         } else {
                    462:                             svalue += ','+possip;
                    463:                         }
                    464:                     }
                    465:                 }
                    466:             }
                    467:         }
                    468:     }
                    469: }
                    470: 
                    471: function addIpRule(iptype) {
                    472:     var frame = window.frames["choices"];
                    473:     if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
                    474:         var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
                    475:         var count = innerDiv.childNodes.length
                    476:         var ipDiv = frame.document.createElement('div');
                    477:         ipDiv.innerHTML = '<input type="text" size="10" name="setip'+iptype+'" onblur="parent.ipstringeval();" />'+
                    478:                           '<a href="#" onclick="parent.removeIpRule(\''+iptype+'\',\''+count+'\')">Remove</a>';
                    479:         frame.document.getElementById('LC_string_ipacc_inner_'+iptype).appendChild(ipDiv);
                    480:     }
                    481:     return false;
                    482: }
                    483: 
                    484: function removeIpRule(iptype,num) {
                    485:     var frame = window.frames["choices"];
                    486:     if (frame.document.getElementById('LC_string_ipacc_inner_'+iptype)) {
                    487:         var innerDiv = frame.document.getElementById('LC_string_ipacc_inner_'+iptype);
                    488:         for (var i=0; i<innerDiv.childNodes.length; i++) {
                    489:             if (i==num) {
                    490:                 innerDiv.removeChild(innerDiv.childNodes[i]);
                    491:                 ipstringeval();
                    492:                 break;
                    493:             }
                    494:         }
                    495:     }
                    496: }
                    497: 
1.25      www       498: function radiostringeval(newval) {
                    499:    svalue=newval;
                    500:    draw();
                    501: }
                    502: 
1.29      www       503: function callradiostringeval(newval) {
1.67      raeburn   504:     return 'onclick="parent.radiostringeval(\''+newval+'\')"';
1.29      www       505: }
                    506: 
1.68      raeburn   507: function callintervalpmodval() {
1.70      raeburn   508:     return 'onclick="parent.intcalc();parent.toggleSecret()"';
1.68      raeburn   509: } 
                    510: 
1.2       www       511: function intervaldis() {
                    512:     csecs=svalue;
                    513:     cdays=Math.floor(csecs/86400);
                    514:     csecs-=cdays*86400;
                    515:     chours=Math.floor(csecs/3600);
                    516:     csecs-=chours*3600;
                    517:     cmins=Math.floor(csecs/60);
                    518:     csecs-=cmins*60;
1.69      musolffc  519:     return cdays+' days '+chours+' hours '+cmins+' mins '+csecs+' secs';
1.2       www       520: }
1.21      www       521: 
                    522: function pickcolor(picked) {
                    523:   svalue=picked;
                    524:   draw();
                    525: }
                    526: 
                    527: function colorfield(ir,ig,ib) {
                    528:    var col=new Array;
1.23      www       529:    col=["00","11","22","44","66","88","AA","CC","DD","EE","FF"];
1.21      www       530:    var color='#'+col[ir]+col[ig]+col[ib];
1.23      www       531:    var selection="<font color='"+color+"'>X</font>";
                    532:    if (color==svalue) { selection="<font color='#"+col[10-ir]+col[10-ig]+col[10-ib]+"'>X</font>"; }
1.21      www       533:    choicewrite('<td bgcolor="'+color+'"><a href="javascript:parent.pickcolor('+"'"+
                    534:                color+"'"+')">'+selection+'</a></td>');
                    535:                
                    536: }    
                    537: 
1.1       www       538: function draw() {
                    539:    choicestart();
1.51      bisitz    540:    choicewrite('<form name="sch"');
1.6       www       541:    if (ptype=='int') {
                    542:       choicewrite(' action="javascript:integereval();"');
                    543:    }
                    544:    if (ptype=='float') {
                    545:       choicewrite(' action="javascript:floateval();"');
                    546:    }
                    547:    if (ptype=='string') {
1.71.6.1  raeburn   548:       if (pscat == 'ip') {
                    549:           choicewrite(' action="javascript:ipstringeval();"');
                    550:       } else {
                    551:           choicewrite(' action="javascript:stringeval();"');
                    552:       }
1.6       www       553:    }
1.62      raeburn   554:    if (ptype != 'int' && ptype != 'float' && ptype != 'string') {
                    555:        choicewrite(' action=""');
                    556:    }
1.6       www       557:    choicewrite('>');
1.1       www       558:    if (ptype=='tolerance') {
1.2       www       559: // 0: pscat
                    560:       if (pscat=='default') {
1.1       www       561:          tablestart('Use default value or algorithm of resource');
                    562:       }
1.2       www       563:       if (pscat=='relative_sym') {
1.1       www       564: // 2: percentage
                    565: // 3: open
                    566:          tablestart('Percentage error, symmetric around value');
                    567:          valline('Percentage',2,3);
1.13      www       568:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
                    569:             choices.document.forms.sch.val2.value=parseInt(svalue);
                    570:             if (svalue.indexOf('+')!=-1) {
                    571:                choices.document.forms.sch.val3.checked=true;
                    572:             }
                    573:          }
1.1       www       574:       }
1.2       www       575:       if (pscat=='relative') {
1.1       www       576: // 2: left
                    577: // 3: open
                    578: // 4: right
                    579: // 5: open
                    580:          tablestart('Percentage error, asymmetric around value');
                    581:          valline('Upper percentage',2,3);
                    582:          valline('Lower percentage',4,5);
1.17      matthew   583:          var range1=new Array;
1.13      www       584:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
1.17      matthew   585:             range1=svalue.split(',');
                    586:             if (typeof(range1[1])=='undefined') { range1[1]=range1[0]; }
                    587:             choices.document.forms.sch.val2.value=parseFloat(range1[0]);
                    588:             if (range1[0].indexOf('+')!=-1) {
1.13      www       589:                choices.document.forms.sch.val3.checked=true;
                    590:             }
1.17      matthew   591:             choices.document.forms.sch.val4.value=parseFloat(range1[1]);
                    592:             if (range1[1].indexOf('+')!=-1) {
1.13      www       593:                choices.document.forms.sch.val5.checked=true;
                    594:             }
                    595:          }
1.1       www       596:       }
1.2       www       597:       if (pscat=='absolute_sym') {
1.1       www       598:          tablestart('Absolute error, symmetric around value');
                    599:          valline('Value',2,3);
1.13      www       600:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
1.15      www       601:             choices.document.forms.sch.val2.value=parseFloat(svalue);
1.13      www       602:             if (svalue.indexOf('+')!=-1) {
                    603:                choices.document.forms.sch.val3.checked=true;
                    604:             }
                    605:          }
1.1       www       606:       }
1.2       www       607:       if (pscat=='absolute') {
1.1       www       608:          tablestart('Absolute error, asymmetric around value');
                    609:          valline('Upper value',2,3);
                    610:          valline('Lower value',4,5);
1.17      matthew   611:          var range2=new Array;
1.13      www       612:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
                    613:             range=svalue.split(',');
1.17      matthew   614:             if (typeof(range2[1])=='undefined') { range2[1]=range2[0]; }
                    615:             choices.document.forms.sch.val2.value=parseFloat(range2[0]);
                    616:             if (range2[0].indexOf('+')!=-1) {
1.13      www       617:                choices.document.forms.sch.val3.checked=true;
                    618:             }
1.17      matthew   619:             choices.document.forms.sch.val4.value=parseFloat(range2[1]);
                    620:             if (range2[1].indexOf('+')!=-1) {
1.13      www       621:                choices.document.forms.sch.val5.checked=true;
                    622:             }
                    623:          }
1.1       www       624:       }
                    625:    }
                    626: 
                    627:    if (ptype=='date') {
1.2       www       628:      if (pscat=='default') {
                    629:          tablestart('Default value or none');
                    630:          choicewrite('</table>');
                    631:      } else {
                    632:       if (pscat=='start') {
1.24      www       633:          tablestart('Date and time');
1.2       www       634:       }
                    635:       if (pscat=='end') {
1.24      www       636:          tablestart('Date and time');
1.2       www       637:       }
                    638:       if (pscat=='interval') {
1.70      raeburn   639:          var proctorkeytype = 'hidden'; 
1.71      raeburn   640:          var donebuttontext = 'none';
1.70      raeburn   641:          if (pmodval == '_done_proctor') {
                    642:              proctorkeytype = 'text';
1.71      raeburn   643:              donebuttontext = 'block';
                    644:          }
                    645:          if (pmodval == '_done') {
                    646:              donebuttontext = 'block';
1.70      raeburn   647:          }
1.2       www       648:          tablestart('Time interval');
1.69      musolffc  649:          choicewrite( [
                    650:             '<tr><td colspan="3">'+intervaldis()+'</td></tr>',
                    651:             '<tr><td>Time:</td><td colspan="2">',
                    652:                 '<span style="white-space:nowrap">'+intday()+' days </span>',
                    653:                 '<span style="white-space:nowrap">'+inthour()+' hours</span>',
                    654:                 '<span style="white-space:nowrap">'+intminute()+' mins</span>',
                    655:                 '<span style="white-space:nowrap">'+intsecond()+' secs</span>',
                    656:             '</td></tr>',
                    657:             '</table>',
                    658:             '<br />',
                    659:             ].join("\n"));
1.68      raeburn   660:          tablestart('Provide a "Done" button to students?');
                    661:          choicewrite('<tr><td>Value:</td><td colspan="2">');
1.70      raeburn   662:          choicewrite('<label><input name="donebutton" value=""'+
                    663:                      ' type="radio" '+callintervalpmodval());
                    664:          if (pmodval == '') { choicewrite(' checked="checked"'); }
                    665:          choicewrite(' /> No</label><br />');
1.68      raeburn   666:          choicewrite('<label><input name="donebutton" value="_done"'+
                    667:                      ' type="radio" '+callintervalpmodval());
1.70      raeburn   668:          if (pmodval == '_done') { choicewrite(' checked="checked"'); }
1.68      raeburn   669:          choicewrite(' /> Yes</label><br />');
1.70      raeburn   670:          choicewrite('<span style="white-space:nowrap">'+
                    671:                      '<label><input name="donebutton" value="_done_proctor"'+
1.68      raeburn   672:                      ' type="radio" '+callintervalpmodval());
1.70      raeburn   673:          if (pmodval == '_done_proctor') { choicewrite(' checked="checked"'); }
                    674:          choicewrite(' /> Yes, with proctor key</label>');
                    675:          choicewrite('&nbsp;<input name="donebutton_proctorkey" value='+
                    676:                      '"'+escapeHTML(pextraval)+'" type="'+proctorkeytype+
1.71      raeburn   677:                      '" id="done_proctorkey" size="10"'+
                    678:                      ' onblur="parent.intcalc();" /></span><br />'+
                    679:                      '<div id="donebuttontextdiv" style="display:'+donebuttontext+'">'+
                    680:                      '<br /><span style="white-space:nowrap">'+
                    681:                      'Button text:'+
                    682:                      '<input name="donebutton_text" value='+
                    683:                      '"'+escapeHTML(pextravaltwo)+'" type="text" '+
                    684:                      'size="10" onblur="parent.intcalc();" /></span></div>');
1.68      raeburn   685:          choicewrite('</td></tr></table>');
                    686:       } else {
1.52      bisitz    687:          choicewrite('<tr><td colspan="3">'
1.2       www       688:          +cdate.toString()+
1.52      bisitz    689:          '</td></tr><tr><td>Date:</td><td colspan="2">');
1.2       www       690:          month();date();year();
1.52      bisitz    691:          choicewrite('</td></tr><tr><td>Time:'
1.51      bisitz    692:          +'</td><td colspan="2">');hour();choicewrite('h ');minute();
1.2       www       693:          choicewrite('m ');second();
                    694:          choicewrite('s</td></tr></table>');
                    695:       }
                    696:      }
1.1       www       697:    }
                    698: 
1.6       www       699:    if (ptype=='int') {
1.19      www       700:       var pscatparts=new Array;
                    701:       pscatparts=pscat.split(',');
                    702:       pscat=pscatparts[0];
1.6       www       703:       if (pscat=='default') {
                    704:          tablestart('Default value or none');
1.14      www       705:          choicewrite('</table>');
1.6       www       706:       } else {
1.14      www       707:        if (pscat=='range') {
                    708:          tablestart('Integer range');      
1.52      bisitz    709:          choicewrite('<tr><td>Lower Value:'+
1.51      bisitz    710:               '</td><td colspan="2"><input type="text" size="4" name="val2'+
1.53      bisitz    711:               '" /></td></tr>');
1.52      bisitz    712:          choicewrite('<tr><td>Upper Value:'+
1.51      bisitz    713:               '</td><td colspan="2"><input type="text" size="4" name="val4'+
1.53      bisitz    714:               '" /></td></tr></table>');
1.14      www       715:          var range=new Array;
                    716:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
                    717:             range=svalue.split(',');
                    718:             if (typeof(range[1])=='undefined') { range[1]=range[0]; }
                    719:             choices.document.forms.sch.val2.value=parseInt(range[0]);
                    720:             choices.document.forms.sch.val4.value=parseInt(range[1]);
                    721:          }
                    722:        } else {
1.6       www       723:         if (pscat=='pos') {
                    724:            tablestart('Positive (non-zero) integer');
                    725:         }
                    726:         if (pscat=='zeropos') {
                    727:            tablestart('Positive integer or zero');
                    728:         }
1.12      www       729:         if (pscat.indexOf('inrange')!=-1) {
1.10      www       730:            var rangeparts=new Array;
1.12      www       731:            rangeparts=split(',',pscat);
1.10      www       732:            tablestart('Integer in the range ['+rangeparts[1]+']');
                    733:         }
1.6       www       734:         if (pscat=='any') {
                    735:            tablestart('Integer');
                    736:         }
1.52      bisitz    737:         choicewrite('<tr><td>Value:</td><td colspan="2">');
1.51      bisitz    738:         choicewrite('<input name="intval" size="10" value="'+escapeHTML(svalue)+
1.53      bisitz    739:                     '" onchange="parent.integereval()" />');
1.54      bisitz    740:         choicewrite('</td></tr></table>');
1.6       www       741:       }
1.14      www       742:      }
1.1       www       743:    }
                    744: 
1.6       www       745:    if (ptype=='float') {
                    746:       if (pscat=='default') {
                    747:          tablestart('Default value or none');
                    748:          choicewrite('</table>');         
                    749:       } else {
                    750:         if (pscat=='pos') {
                    751:            tablestart('Positive floating point number or zero');
                    752:         }
                    753:         if (pscat=='zeroone') {
                    754:            tablestart('Floating point number between zero and one');
                    755:         }
                    756:         if (pscat=='any') {
                    757:            tablestart('Floating point number');
                    758:         }
1.52      bisitz    759:         choicewrite('<tr><td>Value:</td><td colspan="2">');
1.51      bisitz    760:         choicewrite('<input name="floatval" size="10" value="'+escapeHTML(svalue)+
1.53      bisitz    761:                     '" onchange="parent.floateval()" />');
1.54      bisitz    762:         choicewrite('</td></tr></table>');
1.6       www       763:       }
1.1       www       764:    }
                    765: 
1.6       www       766:    if (ptype=='string') {
1.71.6.2! raeburn   767:         if ((pscat=='any') || (pscat=='') || (pscat=='default') ||
1.42      albertel  768:             (typeof(pscat)=='undefined')) {
1.6       www       769:            tablestart('Text');
1.54      bisitz    770:            choicewrite('<tr><td>Value:</td><td colspan="2">');
1.46      albertel  771:            choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
1.53      bisitz    772:                     '" type="text" onchange="parent.stringeval()" />');
1.25      www       773:         }
                    774:         if (pscat=='yesno') {
                    775:            tablestart('Yes/No');
1.52      bisitz    776: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32      albertel  777:            choicewrite('<label><input name="stringval" value="yes"'+
1.29      www       778:                   ' type="radio" '+callradiostringeval('yes'));
1.53      bisitz    779:            if (svalue=='yes') { choicewrite(' checked="checked"'); }
                    780:            choicewrite(' /> Yes</label><br />');
1.32      albertel  781:            choicewrite('<label><input name="stringval" value="no"'+
1.29      www       782:                   ' type="radio" '+callradiostringeval('no'));
1.53      bisitz    783:            if (svalue=='no') { choicewrite(' checked="checked"'); }
                    784:            choicewrite(' /> No</label><br />');
1.25      www       785:         }
1.47      albertel  786:         if (pscat=='problemstatus') {
                    787:            tablestart('Problem Status');
1.52      bisitz    788: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
1.47      albertel  789:            choicewrite('<label><input name="stringval" value="yes"'+
                    790:                   ' type="radio" '+callradiostringeval('yes'));
1.53      bisitz    791:            if (svalue=='yes') { choicewrite(' checked="checked"'); }
                    792:            choicewrite(' /> Yes</label><br />');
1.49      albertel  793:            choicewrite('<label><input name="stringval" value="answer"'+
                    794:                   ' type="radio" '+callradiostringeval('answer'));
1.53      bisitz    795:            if (svalue=='answer') { choicewrite(' checked="checked"'); }
                    796:            choicewrite(' /> Yes, and show correct answer if they exceed the maximum number of tries.</label><br />');
1.47      albertel  797:            choicewrite('<label><input name="stringval" value="no"'+
                    798:                   ' type="radio" '+callradiostringeval('no'));
1.53      bisitz    799:            if (svalue=='no') { choicewrite(' checked="checked"'); }
                    800:            choicewrite(' /> No, don\'t show correct/incorrect feedback.</label><br />');
1.47      albertel  801:            choicewrite('<label><input name="stringval" value="no_feedback_ever"'+
                    802:                   ' type="radio" '+callradiostringeval('no_feedback_ever'));
1.53      bisitz    803:            if (svalue=='no_feedback_ever') { choicewrite(' checked="checked"'); }
                    804:            choicewrite(' /> No, show no feedback at all.</label><br />');
1.47      albertel  805:         }
1.25      www       806:         if (pscat=='examtype') {
                    807:            tablestart('Exam Type');
1.52      bisitz    808: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32      albertel  809:            choicewrite('<label><input name="stringval" value="online"'+
1.29      www       810:                 ' type="radio" '+callradiostringeval('online'));
1.53      bisitz    811:            if (svalue=='online') { choicewrite(' checked="checked"'); }
                    812:            choicewrite(' /> Online</label><br />');
1.32      albertel  813:            choicewrite('<label><input name="stringval" value="checkout"'+
1.29      www       814:               ' type="radio" '+callradiostringeval('checkout'));
1.53      bisitz    815:            if (svalue=='checkout') { choicewrite(' checked="checked"'); }
                    816:            choicewrite(' /> Check out</label><br />');
1.25      www       817:        }
                    818:         if (pscat=='questiontype') {
                    819:            tablestart('Question Type');
1.52      bisitz    820: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32      albertel  821:            choicewrite('<label><input name="stringval" value="problem"'+
1.29      www       822:                ' type="radio" '+callradiostringeval('problem'));
1.53      bisitz    823:            if (svalue=='problem') { choicewrite(' checked="checked"'); }
                    824:            choicewrite(' /> Standard Problem</label><br />');
1.36      albertel  825: //	   choicewrite('<label><input name="stringval" value="quiz"'+
                    826: //                ' type="radio" '+callradiostringeval('quiz'));
1.53      bisitz    827: //         if (svalue=='quiz') { choicewrite(' checked="checked"'); }
                    828: //         choicewrite(' /> Quiz</label><br />');
1.35      albertel  829:            choicewrite('<label><input name="stringval" value="practice"'+
                    830:                   ' type="radio" '+callradiostringeval('practice'));
1.53      bisitz    831:            if (svalue=='practice') { choicewrite(' checked="checked"'); }
                    832:            choicewrite(' /> Practice</label><br />');
1.32      albertel  833:            choicewrite('<label><input name="stringval" value="exam"'+
1.29      www       834:                   ' type="radio" '+callradiostringeval('exam'));
1.53      bisitz    835:            if (svalue=='exam') { choicewrite(' checked="checked"'); }
1.71.6.1  raeburn   836:            choicewrite(' /> Exam</label><br />');
1.36      albertel  837: //         choicewrite('<label><input name="stringval" value="assess"'+
                    838: //              ' type="radio" '+callradiostringeval('assess'));
1.53      bisitz    839: //         if (svalue=='assess') { choicewrite(' checked="checked"'); }
                    840: //         choicewrite(' /> Assessment</label><br />');
1.32      albertel  841:            choicewrite('<label><input name="stringval" value="survey"'+
1.29      www       842:                 ' type="radio" '+callradiostringeval('survey'));
1.53      bisitz    843:            if (svalue=='survey') { choicewrite(' checked="checked"'); }
                    844:            choicewrite(' /> Survey</label><br />');
1.36      albertel  845: //         choicewrite('<label><input name="stringval" value="form"'+
                    846: //                ' type="radio" '+callradiostringeval('form'));
1.53      bisitz    847: //         if (svalue=='form') { choicewrite(' checked="checked"'); }
1.36      albertel  848: //         choicewrite('> Input Form</label><br />');
1.57      raeburn   849:            choicewrite('<label><input name="stringval" value="surveycred"'+
                    850:                 ' type="radio" '+callradiostringeval('surveycred'));
                    851:            if (svalue=='surveycred') { choicewrite(' checked="checked"'); }
                    852:            choicewrite('> Survey (credit for submission)</label><br />');
                    853:            choicewrite('<label><input name="stringval" value="anonsurvey"'+
                    854:                 ' type="radio" '+callradiostringeval('anonsurvey'));
                    855:            if (svalue=='anonsurvey') { choicewrite(' checked="checked"'); }
                    856:            choicewrite('> Anonymous Survey</label><br />');
                    857:            choicewrite('<label><input name="stringval" value="anonsurveycred"'+
                    858:                 ' type="radio" '+callradiostringeval('anonsurveycred'));
                    859:            if (svalue=='anonsurveycred') { choicewrite(' checked="checked"'); }
                    860:            choicewrite('> Anonymous Survey (credit for submission)</label><br />');
1.59      raeburn   861:            choicewrite('<label><input name="stringval" value="randomizetry"'+
                    862:                 ' type="radio" '+callradiostringeval('randomizetry'));
                    863:            if (svalue=='randomizetry') { choicewrite(' checked="checked"'); }
                    864:            choicewrite('> New Randomization Each N Tries (default N=1)</label><br />');
1.32      albertel  865:            choicewrite('<label><input name="stringval" value="library"'+
1.29      www       866:                ' type="radio" '+callradiostringeval('library'));
1.53      bisitz    867:            if (svalue=='library') { choicewrite(' checked="checked"'); }
                    868:            choicewrite(' /> Library</label><br />');
1.25      www       869:         }
1.60      raeburn   870:         if (pscat=='lenient') {
                    871:            tablestart('Lenient Grading (Partial Credit)');
                    872:            choicewrite('<tr><td>Value:</td><td colspan="2">');
                    873:            choicewrite('<label><input name="stringval" value="yes"'+
                    874:                   ' type="radio" '+callradiostringeval('yes'));
                    875:            if (svalue=='yes') { choicewrite(' checked="checked"'); }
                    876:            choicewrite(' /> Yes</label><br />');
                    877:            choicewrite('<label><input name="stringval" value="no"'+
                    878:                   ' type="radio" '+callradiostringeval('no'));
                    879:            if (svalue=='no') { choicewrite(' checked="checked"'); }
                    880:            choicewrite(' /> No</label><br />');
                    881:            choicewrite('<label><input name="stringval" value="default"'+
                    882:                ' type="radio" '+callradiostringeval('default'));
                    883:            if (svalue=='default') { choicewrite(' checked="checked"'); }
                    884:            choicewrite(' /> Default (only bubblesheet grading is lenient)</label><br />');
                    885:         }
1.64      raeburn   886:         if (pscat=='discussvote') {
                    887:            tablestart('Discussion Voting');
                    888:            choicewrite('<tr><td>Value:</td><td colspan="2">');
                    889:            choicewrite('<label><input name="stringval" value="yes"'+
                    890:                   ' type="radio" '+callradiostringeval('yes'));
                    891:            if (svalue=='yes') { choicewrite(' checked="checked"'); }
                    892:            choicewrite(' /> Yes</label><br />');
                    893:            choicewrite('<label><input name="stringval" value="notended"'+
                    894:                   ' type="radio" '+callradiostringeval('notended'));
                    895:            if (svalue=='notended') { choicewrite(' checked="checked"'); }
                    896:            choicewrite(' /> Yes, unless discussion ended</label><br />');
                    897:            choicewrite('<label><input name="stringval" value="no"'+
                    898:                   ' type="radio" '+callradiostringeval('no'));
                    899:            if (svalue=='no') { choicewrite(' checked="checked"'); }
                    900:            choicewrite(' /> No</label><br />');
                    901:         }
1.25      www       902:         if (pscat=='ip') {
1.71.6.1  raeburn   903:             var currallow = new Array;
                    904:             var currdeny = new Array;
                    905:             if ((svalue != '') && (svalue != null)) {
                    906:                 var patternComma = /,/;
                    907:                 var patternAllow = /^([\[\]a-zA-Z\.\d\*\-]+)$/;
                    908:                 var patternDeny = /^\!([\[\]a-zA-Z\.\d\*\-]+)$/;
                    909:                 var current = new Array;
                    910:                 if (patternComma.test(svalue)) {
                    911:                     current = svalue.split(',');
                    912:                 } else {
                    913:                     current = [svalue];
                    914:                 }
                    915:                 for (var i=0; i<current.length; i++) {
                    916:                     if (patternDeny.test(current[i])) {
                    917:                         var denied = current[i].replace(/^!/,'');
                    918:                         currdeny.push(denied);
                    919:                     } else {
                    920:                         if (patternAllow.test(current[i])) {
                    921:                             currallow.push(current[i]);
                    922:                         }
                    923:                     }
                    924:                 }
                    925:             }
                    926:             if (currdeny.length == 0) {
                    927:                 currdeny = ('');
                    928:             }
                    929:             if (currallow.length == 0) {
                    930:                 currallow = ('');
                    931:             }
                    932:             var curripaccess = [currallow,currdeny];
                    933:             tablestart('IP Number/Name');
                    934:             choicewrite('<tr><th>Allow from</th><th>Deny from</th></tr><tr>');
                    935:             var acctypes = ['allow','deny'];
                    936:             for (var i=0; i<acctypes.length; i++) {
                    937:                 choicewrite('<td valign="top">'+
                    938:                             '<div class="LC_string_ipacc_wrap" id="LC_string_ipacc_'+acctypes[i]+'">'+
                    939:                             '<div class="LC_string_ipacc_inner" id="LC_string_ipacc_inner_'+acctypes[i]+'">');
                    940:                 for (var j=0; j<curripaccess[i].length; j++) {
                    941:                     choicewrite('<div><input type="text" size="10" name="setip'+acctypes[i]+'" value="'+curripaccess[i][j]+'" onblur="parent.ipstringeval();" />');
                    942:                     choicewrite('<a href="#" onclick="parent.removeIpRule(\''+acctypes[i]+'\',\''+j+'\')">Remove</a>');
                    943:                     choicewrite('</div>');
                    944:                 }
                    945:                 choicewrite('</div><button onclick="parent.addIpRule(\''+acctypes[i]+'\');">Add item</button>');
                    946:             }
                    947:             choicewrite('</div></td></tr></table>');
1.6       www       948:         }
1.26      www       949:         if (pscat=='fileext') {
                    950:             tablestart('Allowed File Extensions');
1.52      bisitz    951: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
1.32      albertel  952:            choicewrite('<label><input name="radstringval" value="txt"'+
1.29      www       953:                ' type="radio" '+callradiostringeval('txt'));
1.53      bisitz    954:            if (svalue=='txt') { choicewrite(' checked="checked"'); }
                    955:            choicewrite(' /> Plain Text</label><br />');
1.32      albertel  956:            choicewrite('<label><input name="radstringval" value="png,jpg,jpeg,gif"'+
1.29      www       957:                ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));
1.53      bisitz    958:            if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked="checked"'); }
                    959:            choicewrite(' /> Picture File</label><br />');
1.58      raeburn   960:            choicewrite('<label><input name="radstringval" value="doc,docx,xls,xlsx,ppt,pptx"'+
                    961:                ' type="radio" '+callradiostringeval('doc,docx,xls,xlsx,ppt,pptx'));
                    962:            if (svalue=='doc,docx,xls,xlsx,ppt,pptx') { choicewrite(' checked="checked"'); }
1.53      bisitz    963:            if (svalue=='doc,xls,ppt') { choicewrite(' checked="checked"'); }
                    964:            choicewrite(' /> Office Document</label><br />');
1.46      albertel  965:            choicewrite('<input name="stringval" size="20" value="'+escapeHTML(svalue)+
1.53      bisitz    966:                     '" onchange="parent.stringeval()" />');
1.26      www       967:        }
1.37      albertel  968:        if (pscat=='useslots') {
                    969:            tablestart('Slots control access');
1.52      bisitz    970: 	   choicewrite('<tr><td>Value:</td><td colspan="2">');
1.37      albertel  971:            choicewrite('<label><input name="stringval" value="no"'+
                    972:                   ' type="radio" '+callradiostringeval('no'));
1.53      bisitz    973:            if (svalue=='no') { choicewrite(' checked="checked"'); }
                    974:            choicewrite(' /> No</label><br />');
1.37      albertel  975:            choicewrite('<label><input name="stringval" value="resource"'+
                    976:                   ' type="radio" '+callradiostringeval('resource'));
1.53      bisitz    977:            if (svalue=='resource') { choicewrite(' checked="checked"'); }
1.71.6.2! raeburn   978:            choicewrite(' /> Yes, and the scope of the slot is a single resource.</label><br />');
1.38      albertel  979:            choicewrite('<label><input name="stringval" value="map"'+
                    980:                   ' type="radio" '+callradiostringeval('map'));
1.53      bisitz    981:            if (svalue=='map') { choicewrite(' checked="checked"'); }
1.71.6.2! raeburn   982:            choicewrite(' /> Yes, and the scope of the slot is the enclosing map/folder. When checking in, it applies to only one resource.</label><br />');
1.39      albertel  983:            choicewrite('<label><input name="stringval" value="map_map"'+
1.40      albertel  984:                   ' type="radio" '+callradiostringeval('map_map'));
1.53      bisitz    985:            if (svalue=='map_map') { choicewrite(' checked="checked"'); }
1.71.6.2! raeburn   986:            choicewrite(' /> Yes, and the scope of the slot is the enclosing map/folder. When checking in, all resources in the map/folder are checked in.</label><br />');
1.54      bisitz    987:         choicewrite('</td></tr></table>');
1.6       www       988:       }
1.21      www       989:    }
                    990:    
                    991:    if (ptype=='color') {
                    992:       tablestart('Choose a Color');
                    993:       choicewrite('<table>');
                    994:       if (svalue) {
1.23      www       995:          choicewrite('<tr><td colspan="9">Current choice:</td><td bgcolor="'+
1.46      albertel  996:                      escapeHTML(svalue)+'" colspan="2">&nbsp;</td></tr>');
1.21      www       997:       }
1.23      www       998:       for (var ir=0; ir<=10; ir++) {
                    999:           for (var ig=0; ig<=10; ig++) {
1.21      www      1000:               choicewrite('<tr>');
1.23      www      1001:               for (var ib=0; ib<=10; ib++) {
1.21      www      1002:                   colorfield(ir,ig,ib);
                   1003: 	      }
                   1004:               choicewrite('</tr>');
                   1005: 	  }	      
                   1006:       }
                   1007:       choicewrite('</table></td></table>');
1.1       www      1008:    }
                   1009: 
1.40      albertel 1010:    choicewrite('</form>');
1.1       www      1011:    choiceend();
                   1012: }
                   1013: 
                   1014: function sopt(va,text) {
                   1015:    selwrite('<option value="'+va+'"');
1.2       www      1016:    if (va==pscat) {
1.54      bisitz   1017:      selwrite(' selected="selected"');
1.1       www      1018:    }
                   1019:    selwrite('>'+text+'</option>');
                   1020: }
                   1021: 
                   1022: function catchange() {
                   1023:    var sform=selector.document.forms.fsel.fcat;
1.2       www      1024:    pscat=sform.options[sform.selectedIndex].value;
1.1       www      1025:    draw();
                   1026: }
                   1027: 
                   1028: function assemble() {
1.2       www      1029:     if ((ptype=='date') && (pscat!='interval')) {
1.41      www      1030:         svalue=Math.floor(cdate.getTime()/1000);
1.2       www      1031:     }
1.12      www      1032:     if (ptype=='tolerance') {
                   1033:        if (pscat=='relative_sym') {
                   1034:           svalue=choices.document.forms.sch.val2.value+'%';
                   1035:           if (choices.document.forms.sch.val3.checked) {
                   1036:              svalue+='+';
                   1037:           }
                   1038:        }
                   1039:        if (pscat=='absolute_sym') {
                   1040:           svalue=choices.document.forms.sch.val2.value;
                   1041:           if (choices.document.forms.sch.val3.checked) {
                   1042:              svalue+='+';
                   1043:           }
                   1044:        }
                   1045:        if (pscat=='absolute') {
                   1046:           svalue=choices.document.forms.sch.val2.value;
                   1047:           if (choices.document.forms.sch.val3.checked) {
                   1048:              svalue+='+';
                   1049:           }
                   1050:           svalue+=','+choices.document.forms.sch.val4.value;
                   1051:           if (choices.document.forms.sch.val5.checked) {
                   1052:              svalue+='+';
                   1053:           }
                   1054:        }
                   1055:        if (pscat=='relative') {
                   1056:           svalue=choices.document.forms.sch.val2.value+'%';
                   1057:           if (choices.document.forms.sch.val3.checked) {
                   1058:              svalue+='+';
                   1059:           }
                   1060:           svalue+=','+choices.document.forms.sch.val4.value+'%';
                   1061:           if (choices.document.forms.sch.val5.checked) {
                   1062:              svalue+='+';
                   1063:           }
                   1064:        }
1.14      www      1065:     }
                   1066:     if ((ptype=='int') && (pscat=='range')) {
                   1067:           svalue=choices.document.forms.sch.val2.value+','+
                   1068:                  choices.document.forms.sch.val4.value;
1.12      www      1069:     }
1.6       www      1070:     if (pscat=='default') { svalue=''; }
1.2       www      1071:     stype=ptype+'_'+pscat;
1.1       www      1072: }
                   1073: 
                   1074: 
                   1075: function init() {
                   1076:   var i;
1.2       www      1077:   var subs=new Array();
1.71      raeburn  1078:   var doneRegExp = /_done(|\:[^\:]+\:)/;
                   1079:   var doneproctorRegExp = /_done(|\:[^\:]+\:)_proctor/;
1.70      raeburn  1080:   var proctorkeyRegExp = /^(\d+)_(.+)$/;
1.71      raeburn  1081:   var donetextRegExp = /\:([^\:]+)\:/;
1.1       www      1082:   var namevalue=this.window.location.search.split('&');
                   1083:   namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);
                   1084: 
                   1085:   for (i=0;i<namevalue.length;i++) {
                   1086:      var pair=namevalue[i].split('=');
1.3       www      1087:      pair[1]=unescape(pair[1]);
1.1       www      1088:      if (pair[0]=='value') { pvalue=pair[1]; }
1.2       www      1089:      if (pair[0]=='type') { subs=pair[1].split('_');
                   1090:                             ptype=subs[0];
                   1091:                             pscat=subs[1];
1.11      www      1092:                             if (typeof(subs[2])!="undefined") { 
                   1093:                                pscat+='_'+subs[2]; 
                   1094:                             }
                   1095:                             if ((pscat=='') || (typeof(pscat)=="undefined")) { 
1.6       www      1096:                                pscat='default';
                   1097:                             }
1.2       www      1098:                            }
1.1       www      1099:      if (pair[0]=='return') { preturn=pair[1]; }
                   1100:      if (pair[0]=='call') { pcode=pair[1]; }
1.2       www      1101:      if (pair[0]=='marker') { pmarker=pair[1]; }
1.1       www      1102:      if (pair[0]=='name') { pname=pair[1]; }
1.63      www      1103:      if (pair[0]=='modal') { pmodal=pair[1]; }
1.34      albertel 1104:      if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {
                   1105:          defhour=pair[1];
                   1106:      }
                   1107:      if (pair[0]=='defmin' && pair[1] >= 0 && pair[1] < 60) { defmin=pair[1]; }
                   1108:      if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }
1.1       www      1109:   }
                   1110: 
1.68      raeburn  1111:   if (ptype=='date' && pscat == 'interval') {
1.70      raeburn  1112:       if (doneproctorRegExp.test(pvalue)) {
1.71      raeburn  1113:           var current = pvalue.match(doneproctorRegExp);
                   1114:           if (current.length == 2) {
                   1115:               var textstr = current[1];
                   1116:               if (textstr != '') {
                   1117:                   var textvals = textstr.match(donetextRegExp);
                   1118:                   if (textvals.length == 2) {
                   1119:                       pextravaltwo = textvals[1];
                   1120:                   }
                   1121:               }
                   1122:           }
1.70      raeburn  1123:           var intervalwithkey = pvalue.replace(doneproctorRegExp,'');
                   1124:           if (proctorkeyRegExp.test(intervalwithkey)) {
                   1125:               var currvals = intervalwithkey.match(proctorkeyRegExp);
                   1126:               if (currvals.length == 3) {
                   1127:                   pvalue = currvals[1];
                   1128:                   pextraval = currvals[2];
1.71      raeburn  1129:                   pmodval = '_done_proctor';
1.70      raeburn  1130:               } else {
                   1131:                   pmodval = '';
                   1132:               }
                   1133:           }
                   1134:       } else {
                   1135:           if (doneRegExp.test(pvalue)) {
1.71      raeburn  1136:               var current = pvalue.match(doneRegExp); 
                   1137:               if (current.length == 2) {
                   1138:                   var textstr = current[1];
                   1139:                   if (textstr != '') {
                   1140:                       var textvals = textstr.match(donetextRegExp);
                   1141:                       if (textvals.length == 2) {
                   1142:                           pextravaltwo = textvals[1];
                   1143:                       }
                   1144:                   }
                   1145:               }
1.70      raeburn  1146:               var pnumval = pvalue.replace(doneRegExp,'');
1.71      raeburn  1147:               pmodval = '_done';
1.70      raeburn  1148:               pvalue = pnumval;
                   1149:           }
1.68      raeburn  1150:       }
                   1151:   }
1.1       www      1152:   svalue=pvalue;
1.6       www      1153:   if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&
                   1154:       (pscat=='default') && 
1.11      www      1155:       (typeof(svalue)!="undefined") && 
                   1156:       (svalue!=0) && (svalue!='')) { pscat='any'; }
1.1       www      1157: 
1.13      www      1158:   if (ptype=='tolerance') {
                   1159:      var tperc=0;
                   1160:      var trange=0;
                   1161:      if (typeof(svalue)!='undefined') {
                   1162:         if (svalue.indexOf('%')!=-1) { tperc=1;  }
                   1163:         if (svalue.indexOf(',')!=-1) { trange=1; }
                   1164:         if (trange) {
                   1165:            if (tperc) { pscat='relative'; } else { pscat='absolute'; }
                   1166:         } else {
                   1167:            if (tperc) { pscat='relative_sym'; } else { pscat='absolute_sym'; }
                   1168:         }
                   1169:      }
                   1170:   }
                   1171: 
1.61      raeburn  1172:   this.window.selector.document.open();
1.62      raeburn  1173:   selwrite('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
                   1174:   selwrite('<html xmlns="http://www.w3.org/1999/xhtml">');
1.55      bisitz   1175:   selwrite('<head>');
1.62      raeburn  1176:   selwrite('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
                   1177:   selwrite('<title>LON-CAPA</title>');
1.55      bisitz   1178:   selwrite('<style type="text/css">');
                   1179:   selwrite('<!--');
                   1180:   selwrite('body {');
                   1181:   selwrite('font-family: Verdana,Arial,Helvetica,sans-serif;');
                   1182:   selwrite('line-height:130%;');
                   1183:   selwrite('font-size:0.83em;');
                   1184:   selwrite('background: #FFFFFF;');
                   1185:   selwrite('}');
                   1186:   selwrite('-->');
                   1187:   selwrite('</style>');
                   1188:   selwrite('</head>');
1.62      raeburn  1189:   selwrite('<body>');
                   1190:   selwrite('<form name="fsel" action=""><b>'+pname+'</b><br />');
1.66      bisitz   1191:   selwrite('Format of Value(s): <select name="fcat" onchange="parent.catchange();">');
1.12      www      1192: 
1.1       www      1193:   if (ptype=='tolerance') {
                   1194:      sopt('default','Default');
                   1195:      sopt('relative_sym','Relative Tolerance, Symmetric (percent)');
                   1196:      sopt('relative','Relative Tolerance (percentages)');
                   1197:      sopt('absolute_sym','Absolute Tolerance, Symmetric (value)');
                   1198:      sopt('absolute','Absolute Tolerance (values)');
                   1199:   }
                   1200: 
                   1201:   if (ptype=='date') {
1.48      albertel 1202:      if (pscat != 'interval') {
                   1203:          sopt('default','Default');
                   1204: 	 sopt('start','Starting Date');
                   1205: 	 sopt('end','Ending Date');
                   1206:      } else {
                   1207:          sopt('interval','Time Interval');
                   1208:      }
                   1209: 
1.11      www      1210:      if ((pvalue!='') && (typeof(pvalue)!="undefined")) {
1.2       www      1211:         cdate.setTime(pvalue*1000);
1.30      www      1212:      } else {        
1.31      www      1213:         cdate.setSeconds(defsec);
                   1214:         cdate.setMinutes(defmin);
                   1215:         cdate.setHours(defhour);
1.2       www      1216:      }
                   1217:  
                   1218:      months[0]='January';
                   1219:      months[1]='February';
                   1220:      months[2]='March';
                   1221:      months[3]='April';
                   1222:      months[4]='May';
                   1223:      months[5]='June';
                   1224:      months[6]='July';
                   1225:      months[7]='August';
                   1226:      months[8]='September';
                   1227:      months[9]='October';
                   1228:      months[10]='November';
                   1229:      months[11]='December';
1.1       www      1230:   }
1.2       www      1231:    
1.6       www      1232:   if (ptype=='int') {
                   1233:      sopt('default','Default');
                   1234:      sopt('pos','Positive Integer, Not Zero');
                   1235:      sopt('zeropos','Positive Integer or Zero');
1.13      www      1236:      sopt('inrange','Integer in Range');
                   1237:      sopt('range','Range of Integers');
1.6       www      1238:      sopt('any','Integer');
1.1       www      1239:   }
                   1240: 
1.6       www      1241:   if (ptype=='float') {
                   1242:      sopt('default','Default');
                   1243:      sopt('zeroone','Floating Point between 0 and 1');
                   1244:      sopt('pos','Positive Floating Point');
                   1245:      sopt('any','Floating Point');
1.1       www      1246: 
                   1247:   }
                   1248: 
1.6       www      1249:   if (ptype=='string') {
1.44      albertel 1250:      //sopt('default','Default');
                   1251:      if (pscat == 'yesno')        { sopt('yesno','Yes/No'); }
1.47      albertel 1252:      else if (pscat == 'problemstatus'){ sopt('problemstatus','Problem Status'); }
1.45      albertel 1253:      else if (pscat == 'examtype')     { sopt('examtype','Exam Type'); }
                   1254:      else if (pscat == 'questiontype') { sopt('questiontype','Question Type'); }
1.60      raeburn  1255:      else if (pscat == 'lenient')      { sopt('lenient','Lenient Grading (Partial Credit)'); }
1.64      raeburn  1256:      else if (pscat == 'discussvote')  { sopt('discussvote','Discussion Voting'); }
1.45      albertel 1257:      else if (pscat == 'ip')           { sopt('ip','IP Number/Name'); }
                   1258:      else if (pscat == 'fileext')      { sopt('fileext','File Extension'); }
                   1259:      else if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }
                   1260:      else { pscat = 'any'; }
1.28      albertel 1261:      sopt('any','String Value');
1.22      www      1262:   }
                   1263: 
                   1264:   if (ptype=='color') {
                   1265:      sopt('default','Use Default Color');
                   1266:      sopt('custom','Use Custom Color');
1.1       www      1267:   }
                   1268: 
                   1269:   selwrite('</select></form>');
1.63      www      1270:   var targ='parent.opener';
                   1271:   if (pmodal==1) {
                   1272:      targ='parent.parent';
1.70      raeburn  1273:   }
                   1274:   if ((ptype=='date') && (pscat=='interval')) {
                   1275:       selwrite('<a href="javascript:parent.validateInterval();');
                   1276:   } else {
                   1277:       selwrite('<a href="javascript:parent.assemble();');
                   1278:   }
1.1       www      1279:   if (preturn!='') {
1.63      www      1280:      selwrite(targ+'.document.'+preturn+'_value.value=parent.window.svalue;');
                   1281:      selwrite(targ+'.document.'+preturn+'_type.value=parent.window.stype;');
1.2       www      1282:   }
                   1283:   if (pmarker!='') {
1.63      www      1284:      selwrite(targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
1.1       www      1285:   }
                   1286:   if (pcode!='') {
1.63      www      1287:      selwrite(targ+'.'+pcode+'();');
1.1       www      1288:   }
1.43      albertel 1289:   selwrite('">Save</a>&nbsp;&nbsp;');
1.5       www      1290: 
                   1291:   selwrite('<a href="javascript:');
1.63      www      1292:   selwrite(targ+'.document.'+preturn+'_value.value='+"'';");
1.5       www      1293:   if (pmarker!='') {
                   1294:      selwrite(
1.63      www      1295:      targ+'.document.'+preturn+'_marker.value=parent.window.pmarker;');
1.5       www      1296:   }
                   1297:   if (pcode!='') {
1.63      www      1298:      selwrite(targ+'.'+pcode+'();');
1.5       www      1299:   }
                   1300:   selwrite('">Delete</a>&nbsp;&nbsp;');
1.4       www      1301:  
1.1       www      1302:   selwrite('</body></html>');
                   1303:   this.window.selector.document.close();
1.2       www      1304:   draw();
1.71.6.2! raeburn  1305: 
1.1       www      1306: }
                   1307: 
1.56      raeburn  1308: // ]]>
1.1       www      1309: </script>
1.56      raeburn  1310: </head>
1.1       www      1311: 
1.56      raeburn  1312: <frameset rows="120,*" onload="init();">
                   1313: <frame name="selector" src="empty.html" />
                   1314: <frame name="choices" src="empty.html" />
1.1       www      1315: </frameset>
                   1316: 
                   1317: 
                   1318: 
1.16      albertel 1319: </html>

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.