source: extensions/net.sf.basedb.reggie/trunk/resources/bloodform.jsp @ 1524

Last change on this file since 1524 was 1524, checked in by Nicklas Nordborg, 12 years ago

References #349: Copy consent information to multiple cases

The blood registration now checks if there is a case with consent information and allows copying of that information to the blood sample.

File size: 21.3 KB
Line 
1<%@ page
2  pageEncoding="UTF-8"
3  session="false"
4  import="net.sf.basedb.core.Application"
5  import="net.sf.basedb.core.User"
6  import="net.sf.basedb.core.DbControl"
7  import="net.sf.basedb.core.SessionControl"
8  import="net.sf.basedb.clients.web.Base"
9  import="net.sf.basedb.clients.web.util.HTML"
10  import="net.sf.basedb.util.Values"
11%>
12<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
13<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
14<%
15final SessionControl sc = Base.getExistingSessionControl(request, true);
16final String ID = sc.getId();
17final float scale = Base.getScale(sc);
18DbControl dc = null;
19try
20{
21  dc = sc.newDbControl();
22  final User user = User.getById(dc, sc.getLoggedInUserId());
23%>
24<base:page type="default" >
25<base:head scripts="ajax.js" styles="path.css">
26  <link rel="stylesheet" type="text/css" href="reggie.css">
27  <script language="JavaScript" src="reggie.js" type="text/javascript" charset="UTF-8"></script>
28 
29 
30<script language="JavaScript">
31
32var debug = true;
33var currentStep = 1;
34var pnrIsValid = false;
35var pnrIsAcceptable = false;
36var caseIsValid = false;
37var samplingDateIsValid = true;
38var freezerDateIsValid = true;
39
40var patientInfo = null;
41var bloodInfo = null;
42var caseInfo = null;
43
44function init()
45{
46  var frm = document.forms['reggie'];
47  frm.caseName.focus();
48}
49
50function step1IsValid()
51{
52  return pnrIsValid && caseIsValid;
53}
54
55function step1IsAcceptable()
56{
57  return pnrIsAcceptable && caseIsValid;
58}
59
60function step2IsValid()
61{
62  var formOk = true;
63  var frm = document.forms['reggie'];
64
65  // New patient only
66  if (!patientInfo.id)
67  {
68    // Validate 'New patient' form
69    if (frm.allFirstNames.value == '')
70    {
71      setInputStatus('allFirstNames', 'Missing', 'invalid');
72      frm.allFirstNames.focus();
73      formOk = false;
74    }
75    else
76    {
77      setInputStatus('allFirstNames', '', 'valid');
78    }
79   
80    if (frm.familyName.value == '')
81    {
82      setInputStatus('familyName', 'Missing', 'invalid');
83      frm.familyName.focus();
84      formOk = false;
85    }
86    else
87    {
88      setInputStatus('familyName', '', 'valid');
89    }
90
91    if (frm.patientCode.value == '')
92    {
93      setInputStatus('patientCode', 'Missing', 'invalid');
94      frm.patientCode.focus();
95      formOk = false;
96    }
97    else
98    {
99      setInputStatus('patientCode', '', 'valid');
100    }
101  }
102  return formOk;
103}
104
105function step3IsValid()
106{
107  var isValid = samplingDateIsValid && freezerDateIsValid;
108  return isValid;
109}
110
111function goNext(manual)
112{
113  setInnerHTML('gonext.message', '');
114  if (currentStep == 1)
115  {
116    if (step1IsValid())
117    {
118      gotoStep2();
119    }
120    else if (step1IsAcceptable())
121    {
122      if (manual)
123      {
124        gotoStep2();
125      }
126      else
127      {
128        setInnerHTML('gonext.message', 'Personal number is non-standard. Click \'Next\' to continue registration.');
129      }
130    }
131  }
132  else if (currentStep == 2)
133  {
134    if (step2IsValid()) gotoStep3();
135  }
136}
137
138function caseNameOnChange()
139{
140  var frm = document.forms['reggie'];
141  var caseName = frm.caseName.value;
142  caseIsValid = false;
143  if (caseName == '')
144  {
145    setInputStatus('case', 'Missing', 'invalid');
146    frm.caseName.focus();
147    return;
148  }
149  if (!isValidCaseName(caseName))
150  {
151    setInputStatus('case', 'Only 7-digits name is allowed .', 'invalid');
152    frm.caseName.focus();
153    return;
154  }
155
156  setInputStatus('case', '', 'valid');
157  caseIsValid = true;
158 
159  getBloodInfo();
160}
161
162function personalNumberOnChange()
163{
164  var frm = document.forms['reggie'];
165  var pnr = frm.personalNumber.value;
166  pnrIsValid = false;
167  pnrIsAcceptable = true;
168 
169  if (pnr.length < 12)
170  {
171    setInputStatus('pnr', 'Too short', 'warning');
172    return;
173  }
174
175  if (!pnr.match(/^\d+$/))
176  {
177    setInputStatus('pnr', 'Non-standard personal number', 'warning');
178    return;
179  }
180 
181  var isValidDate = Dates.isDate(pnr.substring(0, 8), 'yyyyMMdd');
182  if (!isValidDate)
183  {
184    var dayInMonth = parseInt(pnr.substring(6, 8));
185    if (dayInMonth > 60)
186    {
187      // 'Samordningsnummer' has day-in-month + 60; check this
188      dayInMonth -= 60;
189      var tmpPnr = pnr.substring(0, 6);
190      if (dayInMonth < 10) tmpPnr += '0';
191      tmpPnr += dayInMonth;
192      isValidDate = Dates.isDate(tmpPnr, 'yyyyMMdd');
193    }
194  }
195  if (!isValidDate)
196  {
197    setInputStatus('pnr', 'Not a valid date', 'warning');
198    return;
199  }
200 
201  var sum = 0;
202  var factor = 2;
203  //var x = '';
204  for (var i = 2; i < 11; i++)
205  {
206    var digit = parseInt(pnr.substr(i, 1));
207    var tmp = factor * digit;
208    //x += '(' + factor + '*' + digit+')';
209    sum += tmp >= 10 ? tmp - 9: tmp;
210    factor = factor == 2 ? 1 : 2;
211  }
212  //alert(x + "; sum="+sum);
213 
214  var control = 10 - (sum % 10);
215  if (control == 10) control = 0;
216  if (control != parseInt(pnr.substr(11, 1)))
217  {
218    setInputStatus('pnr', 'Invalid control digit', 'warning');
219    return;
220  }
221 
222  setInputStatus('pnr', '', 'valid');
223  pnrIsValid = true;
224}
225
226function samplingDateTimeOnChange()
227{
228  var frm = document.forms['reggie'];
229  samplingDateIsValid = false;
230  setInputStatus('samplingDate', '', '');
231 
232  var samplingDate = frm.samplingDate.value;
233  var samplingTime = frm.samplingTime.value;
234 
235  if (samplingDate != '' || samplingTime != '')
236  {
237    // Auto-fill the date if it's only given with 4(MMdd) or 6(yyMMdd) digits.
238    samplingDate = autoFillDate(samplingDate);
239    frm.samplingDate.value = samplingDate;
240
241    samplingTime = autoFillTime(samplingTime);
242    frm.samplingTime.value = samplingTime;
243   
244    if (!Dates.isDate(samplingDate, 'yyyyMMdd'))
245    {
246      setInputStatus('samplingDate', 'Not a valid date', 'invalid');
247      return;
248    }
249    if (frm.freezerDate.value == '') frm.freezerDate.value = samplingDate;
250   
251    if (!Dates.isDate(samplingDate + ' ' + samplingTime, 'yyyyMMdd HHmm'))
252    {
253      if (samplingDate != '') setInputStatus('samplingDate', 'Not a valid time', 'invalid');
254      return;
255    }
256    setInputStatus('samplingDate', '', 'valid');
257  }
258  samplingDateIsValid = true;
259}
260
261function freezerDateTimeOnChange()
262{
263  var frm = document.forms['reggie'];
264  freezerDateIsValid = false;
265  setInputStatus('freezerDate', '', '');
266 
267  var freezerDate = frm.freezerDate.value;
268  var freezerTime = frm.freezerTime.value;
269  var freezerTimestamp;
270 
271  if (freezerDate != '' || freezerTime != '')
272  {
273    // Auto-fill the date if it's only given with 4(MMdd) or 6(yyMMdd) digits.
274    freezerDate = autoFillDate(freezerDate);
275    frm.freezerDate.value = freezerDate;
276
277    freezerTime = autoFillTime(freezerTime);
278    frm.freezerTime.value = freezerTime;
279   
280    if (!Dates.isDate(freezerDate, 'yyyyMMdd'))
281    {
282      setInputStatus('freezerDate', 'Not a valid date', 'invalid');
283      return;
284    }
285    freezerTimestamp = Dates.parseString(freezerDate + ' ' + freezerTime, 'yyyyMMdd HHmm');
286    if (freezerTimestamp == null)
287    {
288      if (freezerDate != '') setInputStatus('freezerDate', 'Not a valid time', 'invalid');
289      return;
290    }
291    setInputStatus('freezerDate', '', 'valid');
292  }
293 
294  freezerDateIsValid = true;
295
296  if (samplingDateIsValid && freezerTimestamp)
297  {
298    var samplingTimestamp = Dates.parseString(frm.samplingDate.value + ' ' + frm.samplingTime.value, 'yyyyMMdd Hmm');
299    if (samplingTimestamp && freezerTimestamp.getDate() != freezerTimestamp.getDate())
300    {
301      setInputStatus('freezerDate', 'Sampling and freezer dates are different', 'warning');
302    }
303  }
304}
305
306function getBloodInfo()
307{
308  // Check entered case and pnr with AJAX
309  var frm = document.forms['reggie'];
310  var caseName = frm.caseName.value;
311  var request = Ajax.getXmlHttpRequest();
312  var url = 'BloodRegistration.servlet?ID=<%=ID%>&cmd=GetBloodInfo';
313  url += '&caseName=' + caseName;
314  request.open("GET", url, false);
315  request.send(null);
316 
317  if (debug) Main.debug(request.responseText);
318
319  var response = JSON.parse(request.responseText);
320  if (response.status != 'ok')
321  {
322    setFatalError(response.message);
323    return false;
324  }
325 
326  // Get biosource information from the AJAX response
327  bloodInfo = response.bloodInfo;
328  patientInfo = response.patientInfo;
329  caseInfo = response.caseInfo;
330 
331  if (patientInfo)
332  {
333    frm.personalNumber.value = patientInfo.personalNumber;
334    gotoStep2();
335  }
336 
337}
338
339function gotoStep2()
340{
341  // Check entered case and pnr with AJAX
342  var frm = document.forms['reggie'];
343  frm.caseName.disabled = true;
344  frm.personalNumber.disabled = true;
345  currentStep = 2;
346 
347  if (!patientInfo)
348  {
349    var pnr = frm.personalNumber.value;
350    var request = Ajax.getXmlHttpRequest();
351    var url = 'PersonalRegistration.servlet?ID=<%=ID%>&cmd=GetPatientInfo';
352    url += '&personalNumber=' + pnr;
353    url += '&pnrIsValid=' + pnrIsValid;
354    request.open("GET", url, false);
355    request.send(null);
356   
357    if (debug) Main.debug(request.responseText);
358   
359    var response = JSON.parse(request.responseText);
360    if (response.status != 'ok')
361    {
362      setFatalError(response.message);
363      return false;
364    }
365   
366    // Get patient information from the AJAX response
367    patientInfo = response.patientInfo;
368  }
369
370  Main.show('gocancel');
371 
372  if (!patientInfo.id)
373  {
374    Main.show('newPatientSection');
375    frm.patientCode.value=patientInfo.name;
376    setInnerHTML('new.dateOfBirth', patientInfo.dateOfBirth ? patientInfo.dateOfBirth : "---");
377    setInnerHTML('new.gender', patientInfo.gender ? patientInfo.gender : "---");
378    frm.familyName.focus();
379    if (!pnrIsValid)
380    {
381      setInputStatus('gender', 'Gender and DateOfBirth can\'t be automatically generated for non-standard Personal number', 'warning');
382    }
383  }
384  else
385  {
386    Main.show('existingPatientSection');
387    setInnerHTML('existing.patientCode', patientInfo.name);
388    setInnerHTML('existing.familyName', patientInfo.familyName);
389    setInnerHTML('existing.allFirstNames', patientInfo.allFirstNames);
390    if (patientInfo.dateOfBirth) setInnerHTML('existing.dateOfBirth', patientInfo.dateOfBirth);
391    if (patientInfo.gender) setInnerHTML('existing.gender', patientInfo.gender);
392    gotoStep3();
393  }
394}
395
396function gotoStep3()
397{
398  // Check entered case and pnr with AJAX
399  var frm = document.forms['reggie'];
400 
401  if (!patientInfo.id)
402  {
403    frm.patientCode.disabled = true;
404    frm.familyName.disabled = true;
405    frm.allFirstNames.disabled = true;
406    patientInfo.familyName = frm.familyName.value;
407    patientInfo.allFirstNames = frm.allFirstNames.value;
408  }
409  currentStep = 3;
410 
411  var updateMode = bloodInfo.id;
412  Main.show('bloodSection');
413 
414  if (updateMode)
415  {
416    setInnerHTML('step3.title', 'Update blood \''+bloodInfo.name+'\'');
417    if (bloodInfo.samplingDate != null)
418    {
419      frm.samplingDate.value = bloodInfo.samplingDate.substring(0, 8);
420      frm.samplingTime.value = bloodInfo.samplingDate.substring(9, 13);
421      samplingDateTimeOnChange();
422    }
423    if (bloodInfo.freezerDate != null)
424    {
425      frm.freezerDate.value = bloodInfo.freezerDate.substring(0, 8);
426      frm.freezerTime.value = bloodInfo.freezerDate.substring(9, 13);
427      freezerDateTimeOnChange();
428    }
429    frm.serum.checked = bloodInfo.serum == 'Yes';
430  }
431  else
432  {
433    if (caseInfo && caseInfo.consent)
434    {
435      frm.copyConsent.value = caseInfo.id;
436      var html = "From case '" + caseInfo.name + "' (" + caseInfo.consent;
437      if (caseInfo.consentDate) html += '; ' + caseInfo.consentDate;
438      html += ')';
439      setInnerHTML('copyConsent.text', html);
440      Main.show("copyConsentSection");
441    }
442  }
443 
444  Main.hide('gonext');
445  if (updateMode)
446  {
447    Main.show('goupdate');
448  }
449  else
450  {
451    Main.show('gocreate');
452  }
453 
454  frm.samplingDate.focus();
455}
456
457function goCreate()
458{
459  if (!step3IsValid()) return;
460 
461  Main.hide('gocreate');
462  Main.hide('gocancel');
463  Main.hide('goupdate');
464  var frm = document.forms['reggie'];
465
466  bloodInfo.samplingDate = Main.trimString(frm.samplingDate.value + ' ' + frm.samplingTime.value);
467  bloodInfo.freezerDate = Main.trimString(frm.freezerDate.value + ' ' + frm.freezerTime.value);
468  bloodInfo.serum = frm.serum.checked ? "Yes" : "No";
469  if (frm.copyConsent.checked && frm.copyConsent.value)
470  {
471    bloodInfo.copyConsent = parseInt(frm.copyConsent.value);
472  }
473
474  frm.samplingDate.disabled = true;
475  frm.samplingTime.disabled = true;
476  frm.freezerDate.disabled = true;
477  frm.freezerTime.disabled = true;
478
479  var updateMode = bloodInfo.id;
480  var submitInfo = new Object();
481  submitInfo.patientInfo = patientInfo;
482  submitInfo.bloodInfo = bloodInfo;
483
484  if (debug) Main.debug(JSON.stringify(submitInfo));
485 
486  var request = Ajax.getXmlHttpRequest();
487  var url = 'BloodRegistration.servlet?ID=<%=ID%>&cmd=';
488  url += updateMode ? 'UpdateBlood' : 'CreateBlood';
489  request.open("POST", url, false);
490  request.setRequestHeader("Content-Type", "application/json");
491  request.send(JSON.stringify(submitInfo));
492
493  if (debug) Main.debug(request.responseText);
494
495  var response = JSON.parse(request.responseText);
496  if (response.status != 'ok')
497  {
498    setFatalError(response.message);
499    return false;
500  }
501 
502  var msg = '<ul>';
503  for (var i = 0; i < response.messages.length; i++)
504  {
505    msg += '<li>' + response.messages[i];
506  }
507  msg += '</ul>';
508  setInnerHTML('done', msg);
509  Main.show('done');
510  Main.show('gorestart');
511
512}
513</script>
514
515</base:head>
516<base:body onload="init()">
517
518  <p:path style="margin-top: 20px; margin-bottom: 10px;">
519    <p:pathelement title="Reggie" href="<%="index.jsp?ID="+ID%>" />
520    <p:pathelement title="Blood referral form registration" />
521  </p:path>
522
523  <%
524  if (sc.getActiveProjectId() == 0)
525  {
526    %>
527    <base:note type="warning" style="width: 800px; margin-left: 20px; margin-bottom: 20px; margin-right: 0px; font-weight: bold; color: #cc0000;">
528      No project has been selected. You may proceed with the registration but
529      created items will not be shared.
530    </base:note>
531    <%
532  }
533  %>
534
535  <form name="reggie" onsubmit="return false;">
536 
537  <!-- 1. Case + Personal number -->
538  <table border="0" cellspacing="0" cellpadding="0" class="stepform">
539  <tr>
540    <td rowspan="3" class="stepno">1</td>
541    <td class="steptitle">Enter Case Name and Personal Number</td>
542  </tr>
543  <tr>
544    <td class="stepfields">
545      <table border="0" cellspacing="0" cellpadding="0" width="100%">
546      <tr valign="top">
547        <td class="prompt">Case name</td>
548        <td class="input"><input type="text" name="caseName" 
549          size="18" maxlength="12" onblur="caseNameOnChange()" onkeypress="focusOnEnter(event, 'personalNumber')"></td>
550        <td class="status" id="case.status"></td>
551        <td class="help"><span id="case.message" class="message" style="display: none;"></span>The case (barcode) associated with this patient.</td>
552      </tr>
553      <tr>
554        <td class="prompt">Personal number</td>
555        <td class="input"><input type="text" name="personalNumber" 
556          size="18" maxlength="12" onkeyup="personalNumberOnChange()" onkeypress="doOnTabOrEnter(event, goNext)"></td>
557        <td class="status" id="pnr.status"></td>
558        <td class="help"><span id="pnr.message" class="message" style="display: none;"></span>(YYYYMMDDZZZZ)</td>
559      </tr>
560      </table>
561    </td>
562  </tr>
563  </table>
564
565  <!-- 2. New patient registration -->
566  <div id="newPatientSection" style="display: none;">
567  <p>
568  <table border="0" cellspacing="0" cellpadding="0" class="stepform">
569  <tr>
570    <td rowspan="2" class="stepno">2</td>
571    <td class="steptitle">New patient: Enter all names</td>
572  </tr>
573  <tr>
574    <td class="stepfields">
575      <table border="0" cellspacing="0" cellpadding="0" width="100%">
576      <tr>
577        <td class="prompt">Patient code</td>
578        <td class="input"><input type="text" name="patientCode" 
579          value="" size="18" maxlength="12" 
580          onkeypress="focusOnEnter(event, 'familyName')"></td>
581        <td class="status" id="patientCode.status"></td>
582        <td class="help"><span id="patientCode.message" class="message" style="display: none;"></span></td>
583      </tr>
584      <tr valign="top">
585        <td class="prompt">Family name</td>
586        <td class="input"><input type="text" name="familyName" 
587          value="" size="35" maxlength="255"
588          onkeypress="focusOnEnter(event, 'allFirstNames')"></td>
589        <td class="status" id="familyName.status"></td>
590        <td class="help"><span id="familyName.message" class="message" style="display: none;"></span>Keep hyphens, keep åäö, replace all special accented letters [e.g. éèü etc] with standard alphabet character.</td>
591      </tr>
592      <tr valign="top">
593        <td class="prompt">All first names</td>
594        <td class="input"><input type="text" name="allFirstNames" 
595          size="35" maxlength="255" onkeypress="doOnTabOrEnter(event, goNext)"></td>
596        <td class="status" id="allFirstNames.status"></td>
597        <td class="help"><span id="allFirstNames.message" class="message" style="display: none;"></span>Type all names, see FamilyName comment on valid characters.</td>
598      </tr>
599      <tr>
600        <td class="prompt">Gender</td>
601        <td class="input" id="new.gender"></td>
602        <td class="status" id="gender.status" rowspan="2"></td>
603        <td class="help" rowspan="2"><span id="gender.message" class="message" style="display:none;"></span></td>
604      </tr>
605      <tr>
606        <td class="prompt">Date of birth</td>
607        <td class="input" id="new.dateOfBirth"></td>
608      </tr>
609      </table>
610    </td>
611  </tr>
612  </table>
613  </div>
614 
615  <!-- 2b. Existing patient -->
616  <div id="existingPatientSection" style="display: none;">
617  <p>
618  <table border="0" cellspacing="0" cellpadding="0" class="stepform">
619  <tr>
620    <td rowspan="2" class="stepno">2</td>
621    <td class="steptitle">Existing patient: Verify names</td>
622  </tr>
623  <tr>
624    <td class="stepfields">
625      <table border="0" cellspacing="0" cellpadding="0" width="100%">
626      <tr>
627        <td class="prompt">Patient code</td>
628        <td class="input" id="existing.patientCode"></td>
629        <td class="status"></td>
630        <td class="help"></td>
631      </tr>
632      <tr>
633        <td class="prompt">Family name</td>
634        <td class="input" id="existing.familyName"></td>
635        <td class="status"></td>
636        <td class="help"></td>
637      </tr>
638      <tr>
639        <td class="prompt">All first names</td>
640        <td class="input" id="existing.allFirstNames"></td>
641        <td class="status"></td>
642        <td class="help"></td>
643      </tr>
644      <tr>
645        <td class="prompt">Gender</td>
646        <td class="input" id="existing.gender"></td>
647        <td class="status"></td>
648        <td class="help"></td>
649      </tr>
650      <tr>
651        <td class="prompt">Date of birth</td>
652        <td class="input" id="existing.dateOfBirth"></td>
653        <td class="status"></td>
654        <td class="help"></td>
655      </tr>
656      </table>
657    </td>
658  </tr>
659  </table>
660  </div>
661
662
663  <!-- 3. Blood registration -->
664  <div id="bloodSection" style="display: none;">
665  <p>
666  <table border="0" cellspacing="0" cellpadding="0" class="stepform">
667  <tr>
668    <td rowspan="2" class="stepno">3</td>
669    <td class="steptitle" id="step3.title">Create new blood</td>
670  </tr>
671  <tr>
672    <td class="stepfields">
673      <table border="0" cellspacing="0" cellpadding="0" width="100%">
674      <tr id="samplingDateSection" valign="top">
675        <td class="subprompt">Blood sampling date</td>
676        <td class="input"><input type="text" name="samplingDate" value="" size="12" maxlength="10" 
677            onkeypress="focusOnEnter(event, 'samplingTime')" onblur="samplingDateTimeOnChange()">
678          Time <input type="text" name="samplingTime" value="" size="6" maxlength="5" 
679            onkeypress="focusOnEnter(event, 'freezerDate')" onblur="samplingDateTimeOnChange()"></td>
680        <td class="status" id="samplingDate.status"></td>
681        <td class="help"><span id="samplingDate.message" class="message" style="display: none;"></span>Date+time of blood sampling (YYYYMMDD, HHMM)</td>
682      </tr>
683      <tr id="freezerDateSection" valign="top">
684        <td class="subprompt">Freezer date</td>
685        <td class="input"><input type="text" name="freezerDate" value="" size="12" maxlength="10"
686            onkeypress="focusOnEnter(event, 'freezerTime')" onblur="freezerDateTimeOnChange()">
687          Time <input type="text" name="freezerTime" value="" size="6" maxlength="5"
688            onblur="freezerDateTimeOnChange()"></td>
689        <td class="status" id="freezerDate.status"></td>
690        <td class="help"><span id="freezerDate.message" class="message" style="display: none;"></span>Date+time when put in freezer (YYYYMMDD, HHMM)</td>
691      </tr>
692      <tr id="serumSection" valign="top">
693        <td class="subprompt">Plasma/serum</td>
694        <td class="input">
695          <input type="checkbox" name="serum" id="serum" value="1"><label for="serum">Yes</label>
696        <td class="status" id="serum.status"></td>
697        <td class="help">Mark the check box if serum/plasma is available.</td>
698      </tr>
699      <tr id="copyConsentSection" style="display: none;">
700        <td class="prompt">Copy consent?</td>
701        <td class="input">
702          <input type="checkbox" name="copyConsent" id="copyConsent" value="" checked>
703          <label for="copyConsent"><span id="copyConsent.text"></span></label>
704        </td>
705        <td class="status" id="copyConsent.status"></td>
706        <td class="help"></td>
707      </tr>
708      </table>
709    </td>
710  </tr>
711  </table>
712  </div>
713
714  <div class="error" id="errorMessage" style="display: none; width: 800px; margin-left: 20px; margin-bottom: 0px;"></div>
715
716  <div id="done" class="success" style="display: none; width: 800px; margin-left: 20px; margin-top: 20px;"></div>
717
718  <table style="margin-left: 20px; margin-top: 10px;" class="navigation">
719  <tr>
720    <td><base:button id="gocancel" title="Cancel" onclick="goRestart(false)" style="display: none;"/></td>
721    <td><base:button id="gonext" title="Next" image="gonext.gif" onclick="goNext(true)"/></td>
722    <td><base:button id="gocreate" title="Create" image="gonext.gif" onclick="goCreate()" style="display: none;"/></td>
723    <td><base:button id="goupdate" title="Update" image="gonext.gif" onclick="goCreate()" style="display: none;"/></td>
724    <td><base:button id="gorestart" title="Restart" image="goback.gif" onclick="goRestart(true)" style="display: none;"/></td>
725    <td id="gonext.message" class="message"></td>
726  </tr>
727  </table>
728  </form>
729 
730</base:body>
731</base:page>
732<%
733}
734finally
735{
736  if (dc != null) dc.close();
737}
738%>
Note: See TracBrowser for help on using the repository browser.