File:  [LON-CAPA] / rat / client / parameter.html
Revision 1.44: download - view: text, annotated - select for diffs
Tue Jun 5 20:44:14 2007 UTC (16 years, 11 months ago) by albertel
Branches: MAIN
CVS tags: version_2_4_0, HEAD
- trying to get the string entries to work better, purely string values
  now only have the option of string value (the dysfunctional
  Default Value is removed, and specific listing for the string
  submodes now added, so in a Yes/No case you switch between options
  of 'Yes/No' and 'String Value' (rather than before where you'd Switch
  between 'Default Value' and 'String Value', and if you did switch, you
  couldn't get the yesno radio buttons back....

<html>
<!--
The LearningOnline Network with CAPA
Parameter Input Window
//
// $Id: parameter.html,v 1.44 2007/06/05 20:44:14 albertel Exp $
//
// Copyright Michigan State University Board of Trustees
//
// This file is part of the LearningOnline Network with CAPA (LON-CAPA).
//
// LON-CAPA is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// LON-CAPA is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with LON-CAPA; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
// /home/httpd/html/adm/gpl.txt
//
// http://www.lon-capa.org/
//
-->
<head>
<title>LON-CAPA</title>
</head>

<script>

var ptype='';
var pvalue='';
var preturn='';
var pcode='';
var pscat='';
var pmarker='';
var pname='';

var defhour=0;
var defmin=0;
var defsec=0;

var svalue;
var stype;
var smarker;

var vars=new Array();

var cdate=new Date();

var csec;
var cmin;
var chour;
var cday;

var months=new Array();


function selwrite(text) {
  this.window.selector.document.write(text);
}

function choicestart() {
  this.window.choices.document.clear();
  choicewrite('<html><body bgcolor="#FFFFFF">');
}

function choiceend() {
  choicewrite('</body></html>');
  this.window.choices.document.close();
}

function choicewrite(text) {
  this.window.choices.document.write(text);
}

function tablestart(headtext) {
  choicewrite('<table><tr bgcolor="#AAFFAA"><th colspan=3>'+
              headtext+'</th></tr>');
}

function valline(text,id1,id2) {
  choicewrite('<tr bgcolor="#AAFFAA"><td>'+text+
              '</td><td><input type=text size=4 name=val'+
              id1+'></td><td>incl:<input type=checkbox name=val'+
              id2+'></td></tr>');
}

function datecalc() {
    var sform=choices.document.forms.sch;

    cdate.setHours(sform.hours.options[sform.hours.selectedIndex].value);
    cdate.setMinutes(sform.minutes.options[sform.minutes.selectedIndex].value);
    cdate.setSeconds(sform.minutes.options[sform.seconds.selectedIndex].value);
    cdate.setDate(sform.date.options[sform.date.selectedIndex].value);
    cdate.setMonth(sform.month.options[sform.month.selectedIndex].value);
    cdate.setFullYear(sform.year.options[sform.year.selectedIndex].value);

    draw();
}

function hour() {
   var thishour=cdate.getHours();
    var i; var j;
    choicewrite('<select name=hours onChange="parent.datecalc();">');
    for (i=0;i<=23;i++) {
        choicewrite('<option value='+i);
        if (i==thishour) {
            choicewrite(' selected');
        }
        choicewrite('>');
        if (i==12) { choicewrite('noon'); } else {
           if (i==0) { choicewrite('midnight') } else {
              
                 if (i<12) { choicewrite(i+' am'); } else {
                    j=i-12; choicewrite(j+' pm');
                 }
              
           }
        }
        choicewrite('</option>');
    }
    choicewrite('</select>');
}

function minute() {
   var thisminutes=cdate.getMinutes();
    var i;
    choicewrite('<select name=minutes onChange="parent.datecalc();">');
    for (i=0;i<=59;i++) {
        choicewrite('<option value='+i);
        if (i==thisminutes) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
} 

function second() {
   var thisseconds=cdate.getSeconds();
    var i;
    choicewrite('<select name=seconds onChange="parent.datecalc();">');
    for (i=0;i<=59;i++) {
        choicewrite('<option value='+i);
        if (i==thisseconds) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
} 


function date() {
   var thisdate=cdate.getDate();
    var i;
    choicewrite('<select name=date onChange="parent.datecalc();">');
    for (i=1;i<=31;i++) {
        choicewrite('<option value='+i);
        if (i==thisdate) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
}

function year() {
   var thisyear=cdate.getFullYear();
   var nowdate=new Date();
   var nowyear=nowdate.getFullYear();
   if ( !thisyear ) { thisyear=nowyear; }
   var loweryear=thisyear-2;
   var upperyear=thisyear+5;
   if (thisyear>nowyear) { loweryear=nowyear-2; }
   if (thisyear<nowyear) { upperyear=nowyear+5; } 
    var i;
    choicewrite('<select name=year onChange="parent.datecalc();">');
    for (i=loweryear;i<=upperyear;i++) {
        choicewrite('<option value='+i);
        if (i==thisyear) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
}

function month() {
    var thismonth=cdate.getMonth();
    var i;
    choicewrite('<select name=month onChange="parent.datecalc();">');
    for (i=0;i<=11;i++) {
        choicewrite('<option value='+i);
        if (i==thismonth) {
            choicewrite(' selected');
        }
        choicewrite('>'+months[i]+'</option>');
    }
    choicewrite('</select>');
}
    
    
function intminute() {
   var thisminutes=cmins;
    var i;
    choicewrite('<select name=minutes onChange="parent.intcalc();">');
    for (i=0;i<=59;i++) {
        choicewrite('<option value='+i);
        if (i==thisminutes) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
} 

function inthour() {
   var thishours=chours;
    var i;
    choicewrite('<select name=hours onChange="parent.intcalc();">');
    for (i=0;i<=23;i++) {
        choicewrite('<option value='+i);
        if (i==thishours) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
} 

function intsecond() {
   var thisseconds=csecs;
    var i;
    choicewrite('<select name=seconds onChange="parent.intcalc();">');
    for (i=0;i<=59;i++) {
        choicewrite('<option value='+i);
        if (i==thisseconds) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
} 


function intday() {
   var thisdate=cdays;
    var i;
    choicewrite('<select name=date onChange="parent.intcalc();">');
    for (i=0;i<=31;i++) {
        choicewrite('<option value='+i);
        if (i==thisdate) {
            choicewrite(' selected');
        }
        choicewrite('>'+i+'</option>');
    }
    choicewrite('</select>');
}

function intcalc() {
    var sform=choices.document.forms.sch;
    svalue=((sform.date.options[sform.date.selectedIndex].value*24+
             sform.hours.options[sform.hours.selectedIndex].value*1)*60+
             sform.minutes.options[sform.minutes.selectedIndex].value*1)*60+
             sform.seconds.options[sform.seconds.selectedIndex].value*1;
    draw();
}

function integereval() {
   svalue=choices.document.forms.sch.intval.value;
   svalue=Math.round(svalue);
   if (pscat=='zeropos') { svalue=Math.abs(svalue); }
   if ((pscat=='pos') && (svalue==0)) {
      svalue='';
   }
   if (pscat.indexOf('inrange')!=-1) {
      var rangeparts=new Array;
      rangeparts=split('_',pscat);
      rangeparts=split(',',rangeparts[1]);
      if (svalue<rangeparts[0]) { svalue=rangeparts[0]; }
      if (svalue>rangeparts[1]) { svalue=rangeparts[1]; }
   }
   draw();
}

function floateval() {
   svalue=choices.document.forms.sch.floatval.value;
   svalue=1.0*svalue;
   if (pscat=='pos') { svalue=Math.abs(svalue); }
   if ((pscat=='zeroone') && ((svalue<0) || (svalue>1))) {
      svalue='';
   }
   draw();
}

function stringeval() {
   svalue=choices.document.forms.sch.stringval.value;
   draw();
}

function radiostringeval(newval) {
   svalue=newval;
   draw();
}

function callradiostringeval(newval) {
   return 'onChange="parent.radiostringeval(\''
          +newval+'\')" onClick="parent.radiostringeval(\''
          +newval+'\')"';
}

function intervaldis() {
    csecs=svalue;
    cdays=Math.floor(csecs/86400);
    csecs-=cdays*86400;
    chours=Math.floor(csecs/3600);
    csecs-=chours*3600;
    cmins=Math.floor(csecs/60);
    csecs-=cmins*60;
    choicewrite(cdays+' days '+chours+' hours '
               +cmins+' mins '+csecs+' secs');
}

function pickcolor(picked) {
  svalue=picked;
  draw();
}

function colorfield(ir,ig,ib) {
   var col=new Array;
   col=["00","11","22","44","66","88","AA","CC","DD","EE","FF"];
   var color='#'+col[ir]+col[ig]+col[ib];
   var selection="<font color='"+color+"'>X</font>";
   if (color==svalue) { selection="<font color='#"+col[10-ir]+col[10-ig]+col[10-ib]+"'>X</font>"; }
   choicewrite('<td bgcolor="'+color+'"><a href="javascript:parent.pickcolor('+"'"+
               color+"'"+')">'+selection+'</a></td>');
               
}    

function draw() {
   choicestart();
   choicewrite('<form name=sch');
   if (ptype=='int') {
      choicewrite(' action="javascript:integereval();"');
   }
   if (ptype=='float') {
      choicewrite(' action="javascript:floateval();"');
   }
   if (ptype=='string') {
      choicewrite(' action="javascript:stringeval();"');
   }
   choicewrite('>');
   if (ptype=='tolerance') {
// 0: pscat
      if (pscat=='default') {
         tablestart('Use default value or algorithm of resource');
      }
      if (pscat=='relative_sym') {
// 2: percentage
// 3: open
         tablestart('Percentage error, symmetric around value');
         valline('Percentage',2,3);
         if ((svalue!='') && (typeof(svalue)!="undefined")) {
            choices.document.forms.sch.val2.value=parseInt(svalue);
            if (svalue.indexOf('+')!=-1) {
               choices.document.forms.sch.val3.checked=true;
            }
         }
      }
      if (pscat=='relative') {
// 2: left
// 3: open
// 4: right
// 5: open
         tablestart('Percentage error, asymmetric around value');
         valline('Upper percentage',2,3);
         valline('Lower percentage',4,5);
         var range1=new Array;
         if ((svalue!='') && (typeof(svalue)!="undefined")) {
            range1=svalue.split(',');
            if (typeof(range1[1])=='undefined') { range1[1]=range1[0]; }
            choices.document.forms.sch.val2.value=parseFloat(range1[0]);
            if (range1[0].indexOf('+')!=-1) {
               choices.document.forms.sch.val3.checked=true;
            }
            choices.document.forms.sch.val4.value=parseFloat(range1[1]);
            if (range1[1].indexOf('+')!=-1) {
               choices.document.forms.sch.val5.checked=true;
            }
         }
      }
      if (pscat=='absolute_sym') {
         tablestart('Absolute error, symmetric around value');
         valline('Value',2,3);
         if ((svalue!='') && (typeof(svalue)!="undefined")) {
            choices.document.forms.sch.val2.value=parseFloat(svalue);
            if (svalue.indexOf('+')!=-1) {
               choices.document.forms.sch.val3.checked=true;
            }
         }
      }
      if (pscat=='absolute') {
         tablestart('Absolute error, asymmetric around value');
         valline('Upper value',2,3);
         valline('Lower value',4,5);
         var range2=new Array;
         if ((svalue!='') && (typeof(svalue)!="undefined")) {
            range=svalue.split(',');
            if (typeof(range2[1])=='undefined') { range2[1]=range2[0]; }
            choices.document.forms.sch.val2.value=parseFloat(range2[0]);
            if (range2[0].indexOf('+')!=-1) {
               choices.document.forms.sch.val3.checked=true;
            }
            choices.document.forms.sch.val4.value=parseFloat(range2[1]);
            if (range2[1].indexOf('+')!=-1) {
               choices.document.forms.sch.val5.checked=true;
            }
         }
      }
   }

   if (ptype=='date') {
     if (pscat=='default') {
         tablestart('Default value or none');
         choicewrite('</table>');
     } else {
      if (pscat=='start') {
         tablestart('Date and time');
      }
      if (pscat=='end') {
         tablestart('Date and time');
      }
      if (pscat=='interval') {
         tablestart('Time interval');
         choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>');
         intervaldis();
         choicewrite('</td></tr><tr bgcolor="#AAFFAA"><td>Time:'
         +'</td><td colspan=2>');
         intday();choicewrite('days ');
         inthour();choicewrite('hours ');
         intminute(); choicewrite('mins '); intsecond();
         choicewrite('secs</td></tr></table>');         
      } else { 
         choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>'
         +cdate.toString()+
         '</td></tr><tr bgcolor="#AAFFAA"><td>Date:</td><td colspan=2>');
         month();date();year();
         choicewrite('</td></tr><tr bgcolor="#AAFFAA"><td>Time:'
         +'</td><td colspan=2>');hour();choicewrite('h ');minute();
         choicewrite('m ');second();
         choicewrite('s</td></tr></table>');
      }
     }
   }

   if (ptype=='int') {
      var pscatparts=new Array;
      pscatparts=pscat.split(',');
      pscat=pscatparts[0];
      if (pscat=='default') {
         tablestart('Default value or none');
         choicewrite('</table>');
      } else {
       if (pscat=='range') {
         tablestart('Integer range');      
         choicewrite('<tr bgcolor="#AAFFAA"><td>Lower Value:'+
              '</td><td colspan=2><input type=text size=4 name=val2'+
              '></td></tr>');
         choicewrite('<tr bgcolor="#AAFFAA"><td>Upper Value:'+
              '</td><td colspan=2><input type=text size=4 name=val4'+
              '></td></tr></table>');
         var range=new Array;
         if ((svalue!='') && (typeof(svalue)!="undefined")) {
            range=svalue.split(',');
            if (typeof(range[1])=='undefined') { range[1]=range[0]; }
            choices.document.forms.sch.val2.value=parseInt(range[0]);
            choices.document.forms.sch.val4.value=parseInt(range[1]);
         }
       } else {
        if (pscat=='pos') {
           tablestart('Positive (non-zero) integer');
        }
        if (pscat=='zeropos') {
           tablestart('Positive integer or zero');
        }
        if (pscat.indexOf('inrange')!=-1) {
           var rangeparts=new Array;
           rangeparts=split(',',pscat);
           tablestart('Integer in the range ['+rangeparts[1]+']');
        }
        if (pscat=='any') {
           tablestart('Integer');
        }
        choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
        choicewrite('<input name=intval size=10 value="'+svalue+
                    '" name=intval onChange="parent.integereval()">');
        choicewrite('</td></table>');
      }
     }
   }

   if (ptype=='float') {
      if (pscat=='default') {
         tablestart('Default value or none');
         choicewrite('</table>');         
      } else {
        if (pscat=='pos') {
           tablestart('Positive floating point number or zero');
        }
        if (pscat=='zeroone') {
           tablestart('Floating point number between zero and one');
        }
        if (pscat=='any') {
           tablestart('Floating point number');
        }
        choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
        choicewrite('<input name=floatval size=10 value="'+svalue+
                    '" name=floatval onChange="parent.floateval()">');
        choicewrite('</td></table>');
      }
   }

   if (ptype=='string') {
        if ((pscat=='any') || (pscat=='') || (pscat=='default') ||  
            (typeof(pscat)=='undefined')) {
           tablestart('Text');
	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
           choicewrite('<input name="stringval" size="20" value="'+svalue+
                    '" type="text" onChange="parent.stringeval()">');
        }
        if (pscat=='yesno') {
           tablestart('Yes/No');
	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
           choicewrite('<label><input name="stringval" value="yes"'+
                  ' type="radio" '+callradiostringeval('yes'));
           if (svalue=='yes') { choicewrite(' checked'); }
           choicewrite('> Yes</label><br />');
           choicewrite('<label><input name="stringval" value="no"'+
                  ' type="radio" '+callradiostringeval('no'));
           if (svalue=='no') { choicewrite(' checked'); }
           choicewrite('> No</label><br />');
        }
        if (pscat=='examtype') {
           tablestart('Exam Type');
	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
           choicewrite('<label><input name="stringval" value="online"'+
                ' type="radio" '+callradiostringeval('online'));
           if (svalue=='online') { choicewrite(' checked'); }
           choicewrite('> Online</label><br />');
           choicewrite('<label><input name="stringval" value="checkout"'+
              ' type="radio" '+callradiostringeval('checkout'));
           if (svalue=='checkout') { choicewrite(' checked'); }
           choicewrite('> Check out</label><br />');
       }
        if (pscat=='questiontype') {
           tablestart('Question Type');
	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
           choicewrite('<label><input name="stringval" value="problem"'+
               ' type="radio" '+callradiostringeval('problem'));
           if (svalue=='problem') { choicewrite(' checked'); }
           choicewrite('> Standard Problem</label><br />');
//	   choicewrite('<label><input name="stringval" value="quiz"'+
//                ' type="radio" '+callradiostringeval('quiz'));
//         if (svalue=='quiz') { choicewrite(' checked'); }
//         choicewrite('> Quiz</label><br />');
           choicewrite('<label><input name="stringval" value="practice"'+
                  ' type="radio" '+callradiostringeval('practice'));
           if (svalue=='practice') { choicewrite(' checked'); }
           choicewrite('> Practice</label><br />');
           choicewrite('<label><input name="stringval" value="exam"'+
                  ' type="radio" '+callradiostringeval('exam'));
           if (svalue=='exam') { choicewrite(' checked'); }
           choicewrite('> Exam</label><br />');
//         choicewrite('<label><input name="stringval" value="assess"'+
//              ' type="radio" '+callradiostringeval('assess'));
//         if (svalue=='assess') { choicewrite(' checked'); }
//         choicewrite('> Assessment</label><br />');
           choicewrite('<label><input name="stringval" value="survey"'+
                ' type="radio" '+callradiostringeval('survey'));
           if (svalue=='survey') { choicewrite(' checked'); }
           choicewrite('> Survey</label><br />');
//         choicewrite('<label><input name="stringval" value="form"'+
//                ' type="radio" '+callradiostringeval('form'));
//         if (svalue=='form') { choicewrite(' checked'); }
//         choicewrite('> Input Form</label><br />');
           choicewrite('<label><input name="stringval" value="library"'+
               ' type="radio" '+callradiostringeval('library'));
           if (svalue=='library') { choicewrite(' checked'); }
           choicewrite('> Library</label><br />');
        }
        if (pscat=='ip') {
           tablestart('IP Number/Name');
	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
           choicewrite('<input name="stringval" size="20" value="'+svalue+
                    '" onChange="parent.stringeval()">');
        }
        if (pscat=='fileext') {
            tablestart('Allowed File Extensions');
	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
           choicewrite('<label><input name="radstringval" value="txt"'+
               ' type="radio" '+callradiostringeval('txt'));
           if (svalue=='txt') { choicewrite(' checked'); }
           choicewrite('> Plain Text</label><br />');
           choicewrite('<label><input name="radstringval" value="png,jpg,jpeg,gif"'+
               ' type="radio" '+callradiostringeval('png,jpg,jpeg,gif'));
           if (svalue=='png,jpg,jpeg,gif') { choicewrite(' checked'); }
           choicewrite('> Picture File</label><br />');
           choicewrite('<label><input name="radstringval" value="doc,xls,ppt"'+
               ' type="radio" '+callradiostringeval('doc,xls,ppt'));
           if (svalue=='doc,xls,ppt') { choicewrite(' checked'); }
           choicewrite('> Office Document</label><br />');
           choicewrite('<input name="stringval" size="20" value="'+svalue+
                    '" onChange="parent.stringeval()">');
       }
       if (pscat=='useslots') {
           tablestart('Slots control access');
	   choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>');
           choicewrite('<label><input name="stringval" value="no"'+
                  ' type="radio" '+callradiostringeval('no'));
           if (svalue=='no') { choicewrite(' checked'); }
           choicewrite('> No</label><br />');
           choicewrite('<label><input name="stringval" value="resource"'+
                  ' type="radio" '+callradiostringeval('resource'));
           if (svalue=='resource') { choicewrite(' checked'); }
           choicewrite('> Yes, and the scope of student selected slot is a single resource.</label><br />');
           choicewrite('<label><input name="stringval" value="map"'+
                  ' type="radio" '+callradiostringeval('map'));
           if (svalue=='map') { choicewrite(' checked'); }
           choicewrite('> Yes, and the scope of student selected slot is the enclosing map/folder. When checking in, it applies to only one resource.</label><br />');
           choicewrite('<label><input name="stringval" value="map_map"'+
                  ' type="radio" '+callradiostringeval('map_map'));
           if (svalue=='map_map') { choicewrite(' checked'); }
           choicewrite('> Yes, and the scope of student selected slot is the enclosing map/folder. When checking in, all resources in the map/folder are checked in..</label><br />');
        choicewrite('</td></table>');
      }
   }
   
   if (ptype=='color') {
      tablestart('Choose a Color');
      choicewrite('<table>');
      if (svalue) {
         choicewrite('<tr><td colspan="9">Current choice:</td><td bgcolor="'+
                     svalue+'" colspan="2">&nbsp;</td></tr>');
      }
      for (var ir=0; ir<=10; ir++) {
          for (var ig=0; ig<=10; ig++) {
              choicewrite('<tr>');
              for (var ib=0; ib<=10; ib++) {
                  colorfield(ir,ig,ib);
	      }
              choicewrite('</tr>');
	  }	      
      }
      choicewrite('</table></td></table>');
   }

   choicewrite('</form>');
   choiceend();
}

function sopt(va,text) {
   selwrite('<option value="'+va+'"');
   if (va==pscat) {
     selwrite(' selected');
   }
   selwrite('>'+text+'</option>');
}

function catchange() {
   var sform=selector.document.forms.fsel.fcat;
   pscat=sform.options[sform.selectedIndex].value;
   draw();
}

function assemble() {
    if ((ptype=='date') && (pscat!='interval')) {
        svalue=Math.floor(cdate.getTime()/1000);
    }
    if (ptype=='tolerance') {
       if (pscat=='relative_sym') {
          svalue=choices.document.forms.sch.val2.value+'%';
          if (choices.document.forms.sch.val3.checked) {
             svalue+='+';
          }
       }
       if (pscat=='absolute_sym') {
          svalue=choices.document.forms.sch.val2.value;
          if (choices.document.forms.sch.val3.checked) {
             svalue+='+';
          }
       }
       if (pscat=='absolute') {
          svalue=choices.document.forms.sch.val2.value;
          if (choices.document.forms.sch.val3.checked) {
             svalue+='+';
          }
          svalue+=','+choices.document.forms.sch.val4.value;
          if (choices.document.forms.sch.val5.checked) {
             svalue+='+';
          }
       }
       if (pscat=='relative') {
          svalue=choices.document.forms.sch.val2.value+'%';
          if (choices.document.forms.sch.val3.checked) {
             svalue+='+';
          }
          svalue+=','+choices.document.forms.sch.val4.value+'%';
          if (choices.document.forms.sch.val5.checked) {
             svalue+='+';
          }
       }
    }
    if ((ptype=='int') && (pscat=='range')) {
          svalue=choices.document.forms.sch.val2.value+','+
                 choices.document.forms.sch.val4.value;
    }
    if (pscat=='default') { svalue=''; }
    stype=ptype+'_'+pscat;
}


function init() {
  var i;
  var subs=new Array();
  var namevalue=this.window.location.search.split('&');
  namevalue[0]=namevalue[0].substr(1,namevalue[0].length-1);

  for (i=0;i<namevalue.length;i++) {
     var pair=namevalue[i].split('=');
     pair[1]=unescape(pair[1]);
     if (pair[0]=='value') { pvalue=pair[1]; }
     if (pair[0]=='type') { subs=pair[1].split('_');
                            ptype=subs[0];
                            pscat=subs[1];
                            if (typeof(subs[2])!="undefined") { 
                               pscat+='_'+subs[2]; 
                            }
                            if ((pscat=='') || (typeof(pscat)=="undefined")) { 
                               pscat='default';
                            }
                           }
     if (pair[0]=='return') { preturn=pair[1]; }
     if (pair[0]=='call') { pcode=pair[1]; }
     if (pair[0]=='marker') { pmarker=pair[1]; }
     if (pair[0]=='name') { pname=pair[1]; }
     if (pair[0]=='defhour' && pair[1] >= 0 && pair[1] < 24 ) {
         defhour=pair[1];
     }
     if (pair[0]=='defmin' && pair[1] >= 0 && pair[1] < 60) { defmin=pair[1]; }
     if (pair[0]=='defsec' && pair[1] >= 0 && pair[1] < 60) { defsec=pair[1]; }
  }

  svalue=pvalue;
  if (((ptype=='float') || (ptype=='string') || (ptype=='int')) &&
      (pscat=='default') && 
      (typeof(svalue)!="undefined") && 
      (svalue!=0) && (svalue!='')) { pscat='any'; }

  if (ptype=='tolerance') {
     var tperc=0;
     var trange=0;
     if (typeof(svalue)!='undefined') {
        if (svalue.indexOf('%')!=-1) { tperc=1;  }
        if (svalue.indexOf(',')!=-1) { trange=1; }
        if (trange) {
           if (tperc) { pscat='relative'; } else { pscat='absolute'; }
        } else {
           if (tperc) { pscat='relative_sym'; } else { pscat='absolute_sym'; }
        }
     }
  }

  this.window.selector.document.clear();
  selwrite('<html><body bgcolor="#FFFFFF">');

  selwrite('<form name="fsel"><b>'+pname+'</b><br>');
  selwrite('<select name="fcat" onChange="parent.catchange();">');

  if (ptype=='tolerance') {
     sopt('default','Default');
     sopt('relative_sym','Relative Tolerance, Symmetric (percent)');
     sopt('relative','Relative Tolerance (percentages)');
     sopt('absolute_sym','Absolute Tolerance, Symmetric (value)');
     sopt('absolute','Absolute Tolerance (values)');
  }

  if (ptype=='date') {
     sopt('default','Default');
     sopt('start','Starting Date');
     sopt('end','Ending Date');
     sopt('interval','Time Interval');
     
     if ((pvalue!='') && (typeof(pvalue)!="undefined")) {
        cdate.setTime(pvalue*1000);
     } else {        
        cdate.setSeconds(defsec);
        cdate.setMinutes(defmin);
        cdate.setHours(defhour);
     }
 
     months[0]='January';
     months[1]='February';
     months[2]='March';
     months[3]='April';
     months[4]='May';
     months[5]='June';
     months[6]='July';
     months[7]='August';
     months[8]='September';
     months[9]='October';
     months[10]='November';
     months[11]='December';
  }
   
  if (ptype=='int') {
     sopt('default','Default');
     sopt('pos','Positive Integer, Not Zero');
     sopt('zeropos','Positive Integer or Zero');
     sopt('inrange','Integer in Range');
     sopt('range','Range of Integers');
     sopt('any','Integer');
  }

  if (ptype=='float') {
     sopt('default','Default');
     sopt('zeroone','Floating Point between 0 and 1');
     sopt('pos','Positive Floating Point');
     sopt('any','Floating Point');

  }

  if (ptype=='string') {
     //sopt('default','Default');
     if (pscat == 'yesno')        { sopt('yesno','Yes/No'); }
     if (pscat == 'examtype')     { sopt('examtype','Exam Type'); }
     if (pscat == 'questiontype') { sopt('questiontype','Question Type'); }
     if (pscat == 'ip')           { sopt('ip','IP Number/Name'); }
     if (pscat == 'fileext')      { sopt('fileext','File Extension'); }
     if (pscat == 'useslots')     { sopt('useslots','Slots control access'); }
     sopt('any','String Value');
  }

  if (ptype=='color') {
     sopt('default','Use Default Color');
     sopt('custom','Use Custom Color');
  }

  selwrite('</select></form>');

  selwrite('<a href="javascript:parent.assemble();');
  if (preturn!='') {
     selwrite(
      'parent.opener.document.'+preturn+'_value.value=parent.window.svalue;');
     selwrite(
      'parent.opener.document.'+preturn+'_type.value=parent.window.stype;');
  }
  if (pmarker!='') {
     selwrite(
     'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');
  }
  if (pcode!='') {
     selwrite('parent.opener.'+pcode+'();');
  }
  selwrite('">Save</a>&nbsp;&nbsp;');

  selwrite('<a href="javascript:');
     selwrite(
      'parent.opener.document.'+preturn+'_value.value='+"'';");
  if (pmarker!='') {
     selwrite(
     'parent.opener.document.'+preturn+'_marker.value=parent.window.pmarker;');
  }
  if (pcode!='') {
     selwrite('parent.opener.'+pcode+'();');
  }
  selwrite('">Delete</a>&nbsp;&nbsp;');
 
  selwrite('<a href="javascript:');
// Old code :
//----------------------------------------------------------------------
//  if (preturn!='') {
//     selwrite('parent.opener.document.'+preturn+'_value.value='+"'';");
//     selwrite('parent.opener.document.'+preturn+'_type.value='+"'';");
// }
//  if (pmarker!='') {
//     selwrite('parent.opener.document.'+preturn+'_marker.value='+"'';");
//  }
//  if (pcode!='') {
//     selwrite('parent.opener.'+pcode+'();');
//  }
//----------------------------------------------------------------------
// Just close the window to 'cancel' the operation.  There are javascript
// errors in the above commented out code that I have not been able to 
// track down.  I think they reside in 'parent.opener.'+pcode+'();'
//
  selwrite('this.parent.close();');
  selwrite('">Cancel</a>'); 
 
  selwrite('</body></html>');
  this.window.selector.document.close();
  draw();
  
}

</script>

<frameset rows="120,*" onLoad="init();">
<frame name=selector src="empty.html">
<frame name=choices src="empty.html">
</frameset>



</html>

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