extensions/net.sf.basedb.reggie/trunk/resources/personal/retraction_followup_form.js

Code
Comments
Other
Rev Date Author Line
3085 15 Jan 15 olle 1 var RetractionFollowUpForm = function()
3085 15 Jan 15 olle 2 {
3085 15 Jan 15 olle 3   var rf = {};
3765 23 Feb 16 nicklas 4   
3765 23 Feb 16 nicklas 5   var patients;
3765 23 Feb 16 nicklas 6   var selectedPatient;
5643 07 Oct 19 nicklas 7   var itemsForDestruction;
3766 23 Feb 16 nicklas 8   var action;
3766 23 Feb 16 nicklas 9   var allCanBeDeleted = false;
3766 23 Feb 16 nicklas 10    
3085 15 Jan 15 olle 11   var labSentDateIsValid = false;
3085 15 Jan 15 olle 12   var labReceivedDateIsValid = false;
3085 15 Jan 15 olle 13   var bloodSentDateIsValid = false;
3085 15 Jan 15 olle 14   var bloodReceivedDateIsValid = false;
3085 15 Jan 15 olle 15   var frozenSentDateIsValid = false;
3085 15 Jan 15 olle 16   var frozenReceivedDateIsValid = false;
3265 21 Apr 15 olle 17   var rccSydSentDateIsValid = false;
3085 15 Jan 15 olle 18   var debug = 0;
3085 15 Jan 15 olle 19   
3085 15 Jan 15 olle 20   rf.initPage = function()
3085 15 Jan 15 olle 21   {
3765 23 Feb 16 nicklas 22
3085 15 Jan 15 olle 23     // Step 1
3085 15 Jan 15 olle 24     Events.addEventHandler('step-1', 'wizard-validate', rf.validateStep1);
3085 15 Jan 15 olle 25     
3085 15 Jan 15 olle 26     // Step 2
3085 15 Jan 15 olle 27     Events.addEventHandler('step-2', 'wizard-initialize', rf.initializeStep2);
3085 15 Jan 15 olle 28     Events.addEventHandler('step-2', 'wizard-validate', rf.validateStep2);
3756 18 Feb 16 olle 29     Events.addEventHandler('labDateNa', 'change', rf.labDateNaOnChange);
3085 15 Jan 15 olle 30     Events.addEventHandler('labSentDate', 'blur', rf.labDateOnChange);
3085 15 Jan 15 olle 31     Events.addEventHandler('labReceivedDate', 'blur', rf.labDateOnChange);
3756 18 Feb 16 olle 32     Events.addEventHandler('bloodDateNa', 'change', rf.bloodDateNaOnChange);
3085 15 Jan 15 olle 33     Events.addEventHandler('bloodSentDate', 'blur', rf.bloodDateOnChange);
3085 15 Jan 15 olle 34     Events.addEventHandler('bloodReceivedDate', 'blur', rf.bloodDateOnChange);
3756 18 Feb 16 olle 35     Events.addEventHandler('frozenDateNa', 'change', rf.frozenDateNaOnChange);
3085 15 Jan 15 olle 36     Events.addEventHandler('frozenSentDate', 'blur', rf.frozenDateOnChange);
3085 15 Jan 15 olle 37     Events.addEventHandler('frozenReceivedDate', 'blur', rf.frozenDateOnChange);
3756 18 Feb 16 olle 38     Events.addEventHandler('rccSydDateNa', 'change', rf.rccSydDateNaOnChange);
3265 21 Apr 15 olle 39     Events.addEventHandler('rccSydSentDate', 'blur', rf.rccSydDateOnChange);
3085 15 Jan 15 olle 40
3085 15 Jan 15 olle 41     // Navigation
3085 15 Jan 15 olle 42     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
3085 15 Jan 15 olle 43     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
3085 15 Jan 15 olle 44     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
3085 15 Jan 15 olle 45     Buttons.addClickHandler('goregister', Wizard.goRegister);    
3085 15 Jan 15 olle 46
3085 15 Jan 15 olle 47     // Final registration
3085 15 Jan 15 olle 48     Events.addEventHandler('wizard', 'wizard-submit', rf.submit);
3085 15 Jan 15 olle 49     
3765 23 Feb 16 nicklas 50     
3765 23 Feb 16 nicklas 51     var url = '../Retraction.servlet?ID='+App.getSessionId();
3765 23 Feb 16 nicklas 52     url += '&cmd=LoadPatientsForRetraction';
3765 23 Feb 16 nicklas 53     Wizard.showLoadingAnimation('Loading patients for retraction...');
3765 23 Feb 16 nicklas 54     Wizard.asyncJsonRequest(url, rf.onPatientsLoaded);
3085 15 Jan 15 olle 55   }
3085 15 Jan 15 olle 56
3085 15 Jan 15 olle 57   
3765 23 Feb 16 nicklas 58   rf.onPatientsLoaded = function(response)
3085 15 Jan 15 olle 59   {
3765 23 Feb 16 nicklas 60     patients = response.patients;
3765 23 Feb 16 nicklas 61     if (patients.length == 0)
3085 15 Jan 15 olle 62     {
3765 23 Feb 16 nicklas 63       Wizard.setFatalError('No cases available for retraction.');
3085 15 Jan 15 olle 64       return;
3085 15 Jan 15 olle 65     }
3765 23 Feb 16 nicklas 66     
3765 23 Feb 16 nicklas 67     var html = '';
3765 23 Feb 16 nicklas 68     for (var patNo = 0; patNo < patients.length; patNo++)
3085 15 Jan 15 olle 69     {
3765 23 Feb 16 nicklas 70       var patient = patients[patNo];
3765 23 Feb 16 nicklas 71       var readyForDestruction = patient.RetractStatus == 'ReadyForDestruction';
3765 23 Feb 16 nicklas 72       
3765 23 Feb 16 nicklas 73       html += '<tr class="highlight ' + (patNo % 2 == 0 ? 'oddrow' : 'evenrow') + '" id="patient.'+patient.id + '">';
3765 23 Feb 16 nicklas 74       html += '<td>'+(patNo+1)+'</td>';
3765 23 Feb 16 nicklas 75       html += '<td class="dottedleft">';
3765 23 Feb 16 nicklas 76       html += '<span class="link item-link" data-item-type="BIOSOURCE" data-item-id="'+patient.id+'">';
3765 23 Feb 16 nicklas 77       html += Strings.encodeTags(patient.name);
3765 23 Feb 16 nicklas 78       html += '</td>';
3765 23 Feb 16 nicklas 79       html += '<td>'+Strings.encodeTags(patient.PersonalNumber)+'</td>';
3765 23 Feb 16 nicklas 80       html += '<td class="dottedleft">';
3765 23 Feb 16 nicklas 81       for (var caseNo = 0; caseNo < patient.cases.length; caseNo++)
3085 15 Jan 15 olle 82       {
3765 23 Feb 16 nicklas 83         var c = patient.cases[caseNo];
4497 10 May 17 nicklas 84         if (caseNo > 0) html += '<br>';
3765 23 Feb 16 nicklas 85         html += '<span class="link item-link" data-item-type="SAMPLE" data-item-id="'+c.id+'">';
3765 23 Feb 16 nicklas 86         html += Strings.encodeTags(c.name); // + ' [' + c.laterality + ']';
3765 23 Feb 16 nicklas 87         html += '</span>';
4497 10 May 17 nicklas 88         html += '<img class="link case-summary" data-name="'+Strings.encodeTags(c.name)+'" src="../images/case_summary.png">';
3085 15 Jan 15 olle 89       }
3765 23 Feb 16 nicklas 90       html += '</td>';
3765 23 Feb 16 nicklas 91       
5646 07 Oct 19 nicklas 92       html += '<td class="dottedleft bg-actions">';
5646 07 Oct 19 nicklas 93       html += '<span class="link protocol-action" data-patient-id="'+patient.id+'" title="Create a protocol with all items to destruct">';
5646 07 Oct 19 nicklas 94       html += 'Protocol<img src="../images/report.png" style="margin-left: 4px;">';
5646 07 Oct 19 nicklas 95       html += '</td>';
5646 07 Oct 19 nicklas 96       html += '<td class="bg-actions"><span class="link edit-action" data-index="'+patNo+'">Edit<img src="../images/edit.png" style="margin-left: 4px;"></span></td>';
5646 07 Oct 19 nicklas 97       html += '<td class="bg-actions">'
5646 07 Oct 19 nicklas 98       if (readyForDestruction)
5646 07 Oct 19 nicklas 99       {
5646 07 Oct 19 nicklas 100         html += '<span class="link destruct-action" data-index="'+patNo+'">';
5646 07 Oct 19 nicklas 101         html += 'Destruct<img src="../images/gonext.png"></span>';
5646 07 Oct 19 nicklas 102       }
5646 07 Oct 19 nicklas 103       html += '</td>';
3765 23 Feb 16 nicklas 104       if (patient.RetractNaLab)
3765 23 Feb 16 nicklas 105       {
3765 23 Feb 16 nicklas 106         html += '<td class="dottedleft" colspan="2">n/a</td>';
3765 23 Feb 16 nicklas 107       }
3085 15 Jan 15 olle 108       else
3085 15 Jan 15 olle 109       {
3765 23 Feb 16 nicklas 110         html += '<td class="dottedleft">'+Reggie.reformatDate(patient.RetractTxLab) + '</td>';
3765 23 Feb 16 nicklas 111         html += '<td>'+Reggie.reformatDate(patient.RetractRxLab) + '</td>';
3085 15 Jan 15 olle 112       }
3765 23 Feb 16 nicklas 113       if (patient.RetractNaBb)
3085 15 Jan 15 olle 114       {
3765 23 Feb 16 nicklas 115         html += '<td class="dottedleft" colspan="2">n/a</td>';
3085 15 Jan 15 olle 116       }
3765 23 Feb 16 nicklas 117       else
3085 15 Jan 15 olle 118       {
3765 23 Feb 16 nicklas 119         html += '<td class="dottedleft">'+Reggie.reformatDate(patient.RetractTxBb) + '</td>';
3765 23 Feb 16 nicklas 120         html += '<td>'+Reggie.reformatDate(patient.RetractRxBb) + '</td>';
3085 15 Jan 15 olle 121       }
3765 23 Feb 16 nicklas 122       if (patient.RetractNaFrozen)
3765 23 Feb 16 nicklas 123       {
3765 23 Feb 16 nicklas 124         html += '<td class="dottedleft" colspan="2">n/a</td>';
3765 23 Feb 16 nicklas 125       }
3085 15 Jan 15 olle 126       else
3085 15 Jan 15 olle 127       {
3765 23 Feb 16 nicklas 128         html += '<td class="dottedleft">'+Reggie.reformatDate(patient.RetractTxFrozen) + '</td>';
3765 23 Feb 16 nicklas 129         html += '<td>'+Reggie.reformatDate(patient.RetractRxFrozen) + '</td>';
3085 15 Jan 15 olle 130       }
3765 23 Feb 16 nicklas 131       if (patient.RetractNaRccSyd)
3765 23 Feb 16 nicklas 132       {
3765 23 Feb 16 nicklas 133         html += '<td class="dottedleft">n/a</td>';
3765 23 Feb 16 nicklas 134       }
3085 15 Jan 15 olle 135       else
3085 15 Jan 15 olle 136       {
3765 23 Feb 16 nicklas 137         html += '<td class="dottedleft">'+Reggie.reformatDate(patient.RetractTxRccSyd) + '</td>';
3085 15 Jan 15 olle 138       }
3765 23 Feb 16 nicklas 139       html += '</tr>';
3085 15 Jan 15 olle 140     }
3085 15 Jan 15 olle 141     
3765 23 Feb 16 nicklas 142     Doc.element('patient-list').innerHTML = html;
3765 23 Feb 16 nicklas 143     Doc.show('step-1');
3765 23 Feb 16 nicklas 144
3765 23 Feb 16 nicklas 145     var cs = document.getElementsByClassName('item-link');
3765 23 Feb 16 nicklas 146     for (var i = 0; i < cs.length; i++)
3085 15 Jan 15 olle 147     {
3765 23 Feb 16 nicklas 148       Events.addEventHandler(cs[i], 'click', Items.itemOnClick);
3085 15 Jan 15 olle 149     }
3765 23 Feb 16 nicklas 150
3765 23 Feb 16 nicklas 151     var cs = document.getElementsByClassName('case-summary');
3765 23 Feb 16 nicklas 152     for (var i = 0; i < cs.length; i++)
3085 15 Jan 15 olle 153     {
5019 10 Oct 18 nicklas 154       Events.addEventHandler(cs[i], 'click', Reggie.openCaseSummaryPopupOnEvent);
3085 15 Jan 15 olle 155     }
5638 03 Oct 19 nicklas 156
5638 03 Oct 19 nicklas 157     var cs = document.getElementsByClassName('protocol-action');
5638 03 Oct 19 nicklas 158     for (var i = 0; i < cs.length; i++)
5638 03 Oct 19 nicklas 159     {
5638 03 Oct 19 nicklas 160       Events.addEventHandler(cs[i], 'click', rf.goProtocol);
5638 03 Oct 19 nicklas 161     }
5638 03 Oct 19 nicklas 162
3765 23 Feb 16 nicklas 163     var cs = document.getElementsByClassName('edit-action');
3765 23 Feb 16 nicklas 164     for (var i = 0; i < cs.length; i++)
3085 15 Jan 15 olle 165     {
3765 23 Feb 16 nicklas 166       Events.addEventHandler(cs[i], 'click', rf.goEdit);
3085 15 Jan 15 olle 167     }
3765 23 Feb 16 nicklas 168     
3765 23 Feb 16 nicklas 169     var cs = document.getElementsByClassName('destruct-action');
3765 23 Feb 16 nicklas 170     for (var i = 0; i < cs.length; i++)
3765 23 Feb 16 nicklas 171     {
3765 23 Feb 16 nicklas 172       Events.addEventHandler(cs[i], 'click', rf.goDestruct);
3765 23 Feb 16 nicklas 173     }
3765 23 Feb 16 nicklas 174     
3765 23 Feb 16 nicklas 175     Doc.show('step-1');
3765 23 Feb 16 nicklas 176   }
3085 15 Jan 15 olle 177
3765 23 Feb 16 nicklas 178   rf.goDestruct = function(event)
3765 23 Feb 16 nicklas 179   {
3766 23 Feb 16 nicklas 180     var index = Data.get(event.currentTarget, 'index');
3766 23 Feb 16 nicklas 181     selectedPatient = patients[index];
3766 23 Feb 16 nicklas 182     action = 'destruct';
3766 23 Feb 16 nicklas 183     Wizard.goNext();
3765 23 Feb 16 nicklas 184   }
3765 23 Feb 16 nicklas 185   
3765 23 Feb 16 nicklas 186   rf.goEdit = function(event)
3765 23 Feb 16 nicklas 187   {
3765 23 Feb 16 nicklas 188     var index = Data.get(event.currentTarget, 'index');
3765 23 Feb 16 nicklas 189     selectedPatient = patients[index];
3766 23 Feb 16 nicklas 190     action = 'edit';
3765 23 Feb 16 nicklas 191     Wizard.goNext();
3765 23 Feb 16 nicklas 192   }
3765 23 Feb 16 nicklas 193   
5638 03 Oct 19 nicklas 194   rf.goProtocol = function(event)
5638 03 Oct 19 nicklas 195   {
5643 07 Oct 19 nicklas 196     var patientId = Data.get(event.currentTarget, 'patient-id');
5638 03 Oct 19 nicklas 197     
5638 03 Oct 19 nicklas 198     var url = 'retraction_protocol2.jsp?ID='+App.getSessionId();
5643 07 Oct 19 nicklas 199     url += '&patientId='+patientId;
5638 03 Oct 19 nicklas 200     
5638 03 Oct 19 nicklas 201     window.open(url);
5638 03 Oct 19 nicklas 202   }
5638 03 Oct 19 nicklas 203   
3085 15 Jan 15 olle 204   /**
3765 23 Feb 16 nicklas 205     Check that a patient has been selected.
3765 23 Feb 16 nicklas 206   */
3765 23 Feb 16 nicklas 207   rf.validateStep1 = function(event)
3765 23 Feb 16 nicklas 208   {
3765 23 Feb 16 nicklas 209     if (!selectedPatient) event.preventDefault();
3765 23 Feb 16 nicklas 210   }
3765 23 Feb 16 nicklas 211
3765 23 Feb 16 nicklas 212
3765 23 Feb 16 nicklas 213   /**
3085 15 Jan 15 olle 214     Load information about the given case.
3085 15 Jan 15 olle 215   */
6824 30 Aug 22 nicklas 216   rf.initializeStep2 = function()
3085 15 Jan 15 olle 217   {
3765 23 Feb 16 nicklas 218     var p = selectedPatient;
3766 23 Feb 16 nicklas 219     if (action == 'edit')
3766 23 Feb 16 nicklas 220     {
3766 23 Feb 16 nicklas 221       Doc.element('step-2-title').innerHTML = 'Retraction follow-up';
5643 07 Oct 19 nicklas 222       var url = '../Retraction.servlet?ID='+App.getSessionId();
5643 07 Oct 19 nicklas 223       url += '&cmd=GetProtocolInfo';
5643 07 Oct 19 nicklas 224       url += '&patientId=' + p.id;
5643 07 Oct 19 nicklas 225       Wizard.showLoadingAnimation('Loading case information...');
5643 07 Oct 19 nicklas 226       Wizard.asyncJsonRequest(url, rf.caseInfoLoadedForEdit);
3766 23 Feb 16 nicklas 227     }
3766 23 Feb 16 nicklas 228     else if (action == 'destruct')
3766 23 Feb 16 nicklas 229     {
3766 23 Feb 16 nicklas 230       Doc.element('step-2-title').innerHTML = 'Retraction destruction';
3766 23 Feb 16 nicklas 231       var url = '../Retraction.servlet?ID='+App.getSessionId();
3766 23 Feb 16 nicklas 232       url += '&cmd=GetCaseInfoBeforeDestruction';
3766 23 Feb 16 nicklas 233       url += '&patientId=' + p.id;
3766 23 Feb 16 nicklas 234       Wizard.showLoadingAnimation('Loading case information...');
5643 07 Oct 19 nicklas 235       Wizard.asyncJsonRequest(url, rf.caseInfoLoadedForDestruct);
3766 23 Feb 16 nicklas 236     }
3085 15 Jan 15 olle 237   }
3085 15 Jan 15 olle 238
5643 07 Oct 19 nicklas 239   rf.caseInfoLoadedForEdit = function(response)
5643 07 Oct 19 nicklas 240   {
5643 07 Oct 19 nicklas 241     var frm = document.forms['reggie'];
5643 07 Oct 19 nicklas 242     var p = selectedPatient;
5643 07 Oct 19 nicklas 243
5643 07 Oct 19 nicklas 244     itemsForDestruction = [];
5643 07 Oct 19 nicklas 245     
5643 07 Oct 19 nicklas 246     // Item data
5643 07 Oct 19 nicklas 247     var html = '';
5643 07 Oct 19 nicklas 248     html += rf.tableRowsForItems('Specimen', response.specimen, 'SAMPLE');
5643 07 Oct 19 nicklas 249     html += rf.tableRowsForItems('Lysate', response.lysate, 'EXTRACT');
5643 07 Oct 19 nicklas 250     html += rf.tableRowsForItems('RNA', response.rna, 'EXTRACT');
5643 07 Oct 19 nicklas 251     html += rf.tableRowsForItems('DNA', response.dna, 'EXTRACT');
5643 07 Oct 19 nicklas 252     html += rf.tableRowsForItems('FlowThrough', response.flowThrough, 'EXTRACT');
5643 07 Oct 19 nicklas 253     html += rf.tableRowsForItems('BloodDNA', response.bloodDna, 'EXTRACT');
5643 07 Oct 19 nicklas 254     
5643 07 Oct 19 nicklas 255     if (html.length > 0)
5643 07 Oct 19 nicklas 256     {
5643 07 Oct 19 nicklas 257       Doc.element('itemList').innerHTML = html;
5643 07 Oct 19 nicklas 258       Doc.show('itemList');
5643 07 Oct 19 nicklas 259       Doc.hide('labNa');
5643 07 Oct 19 nicklas 260       Data.set('btnCreateProtocol', 'patient-id', p.id);
5643 07 Oct 19 nicklas 261       Doc.show('btnCreateProtocol');
5643 07 Oct 19 nicklas 262       Buttons.addClickHandler('btnCreateProtocol', rf.goProtocol);
5643 07 Oct 19 nicklas 263       frm.labDateNa.disabled = true;
5643 07 Oct 19 nicklas 264       p.RetractNaLab = false;
5643 07 Oct 19 nicklas 265       
5643 07 Oct 19 nicklas 266       var cs = document.getElementsByClassName('destruct-check');
5643 07 Oct 19 nicklas 267       for (var i = 0; i < cs.length; i++)
5643 07 Oct 19 nicklas 268       {
5643 07 Oct 19 nicklas 269         Events.addEventHandler(cs[i], 'click', rf.currentRetractionStatus);
5643 07 Oct 19 nicklas 270       }
6159 03 Mar 21 nicklas 271       
5643 07 Oct 19 nicklas 272     }
5643 07 Oct 19 nicklas 273     else
5643 07 Oct 19 nicklas 274     {
5643 07 Oct 19 nicklas 275       Doc.show('noItemsToDestruct');
5643 07 Oct 19 nicklas 276     }
5643 07 Oct 19 nicklas 277     
5643 07 Oct 19 nicklas 278     Doc.element('patientInfo.name').innerHTML = Strings.encodeTags(p.name);
5643 07 Oct 19 nicklas 279     rf.setNaAndDates(frm.labDateNa, frm.labSentDate, frm.labReceivedDate, p.RetractNaLab, p.RetractTxLab, p.RetractRxLab);
5643 07 Oct 19 nicklas 280     rf.setNaAndDates(frm.bloodDateNa, frm.bloodSentDate, frm.bloodReceivedDate, p.RetractNaBb, p.RetractTxBb, p.RetractRxBb);
5643 07 Oct 19 nicklas 281     rf.setNaAndDates(frm.frozenDateNa, frm.frozenSentDate, frm.frozenReceivedDate, p.RetractNaFrozen, p.RetractTxFrozen, p.RetractRxFrozen);
5643 07 Oct 19 nicklas 282     rf.setNaAndDates(frm.rccSydDateNa, frm.rccSydSentDate, null, p.RetractNaRccSyd, p.RetractTxRccSyd, null);
5643 07 Oct 19 nicklas 283     rf.currentRetractionStatus();
5643 07 Oct 19 nicklas 284
5643 07 Oct 19 nicklas 285     Doc.element('currentRetractionStatus').innerHTML = '<b>Current retraction status</b>: ' + Strings.encodeTags(p.RetractStatus || 'Not ready for destruction');
5643 07 Oct 19 nicklas 286     
5643 07 Oct 19 nicklas 287     Doc.show('followup-form');
5643 07 Oct 19 nicklas 288     Doc.show('gocancel');
5643 07 Oct 19 nicklas 289     Doc.show('goregister');
5643 07 Oct 19 nicklas 290     Wizard.setCurrentStep(2);
5643 07 Oct 19 nicklas 291   }
5643 07 Oct 19 nicklas 292   
6159 03 Mar 21 nicklas 293   rf.tableRowsForItems = function(itemSubtype, items, itemType, disableCheckBox)
5643 07 Oct 19 nicklas 294   {
5643 07 Oct 19 nicklas 295     if (!items || items.length == 0) return '';
5643 07 Oct 19 nicklas 296     // Table item row
5643 07 Oct 19 nicklas 297     var html = '';
5643 07 Oct 19 nicklas 298     for (var itemNo = 0; itemNo < items.length; itemNo++)
5643 07 Oct 19 nicklas 299     {
5643 07 Oct 19 nicklas 300       var item = items[itemNo];
5643 07 Oct 19 nicklas 301       var isDestroyed = item.RetractStatus == 'Destroyed';
5643 07 Oct 19 nicklas 302       
5643 07 Oct 19 nicklas 303       // Add some information that we need later to the 'itemsForDestruction' array
5643 07 Oct 19 nicklas 304       var tmp = {};
5643 07 Oct 19 nicklas 305       tmp.id = item.id;
5643 07 Oct 19 nicklas 306       tmp.itemType = itemType;
5643 07 Oct 19 nicklas 307       tmp.destructed = isDestroyed;
5643 07 Oct 19 nicklas 308       itemsForDestruction[itemsForDestruction.length] = tmp;
5643 07 Oct 19 nicklas 309       
5643 07 Oct 19 nicklas 310       html += '<tr>';
5643 07 Oct 19 nicklas 311       html += '<td>'+itemSubtype+'</td>';
5643 07 Oct 19 nicklas 312       html += '<td>'+Strings.encodeTags(item.name)+'</td>';
6159 03 Mar 21 nicklas 313       html += '<td><input class="destruct-check" name="destruct.'+item.id+'" type="checkbox"' + (isDestroyed ? ' checked':'')+(disableCheckBox ? ' disabled' : '')+'></td>';
5643 07 Oct 19 nicklas 314       html += '</tr>';
5643 07 Oct 19 nicklas 315     }
5643 07 Oct 19 nicklas 316     return html;
5643 07 Oct 19 nicklas 317   }
5643 07 Oct 19 nicklas 318
3085 15 Jan 15 olle 319   /**
3765 23 Feb 16 nicklas 320     Initialize N/A and date fields
3085 15 Jan 15 olle 321   */
3765 23 Feb 16 nicklas 322   rf.setNaAndDates = function(naField, sentField, receivedField, na, sent, received)
3085 15 Jan 15 olle 323   {
3765 23 Feb 16 nicklas 324     sentField.value = sent;
3765 23 Feb 16 nicklas 325     if (receivedField) receivedField.value = received;
3765 23 Feb 16 nicklas 326     if (na)
3085 15 Jan 15 olle 327     {
3765 23 Feb 16 nicklas 328       naField.checked = true;
3765 23 Feb 16 nicklas 329       rf.disabledDate(sentField);
3765 23 Feb 16 nicklas 330       if (receivedField) rf.disabledDate(receivedField);
3085 15 Jan 15 olle 331     }
3085 15 Jan 15 olle 332   }
3765 23 Feb 16 nicklas 333   
3765 23 Feb 16 nicklas 334   /**
3765 23 Feb 16 nicklas 335     Disable the given date field and store away the current value
3765 23 Feb 16 nicklas 336   */
3765 23 Feb 16 nicklas 337   rf.disabledDate = function(dateField)
3765 23 Feb 16 nicklas 338   {
3765 23 Feb 16 nicklas 339     if (dateField.disabled) return;
3765 23 Feb 16 nicklas 340     dateField.oldValue = dateField.value;
3765 23 Feb 16 nicklas 341     dateField.value = null;
3765 23 Feb 16 nicklas 342     dateField.disabled = true;
3765 23 Feb 16 nicklas 343   }
3765 23 Feb 16 nicklas 344   
3765 23 Feb 16 nicklas 345   /**
3765 23 Feb 16 nicklas 346     Enable the given date field and bring back the old value.
3765 23 Feb 16 nicklas 347   */
3765 23 Feb 16 nicklas 348   rf.enabledDate = function(dateField)
3765 23 Feb 16 nicklas 349   {
3765 23 Feb 16 nicklas 350     if (!dateField.disabled) return;
3765 23 Feb 16 nicklas 351     dateField.value = dateField.oldValue || '';
3765 23 Feb 16 nicklas 352     dateField.disabled = false;
3765 23 Feb 16 nicklas 353   }
3765 23 Feb 16 nicklas 354   
3756 18 Feb 16 olle 355   rf.labDateNaOnChange = function()
3756 18 Feb 16 olle 356   {
3756 18 Feb 16 olle 357     var frm = document.forms['reggie'];    
3756 18 Feb 16 olle 358
5643 07 Oct 19 nicklas 359     var labDateNa = !frm.labDateNa.disabled && frm.labDateNa.checked;
3756 18 Feb 16 olle 360     if (labDateNa)
3756 18 Feb 16 olle 361     {
3756 18 Feb 16 olle 362       // Disable date fields
3765 23 Feb 16 nicklas 363       rf.disabledDate(frm.labSentDate);
3765 23 Feb 16 nicklas 364       rf.disabledDate(frm.labReceivedDate);
3756 18 Feb 16 olle 365       // Set dates as valid
3756 18 Feb 16 olle 366       labSentDateIsValid = true;
3756 18 Feb 16 olle 367       labReceivedDateIsValid = true;
3756 18 Feb 16 olle 368       // Set input as valid
3756 18 Feb 16 olle 369       Wizard.setInputStatus('labDate', 'valid');
3756 18 Feb 16 olle 370     }
3756 18 Feb 16 olle 371     else
3756 18 Feb 16 olle 372     {
3756 18 Feb 16 olle 373       // Enable date fields
3765 23 Feb 16 nicklas 374       rf.enabledDate(frm.labSentDate);
3765 23 Feb 16 nicklas 375       rf.enabledDate(frm.labReceivedDate);
3756 18 Feb 16 olle 376       // Set date valid status
3756 18 Feb 16 olle 377       labSentDateIsValid = false;
3756 18 Feb 16 olle 378       var labSentDate = frm.labSentDate.value;
3756 18 Feb 16 olle 379       if (labSentDate != null)
3756 18 Feb 16 olle 380       {
3756 18 Feb 16 olle 381         labSentDateIsValid = true;
3756 18 Feb 16 olle 382       }
3756 18 Feb 16 olle 383       labReceivedDateIsValid = false;
3756 18 Feb 16 olle 384       var labReceivedDate = frm.labReceivedDate.value;
3756 18 Feb 16 olle 385       if (labReceivedDate != null)
3756 18 Feb 16 olle 386       {
3756 18 Feb 16 olle 387         labReceivedDateIsValid = true;
3756 18 Feb 16 olle 388       }
3756 18 Feb 16 olle 389       // Reset input status
3756 18 Feb 16 olle 390       if (labSentDateIsValid && labReceivedDateIsValid)
3756 18 Feb 16 olle 391       {
3756 18 Feb 16 olle 392         Wizard.setInputStatus('labDate', 'valid');
3756 18 Feb 16 olle 393       }
3756 18 Feb 16 olle 394       else if (labSentDate != null && labReceivedDate != null)
3756 18 Feb 16 olle 395       {
3756 18 Feb 16 olle 396         Wizard.setInputStatus('labDate');
3756 18 Feb 16 olle 397       }
3756 18 Feb 16 olle 398     }
3756 18 Feb 16 olle 399     rf.currentRetractionStatus();
3756 18 Feb 16 olle 400   }
3756 18 Feb 16 olle 401
3085 15 Jan 15 olle 402   rf.labDateOnChange = function()
3085 15 Jan 15 olle 403   {
3085 15 Jan 15 olle 404     Wizard.setInputStatus('labDate');
3085 15 Jan 15 olle 405     var frm = document.forms['reggie'];    
3085 15 Jan 15 olle 406
3085 15 Jan 15 olle 407     labSentDateIsValid = false;
3085 15 Jan 15 olle 408     var labSentDate = frm.labSentDate.value;
3085 15 Jan 15 olle 409     labSentDate = rf.dateCheck(labSentDate, 'lab sent', 'labDate');    
3085 15 Jan 15 olle 410     if (labSentDate != null)
3085 15 Jan 15 olle 411     {
3085 15 Jan 15 olle 412       frm.labSentDate.value = labSentDate;
3085 15 Jan 15 olle 413       labSentDateIsValid = true;
3085 15 Jan 15 olle 414     }
3085 15 Jan 15 olle 415
3085 15 Jan 15 olle 416     labReceivedDateIsValid = false;
3085 15 Jan 15 olle 417     var labReceivedDate = frm.labReceivedDate.value;
3085 15 Jan 15 olle 418     labReceivedDate = rf.dateCheck(labReceivedDate, 'lab received', 'labDate');    
3085 15 Jan 15 olle 419     if (labReceivedDate != null)
3085 15 Jan 15 olle 420     {
3085 15 Jan 15 olle 421       frm.labReceivedDate.value = labReceivedDate;
3085 15 Jan 15 olle 422       labReceivedDateIsValid = true;
3085 15 Jan 15 olle 423     }
3085 15 Jan 15 olle 424
3085 15 Jan 15 olle 425     if (labSentDateIsValid && labReceivedDateIsValid)
3085 15 Jan 15 olle 426     {
3085 15 Jan 15 olle 427       var result = rf.causalityDateCheck(labSentDate, 'lab sent', labReceivedDate, 'lab received', 'labDate');
3085 15 Jan 15 olle 428       if (result != null)
3085 15 Jan 15 olle 429       {
3085 15 Jan 15 olle 430         Wizard.setInputStatus('labDate', 'valid');
3085 15 Jan 15 olle 431       }
3085 15 Jan 15 olle 432     }
3756 18 Feb 16 olle 433     else if (labSentDate != null && labReceivedDate != null)
3756 18 Feb 16 olle 434     {
3756 18 Feb 16 olle 435       Wizard.setInputStatus('labDate');
3756 18 Feb 16 olle 436     }    
3756 18 Feb 16 olle 437     rf.currentRetractionStatus();
3085 15 Jan 15 olle 438   }
3085 15 Jan 15 olle 439
3756 18 Feb 16 olle 440   rf.bloodDateNaOnChange = function()
3756 18 Feb 16 olle 441   {
3756 18 Feb 16 olle 442     var frm = document.forms['reggie'];    
3756 18 Feb 16 olle 443
3756 18 Feb 16 olle 444     var bloodDateNa = frm.bloodDateNa.checked;
3756 18 Feb 16 olle 445     if (bloodDateNa)
3756 18 Feb 16 olle 446     {
3756 18 Feb 16 olle 447       // Disable date fields
3765 23 Feb 16 nicklas 448       rf.disabledDate(frm.bloodSentDate);
3765 23 Feb 16 nicklas 449       rf.disabledDate(frm.bloodReceivedDate);
3756 18 Feb 16 olle 450       // Set dates as valid
3756 18 Feb 16 olle 451       bloodSentDateIsValid = true;
3756 18 Feb 16 olle 452       bloodReceivedDateIsValid = true;
3756 18 Feb 16 olle 453       // Set input as valid
3756 18 Feb 16 olle 454       Wizard.setInputStatus('bloodDate', 'valid');
3756 18 Feb 16 olle 455     }
3756 18 Feb 16 olle 456     else
3756 18 Feb 16 olle 457     {
3756 18 Feb 16 olle 458       // Enable date fields
3765 23 Feb 16 nicklas 459       rf.enabledDate(frm.bloodSentDate);
3765 23 Feb 16 nicklas 460       rf.enabledDate(frm.bloodReceivedDate);
3756 18 Feb 16 olle 461       // Set date valid status
3756 18 Feb 16 olle 462       bloodSentDateIsValid = false;
3756 18 Feb 16 olle 463       var bloodSentDate = frm.bloodSentDate.value;
3756 18 Feb 16 olle 464       if (bloodSentDate != null)
3756 18 Feb 16 olle 465       {
3756 18 Feb 16 olle 466         bloodSentDateIsValid = true;
3756 18 Feb 16 olle 467       }
3756 18 Feb 16 olle 468       bloodReceivedDateIsValid = false;
3756 18 Feb 16 olle 469       var bloodReceivedDate = frm.bloodReceivedDate.value;
3756 18 Feb 16 olle 470       if (bloodReceivedDate != null)
3756 18 Feb 16 olle 471       {
3756 18 Feb 16 olle 472         bloodReceivedDateIsValid = true;
3756 18 Feb 16 olle 473       }
3756 18 Feb 16 olle 474       // Reset input status
3756 18 Feb 16 olle 475       if (bloodSentDateIsValid && bloodReceivedDateIsValid)
3756 18 Feb 16 olle 476       {
3756 18 Feb 16 olle 477         Wizard.setInputStatus('bloodDate', 'valid');
3756 18 Feb 16 olle 478       }
3756 18 Feb 16 olle 479       else if (bloodSentDate != null && bloodReceivedDate != null)
3756 18 Feb 16 olle 480       {
3756 18 Feb 16 olle 481         Wizard.setInputStatus('bloodDate');
3756 18 Feb 16 olle 482       }
3756 18 Feb 16 olle 483     }
3756 18 Feb 16 olle 484     rf.currentRetractionStatus();
3756 18 Feb 16 olle 485   }
3756 18 Feb 16 olle 486
3085 15 Jan 15 olle 487   rf.bloodDateOnChange = function()
3085 15 Jan 15 olle 488   {
3085 15 Jan 15 olle 489     Wizard.setInputStatus('bloodDate');
3085 15 Jan 15 olle 490     var frm = document.forms['reggie'];    
3085 15 Jan 15 olle 491
3085 15 Jan 15 olle 492     bloodSentDateIsValid = false;
3085 15 Jan 15 olle 493     var bloodSentDate = frm.bloodSentDate.value;
3085 15 Jan 15 olle 494     bloodSentDate = rf.dateCheck(bloodSentDate, 'blood sent', 'bloodDate');    
3085 15 Jan 15 olle 495     if (bloodSentDate != null)
3085 15 Jan 15 olle 496     {
3085 15 Jan 15 olle 497       frm.bloodSentDate.value = bloodSentDate;
3085 15 Jan 15 olle 498       bloodSentDateIsValid = true;
3085 15 Jan 15 olle 499     }
3085 15 Jan 15 olle 500
3085 15 Jan 15 olle 501     bloodReceivedDateIsValid = false;
3085 15 Jan 15 olle 502     var bloodReceivedDate = frm.bloodReceivedDate.value;
3085 15 Jan 15 olle 503     bloodReceivedDate = rf.dateCheck(bloodReceivedDate, 'blood received', 'bloodDate');    
3085 15 Jan 15 olle 504     if (bloodReceivedDate != null)
3085 15 Jan 15 olle 505     {
3085 15 Jan 15 olle 506       frm.bloodReceivedDate.value = bloodReceivedDate;
3085 15 Jan 15 olle 507       bloodReceivedDateIsValid = true;
3085 15 Jan 15 olle 508     }
3085 15 Jan 15 olle 509
3085 15 Jan 15 olle 510     if (bloodSentDateIsValid && bloodReceivedDateIsValid)
3085 15 Jan 15 olle 511     {
3085 15 Jan 15 olle 512       var result = rf.causalityDateCheck(bloodSentDate, 'blood sent', bloodReceivedDate, 'blood received', 'bloodDate');
3085 15 Jan 15 olle 513       if (result != null)
3085 15 Jan 15 olle 514       {
3085 15 Jan 15 olle 515         Wizard.setInputStatus('bloodDate', 'valid');
3085 15 Jan 15 olle 516       }
3085 15 Jan 15 olle 517     }
3756 18 Feb 16 olle 518     else if (bloodSentDate != null && bloodReceivedDate != null)
3756 18 Feb 16 olle 519     {
3756 18 Feb 16 olle 520       Wizard.setInputStatus('bloodDate');
3756 18 Feb 16 olle 521     }    
3756 18 Feb 16 olle 522     rf.currentRetractionStatus();
3085 15 Jan 15 olle 523   }
3085 15 Jan 15 olle 524
3756 18 Feb 16 olle 525   rf.frozenDateNaOnChange = function()
3756 18 Feb 16 olle 526   {
3756 18 Feb 16 olle 527     var frm = document.forms['reggie'];    
3756 18 Feb 16 olle 528
3756 18 Feb 16 olle 529     var frozenDateNa = frm.frozenDateNa.checked;
3756 18 Feb 16 olle 530     if (frozenDateNa)
3756 18 Feb 16 olle 531     {
3756 18 Feb 16 olle 532       // Disable date fields
3765 23 Feb 16 nicklas 533       rf.disabledDate(frm.frozenSentDate);
3765 23 Feb 16 nicklas 534       rf.disabledDate(frm.frozenReceivedDate);
3756 18 Feb 16 olle 535       // Set dates as valid
3756 18 Feb 16 olle 536       frozenSentDateIsValid = true;
3756 18 Feb 16 olle 537       frozenReceivedDateIsValid = true;
3756 18 Feb 16 olle 538       // Set input as valid
3756 18 Feb 16 olle 539       Wizard.setInputStatus('frozenDate', 'valid');
3756 18 Feb 16 olle 540     }
3756 18 Feb 16 olle 541     else
3756 18 Feb 16 olle 542     {
3756 18 Feb 16 olle 543       // Enable date fields
3765 23 Feb 16 nicklas 544       rf.enabledDate(frm.frozenSentDate);
3765 23 Feb 16 nicklas 545       rf.enabledDate(frm.frozenReceivedDate);
3756 18 Feb 16 olle 546       // Set date valid status
3756 18 Feb 16 olle 547       frozenSentDateIsValid = false;
3756 18 Feb 16 olle 548       var frozenSentDate = frm.frozenSentDate.value;
3756 18 Feb 16 olle 549       if (frozenSentDate != null)
3756 18 Feb 16 olle 550       {
3756 18 Feb 16 olle 551         frozenSentDateIsValid = true;
3756 18 Feb 16 olle 552       }
3756 18 Feb 16 olle 553       frozenReceivedDateIsValid = false;
3756 18 Feb 16 olle 554       var frozenReceivedDate = frm.frozenReceivedDate.value;
3756 18 Feb 16 olle 555       if (frozenReceivedDate != null)
3756 18 Feb 16 olle 556       {
3756 18 Feb 16 olle 557         frozenReceivedDateIsValid = true;
3756 18 Feb 16 olle 558       }
3756 18 Feb 16 olle 559       // Reset input status
3756 18 Feb 16 olle 560       if (frozenSentDateIsValid && frozenReceivedDateIsValid)
3756 18 Feb 16 olle 561       {
3756 18 Feb 16 olle 562         Wizard.setInputStatus('frozenDate', 'valid');
3756 18 Feb 16 olle 563       }
3756 18 Feb 16 olle 564       else if (frozenSentDate != null && frozenReceivedDate != null)
3756 18 Feb 16 olle 565       {
3756 18 Feb 16 olle 566         Wizard.setInputStatus('frozenDate');
3756 18 Feb 16 olle 567       }
3756 18 Feb 16 olle 568     }
3756 18 Feb 16 olle 569     rf.currentRetractionStatus();
3756 18 Feb 16 olle 570   }
3756 18 Feb 16 olle 571
3085 15 Jan 15 olle 572   rf.frozenDateOnChange = function()
3085 15 Jan 15 olle 573   {
3085 15 Jan 15 olle 574     Wizard.setInputStatus('frozenDate');
3085 15 Jan 15 olle 575     var frm = document.forms['reggie'];    
3085 15 Jan 15 olle 576
3085 15 Jan 15 olle 577     frozenSentDateIsValid = false;
3085 15 Jan 15 olle 578     var frozenSentDate = frm.frozenSentDate.value;
3085 15 Jan 15 olle 579     frozenSentDate = rf.dateCheck(frozenSentDate, 'frozen sent', 'frozenDate');    
3085 15 Jan 15 olle 580     if (frozenSentDate != null)
3085 15 Jan 15 olle 581     {
3085 15 Jan 15 olle 582       frm.frozenSentDate.value = frozenSentDate;
3085 15 Jan 15 olle 583       frozenSentDateIsValid = true;
3085 15 Jan 15 olle 584     }
3085 15 Jan 15 olle 585
3085 15 Jan 15 olle 586     frozenReceivedDateIsValid = false;
3085 15 Jan 15 olle 587     var frozenReceivedDate = frm.frozenReceivedDate.value;
3085 15 Jan 15 olle 588     frozenReceivedDate = rf.dateCheck(frozenReceivedDate, 'frozen received', 'frozenDate');    
3085 15 Jan 15 olle 589     if (frozenReceivedDate != null)
3085 15 Jan 15 olle 590     {
3085 15 Jan 15 olle 591       frm.frozenReceivedDate.value = frozenReceivedDate;
3085 15 Jan 15 olle 592       frozenReceivedDateIsValid = true;
3085 15 Jan 15 olle 593     }
3085 15 Jan 15 olle 594
3085 15 Jan 15 olle 595     if (frozenSentDateIsValid && frozenReceivedDateIsValid)
3085 15 Jan 15 olle 596     {
3085 15 Jan 15 olle 597       var result = rf.causalityDateCheck(frozenSentDate, 'frozen sent', frozenReceivedDate, 'frozen received', 'frozenDate');
3085 15 Jan 15 olle 598       if (result != null)
3085 15 Jan 15 olle 599       {
3085 15 Jan 15 olle 600         Wizard.setInputStatus('frozenDate', 'valid');
3085 15 Jan 15 olle 601       }
3085 15 Jan 15 olle 602     }
3756 18 Feb 16 olle 603     else if (frozenSentDate != null && frozenReceivedDate != null)
3756 18 Feb 16 olle 604     {
3756 18 Feb 16 olle 605       Wizard.setInputStatus('frozenDate');
3756 18 Feb 16 olle 606     }    
3756 18 Feb 16 olle 607     rf.currentRetractionStatus();
3085 15 Jan 15 olle 608   }
3085 15 Jan 15 olle 609
3756 18 Feb 16 olle 610   rf.rccSydDateNaOnChange = function()
3756 18 Feb 16 olle 611   {
3756 18 Feb 16 olle 612     var frm = document.forms['reggie'];    
3756 18 Feb 16 olle 613
3756 18 Feb 16 olle 614     var rccSydDateNa = frm.rccSydDateNa.checked;
3756 18 Feb 16 olle 615     if (rccSydDateNa)
3756 18 Feb 16 olle 616     {
3756 18 Feb 16 olle 617       // Disable date fields
3765 23 Feb 16 nicklas 618       rf.disabledDate(frm.rccSydSentDate);
3756 18 Feb 16 olle 619       // Set dates as valid
3756 18 Feb 16 olle 620       rccSydSentDateIsValid = true;
3756 18 Feb 16 olle 621       // Set input as valid
3756 18 Feb 16 olle 622       Wizard.setInputStatus('rccSydDate', 'valid');
3756 18 Feb 16 olle 623     }
3756 18 Feb 16 olle 624     else
3756 18 Feb 16 olle 625     {
3756 18 Feb 16 olle 626       // Enable date fields
3765 23 Feb 16 nicklas 627       rf.enabledDate(frm.rccSydSentDate);
3756 18 Feb 16 olle 628       // Set date valid status
3756 18 Feb 16 olle 629       rccSydSentDateIsValid = false;
3756 18 Feb 16 olle 630       var rccSydSentDate = frm.rccSydSentDate.value;
3756 18 Feb 16 olle 631       if (rccSydSentDate != null)
3756 18 Feb 16 olle 632       {
3756 18 Feb 16 olle 633         rccSydSentDateIsValid = true;
3756 18 Feb 16 olle 634       }
3756 18 Feb 16 olle 635       // Reset input status
3756 18 Feb 16 olle 636       if (rccSydSentDateIsValid)
3756 18 Feb 16 olle 637       {
3756 18 Feb 16 olle 638         Wizard.setInputStatus('rccSydDate', 'valid');
3756 18 Feb 16 olle 639       }
3756 18 Feb 16 olle 640       else if (rccSydSentDate != null)
3756 18 Feb 16 olle 641       {
3756 18 Feb 16 olle 642         Wizard.setInputStatus('rccSydDate');
3756 18 Feb 16 olle 643       }
3756 18 Feb 16 olle 644     }
3756 18 Feb 16 olle 645     rf.currentRetractionStatus();
3756 18 Feb 16 olle 646   }
3756 18 Feb 16 olle 647
3265 21 Apr 15 olle 648   rf.rccSydDateOnChange = function()
3265 21 Apr 15 olle 649   {
3265 21 Apr 15 olle 650     Wizard.setInputStatus('rccSydDate');
3265 21 Apr 15 olle 651     var frm = document.forms['reggie'];    
3265 21 Apr 15 olle 652
3265 21 Apr 15 olle 653     rccSydSentDateIsValid = false;
3265 21 Apr 15 olle 654     var rccSydSentDate = frm.rccSydSentDate.value;
3265 21 Apr 15 olle 655     rccSydSentDate = rf.dateCheck(rccSydSentDate, 'RCC Syd sent', 'rccSydDate');    
3265 21 Apr 15 olle 656     if (rccSydSentDate != null)
3265 21 Apr 15 olle 657     {
3265 21 Apr 15 olle 658       frm.rccSydSentDate.value = rccSydSentDate;
3265 21 Apr 15 olle 659       rccSydSentDateIsValid = true;
3265 21 Apr 15 olle 660     }
3265 21 Apr 15 olle 661
3265 21 Apr 15 olle 662     if (rccSydSentDateIsValid)
3265 21 Apr 15 olle 663     {
3265 21 Apr 15 olle 664       Wizard.setInputStatus('rccSydDate', 'valid');
3265 21 Apr 15 olle 665     }
3756 18 Feb 16 olle 666     else if (rccSydSentDate != null)
3756 18 Feb 16 olle 667     {
3756 18 Feb 16 olle 668       Wizard.setInputStatus('rccSydDate');
3756 18 Feb 16 olle 669     }    
3756 18 Feb 16 olle 670     rf.currentRetractionStatus();
3265 21 Apr 15 olle 671   }
3265 21 Apr 15 olle 672
5643 07 Oct 19 nicklas 673   rf.checkIfAllItemsForDestructionAreChecked = function()
5643 07 Oct 19 nicklas 674   {
5643 07 Oct 19 nicklas 675     if (!itemsForDestruction) return true;
5643 07 Oct 19 nicklas 676     var frm = document.forms['reggie'];
5643 07 Oct 19 nicklas 677     
5643 07 Oct 19 nicklas 678     for (var itemNo = 0; itemNo < itemsForDestruction.length; itemNo++)
5643 07 Oct 19 nicklas 679     {
5643 07 Oct 19 nicklas 680       var item = itemsForDestruction[itemNo];
5643 07 Oct 19 nicklas 681       if (!frm['destruct.'+item.id].checked) return false;
5643 07 Oct 19 nicklas 682     }  
5643 07 Oct 19 nicklas 683     return true;
5643 07 Oct 19 nicklas 684   }
5643 07 Oct 19 nicklas 685   
6824 30 Aug 22 nicklas 686   rf.currentRetractionStatus = function()
3756 18 Feb 16 olle 687   {
3756 18 Feb 16 olle 688     // Check if all dates are set to non-blank dates or are N/A 
3756 18 Feb 16 olle 689     var frm = document.forms['reggie'];
3756 18 Feb 16 olle 690
5643 07 Oct 19 nicklas 691     var allItemsChecked = rf.checkIfAllItemsForDestructionAreChecked();
5643 07 Oct 19 nicklas 692     
3756 18 Feb 16 olle 693     var labSentDateIsSetOrNa = false;
3756 18 Feb 16 olle 694     var labReceivedDateIsSetOrNa = false;
3756 18 Feb 16 olle 695     var bloodSentDateIsSetOrNa = false;
3756 18 Feb 16 olle 696     var bloodReceivedDateIsSetOrNa = false;
3756 18 Feb 16 olle 697     var frozenSentDateIsSetOrNa = false;
3756 18 Feb 16 olle 698     var frozenReceivedDateIsSetOrNa = false;
3756 18 Feb 16 olle 699     var rccSydSentDateIsSetOrNa = false;
3756 18 Feb 16 olle 700
3756 18 Feb 16 olle 701     var labDateNa = frm.labDateNa.checked;
3756 18 Feb 16 olle 702     if (labDateNa)
3756 18 Feb 16 olle 703     {
3756 18 Feb 16 olle 704       labSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 705       labReceivedDateIsSetOrNa = true;
3756 18 Feb 16 olle 706     }
3756 18 Feb 16 olle 707     else
3756 18 Feb 16 olle 708     {
3756 18 Feb 16 olle 709       var labSentDate = frm.labSentDate.value;
3756 18 Feb 16 olle 710       if (labSentDate != null && labSentDate != '')
3756 18 Feb 16 olle 711       {
3756 18 Feb 16 olle 712         labSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 713       }    
3756 18 Feb 16 olle 714       var labReceivedDate = frm.labReceivedDate.value;
3756 18 Feb 16 olle 715       if (labReceivedDate != null && labReceivedDate != '')
3756 18 Feb 16 olle 716       {
3756 18 Feb 16 olle 717         labReceivedDateIsSetOrNa = true;
3756 18 Feb 16 olle 718       }    
3756 18 Feb 16 olle 719     }
3756 18 Feb 16 olle 720
3756 18 Feb 16 olle 721     var bloodDateNa = frm.bloodDateNa.checked;
3756 18 Feb 16 olle 722     if (bloodDateNa)
3756 18 Feb 16 olle 723     {
3756 18 Feb 16 olle 724       bloodSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 725       bloodReceivedDateIsSetOrNa = true;
3756 18 Feb 16 olle 726     }
3756 18 Feb 16 olle 727     else
3756 18 Feb 16 olle 728     {
3756 18 Feb 16 olle 729       var bloodSentDate = frm.bloodSentDate.value;
3756 18 Feb 16 olle 730       if (bloodSentDate != null && bloodSentDate != '')
3756 18 Feb 16 olle 731       {
3756 18 Feb 16 olle 732         bloodSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 733       }    
3756 18 Feb 16 olle 734       var bloodReceivedDate = frm.bloodReceivedDate.value;
3756 18 Feb 16 olle 735       if (bloodReceivedDate != null && bloodReceivedDate != '')
3756 18 Feb 16 olle 736       {
3756 18 Feb 16 olle 737         bloodReceivedDateIsSetOrNa = true;
3756 18 Feb 16 olle 738       }    
3756 18 Feb 16 olle 739     }
3756 18 Feb 16 olle 740
3756 18 Feb 16 olle 741     var frozenDateNa = frm.frozenDateNa.checked;
3765 23 Feb 16 nicklas 742     if (frozenDateNa)
3756 18 Feb 16 olle 743     {
3756 18 Feb 16 olle 744       frozenSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 745       frozenReceivedDateIsSetOrNa = true;
3756 18 Feb 16 olle 746     }
3756 18 Feb 16 olle 747     else
3756 18 Feb 16 olle 748     {
3756 18 Feb 16 olle 749       var frozenSentDate = frm.frozenSentDate.value;
3756 18 Feb 16 olle 750       if (frozenSentDate != null && frozenSentDate != '')
3756 18 Feb 16 olle 751       {
3756 18 Feb 16 olle 752         frozenSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 753       }    
3756 18 Feb 16 olle 754       var frozenReceivedDate = frm.frozenReceivedDate.value;
3756 18 Feb 16 olle 755       if (frozenReceivedDate != null && frozenReceivedDate != '')
3756 18 Feb 16 olle 756       {
3756 18 Feb 16 olle 757         frozenReceivedDateIsSetOrNa = true;
3756 18 Feb 16 olle 758       }    
3756 18 Feb 16 olle 759     }
3756 18 Feb 16 olle 760
3756 18 Feb 16 olle 761     var rccSydDateNa = frm.rccSydDateNa.checked;
3756 18 Feb 16 olle 762     if (rccSydDateNa)
3756 18 Feb 16 olle 763     {
3756 18 Feb 16 olle 764       rccSydSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 765     }
3756 18 Feb 16 olle 766     else
3756 18 Feb 16 olle 767     {
3756 18 Feb 16 olle 768       var rccSydSentDate = frm.rccSydSentDate.value;
3756 18 Feb 16 olle 769       if (rccSydSentDate != null && rccSydSentDate != '')
3756 18 Feb 16 olle 770       {
3756 18 Feb 16 olle 771         rccSydSentDateIsSetOrNa = true;
3756 18 Feb 16 olle 772       }    
3756 18 Feb 16 olle 773     }
3756 18 Feb 16 olle 774
3756 18 Feb 16 olle 775     var datesAreSetOrNa = false;
3756 18 Feb 16 olle 776     if (labSentDateIsSetOrNa &&
3756 18 Feb 16 olle 777       labReceivedDateIsSetOrNa &&
3756 18 Feb 16 olle 778       bloodSentDateIsSetOrNa &&
3756 18 Feb 16 olle 779       bloodReceivedDateIsSetOrNa &&
3756 18 Feb 16 olle 780       frozenSentDateIsSetOrNa &&
3756 18 Feb 16 olle 781       frozenReceivedDateIsSetOrNa &&
3756 18 Feb 16 olle 782       rccSydSentDateIsSetOrNa)
3756 18 Feb 16 olle 783     {
3756 18 Feb 16 olle 784       datesAreSetOrNa = true;
3756 18 Feb 16 olle 785     }
3756 18 Feb 16 olle 786     
5643 07 Oct 19 nicklas 787     if (datesAreSetOrNa && allItemsChecked)
3756 18 Feb 16 olle 788     {
5643 07 Oct 19 nicklas 789       Doc.element('retractionStatusAfterRegistration').innerHTML = '<b>Retraction status after registration</b>: <img src=\"../images/ok.png\" style=\"padding: 0 0.25em;\" />Ready for destruction';
3756 18 Feb 16 olle 790     }
3756 18 Feb 16 olle 791     else
3756 18 Feb 16 olle 792     {
5643 07 Oct 19 nicklas 793       Doc.element('retractionStatusAfterRegistration').innerHTML = '<b>Retraction status after registration</b>: Not ready for destruction';
3756 18 Feb 16 olle 794     }
3756 18 Feb 16 olle 795   }
3756 18 Feb 16 olle 796   
3085 15 Jan 15 olle 797   rf.dateCheck = function(dateValue, dateName, dateMessageKey)
3085 15 Jan 15 olle 798   {
3085 15 Jan 15 olle 799     if (dateValue != '')
3085 15 Jan 15 olle 800     {
3085 15 Jan 15 olle 801       // Auto-fill the date if it's only given with 4(MMdd) or 6(yyMMdd) digits.
3085 15 Jan 15 olle 802       dateValue = Reggie.autoFillDate(dateValue, true);
3085 15 Jan 15 olle 803
3085 15 Jan 15 olle 804       var d = Dates.parseString(dateValue, 'yyyyMMdd');
3085 15 Jan 15 olle 805       if (d == null)
3085 15 Jan 15 olle 806       {
3085 15 Jan 15 olle 807         Wizard.setInputStatus(dateMessageKey, 'invalid', 'Not a valid '+dateName+' date');
3085 15 Jan 15 olle 808         return null;
3085 15 Jan 15 olle 809       }
3085 15 Jan 15 olle 810       
3085 15 Jan 15 olle 811       var today = new Date();
3085 15 Jan 15 olle 812       if (d.getTime() > today.getTime())
3085 15 Jan 15 olle 813       {
3085 15 Jan 15 olle 814         Wizard.setInputStatus(dateMessageKey, 'invalid', 'Future '+dateName+' date is not valid');
3085 15 Jan 15 olle 815         return null;
3085 15 Jan 15 olle 816       }      
3085 15 Jan 15 olle 817     }
3085 15 Jan 15 olle 818     return dateValue;
3085 15 Jan 15 olle 819   }
3085 15 Jan 15 olle 820
3085 15 Jan 15 olle 821   rf.causalityDateCheck = function(date1, dateName1, date2, dateName2, dateMessageKey)
3085 15 Jan 15 olle 822   {
3085 15 Jan 15 olle 823     if (date1 != null && date1 != '' && date2 != null && date2 != '')
3085 15 Jan 15 olle 824     {
3085 15 Jan 15 olle 825       // Auto-fill the date if it's only given with 4(MMdd) or 6(yyMMdd) digits.
3085 15 Jan 15 olle 826       date1 = Reggie.autoFillDate(date1, true);
3085 15 Jan 15 olle 827       date2 = Reggie.autoFillDate(date2, true);
3085 15 Jan 15 olle 828
3085 15 Jan 15 olle 829       var d1 = Dates.parseString(date1, 'yyyyMMdd');
3085 15 Jan 15 olle 830       if (d1 == null)
3085 15 Jan 15 olle 831       {
3085 15 Jan 15 olle 832         Wizard.setInputStatus(dateMessageKey, 'invalid', 'Not a valid '+dateName1+' date');
3085 15 Jan 15 olle 833         return null;
3085 15 Jan 15 olle 834       }
3085 15 Jan 15 olle 835       
3085 15 Jan 15 olle 836       var d2 = Dates.parseString(date2, 'yyyyMMdd');
3085 15 Jan 15 olle 837       if (d2 == null)
3085 15 Jan 15 olle 838       {
3085 15 Jan 15 olle 839         Wizard.setInputStatus(dateMessageKey, 'invalid', 'Not a valid '+dateName2+' date');
3085 15 Jan 15 olle 840         return null;
3085 15 Jan 15 olle 841       }
3085 15 Jan 15 olle 842       
3085 15 Jan 15 olle 843       if (d1.getTime() > d2.getTime())
3085 15 Jan 15 olle 844       {
3085 15 Jan 15 olle 845         Wizard.setInputStatus(dateMessageKey, 'invalid', 'Causality violation: '+dateName1+' date is later than '+dateName2+' date');
3085 15 Jan 15 olle 846         return null;
3085 15 Jan 15 olle 847       }  
3085 15 Jan 15 olle 848     }
3085 15 Jan 15 olle 849     return date1;
3085 15 Jan 15 olle 850   }
3085 15 Jan 15 olle 851
3766 23 Feb 16 nicklas 852   
3766 23 Feb 16 nicklas 853   /**
3766 23 Feb 16 nicklas 854     Initalize the second step based on the information we have about the case.
3766 23 Feb 16 nicklas 855   */
5643 07 Oct 19 nicklas 856   rf.caseInfoLoadedForDestruct = function(response)
3766 23 Feb 16 nicklas 857   {
3766 23 Feb 16 nicklas 858     // Sample Items Header row
3766 23 Feb 16 nicklas 859     var html = '<table id="retractionItemsTable2">';
3766 23 Feb 16 nicklas 860     html += '<thead class="bg-filled-100">';
3766 23 Feb 16 nicklas 861     html += '<tr>';
3766 23 Feb 16 nicklas 862     html += '<th></th>';
3766 23 Feb 16 nicklas 863     html += '<th>Item</th>';
3766 23 Feb 16 nicklas 864     html += '<th>Name</th>';
4512 31 May 17 nicklas 865     html += '<th></th>';
4512 31 May 17 nicklas 866     html += '<th>LiasonComment</th>';
3766 23 Feb 16 nicklas 867     html += '<th>Action</th>';
3766 23 Feb 16 nicklas 868     html += '</tr>';
3766 23 Feb 16 nicklas 869     html += '</thead>';
3766 23 Feb 16 nicklas 870     
3766 23 Feb 16 nicklas 871     html += '<tbody>';
3766 23 Feb 16 nicklas 872     
3766 23 Feb 16 nicklas 873     var items = response.items;
3766 23 Feb 16 nicklas 874     allCanBeDeleted = true;
3766 23 Feb 16 nicklas 875     for (var i = 0; i < items.length; i++)
3766 23 Feb 16 nicklas 876     {
3766 23 Feb 16 nicklas 877       var item = items[i];
3766 23 Feb 16 nicklas 878       var comment = item.comment;
3766 23 Feb 16 nicklas 879       if (comment && comment == 'To be deleted')
3766 23 Feb 16 nicklas 880       {
3766 23 Feb 16 nicklas 881         comment = '<b>' + comment + '</b>';
3766 23 Feb 16 nicklas 882       }
3766 23 Feb 16 nicklas 883       if (!item.deletePermission)
3766 23 Feb 16 nicklas 884       {
3766 23 Feb 16 nicklas 885         allCanBeDeleted = false;
5637 03 Oct 19 nicklas 886         comment = '<b>' + comment + '</b>';
3766 23 Feb 16 nicklas 887       }
3766 23 Feb 16 nicklas 888       html += '<tr class="'+(!item.deletePermission ? 'no-delete' : 'highlight')+'">';
3766 23 Feb 16 nicklas 889       html += '<th class="index">' + (i+1) + '</th>';
3766 23 Feb 16 nicklas 890       html += '<td class="dottedleft">' + Strings.encodeTags(item.type) + '</td>';
3766 23 Feb 16 nicklas 891       html += '<td>' + Strings.encodeTags(item.name) + '</td>';
4512 31 May 17 nicklas 892       if (item.liasonComment)
4512 31 May 17 nicklas 893       {
4512 31 May 17 nicklas 894         html += '<td style="text-align: right;"><input type="checkbox" class="keepLiasonComment" value="'+item.name+'" title="Save this comment on the copy"></td>';
4512 31 May 17 nicklas 895         html += '<td>'+ Strings.encodeTags(item.liasonComment)+'</td>';
4512 31 May 17 nicklas 896       }
4512 31 May 17 nicklas 897       else
4512 31 May 17 nicklas 898       {
4512 31 May 17 nicklas 899         html += '<td colspan="2"></td>';
4512 31 May 17 nicklas 900       }
3766 23 Feb 16 nicklas 901       html += '<td class="dottedleft">' + comment + '</td>';
3766 23 Feb 16 nicklas 902       html += '</tr>';
3766 23 Feb 16 nicklas 903     }
3766 23 Feb 16 nicklas 904     
3766 23 Feb 16 nicklas 905     html += '</tbody>';
3766 23 Feb 16 nicklas 906     html += '</table>';
3766 23 Feb 16 nicklas 907     Doc.element('retractTable').innerHTML = html;
3766 23 Feb 16 nicklas 908     Doc.show('retractTable');
3766 23 Feb 16 nicklas 909     
3766 23 Feb 16 nicklas 910     Wizard.setCurrentStep(2);
3766 23 Feb 16 nicklas 911     Doc.show('gocancel');
3766 23 Feb 16 nicklas 912     if (allCanBeDeleted)
3766 23 Feb 16 nicklas 913     {
3766 23 Feb 16 nicklas 914       Doc.show('goregister');
3766 23 Feb 16 nicklas 915     }
3766 23 Feb 16 nicklas 916   }
3766 23 Feb 16 nicklas 917
3085 15 Jan 15 olle 918   rf.validateStep2 = function(event)
3085 15 Jan 15 olle 919   {
3766 23 Feb 16 nicklas 920     if (action == 'edit')
3766 23 Feb 16 nicklas 921     {
3766 23 Feb 16 nicklas 922       // Get up-to-date values for date validation variables
3766 23 Feb 16 nicklas 923       rf.labDateNaOnChange();
3766 23 Feb 16 nicklas 924       rf.bloodDateNaOnChange();
3766 23 Feb 16 nicklas 925       rf.frozenDateNaOnChange();
3766 23 Feb 16 nicklas 926       rf.rccSydDateNaOnChange();
3766 23 Feb 16 nicklas 927       //
3766 23 Feb 16 nicklas 928       rf.labDateOnChange();
3766 23 Feb 16 nicklas 929       rf.bloodDateOnChange();
3766 23 Feb 16 nicklas 930       rf.frozenDateOnChange();
3766 23 Feb 16 nicklas 931       rf.rccSydDateOnChange();
3085 15 Jan 15 olle 932
3766 23 Feb 16 nicklas 933       // Step 2 is valid if all date values are valid ('null' value is allowed)
3766 23 Feb 16 nicklas 934       var datesAreValid = false;
3766 23 Feb 16 nicklas 935       if (labSentDateIsValid &&
3766 23 Feb 16 nicklas 936         labReceivedDateIsValid &&
3766 23 Feb 16 nicklas 937         bloodSentDateIsValid &&
3766 23 Feb 16 nicklas 938         bloodReceivedDateIsValid &&
3766 23 Feb 16 nicklas 939         frozenSentDateIsValid &&
3766 23 Feb 16 nicklas 940         frozenReceivedDateIsValid &&
3766 23 Feb 16 nicklas 941         rccSydSentDateIsValid)
3766 23 Feb 16 nicklas 942       {
3766 23 Feb 16 nicklas 943         datesAreValid = true;
3766 23 Feb 16 nicklas 944       }
3766 23 Feb 16 nicklas 945       
3766 23 Feb 16 nicklas 946       if (!datesAreValid) event.preventDefault();
3766 23 Feb 16 nicklas 947     }
3766 23 Feb 16 nicklas 948     else if (action == 'destruct')
3085 15 Jan 15 olle 949     {
3766 23 Feb 16 nicklas 950       if (!allCanBeDeleted) event.preventDefault();
3085 15 Jan 15 olle 951     }
3766 23 Feb 16 nicklas 952     else
3766 23 Feb 16 nicklas 953     {
3766 23 Feb 16 nicklas 954       // Unknown action
3766 23 Feb 16 nicklas 955       event.preventDefault();
3766 23 Feb 16 nicklas 956     }
3085 15 Jan 15 olle 957   }
3085 15 Jan 15 olle 958   
3085 15 Jan 15 olle 959
3766 23 Feb 16 nicklas 960   
3766 23 Feb 16 nicklas 961   
3085 15 Jan 15 olle 962   rf.submit = function()
3085 15 Jan 15 olle 963   {
3085 15 Jan 15 olle 964     var frm = document.forms['reggie'];
3085 15 Jan 15 olle 965
3766 23 Feb 16 nicklas 966     if (action == 'edit')
3766 23 Feb 16 nicklas 967     {
3766 23 Feb 16 nicklas 968       var retractionInfo = {};
3766 23 Feb 16 nicklas 969       // Patient
3766 23 Feb 16 nicklas 970       retractionInfo.patientId = selectedPatient.id;
3766 23 Feb 16 nicklas 971       // Lab; Note! null value for unchecked N/A box 
3766 23 Feb 16 nicklas 972       retractionInfo.labDateNa = frm.labDateNa.checked || null;
3766 23 Feb 16 nicklas 973       retractionInfo.labSentDate = frm.labSentDate.value;
3766 23 Feb 16 nicklas 974       retractionInfo.labReceivedDate = frm.labReceivedDate.value;
3766 23 Feb 16 nicklas 975       // Blood
3766 23 Feb 16 nicklas 976       retractionInfo.bloodDateNa = frm.bloodDateNa.checked || null;
3766 23 Feb 16 nicklas 977       retractionInfo.bloodSentDate = frm.bloodSentDate.value;
3766 23 Feb 16 nicklas 978       retractionInfo.bloodReceivedDate = frm.bloodReceivedDate.value;
3766 23 Feb 16 nicklas 979       // Frozen
3766 23 Feb 16 nicklas 980       retractionInfo.frozenDateNa = frm.frozenDateNa.checked || null;
3766 23 Feb 16 nicklas 981       retractionInfo.frozenSentDate = frm.frozenSentDate.value;
3766 23 Feb 16 nicklas 982       retractionInfo.frozenReceivedDate = frm.frozenReceivedDate.value;
3766 23 Feb 16 nicklas 983       // RCC Syd
3766 23 Feb 16 nicklas 984       retractionInfo.rccSydDateNa = frm.rccSydDateNa.checked || null;
3766 23 Feb 16 nicklas 985       retractionInfo.rccSydSentDate = frm.rccSydSentDate.value;
3085 15 Jan 15 olle 986
5643 07 Oct 19 nicklas 987       for (var itemNo = 0; itemNo < itemsForDestruction.length; itemNo++)
5643 07 Oct 19 nicklas 988       {
5643 07 Oct 19 nicklas 989         var item = itemsForDestruction[itemNo];
5643 07 Oct 19 nicklas 990         item.destructed = frm['destruct.'+item.id].checked;
5643 07 Oct 19 nicklas 991       }
5643 07 Oct 19 nicklas 992       
3766 23 Feb 16 nicklas 993       var submitInfo = {};
3766 23 Feb 16 nicklas 994       submitInfo.retractionInfo = retractionInfo;
5643 07 Oct 19 nicklas 995       submitInfo.destructInfo = itemsForDestruction;
3766 23 Feb 16 nicklas 996       
3766 23 Feb 16 nicklas 997       var url = '../Retraction.servlet?ID=' + App.getSessionId();
3766 23 Feb 16 nicklas 998       url += '&cmd=RegisterFollowUp';
3766 23 Feb 16 nicklas 999   
3766 23 Feb 16 nicklas 1000       Wizard.showLoadingAnimation('Performing registration...');
3766 23 Feb 16 nicklas 1001       Wizard.asyncJsonRequest(url, rf.submissionResults, 'POST', JSON.stringify(submitInfo));
3766 23 Feb 16 nicklas 1002     }
3766 23 Feb 16 nicklas 1003     else if (action == 'destruct')
3766 23 Feb 16 nicklas 1004     {
3766 23 Feb 16 nicklas 1005       var retractionInfo = {};
3766 23 Feb 16 nicklas 1006       retractionInfo.patientId = selectedPatient.id;
3085 15 Jan 15 olle 1007
4512 31 May 17 nicklas 1008       var keepLiasonComments = [];
4512 31 May 17 nicklas 1009       var checkboxes = document.getElementsByClassName('keepLiasonComment');
4512 31 May 17 nicklas 1010       for (var cbNo = 0; cbNo < checkboxes.length; cbNo++)
4512 31 May 17 nicklas 1011       {
4512 31 May 17 nicklas 1012         var cb = checkboxes[cbNo];
4512 31 May 17 nicklas 1013         if (cb.checked) keepLiasonComments[keepLiasonComments.length] = cb.value;
4512 31 May 17 nicklas 1014       }
4512 31 May 17 nicklas 1015       retractionInfo.keepLiasonComments = keepLiasonComments;
4512 31 May 17 nicklas 1016       
3766 23 Feb 16 nicklas 1017       var submitInfo = {};
3766 23 Feb 16 nicklas 1018       submitInfo.retractionInfo = retractionInfo;
3766 23 Feb 16 nicklas 1019
3766 23 Feb 16 nicklas 1020       var url = '../Retraction.servlet?ID=' + App.getSessionId();
3766 23 Feb 16 nicklas 1021       url += '&cmd=RegisterDestruction';
3766 23 Feb 16 nicklas 1022
3766 23 Feb 16 nicklas 1023       Wizard.showLoadingAnimation('Performing registration...');
3766 23 Feb 16 nicklas 1024       Wizard.asyncJsonRequest(url, rf.submissionResults, 'POST', JSON.stringify(submitInfo));
3766 23 Feb 16 nicklas 1025     }
3085 15 Jan 15 olle 1026   }
3085 15 Jan 15 olle 1027   
3085 15 Jan 15 olle 1028   rf.submissionResults = function(response)
3085 15 Jan 15 olle 1029   {
3085 15 Jan 15 olle 1030     Wizard.showFinalMessage(response.messages);
3085 15 Jan 15 olle 1031     Doc.show('gorestart');
3085 15 Jan 15 olle 1032   }
3085 15 Jan 15 olle 1033
3085 15 Jan 15 olle 1034   return rf;
3085 15 Jan 15 olle 1035 }();
3085 15 Jan 15 olle 1036
3085 15 Jan 15 olle 1037 Doc.onLoad(RetractionFollowUpForm.initPage);
3085 15 Jan 15 olle 1038