version 1.13, 2001/08/08 16:41:28
|
version 1.39, 2006/06/16 19:57:56
|
Line 2
|
Line 2
|
<!-- |
<!-- |
The LearningOnline Network with CAPA |
The LearningOnline Network with CAPA |
Parameter Input Window |
Parameter Input Window |
06/16/00,06/17,11/17,11/18,11/23,11/27,11/28,12/15,12/16, |
// |
03/21/01,03/24,06/26 Gerd Kortemeyer |
// $Id$ |
07/24/01 Scott Harrison |
// |
08/08 Gerd Kortemeyer |
// 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> |
<head> |
<title>LON-CAPA</title> |
<title>LON-CAPA</title> |
Line 21 var pscat='';
|
Line 42 var pscat='';
|
var pmarker=''; |
var pmarker=''; |
var pname=''; |
var pname=''; |
|
|
|
var defhour=0; |
|
var defmin=0; |
|
var defsec=0; |
|
|
var svalue; |
var svalue; |
var stype; |
var stype; |
var smarker; |
var smarker; |
Line 149 function date() {
|
Line 174 function date() {
|
|
|
function year() { |
function year() { |
var thisyear=cdate.getFullYear(); |
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; |
var i; |
choicewrite('<select name=year onChange="parent.datecalc();">'); |
choicewrite('<select name=year onChange="parent.datecalc();">'); |
for (i=thisyear-25;i<=thisyear+50;i++) { |
for (i=loweryear;i<=upperyear;i++) { |
choicewrite('<option value='+i); |
choicewrite('<option value='+i); |
if (i==thisyear) { |
if (i==thisyear) { |
choicewrite(' selected'); |
choicewrite(' selected'); |
Line 274 function stringeval() {
|
Line 306 function stringeval() {
|
draw(); |
draw(); |
} |
} |
|
|
|
function radiostringeval(newval) { |
|
svalue=newval; |
|
draw(); |
|
} |
|
|
|
function callradiostringeval(newval) { |
|
return 'onChange="parent.radiostringeval(\'' |
|
+newval+'\')" onClick="parent.radiostringeval(\'' |
|
+newval+'\')"'; |
|
} |
|
|
function intervaldis() { |
function intervaldis() { |
csecs=svalue; |
csecs=svalue; |
cdays=Math.floor(csecs/86400); |
cdays=Math.floor(csecs/86400); |
Line 285 function intervaldis() {
|
Line 328 function intervaldis() {
|
choicewrite(cdays+' days '+chours+' hours ' |
choicewrite(cdays+' days '+chours+' hours ' |
+cmins+' mins '+csecs+' secs'); |
+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() { |
function draw() { |
choicestart(); |
choicestart(); |
choicewrite('<form name=sch'); |
choicewrite('<form name=sch'); |
Line 324 function draw() {
|
Line 383 function draw() {
|
tablestart('Percentage error, asymmetric around value'); |
tablestart('Percentage error, asymmetric around value'); |
valline('Upper percentage',2,3); |
valline('Upper percentage',2,3); |
valline('Lower percentage',4,5); |
valline('Lower percentage',4,5); |
var range=new Array; |
var range1=new Array; |
if ((svalue!='') && (typeof(svalue)!="undefined")) { |
if ((svalue!='') && (typeof(svalue)!="undefined")) { |
range=svalue.split(','); |
range1=svalue.split(','); |
if (typeof(range[1])=='undefined') { range[1]=range[0]; } |
if (typeof(range1[1])=='undefined') { range1[1]=range1[0]; } |
choices.document.forms.sch.val2.value=parseInt(range[0]); |
choices.document.forms.sch.val2.value=parseFloat(range1[0]); |
if (range[0].indexOf('+')!=-1) { |
if (range1[0].indexOf('+')!=-1) { |
choices.document.forms.sch.val3.checked=true; |
choices.document.forms.sch.val3.checked=true; |
} |
} |
choices.document.forms.sch.val4.value=parseInt(range[1]); |
choices.document.forms.sch.val4.value=parseFloat(range1[1]); |
if (range[1].indexOf('+')!=-1) { |
if (range1[1].indexOf('+')!=-1) { |
choices.document.forms.sch.val5.checked=true; |
choices.document.forms.sch.val5.checked=true; |
} |
} |
} |
} |
Line 342 function draw() {
|
Line 401 function draw() {
|
tablestart('Absolute error, symmetric around value'); |
tablestart('Absolute error, symmetric around value'); |
valline('Value',2,3); |
valline('Value',2,3); |
if ((svalue!='') && (typeof(svalue)!="undefined")) { |
if ((svalue!='') && (typeof(svalue)!="undefined")) { |
choices.document.forms.sch.val2.value=parseInt(svalue); |
choices.document.forms.sch.val2.value=parseFloat(svalue); |
if (svalue.indexOf('+')!=-1) { |
if (svalue.indexOf('+')!=-1) { |
choices.document.forms.sch.val3.checked=true; |
choices.document.forms.sch.val3.checked=true; |
} |
} |
Line 352 function draw() {
|
Line 411 function draw() {
|
tablestart('Absolute error, asymmetric around value'); |
tablestart('Absolute error, asymmetric around value'); |
valline('Upper value',2,3); |
valline('Upper value',2,3); |
valline('Lower value',4,5); |
valline('Lower value',4,5); |
var range=new Array; |
var range2=new Array; |
if ((svalue!='') && (typeof(svalue)!="undefined")) { |
if ((svalue!='') && (typeof(svalue)!="undefined")) { |
range=svalue.split(','); |
range=svalue.split(','); |
if (typeof(range[1])=='undefined') { range[1]=range[0]; } |
if (typeof(range2[1])=='undefined') { range2[1]=range2[0]; } |
choices.document.forms.sch.val2.value=parseInt(range[0]); |
choices.document.forms.sch.val2.value=parseFloat(range2[0]); |
if (range[0].indexOf('+')!=-1) { |
if (range2[0].indexOf('+')!=-1) { |
choices.document.forms.sch.val3.checked=true; |
choices.document.forms.sch.val3.checked=true; |
} |
} |
choices.document.forms.sch.val4.value=parseInt(range[1]); |
choices.document.forms.sch.val4.value=parseFloat(range2[1]); |
if (range[1].indexOf('+')!=-1) { |
if (range2[1].indexOf('+')!=-1) { |
choices.document.forms.sch.val5.checked=true; |
choices.document.forms.sch.val5.checked=true; |
} |
} |
} |
} |
} |
} |
if (pscat=='sigdigits') { |
|
tablestart('Agreement on significant digits'); |
|
choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>Number of digits: ' |
|
+'<input type=text size=4 name=val2></td></tr>'); |
|
|
|
choicewrite('<tr bgcolor="#AAFFAA"><td colspan=3>Accept if more digits given: ' |
|
+'<input type=checkbox name=val3></td></tr>'); |
|
|
|
} |
|
} |
} |
|
|
if (ptype=='date') { |
if (ptype=='date') { |
Line 383 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
Line 433 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
choicewrite('</table>'); |
choicewrite('</table>'); |
} else { |
} else { |
if (pscat=='start') { |
if (pscat=='start') { |
tablestart('Starting or opening date and time'); |
tablestart('Date and time'); |
} |
} |
if (pscat=='end') { |
if (pscat=='end') { |
tablestart('Ending or closing date and time'); |
tablestart('Date and time'); |
} |
} |
if (pscat=='interval') { |
if (pscat=='interval') { |
tablestart('Time interval'); |
tablestart('Time interval'); |
Line 412 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
Line 462 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
} |
} |
|
|
if (ptype=='int') { |
if (ptype=='int') { |
|
var pscatparts=new Array; |
|
pscatparts=pscat.split(','); |
|
pscat=pscatparts[0]; |
if (pscat=='default') { |
if (pscat=='default') { |
tablestart('Default value or none'); |
tablestart('Default value or none'); |
choicewrite('</table>'); |
choicewrite('</table>'); |
} else { |
} 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') { |
if (pscat=='pos') { |
tablestart('Positive (non-zero) integer'); |
tablestart('Positive (non-zero) integer'); |
} |
} |
Line 427 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
Line 496 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
rangeparts=split(',',pscat); |
rangeparts=split(',',pscat); |
tablestart('Integer in the range ['+rangeparts[1]+']'); |
tablestart('Integer in the range ['+rangeparts[1]+']'); |
} |
} |
if (pscat=='range') { |
|
tablestart('Integer range'); |
|
} |
|
if (pscat=='any') { |
if (pscat=='any') { |
tablestart('Integer'); |
tablestart('Integer'); |
} |
} |
Line 438 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
Line 504 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
'" name=intval onChange="parent.integereval()">'); |
'" name=intval onChange="parent.integereval()">'); |
choicewrite('</td></table>'); |
choicewrite('</td></table>'); |
} |
} |
|
} |
} |
} |
|
|
if (ptype=='float') { |
if (ptype=='float') { |
Line 466 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
Line 533 choicewrite('<tr bgcolor="#AAFFAA"><td c
|
tablestart('Default value or none'); |
tablestart('Default value or none'); |
choicewrite('</table>'); |
choicewrite('</table>'); |
} else { |
} else { |
if (pscat=='any') { |
if ((pscat=='any') || (pscat=='') || (typeof(pscat)=='undefined')) { |
tablestart('Text'); |
tablestart('Text'); |
} |
choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>'); |
choicewrite('<tr bgcolor="#AAFFAA"><td>Value:</td><td colspan=2>'); |
choicewrite('<input name="stringval" size="20" value="'+svalue+ |
choicewrite('<input name=intval size=20 value="'+svalue+ |
'" type="text" onChange="parent.stringeval()">'); |
'" name=stringval 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')); |
|
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>'); |
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"> </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('</table></form>'); |
choicewrite('</table></form>'); |
choiceend(); |
choiceend(); |
Line 532 function assemble() {
|
Line 722 function assemble() {
|
} |
} |
} |
} |
} |
} |
|
if ((ptype=='int') && (pscat=='range')) { |
|
svalue=choices.document.forms.sch.val2.value+','+ |
|
choices.document.forms.sch.val4.value; |
|
} |
if (pscat=='default') { svalue=''; } |
if (pscat=='default') { svalue=''; } |
stype=ptype+'_'+pscat; |
stype=ptype+'_'+pscat; |
} |
} |
Line 561 function init() {
|
Line 755 function init() {
|
if (pair[0]=='call') { pcode=pair[1]; } |
if (pair[0]=='call') { pcode=pair[1]; } |
if (pair[0]=='marker') { pmarker=pair[1]; } |
if (pair[0]=='marker') { pmarker=pair[1]; } |
if (pair[0]=='name') { pname=pair[1]; } |
if (pair[0]=='name') { pname=pair[1]; } |
|
if (pair[0]=='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; |
svalue=pvalue; |
Line 605 function init() {
|
Line 804 function init() {
|
|
|
if ((pvalue!='') && (typeof(pvalue)!="undefined")) { |
if ((pvalue!='') && (typeof(pvalue)!="undefined")) { |
cdate.setTime(pvalue*1000); |
cdate.setTime(pvalue*1000); |
|
} else { |
|
cdate.setSeconds(defsec); |
|
cdate.setMinutes(defmin); |
|
cdate.setHours(defhour); |
} |
} |
|
|
months[0]='January'; |
months[0]='January'; |
Line 640 function init() {
|
Line 843 function init() {
|
|
|
if (ptype=='string') { |
if (ptype=='string') { |
sopt('default','Default'); |
sopt('default','Default'); |
sopt('string','String Value'); |
sopt('any','String Value'); |
|
} |
|
|
|
if (ptype=='color') { |
|
sopt('default','Use Default Color'); |
|
sopt('custom','Use Custom Color'); |
} |
} |
|
|
selwrite('</select></form>'); |
selwrite('</select></form>'); |
Line 674 function init() {
|
Line 882 function init() {
|
selwrite('">Delete</a> '); |
selwrite('">Delete</a> '); |
|
|
selwrite('<a href="javascript:'); |
selwrite('<a href="javascript:'); |
if (preturn!='') { |
// Old code : |
selwrite('parent.opener.document.'+preturn+'_value.value='+"'';"); |
//---------------------------------------------------------------------- |
selwrite('parent.opener.document.'+preturn+'_type.value='+"'';"); |
// if (preturn!='') { |
} |
// selwrite('parent.opener.document.'+preturn+'_value.value='+"'';"); |
if (pmarker!='') { |
// selwrite('parent.opener.document.'+preturn+'_type.value='+"'';"); |
selwrite('parent.opener.document.'+preturn+'_marker.value='+"'';"); |
// } |
} |
// if (pmarker!='') { |
if (pcode!='') { |
// selwrite('parent.opener.document.'+preturn+'_marker.value='+"'';"); |
selwrite('parent.opener.'+pcode+'();'); |
// } |
} |
// 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('">Cancel</a>'); |
|
|
selwrite('</body></html>'); |
selwrite('</body></html>'); |
Line 701 function init() {
|
Line 917 function init() {
|
|
|
|
|
|
|
</html> |
|
|
|
|
</html> |