File:  [LON-CAPA] / rat / client / parameter.html
Revision 1.27: download - view: text, annotated - select for diffs
Tue Nov 25 22:19:22 2003 UTC (20 years, 5 months ago) by www
Branches: MAIN
CVS tags: version_1_1_X, version_1_1_3, version_1_1_2, version_1_1_1, version_1_1_0, version_1_0_99_3, version_1_0_99_2, version_1_0_99_1, version_1_0_99, HEAD
Cannot have both a text field and a bunch of radiobuttons share the same name

    1: <html>
    2: <!--
    3: The LearningOnline Network with CAPA
    4: Parameter Input Window
    5: //
    6: // $Id: parameter.html,v 1.27 2003/11/25 22:19:22 www Exp $
    7: //
    8: // Copyright Michigan State University Board of Trustees
    9: //
   10: // This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   11: //
   12: // LON-CAPA is free software; you can redistribute it and/or modify
   13: // it under the terms of the GNU General Public License as published by
   14: // the Free Software Foundation; either version 2 of the License, or
   15: // (at your option) any later version.
   16: //
   17: // LON-CAPA is distributed in the hope that it will be useful,
   18: // but WITHOUT ANY WARRANTY; without even the implied warranty of
   19: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   20: // GNU General Public License for more details.
   21: //
   22: // You should have received a copy of the GNU General Public License
   23: // along with LON-CAPA; if not, write to the Free Software
   24: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   25: //
   26: // /home/httpd/html/adm/gpl.txt
   27: //
   28: // http://www.lon-capa.org/
   29: //
   30: 06/16/00,06/17,11/17,11/18,11/23,11/27,11/28,12/15,12/16,
   31: 03/21/01,03/24,06/26 Gerd Kortemeyer
   32: 08/08 Gerd Kortemeyer
   33: -->
   34: <head>
   35: <title>LON-CAPA</title>
   36: </head>
   37: 
   38: <script>
   39: 
   40: var ptype='';
   41: var pvalue='';
   42: var preturn='';
   43: var pcode='';
   44: var pscat='';
   45: var pmarker='';
   46: var pname='';
   47: 
   48: var svalue;
   49: var stype;
   50: var smarker;
   51: 
   52: var vars=new Array();
   53: 
   54: var cdate=new Date();
   55: 
   56: var csec;
   57: var cmin;
   58: var chour;
   59: var cday;
   60: 
   61: var months=new Array();
   62: 
   63: 
   64: function selwrite(text) {
   65:   this.window.selector.document.write(text);
   66: }
   67: 
   68: function choicestart() {
   69:   this.window.choices.document.clear();
   70:   choicewrite('<html><body bgcolor="#FFFFFF">');
   71: }
   72: 
   73: function choiceend() {
   74:   choicewrite('</body></html>');
   75:   this.window.choices.document.close();
   76: }
   77: 
   78: function choicewrite(text) {
   79:   this.window.choices.document.write(text);
   80: }
   81: 
   82: function tablestart(headtext) {
   83:   choicewrite('<table><tr bgcolor="#AAFFAA"><th colspan=3>'+
   84:               headtext+'</th></tr>');
   85: }
   86: 
   87: function valline(text,id1,id2) {
   88:   choicewrite('<tr bgcolor="#AAFFAA"><td>'+text+
   89:               '</td><td><input type=text size=4 name=val'+
   90:               id1+'></td><td>incl:<input type=checkbox name=val'+
   91:               id2+'></td></tr>');
   92: }
   93: 
   94: function datecalc() {
   95:     var sform=choices.document.forms.sch;
   96: 
   97:     cdate.setHours(sform.hours.options[sform.hours.selectedIndex].value);
   98:     cdate.setMinutes(sform.minutes.options[sform.minutes.selectedIndex].value);
   99:     cdate.setSeconds(sform.minutes.options[sform.seconds.selectedIndex].value);
  100:     cdate.setDate(sform.date.options[sform.date.selectedIndex].value);
  101:     cdate.setMonth(sform.month.options[sform.month.selectedIndex].value);
  102:     cdate.setFullYear(sform.year.options[sform.year.selectedIndex].value);
  103: 
  104:     draw();
  105: }
  106: 
  107: function hour() {
  108:    var thishour=cdate.getHours();
  109:     var i; var j;
  110:     choicewrite('<select name=hours onChange="parent.datecalc();">');
  111:     for (i=0;i<=23;i++) {
  112:         choicewrite('<option value='+i);
  113:         if (i==thishour) {
  114:             choicewrite(' selected');
  115:         }
  116:         choicewrite('>');
  117:         if (i==12) { choicewrite('noon'); } else {
  118:            if (i==0) { choicewrite('midnight') } else {
  119:               
  120:                  if (i<12) { choicewrite(i+' am'); } else {
  121:                     j=i-12; choicewrite(j+' pm');
  122:                  }
  123:               
  124:            }
  125:         }
  126:         choicewrite('</option>');
  127:     }
  128:     choicewrite('</select>');
  129: }
  130: 
  131: function minute() {
  132:    var thisminutes=cdate.getMinutes();
  133:     var i;
  134:     choicewrite('<select name=minutes onChange="parent.datecalc();">');
  135:     for (i=0;i<=59;i++) {
  136:         choicewrite('<option value='+i);
  137:         if (i==thisminutes) {
  138:             choicewrite(' selected');
  139:         }
  140:         choicewrite('>'+i+'</option>');
  141:     }
  142:     choicewrite('</select>');
  143: } 
  144: 
  145: function second() {
  146:    var thisseconds=cdate.getSeconds();
  147:     var i;
  148:     choicewrite('<select name=seconds onChange="parent.datecalc();">');
  149:     for (i=0;i<=59;i++) {
  150:         choicewrite('<option value='+i);
  151:         if (i==thisseconds) {
  152:             choicewrite(' selected');
  153:         }
  154:         choicewrite('>'+i+'</option>');
  155:     }
  156:     choicewrite('</select>');
  157: } 
  158: 
  159: 
  160: function date() {
  161:    var thisdate=cdate.getDate();
  162:     var i;
  163:     choicewrite('<select name=date onChange="parent.datecalc();">');
  164:     for (i=1;i<=31;i++) {
  165:         choicewrite('<option value='+i);
  166:         if (i==thisdate) {
  167:             choicewrite(' selected');
  168:         }
  169:         choicewrite('>'+i+'</option>');
  170:     }
  171:     choicewrite('</select>');
  172: }
  173: 
  174: function year() {
  175:    var thisyear=cdate.getFullYear();
  176:    var nowdate=new Date();
  177:    var nowyear=nowdate.getFullYear();
  178:    var loweryear=thisyear-2;
  179:    var upperyear=thisyear+5;
  180:    if (thisyear>nowyear) { loweryear=nowyear-2; }
  181:    if (thisyear<nowyear) { upperyear=nowyear+5; } 
  182:     var i;
  183:     choicewrite('<select name=year onChange="parent.datecalc();">');
  184:     for (i=loweryear;i<=upperyear;i++) {
  185:         choicewrite('<option value='+i);
  186:         if (i==thisyear) {
  187:             choicewrite(' selected');
  188:         }
  189:         choicewrite('>'+i+'</option>');
  190:     }
  191:     choicewrite('</select>');
  192: }
  193: 
  194: function month() {
  195:     var thismonth=cdate.getMonth();
  196:     var i;
  197:     choicewrite('<select name=month onChange="parent.datecalc();">');
  198:     for (i=0;i<=11;i++) {
  199:         choicewrite('<option value='+i);
  200:         if (i==thismonth) {
  201:             choicewrite(' selected');
  202:         }
  203:         choicewrite('>'+months[i]+'</option>');
  204:     }
  205:     choicewrite('</select>');
  206: }
  207:     
  208:     
  209: function intminute() {
  210:    var thisminutes=cmins;
  211:     var i;
  212:     choicewrite('<select name=minutes onChange="parent.intcalc();">');
  213:     for (i=0;i<=59;i++) {
  214:         choicewrite('<option value='+i);
  215:         if (i==thisminutes) {
  216:             choicewrite(' selected');
  217:         }
  218:         choicewrite('>'+i+'</option>');
  219:     }
  220:     choicewrite('</select>');
  221: } 
  222: 
  223: function inthour() {
  224:    var thishours=chours;
  225:     var i;
  226:     choicewrite('<select name=hours onChange="parent.intcalc();">');
  227:     for (i=0;i<=23;i++) {
  228:         choicewrite('<option value='+i);
  229:         if (i==thishours) {
  230:             choicewrite(' selected');
  231:         }
  232:         choicewrite('>'+i+'</option>');
  233:     }
  234:     choicewrite('</select>');
  235: } 
  236: 
  237: function intsecond() {
  238:    var thisseconds=csecs;
  239:     var i;
  240:     choicewrite('<select name=seconds onChange="parent.intcalc();">');
  241:     for (i=0;i<=59;i++) {
  242:         choicewrite('<option value='+i);
  243:         if (i==thisseconds) {
  244:             choicewrite(' selected');
  245:         }
  246:         choicewrite('>'+i+'</option>');
  247:     }
  248:     choicewrite('</select>');
  249: } 
  250: 
  251: 
  252: function intday() {
  253:    var thisdate=cdays;
  254:     var i;
  255:     choicewrite('<select name=date onChange="parent.intcalc();">');
  256:     for (i=0;i<=31;i++) {
  257:         choicewrite('<option value='+i);
  258:         if (i==thisdate) {
  259:             choicewrite(' selected');
  260:         }
  261:         choicewrite('>'+i+'</option>');
  262:     }
  263:     choicewrite('</select>');
  264: }
  265: 
  266: function intcalc() {
  267:     var sform=choices.document.forms.sch;
  268:     svalue=((sform.date.options[sform.date.selectedIndex].value*24+
  269:              sform.hours.options[sform.hours.selectedIndex].value*1)*60+
  270:              sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+
  271:              sform.seconds.options[sform.seconds.selectedIndex].value*1;
  272:     draw();
  273: }
  274: 
  275: function integereval() {
  276:    svalue=choices.document.forms.sch.intval.value;
  277:    svalue=Math.round(svalue);
  278:    if (pscat=='zeropos') { svalue=Math.abs(svalue); }
  279:    if ((pscat=='pos') && (svalue==0)) {
  280:       svalue='';
  281:    }
  282:    if (pscat.indexOf('inrange')!=-1) {
  283:       var rangeparts=new Array;
  284:       rangeparts=split('_',pscat);
  285:       rangeparts=split(',',rangeparts[1]);
  286:       if (svalue<rangeparts[0]) { svalue=rangeparts[0]; }
  287:       if (svalue>rangeparts[1]) { svalue=rangeparts[1]; }
  288:    }
  289:    draw();
  290: }
  291: 
  292: function floateval() {
  293:    svalue=choices.document.forms.sch.floatval.value;
  294:    svalue=1.0*svalue;
  295:    if (pscat=='pos') { svalue=Math.abs(svalue); }
  296:    if ((pscat=='zeroone') && ((svalue<0) || (svalue>1))) {
  297:       svalue='';
  298:    }
  299:    draw();
  300: }
  301: 
  302: function stringeval() {
  303:    svalue=choices.document.forms.sch.stringval.value;
  304:    draw();
  305: }
  306: 
  307: function radiostringeval(newval) {
  308:    svalue=newval;
  309:    draw();
  310: }
  311: 
  312: function intervaldis() {
  313:     csecs=svalue;
  314:     cdays=Math.floor(csecs/86400);
  315:     csecs-=cdays*86400;
  316:     chours=Math.floor(csecs/3600);
  317:     csecs-=chours*3600;
  318:     cmins=Math.floor(csecs/60);
  319:     csecs-=cmins*60;
  320:     choicewrite(cdays+' days '+chours+' hours '
  321:                +cmins+' mins '+csecs+' secs');
  322: }
  323: 
  324: function pickcolor(picked) {
  325:   svalue=picked;
  326:   draw();
  327: }
  328: 
  329: function colorfield(ir,ig,ib) {
  330:    var col=new Array;
  331:    col=["00","11","22","44","66","88","AA","CC","DD","EE","FF"];
  332:    var color='#'+col[ir]+col[ig]+col[ib];
  333:    var selection="<font color='"+color+"'>X</font>";
  334:    if (color==svalue) { selection="<font color='#"+col[10-ir]+col[10-ig]+col[10-ib]+"'>X</font>"; }
  335:    choicewrite('<td bgcolor="'+color+'"><a href="javascript:parent.pickcolor('+"'"+
  336:                color+"'"+')">'+selection+'</a></td>');
  337:                
  338: }    
  339: 
  340: function draw() {
  341:    choicestart();
  342:    choicewrite('<form name=sch');
  343:    if (ptype=='int') {
  344:       choicewrite(' action="javascript:integereval();"');
  345:    }
  346:    if (ptype=='float') {
  347:       choicewrite(' action="javascript:floateval();"');
  348:    }
  349:    if (ptype=='string') {
  350:       choicewrite(' action="javascript:stringeval();"');
  351:    }
  352:    choicewrite('>');
  353:    if (ptype=='tolerance') {
  354: // 0: pscat
  355:       if (pscat=='default') {
  356:          tablestart('Use default value or algorithm of resource');
  357:       }
  358:       if (pscat=='relative_sym') {
  359: // 2: percentage
  360: // 3: open
  361:          tablestart('Percentage error, symmetric around value');
  362:          valline('Percentage',2,3);
  363:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  364:             choices.document.forms.sch.val2.value=parseInt(svalue);
  365:             if (svalue.indexOf('+')!=-1) {
  366:                choices.document.forms.sch.val3.checked=true;
  367:             }
  368:          }
  369:       }
  370:       if (pscat=='relative') {
  371: // 2: left
  372: // 3: open
  373: // 4: right
  374: // 5: open
  375:          tablestart('Percentage error, asymmetric around value');
  376:          valline('Upper percentage',2,3);
  377:          valline('Lower percentage',4,5);
  378:          var range1=new Array;
  379:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  380:             range1=svalue.split(',');
  381:             if (typeof(range1[1])=='undefined') { range1[1]=range1[0]; }
  382:             choices.document.forms.sch.val2.value=parseFloat(range1[0]);
  383:             if (range1[0].indexOf('+')!=-1) {
  384:                choices.document.forms.sch.val3.checked=true;
  385:             }
  386:             choices.document.forms.sch.val4.value=parseFloat(range1[1]);
  387:             if (range1[1].indexOf('+')!=-1) {
  388:                choices.document.forms.sch.val5.checked=true;
  389:             }
  390:          }
  391:       }
  392:       if (pscat=='absolute_sym') {
  393:          tablestart('Absolute error, symmetric around value');
  394:          valline('Value',2,3);
  395:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  396:             choices.document.forms.sch.val2.value=parseFloat(svalue);
  397:             if (svalue.indexOf('+')!=-1) {
  398:                choices.document.forms.sch.val3.checked=true;
  399:             }
  400:          }
  401:       }
  402:       if (pscat=='absolute') {
  403:          tablestart('Absolute error, asymmetric around value');
  404:          valline('Upper value',2,3);
  405:          valline('Lower value',4,5);
  406:          var range2=new Array;
  407:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  408:             range=svalue.split(',');
  409:             if (typeof(range2[1])=='undefined') { range2[1]=range2[0]; }
  410:             choices.document.forms.sch.val2.value=parseFloat(range2[0]);
  411:             if (range2[0].indexOf('+')!=-1) {
  412:                choices.document.forms.sch.val3.checked=true;
  413:             }
  414:             choices.document.forms.sch.val4.value=parseFloat(range2[1]);
  415:             if (range2[1].indexOf('+')!=-1) {
  416:                choices.document.forms.sch.val5.checked=true;
  417:             }
  418:          }
  419:       }
  420:    }
  421: 
  422:    if (ptype=='date') {
  423:      if (pscat=='default') {
  424:          tablestart('Default value or none');
  425:          choicewrite('</table>');
  426:      } else {
  427:       if (pscat=='start') {
  428:          tablestart('Date and time');
  429:       }
  430:       if (pscat=='end') {
  431:          tablestart('Date and time');
  432:       }
  433:       if (pscat=='interval') {
  434:          tablestart('Time interval');
  435:          choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>');
  436:          intervaldis();
  437:          choicewrite('</td></tr><tr bgcolor="#AAFFAA"><td>Time:'
  438:          +'</td><td colspan=2>');
  439:          intday();choicewrite('days ');
  440:          inthour();choicewrite('hours ');
  441:          intminute(); choicewrite('mins '); intsecond();
  442:          choicewrite('secs</td></tr></table>');         
  443:       } else { 
  444:          choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>'
  445:          +cdate.toString()+
  446:          '</td></tr><tr bgcolor="#AAFFAA"><td>Date:</td><td colspan=2>');
  447:          month();date();year();
  448:          choicewrite('</td></tr><tr bgcolor="#AAFFAA"><td>Time:'
  449:          +'</td><td colspan=2>');hour();choicewrite('h ');minute();
  450:          choicewrite('m ');second();
  451:          choicewrite('s</td></tr></table>');
  452:       }
  453:      }
  454:    }
  455: 
  456:    if (ptype=='int') {
  457:       var pscatparts=new Array;
  458:       pscatparts=pscat.split(',');
  459:       pscat=pscatparts[0];
  460:       if (pscat=='default') {
  461:          tablestart('Default value or none');
  462:          choicewrite('</table>');
  463:       } else {
  464:        if (pscat=='range') {
  465:          tablestart('Integer range');      
  466:          choicewrite('<tr bgcolor="#AAFFAA"><td>Lower Value:'+
  467:               '</td><td colspan=2><input type=text size=4 name=val2'+
  468:               '></td></tr>');
  469:          choicewrite('<tr bgcolor="#AAFFAA"><td>Upper Value:'+
  470:               '</td><td colspan=2><input type=text size=4 name=val4'+
  471:               '></td></tr></table>');
  472:          var range=new Array;
  473:          if ((svalue!='') && (typeof(svalue)!="undefined")) {
  474:             range=svalue.split(',');
  475:             if (typeof(range[1])=='undefined') { range[1]=range[0]; }
  476:             choices.document.forms.sch.val2.value=parseInt(range[0]);
  477:             choices.document.forms.sch.val4.value=parseInt(range[1]);
  478:          }
  479:        } else {
  480:         if (pscat=='pos') {
  481:            tablestart('Positive (non-zero) integer');
  482:         }
  483:         if (pscat=='zeropos') {
  484:            tablestart('Positive integer or zero');
  485:         }
  486:         if (pscat.indexOf('inrange')!=-1) {
  487:            var rangeparts=new Array;
  488:            rangeparts=split(',',pscat);
  489:            tablestart('Integer in the range ['+rangeparts[1]+']');
  490:         }
  491:         if (pscat=='any') {
  492:            tablestart('Integer');
  493:         }
  494:         choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  495:         choicewrite('<input name=intval size=10 value="'+svalue+
  496:                     '" name=intval onChange="parent.integereval()">');
  497:         choicewrite('</td></table>');
  498:       }
  499:      }
  500:    }
  501: 
  502:    if (ptype=='float') {
  503:       if (pscat=='default') {
  504:          tablestart('Default value or none');
  505:          choicewrite('</table>');         
  506:       } else {
  507:         if (pscat=='pos') {
  508:            tablestart('Positive floating point number or zero');
  509:         }
  510:         if (pscat=='zeroone') {
  511:            tablestart('Floating point number between zero and one');
  512:         }
  513:         if (pscat=='any') {
  514:            tablestart('Floating point number');
  515:         }
  516:         choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  517:         choicewrite('<input name=floatval size=10 value="'+svalue+
  518:                     '" name=floatval onChange="parent.floateval()">');
  519:         choicewrite('</td></table>');
  520:       }
  521:    }
  522: 
  523:    if (ptype=='string') {
  524:       if (pscat=='default') {
  525:          tablestart('Default value or none');
  526:          choicewrite('</table>');         
  527:       } else {
  528:         if ((pscat=='any') || (pscat=='') || (typeof(pscat)=='undefined')) {
  529:            tablestart('Text');
  530: 	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  531:            choicewrite('<input name="stringval" size="20" value="'+svalue+
  532:                     '" type="text" onChange="parent.stringeval()">');
  533:         }
  534:         if (pscat=='yesno') {
  535:            tablestart('Yes/No');
  536: 	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  537:            choicewrite('<input name="stringval" value="yes"'+
  538:                   ' type="radio" onChange="parent.radiostringeval(\'yes\')"');
  539:            if (svalue=='yes') { choicewrite(' checked'); }
  540:            choicewrite('> Yes<br />');
  541:            choicewrite('<input name="stringval" value="no"'+
  542:                   ' type="radio" onChange="parent.radiostringeval(\'no\')"');
  543:            if (svalue=='no') { choicewrite(' checked'); }
  544:            choicewrite('> No<br />');
  545:         }
  546:         if (pscat=='examtype') {
  547:            tablestart('Exam Type');
  548: 	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  549:            choicewrite('<input name="stringval" value="online"'+
  550:                 ' type="radio" onChange="parent.radiostringeval(\'online\')"');
  551:            if (svalue=='online') { choicewrite(' checked'); }
  552:            choicewrite('> Online<br />');
  553:            choicewrite('<input name="stringval" value="checkout"'+
  554:               ' type="radio" onChange="parent.radiostringeval(\'checkout\')"');
  555:            if (svalue=='checkout') { choicewrite(' checked'); }
  556:            choicewrite('> Check out<br />');
  557:        }
  558:         if (pscat=='questiontype') {
  559:            tablestart('Question Type');
  560: 	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  561:            choicewrite('<input name="stringval" value="problem"'+
  562:                ' type="radio" onChange="parent.radiostringeval(\'problem\')"');
  563:            if (svalue=='problem') { choicewrite(' checked'); }
  564:            choicewrite('> Standard Problem<br />');
  565:            choicewrite('<input name="stringval" value="quiz"'+
  566:                   ' type="radio" onChange="parent.radiostringeval(\'quiz\')"');
  567:            if (svalue=='quiz') { choicewrite(' checked'); }
  568:            choicewrite('> Quiz<br />');
  569:            choicewrite('<input name="stringval" value="exam"'+
  570:                   ' type="radio" onChange="parent.radiostringeval(\'exam\')"');
  571:            if (svalue=='exam') { choicewrite(' checked'); }
  572:            choicewrite('> Exam<br />');
  573:            choicewrite('<input name="stringval" value="assess"'+
  574:                 ' type="radio" onChange="parent.radiostringeval(\'assess\')"');
  575:            if (svalue=='assess') { choicewrite(' checked'); }
  576:            choicewrite('> Assessment<br />');
  577:            choicewrite('<input name="stringval" value="survey"'+
  578:                 ' type="radio" onChange="parent.radiostringeval(\'survey\')"');
  579:            if (svalue=='survey') { choicewrite(' checked'); }
  580:            choicewrite('> Survey<br />');
  581:            choicewrite('<input name="stringval" value="form"'+
  582:                   ' type="radio" onChange="parent.radiostringeval(\'form\')"');
  583:            if (svalue=='form') { choicewrite(' checked'); }
  584:            choicewrite('> Input Form<br />');
  585:            choicewrite('<input name="stringval" value="library"'+
  586:                ' type="radio" onChange="parent.radiostringeval(\'library\')"');
  587:            if (svalue=='library') { choicewrite(' checked'); }
  588:            choicewrite('> Library<br />');
  589:         }
  590:         if (pscat=='ip') {
  591:            tablestart('IP Number/Name');
  592: 	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  593:            choicewrite('<input name="stringval" size="20" value="'+svalue+
  594:                     '" onChange="parent.stringeval()">');
  595:         }
  596:         if (pscat=='fileext') {
  597:             tablestart('Allowed File Extensions');
  598: 	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
  599:            choicewrite('<input name="radstringval" value="txt"'+
  600:                ' type="radio" onChange="parent.radiostringeval(\'txt\')"');
  601:            if (svalue=='txt') { choicewrite(' checked'); }
  602:            choicewrite('> Plain Text<br />');
  603:            choicewrite('<input name="radstringval" value="png,jpg,jpeg,gif"'+
  604:                ' type="radio" onChange="parent.radiostringeval(\'png,jpg,jpeg,gif\')"');
  605:            if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked'); }
  606:            choicewrite('> Picture File<br />');
  607:            choicewrite('<input name="radstringval" value="doc,xls,ppt"'+
  608:                ' type="radio" onChange="parent.radiostringeval(\'doc,xls,ppt\')"');
  609:            if (svalue=='doc,xls,ppt') { choicewrite(' checked'); }
  610:            choicewrite('> Office Document<br />');
  611:            choicewrite('<input name="stringval" size="20" value="'+svalue+
  612:                     '" onChange="parent.stringeval()">');
  613:        }
  614:         choicewrite('</td></table>');
  615:       }
  616:    }
  617:    
  618:    if (ptype=='color') {
  619:       tablestart('Choose a Color');
  620:       choicewrite('<table>');
  621:       if (svalue) {
  622:          choicewrite('<tr><td colspan="9">Current choice:</td><td bgcolor="'+
  623:                      svalue+'" colspan="2">&nbsp;</td></tr>');
  624:       }
  625:       for (var ir=0; ir<=10; ir++) {
  626:           for (var ig=0; ig<=10; ig++) {
  627:               choicewrite('<tr>');
  628:               for (var ib=0; ib<=10; ib++) {
  629:                   colorfield(ir,ig,ib);
  630: 	      }
  631:               choicewrite('</tr>');
  632: 	  }	      
  633:       }
  634:       choicewrite('</table></td></table>');
  635:    }
  636: 
  637:    choicewrite('</table></form>');
  638:    choiceend();
  639: }
  640: 
  641: function sopt(va,text) {
  642:    selwrite('<option value="'+va+'"');
  643:    if (va==pscat) {
  644:      selwrite(' selected');
  645:    }
  646:    selwrite('>'+text+'</option>');
  647: }
  648: 
  649: function catchange() {
  650:    var sform=selector.document.forms.fsel.fcat;
  651:    pscat=sform.options[sform.selectedIndex].value;
  652:    draw();
  653: }
  654: 
  655: function assemble() {
  656:     if ((ptype=='date') && (pscat!='interval')) {
  657:         svalue=Math.round(cdate.getTime()/1000);
  658:     }
  659:     if (ptype=='tolerance') {
  660:        if (pscat=='relative_sym') {
  661:           svalue=choices.document.forms.sch.val2.value+'%';
  662:           if (choices.document.forms.sch.val3.checked) {
  663:              svalue+='+';
  664:           }
  665:        }
  666:        if (pscat=='absolute_sym') {
  667:           svalue=choices.document.forms.sch.val2.value;
  668:           if (choices.document.forms.sch.val3.checked) {
  669:              svalue+='+';
  670:           }
  671:        }
  672:        if (pscat=='absolute') {
  673:           svalue=choices.document.forms.sch.val2.value;
  674:           if (choices.document.forms.sch.val3.checked) {
  675:              svalue+='+';
  676:           }
  677:           svalue+=','+choices.document.forms.sch.val4.value;
  678:           if (choices.document.forms.sch.val5.checked) {
  679:              svalue+='+';
  680:           }
  681:        }
  682:        if (pscat=='relative') {
  683:           svalue=choices.document.forms.sch.val2.value+'%';
  684:           if (choices.document.forms.sch.val3.checked) {
  685:              svalue+='+';
  686:           }
  687:           svalue+=','+choices.document.forms.sch.val4.value+'%';
  688:           if (choices.document.forms.sch.val5.checked) {
  689:              svalue+='+';
  690:           }
  691:        }
  692:     }
  693:     if ((ptype=='int') && (pscat=='range')) {
  694:           svalue=choices.document.forms.sch.val2.value+','+
  695:                  choices.document.forms.sch.val4.value;
  696:     }
  697:     if (pscat=='default') { svalue=''; }
  698:     stype=ptype+'_'+pscat;
  699: }
  700: 
  701: 
  702: function init() {
  703:   var i;
  704:   var subs=new Array();
  705:   var namevalue=this.window.location.search.split('&');
  706:   namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);
  707: 
  708:   for (i=0;i<namevalue.length;i++) {
  709:      var pair=namevalue[i].split('=');
  710:      pair[1]=unescape(pair[1]);
  711:      if (pair[0]=='value') { pvalue=pair[1]; }
  712:      if (pair[0]=='type') { subs=pair[1].split('_');
  713:                             ptype=subs[0];
  714:                             pscat=subs[1];
  715:                             if (typeof(subs[2])!="undefined") { 
  716:                                pscat+='_'+subs[2]; 
  717:                             }
  718:                             if ((pscat=='') || (typeof(pscat)=="undefined")) { 
  719:                                pscat='default';
  720:                             }
  721:                            }
  722:      if (pair[0]=='return') { preturn=pair[1]; }
  723:      if (pair[0]=='call') { pcode=pair[1]; }
  724:      if (pair[0]=='marker') { pmarker=pair[1]; }
  725:      if (pair[0]=='name') { pname=pair[1]; }
  726:   }
  727: 
  728:   svalue=pvalue;
  729:   if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&
  730:       (pscat=='default') && 
  731:       (typeof(svalue)!="undefined") && 
  732:       (svalue!=0) && (svalue!='')) { pscat='any'; }
  733: 
  734:   if (ptype=='tolerance') {
  735:      var tperc=0;
  736:      var trange=0;
  737:      if (typeof(svalue)!='undefined') {
  738:         if (svalue.indexOf('%')!=-1) { tperc=1;  }
  739:         if (svalue.indexOf(',')!=-1) { trange=1; }
  740:         if (trange) {
  741:            if (tperc) { pscat='relative'; } else { pscat='absolute'; }
  742:         } else {
  743:            if (tperc) { pscat='relative_sym'; } else { pscat='absolute_sym'; }
  744:         }
  745:      }
  746:   }
  747: 
  748:   this.window.selector.document.clear();
  749:   selwrite('<html><body bgcolor="#FFFFFF">');
  750: 
  751:   selwrite('<form name="fsel"><b>'+pname+'</b><br>');
  752:   selwrite('<select name="fcat" onChange="parent.catchange();">');
  753: 
  754:   if (ptype=='tolerance') {
  755:      sopt('default','Default');
  756:      sopt('relative_sym','Relative Tolerance, Symmetric (percent)');
  757:      sopt('relative','Relative Tolerance (percentages)');
  758:      sopt('absolute_sym','Absolute Tolerance, Symmetric (value)');
  759:      sopt('absolute','Absolute Tolerance (values)');
  760:   }
  761: 
  762:   if (ptype=='date') {
  763:      sopt('default','Default');
  764:      sopt('start','Starting Date');
  765:      sopt('end','Ending Date');
  766:      sopt('interval','Time Interval');
  767:      
  768:      if ((pvalue!='') && (typeof(pvalue)!="undefined")) {
  769:         cdate.setTime(pvalue*1000);
  770:      }
  771:  
  772:      months[0]='January';
  773:      months[1]='February';
  774:      months[2]='March';
  775:      months[3]='April';
  776:      months[4]='May';
  777:      months[5]='June';
  778:      months[6]='July';
  779:      months[7]='August';
  780:      months[8]='September';
  781:      months[9]='October';
  782:      months[10]='November';
  783:      months[11]='December';
  784:   }
  785:    
  786:   if (ptype=='int') {
  787:      sopt('default','Default');
  788:      sopt('pos','Positive Integer, Not Zero');
  789:      sopt('zeropos','Positive Integer or Zero');
  790:      sopt('inrange','Integer in Range');
  791:      sopt('range','Range of Integers');
  792:      sopt('any','Integer');
  793:   }
  794: 
  795:   if (ptype=='float') {
  796:      sopt('default','Default');
  797:      sopt('zeroone','Floating Point between 0 and 1');
  798:      sopt('pos','Positive Floating Point');
  799:      sopt('any','Floating Point');
  800: 
  801:   }
  802: 
  803:   if (ptype=='string') {
  804:      sopt('default','Default');
  805:      sopt('string','String Value');
  806:   }
  807: 
  808:   if (ptype=='color') {
  809:      sopt('default','Use Default Color');
  810:      sopt('custom','Use Custom Color');
  811:   }
  812: 
  813:   selwrite('</select></form>');
  814: 
  815:   selwrite('<a href="javascript:parent.assemble();');
  816:   if (preturn!='') {
  817:      selwrite(
  818:       'parent.opener.document.'+preturn+'_value.value=parent.window.svalue;');
  819:      selwrite(
  820:       'parent.opener.document.'+preturn+'_type.value=parent.window.stype;');
  821:   }
  822:   if (pmarker!='') {
  823:      selwrite(
  824:      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');
  825:   }
  826:   if (pcode!='') {
  827:      selwrite('parent.opener.'+pcode+'();');
  828:   }
  829:   selwrite('">Store</a>&nbsp;&nbsp;');
  830: 
  831:   selwrite('<a href="javascript:');
  832:      selwrite(
  833:       'parent.opener.document.'+preturn+'_value.value='+"'';");
  834:   if (pmarker!='') {
  835:      selwrite(
  836:      'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');
  837:   }
  838:   if (pcode!='') {
  839:      selwrite('parent.opener.'+pcode+'();');
  840:   }
  841:   selwrite('">Delete</a>&nbsp;&nbsp;');
  842:  
  843:   selwrite('<a href="javascript:');
  844: // Old code :
  845: //----------------------------------------------------------------------
  846: //  if (preturn!='') {
  847: //     selwrite('parent.opener.document.'+preturn+'_value.value='+"'';");
  848: //     selwrite('parent.opener.document.'+preturn+'_type.value='+"'';");
  849: // }
  850: //  if (pmarker!='') {
  851: //     selwrite('parent.opener.document.'+preturn+'_marker.value='+"'';");
  852: //  }
  853: //  if (pcode!='') {
  854: //     selwrite('parent.opener.'+pcode+'();');
  855: //  }
  856: //----------------------------------------------------------------------
  857: // Just close the window to 'cancel' the operation.  There are javascript
  858: // errors in the above commented out code that I have not been able to 
  859: // track down.  I think they reside in 'parent.opener.'+pcode+'();'
  860: //
  861:   selwrite('this.parent.close();');
  862:   selwrite('">Cancel</a>'); 
  863:  
  864:   selwrite('</body></html>');
  865:   this.window.selector.document.close();
  866:   draw();
  867:   
  868: }
  869: 
  870: </script>
  871: 
  872: <frameset rows="120,*" onLoad="init();">
  873: <frame name=selector src="empty.html">
  874: <frame name=choices src="empty.html">
  875: </frameset>
  876: 
  877: 
  878: 
  879: </html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>