extensions/net.sf.basedb.meludi/trunk/resources/personal/consentform_alt_rec.js

Code
Comments
Other
Rev Date Author Line
4786 27 Apr 18 olle 1 var Consent = function()
4786 27 Apr 18 olle 2 {
4786 27 Apr 18 olle 3   var consent = {};
4786 27 Apr 18 olle 4   var consentToId = { "Yes": "consent.yes", "No" : "consent.no", "Not asked": "consent.notAsked" };
4860 19 Jun 18 olle 5   var patientInfo = null;
4860 19 Jun 18 olle 6   var caseInfo = null;
4786 27 Apr 18 olle 7   var debug = 0;
4786 27 Apr 18 olle 8   
4786 27 Apr 18 olle 9   var sampleItemPrefix = '';
4786 27 Apr 18 olle 10   var sampleItemNumDigits = 5;
4860 19 Jun 18 olle 11   var referralPrefix = '';
4860 19 Jun 18 olle 12   var referralNumDigits = 5;
4786 27 Apr 18 olle 13
4860 19 Jun 18 olle 14   var pnrIsValid = false;
4860 19 Jun 18 olle 15   var pnrIsAcceptable = false;
4860 19 Jun 18 olle 16
4786 27 Apr 18 olle 17   consent.initPage = function()
4786 27 Apr 18 olle 18   {
4786 27 Apr 18 olle 19     
4786 27 Apr 18 olle 20     // Step 1
4786 27 Apr 18 olle 21     Events.addEventHandler('step-1', 'wizard-validate', consent.validateStep1);
4860 19 Jun 18 olle 22     Events.addEventHandler('referralId', 'keypress', Wizard.goNextOnTabOrEnter);    
4860 19 Jun 18 olle 23     Events.addEventHandler('referralId', 'blur', consent.referralIdOnChange);
4860 19 Jun 18 olle 24
4786 27 Apr 18 olle 25     // Step 2
4786 27 Apr 18 olle 26     Events.addEventHandler('step-2', 'wizard-initialize', consent.initializeStep2);
4786 27 Apr 18 olle 27     Events.addEventHandler('step-2', 'wizard-validate', consent.validateStep2);
4786 27 Apr 18 olle 28     Events.addEventHandler('consentDate', 'blur', Wizard.validateDate);
4786 27 Apr 18 olle 29     
4786 27 Apr 18 olle 30     Events.addEventHandler('consent.yes', 'change', consent.consentOnChange);
4786 27 Apr 18 olle 31     Events.addEventHandler('consent.no', 'change', consent.consentOnChange);
4786 27 Apr 18 olle 32     Events.addEventHandler('consent.notAsked', 'change', consent.consentOnChange);
4786 27 Apr 18 olle 33     Events.addEventHandler('otherReasonIfNotAsked', 'focus', consent.onOtherReasonFocus);
4860 19 Jun 18 olle 34
4860 19 Jun 18 olle 35     Events.addEventHandler('personalNumber', 'keyup', consent.personalNumberOnChange);
4860 19 Jun 18 olle 36     Events.addEventHandler('personalNumber', 'keypress', Wizard.goNextOnTabOrEnter);
4786 27 Apr 18 olle 37     
4860 19 Jun 18 olle 38     // Step 3
4860 19 Jun 18 olle 39     Events.addEventHandler('step-3', 'wizard-initialize', consent.initializeStep3);
4860 19 Jun 18 olle 40     Events.addEventHandler('step-3', 'wizard-validate', consent.validateStep3);
4860 19 Jun 18 olle 41     Events.addEventHandler('familyName', 'blur', consent.nameOnChange);
4860 19 Jun 18 olle 42     Events.addEventHandler('allFirstNames', 'blur', consent.nameOnChange);
4860 19 Jun 18 olle 43     Events.addEventHandler('allFirstNames', 'keypress', Wizard.goNextOnTabOrEnter);
4860 19 Jun 18 olle 44
4786 27 Apr 18 olle 45     // Navigation
4786 27 Apr 18 olle 46     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
4786 27 Apr 18 olle 47     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
4786 27 Apr 18 olle 48     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
4786 27 Apr 18 olle 49     Buttons.addClickHandler('goregister', Wizard.goRegister);
4786 27 Apr 18 olle 50     
4786 27 Apr 18 olle 51     // Final registration
4786 27 Apr 18 olle 52     Events.addEventHandler('wizard', 'wizard-submit', consent.submit);
4786 27 Apr 18 olle 53     
4786 27 Apr 18 olle 54     // Load permissions
4786 27 Apr 18 olle 55     consent.initPermissions();
4786 27 Apr 18 olle 56     // Load configuration
4786 27 Apr 18 olle 57     consent.loadConfiguration();
4786 27 Apr 18 olle 58
4786 27 Apr 18 olle 59     //Doc.show('step-1');
4786 27 Apr 18 olle 60     //Doc.show('gonext');
4786 27 Apr 18 olle 61   }
4786 27 Apr 18 olle 62   
4786 27 Apr 18 olle 63   consent.initPermissions = function()
4786 27 Apr 18 olle 64   {
4786 27 Apr 18 olle 65     // Get permission information
4786 27 Apr 18 olle 66     var url = '../Install.servlet?ID='+App.getSessionId();
4786 27 Apr 18 olle 67     url += '&cmd=GetPermissions';
4786 27 Apr 18 olle 68     var request = Ajax.getXmlHttpRequest();
4786 27 Apr 18 olle 69     request.open("GET", url, true);
4786 27 Apr 18 olle 70     Ajax.setReadyStateHandler(request, consent.onPermissionsLoaded, consent.onPermissionsLoaded);
4786 27 Apr 18 olle 71     request.send(null);
4786 27 Apr 18 olle 72   }
4786 27 Apr 18 olle 73   
4786 27 Apr 18 olle 74   // Callback when permission information is ready
4786 27 Apr 18 olle 75   consent.onPermissionsLoaded = function(request)
4786 27 Apr 18 olle 76   {
4786 27 Apr 18 olle 77     if (debug) App.debug(Strings.encodeTags(request.responseText));
4786 27 Apr 18 olle 78     var response;
4786 27 Apr 18 olle 79     var error = false;
4786 27 Apr 18 olle 80     try
4786 27 Apr 18 olle 81     {
4786 27 Apr 18 olle 82       response = JSON.parse(request.responseText);
4786 27 Apr 18 olle 83       if (response.status != 'ok')
4786 27 Apr 18 olle 84       {
4786 27 Apr 18 olle 85         error = response.message || response.stacktrace || 'Unexpected error';
4786 27 Apr 18 olle 86       }
4786 27 Apr 18 olle 87     }
4786 27 Apr 18 olle 88     catch (ex)
4786 27 Apr 18 olle 89     {
4786 27 Apr 18 olle 90       error = ex;
4786 27 Apr 18 olle 91     }
4786 27 Apr 18 olle 92     
4786 27 Apr 18 olle 93     if (error)
4786 27 Apr 18 olle 94     {
4786 27 Apr 18 olle 95       alert(error);
4786 27 Apr 18 olle 96       return;
4786 27 Apr 18 olle 97     }
4786 27 Apr 18 olle 98     
4786 27 Apr 18 olle 99     myPermissions = response.permissions;
4786 27 Apr 18 olle 100     //var isAdmin = myPermissions['Administrator'] == 1;
4786 27 Apr 18 olle 101     //var noProjectIsActive = !App.getActiveProjectId();
4786 27 Apr 18 olle 102   }
4786 27 Apr 18 olle 103
4786 27 Apr 18 olle 104   consent.loadConfiguration = function()
4786 27 Apr 18 olle 105   {
4786 27 Apr 18 olle 106     var url = '../Session.servlet?ID='+App.getSessionId();
4786 27 Apr 18 olle 107     url += '&cmd=GetConfiguration'
4786 27 Apr 18 olle 108     var request = Ajax.getXmlHttpRequest();
4786 27 Apr 18 olle 109     request.open("GET", url, true);
4786 27 Apr 18 olle 110     Ajax.setReadyStateHandler(request, consent.onConfiguration, consent.onConfiguration);
4786 27 Apr 18 olle 111     request.send(null);
4786 27 Apr 18 olle 112   }
4786 27 Apr 18 olle 113   
4786 27 Apr 18 olle 114   consent.onConfiguration = function(request)
4786 27 Apr 18 olle 115   {
4786 27 Apr 18 olle 116     var frm = document.forms['meludi'];  
4786 27 Apr 18 olle 117
4786 27 Apr 18 olle 118     if (debug)
4786 27 Apr 18 olle 119     {
4786 27 Apr 18 olle 120       App.debug(Strings.encodeTags(request.responseText));
4786 27 Apr 18 olle 121     }
4786 27 Apr 18 olle 122     
4786 27 Apr 18 olle 123     var response;
4786 27 Apr 18 olle 124     var error = false;
4786 27 Apr 18 olle 125     try
4786 27 Apr 18 olle 126     {
4786 27 Apr 18 olle 127       response = JSON.parse(request.responseText);
4786 27 Apr 18 olle 128       if (response.status != 'ok')
4786 27 Apr 18 olle 129       {
4786 27 Apr 18 olle 130         error = response.message || response.stacktrace || 'Unexpected error';
4786 27 Apr 18 olle 131       }
4786 27 Apr 18 olle 132     }
4786 27 Apr 18 olle 133     catch (ex)
4786 27 Apr 18 olle 134     {
4786 27 Apr 18 olle 135       error = ex;
4786 27 Apr 18 olle 136     }
4786 27 Apr 18 olle 137     if (error) App.debug(error);
4786 27 Apr 18 olle 138
4786 27 Apr 18 olle 139     // Get configuration result    
4786 27 Apr 18 olle 140     var conf = response.configuration;
4786 27 Apr 18 olle 141     // Check for uses site prefix flag
4786 27 Apr 18 olle 142     usesSitePrefix = conf.usesSitePrefix;
4786 27 Apr 18 olle 143 /*
4786 27 Apr 18 olle 144     // Check for project focus default
4786 27 Apr 18 olle 145     var projectFocusDefault = conf.projectFocusDefault;
4786 27 Apr 18 olle 146     if (projectFocusDefault != null)
4786 27 Apr 18 olle 147     {
4786 27 Apr 18 olle 148       frm.projectFocus.value = projectFocusDefault;
4786 27 Apr 18 olle 149       consent.projectFocusOnChange();
4786 27 Apr 18 olle 150     }
4786 27 Apr 18 olle 151     // Check for specimen type default
4786 27 Apr 18 olle 152     var specimenTypeDefault = conf.specimenTypeDefault;
4786 27 Apr 18 olle 153     if (specimenTypeDefault != null)
4786 27 Apr 18 olle 154     {
4786 27 Apr 18 olle 155       frm.specimenType.value = specimenTypeDefault;
4786 27 Apr 18 olle 156     }
4786 27 Apr 18 olle 157     // Check for specimen input type default
4786 27 Apr 18 olle 158     var specimenInputTypeDefault = conf.specimenInputTypeDefault;
4786 27 Apr 18 olle 159     if (specimenInputTypeDefault != null)
4786 27 Apr 18 olle 160     {
4786 27 Apr 18 olle 161       frm.specimenInputType.value = specimenInputTypeDefault;
4786 27 Apr 18 olle 162     }
4786 27 Apr 18 olle 163     // Check for extracts from first specimen only default
4786 27 Apr 18 olle 164     var extractsFromFirstSpecimenOnlyDefault = conf.extractsFromFirstSpecimenOnlyDefault;
4786 27 Apr 18 olle 165     if (extractsFromFirstSpecimenOnlyDefault != null)
4786 27 Apr 18 olle 166     {
4786 27 Apr 18 olle 167       frm.extractsFromFirstSpecimenOnlyCB.checked = extractsFromFirstSpecimenOnlyDefault;
4786 27 Apr 18 olle 168     }
4786 27 Apr 18 olle 169 */
4786 27 Apr 18 olle 170
4786 27 Apr 18 olle 171     // Continue with initializing info for case
4860 19 Jun 18 olle 172     var url = '../ConsentForm.servlet?ID='+App.getSessionId();
4786 27 Apr 18 olle 173     url += '&cmd=CountCases';
4786 27 Apr 18 olle 174     Wizard.showLoadingAnimation('Loading cases...');
4786 27 Apr 18 olle 175     Wizard.asyncJsonRequest(url, consent.caseInfoLoadedStep1);
4786 27 Apr 18 olle 176   }
4786 27 Apr 18 olle 177
4786 27 Apr 18 olle 178   consent.caseInfoLoadedStep1 = function(response)
4786 27 Apr 18 olle 179   {
4786 27 Apr 18 olle 180     var frm = document.forms['meludi'];  
4786 27 Apr 18 olle 181
4860 19 Jun 18 olle 182     //sampleItemPrefix = response.sampleItemPrefix;
4860 19 Jun 18 olle 183     //sampleItemNumDigits = response.sampleItemNumDigits;
4786 27 Apr 18 olle 184     var nofCases = response.count;
4860 19 Jun 18 olle 185     referralPrefix = response.referralPrefix;
4860 19 Jun 18 olle 186     referralNumDigits = response.referralNumDigits;
4860 19 Jun 18 olle 187 //alert("consentform_alt_rec.js::caseInfoLoadedStep1(): referralPrefix = " + referralPrefix + " referralNumDigits = " + referralNumDigits + " nofCases = " + nofCases);
4860 19 Jun 18 olle 188     //Doc.element('referralIdText').innerHTML = 'The referral ID (barcode) associated with this specimen tube ("' + referralPrefix + '" + ' + referralNumDigits + ' digits).';
4860 19 Jun 18 olle 189     Doc.element('referralIdText').innerHTML = 'The referral ID (barcode) associated with this case ("' + referralPrefix + '" + ' + referralNumDigits + ' digits).';
4786 27 Apr 18 olle 190     
4786 27 Apr 18 olle 191     Doc.show('step-1');
4786 27 Apr 18 olle 192     Doc.show('gonext');
4786 27 Apr 18 olle 193   }
4786 27 Apr 18 olle 194
4786 27 Apr 18 olle 195   /**
4786 27 Apr 18 olle 196     Check that the case number is valid.
4786 27 Apr 18 olle 197   */
4786 27 Apr 18 olle 198   consent.validateStep1 = function(event)
4786 27 Apr 18 olle 199   {
4786 27 Apr 18 olle 200     var frm = document.forms['meludi'];
4786 27 Apr 18 olle 201     
4860 19 Jun 18 olle 202     var referralId = frm.referralId.value;
4860 19 Jun 18 olle 203     var referralIsValid = false;
4860 19 Jun 18 olle 204     Wizard.setInputStatus('referralId');
4860 19 Jun 18 olle 205     if (referralId == '')
4786 27 Apr 18 olle 206     {
4860 19 Jun 18 olle 207       Wizard.setInputStatus('referralId', 'invalid', 'Missing');
4860 19 Jun 18 olle 208       frm.referralId.focus();
4786 27 Apr 18 olle 209     }
4860 19 Jun 18 olle 210     else if (!Meludi.isValidCaseName2(referralId, referralPrefix, referralNumDigits))
4786 27 Apr 18 olle 211     {
4860 19 Jun 18 olle 212       Wizard.setInputStatus('referralId', 'invalid', 'Only name = "' + referralPrefix + '" + ' + referralNumDigits + ' digits is allowed.');
4860 19 Jun 18 olle 213       frm.referralId.focus();
4786 27 Apr 18 olle 214     }
4786 27 Apr 18 olle 215     else
4786 27 Apr 18 olle 216     {
4860 19 Jun 18 olle 217       Wizard.setInputStatus('referralId', 'valid');
4860 19 Jun 18 olle 218       referralIsValid = true;
4786 27 Apr 18 olle 219     }
4786 27 Apr 18 olle 220     
4786 27 Apr 18 olle 221     // If not valid, we prevent the wizard from moving to the next step
4860 19 Jun 18 olle 222     if (!referralIsValid) event.preventDefault();
4786 27 Apr 18 olle 223   }
4786 27 Apr 18 olle 224   
4860 19 Jun 18 olle 225   consent.referralIdOnChange = function()
4860 19 Jun 18 olle 226   {
4860 19 Jun 18 olle 227     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 228     var referralId = frm.referralId.value.toUpperCase();
4860 19 Jun 18 olle 229     referralIsValid = false;
4860 19 Jun 18 olle 230     if (referralId == '')
4860 19 Jun 18 olle 231     {
4860 19 Jun 18 olle 232       Wizard.setInputStatus('referralId', 'invalid', 'Missing');
4860 19 Jun 18 olle 233       frm.referralId.focus();
4860 19 Jun 18 olle 234       return;
4860 19 Jun 18 olle 235     }
4860 19 Jun 18 olle 236     if (!Meludi.isValidCaseName2(referralId, referralPrefix, referralNumDigits))
4860 19 Jun 18 olle 237     {
4860 19 Jun 18 olle 238       Wizard.setInputStatus('referralId', 'invalid', 'Only "' + referralPrefix + '" + ' + referralNumDigits + ' digits is allowed.');
4860 19 Jun 18 olle 239       frm.referralId.focus();
4860 19 Jun 18 olle 240       return;
4860 19 Jun 18 olle 241     }
4860 19 Jun 18 olle 242
4860 19 Jun 18 olle 243     frm.referralId.value = referralId;
4860 19 Jun 18 olle 244     Wizard.setInputStatus('referralId', 'valid');
4860 19 Jun 18 olle 245     referralIsValid = true;
4860 19 Jun 18 olle 246
4860 19 Jun 18 olle 247 /*  
4860 19 Jun 18 olle 248     var url = '../BaseLineRegistration.servlet?ID='+App.getSessionId();
4860 19 Jun 18 olle 249     url += '&cmd=GetCaseInfo&caseName=' + encodeURIComponent(caseName);
4860 19 Jun 18 olle 250     Wizard.showLoadingAnimation('Loading information about case...');
4860 19 Jun 18 olle 251     Wizard.asyncJsonRequest(url, persinfo.onCaseInfoLoaded);
4860 19 Jun 18 olle 252 */
4860 19 Jun 18 olle 253     var url = '../ConsentForm.servlet?ID='+App.getSessionId();
4860 19 Jun 18 olle 254     url += '&cmd=GetCaseInfo';
4860 19 Jun 18 olle 255     url += '&referralId=' + encodeURIComponent(referralId);
4860 19 Jun 18 olle 256     url += '&caseName=';
4860 19 Jun 18 olle 257 //alert("consentform_alt_rec.js::referralIdOnChange(): url = " + url);
4860 19 Jun 18 olle 258     Wizard.showLoadingAnimation('Loading information about case...');
4860 19 Jun 18 olle 259     Wizard.asyncJsonRequest(url, consent.onCaseInfoLoaded);
4860 19 Jun 18 olle 260   }
4860 19 Jun 18 olle 261
4786 27 Apr 18 olle 262   // Check that the date is valid
4786 27 Apr 18 olle 263   consent.validateStep2 = function(event)
4786 27 Apr 18 olle 264   {
4786 27 Apr 18 olle 265     var consentDateIsValid = Wizard.isValid('consentDate');
4786 27 Apr 18 olle 266     if (!consentDateIsValid) event.preventDefault();
4786 27 Apr 18 olle 267   }
4786 27 Apr 18 olle 268   
4786 27 Apr 18 olle 269   /**
4786 27 Apr 18 olle 270     Load information about the given case.
4786 27 Apr 18 olle 271   */
4786 27 Apr 18 olle 272   consent.initializeStep2 = function(event)
4786 27 Apr 18 olle 273   {
4786 27 Apr 18 olle 274     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 275     var referralId = frm.referralId.value;
4860 19 Jun 18 olle 276 //alert("consentform_alt_rec.js::initializeStep2(): referralId = " + referralId);
4786 27 Apr 18 olle 277
4786 27 Apr 18 olle 278     var url = '../ConsentForm.servlet?ID='+App.getSessionId();
4786 27 Apr 18 olle 279     url += '&cmd=GetCaseInfo';
4860 19 Jun 18 olle 280     url += '&referralId=' + encodeURIComponent(referralId);
4860 19 Jun 18 olle 281     url += '&caseName=';
4860 19 Jun 18 olle 282 //alert("consentform_alt_rec.js::initializeStep2(): url = " + url);
4786 27 Apr 18 olle 283     
4786 27 Apr 18 olle 284     Wizard.showLoadingAnimation('Loading case information...');
4786 27 Apr 18 olle 285     Wizard.asyncJsonRequest(url, consent.caseInfoLoaded);
4786 27 Apr 18 olle 286   }
4786 27 Apr 18 olle 287   
4786 27 Apr 18 olle 288   /**
4786 27 Apr 18 olle 289     Initalize the second step based on the information we have about the case.
4786 27 Apr 18 olle 290   */
4786 27 Apr 18 olle 291   consent.caseInfoLoaded = function(response)
4786 27 Apr 18 olle 292   {
4786 27 Apr 18 olle 293     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 294     //var caseName = frm.referralId.value;
4786 27 Apr 18 olle 295     patientInfo = response.patientInfo;
4860 19 Jun 18 olle 296     caseInfo = response.caseInfo;
4860 19 Jun 18 olle 297     var caseName = caseInfo.name;
4786 27 Apr 18 olle 298     var specimenInfo = response.specimenInfo;
4789 04 May 18 olle 299 //alert("consentform_alt_rec.js::caseInfoLoaded(): patientInfo = " + JSON.stringify(patientInfo));
4789 04 May 18 olle 300 //alert("consentform_alt_rec.js::caseInfoLoaded(): caseInfo = " + JSON.stringify(caseInfo));
4789 04 May 18 olle 301 //alert("consentform_alt_rec.js::caseInfoLoaded(): specimenInfo = " + JSON.stringify(specimenInfo));
4789 04 May 18 olle 302     var hasPAD = false;
4786 27 Apr 18 olle 303
4786 27 Apr 18 olle 304     sampleItemPrefix = response.sampleItemPrefix;
4786 27 Apr 18 olle 305     sampleItemNumDigits = response.sampleItemNumDigits;
4860 19 Jun 18 olle 306     
4860 19 Jun 18 olle 307     frm.caseName.value = caseName;
4786 27 Apr 18 olle 308
4786 27 Apr 18 olle 309     if (patientInfo)
4786 27 Apr 18 olle 310     {
4786 27 Apr 18 olle 311       var moreCasesHtml = '';
4786 27 Apr 18 olle 312       var numMissing = 0;
4786 27 Apr 18 olle 313
4786 27 Apr 18 olle 314       if (patientInfo.allCases)
4786 27 Apr 18 olle 315       {
4786 27 Apr 18 olle 316         for (var i = 0; i < patientInfo.allCases.length; i++)
4786 27 Apr 18 olle 317         {
4786 27 Apr 18 olle 318           var c = patientInfo.allCases[i];
4786 27 Apr 18 olle 319           //var laterality = c.laterality ? ' ('+c.laterality+')' : '';
4786 27 Apr 18 olle 320           var checked = '';
4786 27 Apr 18 olle 321           if (!c.consent)
4786 27 Apr 18 olle 322           {
4786 27 Apr 18 olle 323             checked = 'checked';
4786 27 Apr 18 olle 324             numMissing++;
4786 27 Apr 18 olle 325           }
4786 27 Apr 18 olle 326           
4786 27 Apr 18 olle 327           if (c.name == caseName && c.consentDate)
4786 27 Apr 18 olle 328           {
4786 27 Apr 18 olle 329             frm.consentDate.value = c.consentDate;
4786 27 Apr 18 olle 330           }
4786 27 Apr 18 olle 331           moreCasesHtml += '<input type="checkbox" name="case.'+c.id+'" id="case.'+c.id+'" ' + checked +'>';
4786 27 Apr 18 olle 332           //moreCasesHtml += '<label for="case.'+c.id+'">Case: ' + Strings.encodeTags(c.name + laterality) + '</label><br>';
4786 27 Apr 18 olle 333         }
4786 27 Apr 18 olle 334       }
4786 27 Apr 18 olle 335
4786 27 Apr 18 olle 336
4786 27 Apr 18 olle 337 /*      
4786 27 Apr 18 olle 338       if (patientInfo.allBlood)
4786 27 Apr 18 olle 339       {
4786 27 Apr 18 olle 340         for (var i = 0; i < patientInfo.allBlood.length; i++)
4786 27 Apr 18 olle 341         {
4786 27 Apr 18 olle 342           var c = patientInfo.allBlood[i];
4786 27 Apr 18 olle 343           var checked = '';
4786 27 Apr 18 olle 344           if (!c.consent)
4786 27 Apr 18 olle 345           {
4786 27 Apr 18 olle 346             checked = 'checked';
4786 27 Apr 18 olle 347             numMissing++;
4786 27 Apr 18 olle 348           }
4786 27 Apr 18 olle 349           if (c.name.indexOf(caseName) == 0 && c.consentDate)
4786 27 Apr 18 olle 350           {
4786 27 Apr 18 olle 351             frm.consentDate.value = c.consentDate;
4786 27 Apr 18 olle 352           }
4786 27 Apr 18 olle 353           moreCasesHtml += '<input type="checkbox" name="blood.'+ c.id + '" id="blood.'+c.id+'" ' + checked +'>';
4786 27 Apr 18 olle 354           moreCasesHtml += '<label for="blood.'+c.id+'">Blood: ' + Strings.encodeTags(c.name) + '</label><br>';
4786 27 Apr 18 olle 355         }
4786 27 Apr 18 olle 356       }
4786 27 Apr 18 olle 357 */
4786 27 Apr 18 olle 358
4786 27 Apr 18 olle 359       consent.enableConsentOption('consent.yes', true);
4786 27 Apr 18 olle 360       Doc.element('moreCases').innerHTML = moreCasesHtml;
4786 27 Apr 18 olle 361       Doc.show('moreCasesSection');
4786 27 Apr 18 olle 362
4786 27 Apr 18 olle 363       if (numMissing > 0)
4786 27 Apr 18 olle 364       {
4786 27 Apr 18 olle 365         Wizard.setInputStatus('consent', 'valid', 'This patient already exists and has at least one case or blood sample with missing consent.');
4786 27 Apr 18 olle 366       }
4786 27 Apr 18 olle 367       else
4786 27 Apr 18 olle 368       {
4786 27 Apr 18 olle 369         Wizard.setInputStatus('consent', 'valid', '"Yes" has already been registered for all case and blood samples for this patient.');
4786 27 Apr 18 olle 370       }
4786 27 Apr 18 olle 371       Doc.show('morehelp.multiple', 'inline');
4786 27 Apr 18 olle 372       Doc.show('morehelp.yesonly', 'inline');
4860 19 Jun 18 olle 373       //Doc.show('gocancel');
4860 19 Jun 18 olle 374       //Doc.show('goregister');
4786 27 Apr 18 olle 375
4860 19 Jun 18 olle 376       if (patientInfo.personalNumber)
4860 19 Jun 18 olle 377       {
4860 19 Jun 18 olle 378         frm.personalNumber.value = patientInfo.personalNumber;
4860 19 Jun 18 olle 379         frm.familyName.value = patientInfo.familyName;
4860 19 Jun 18 olle 380         frm.allFirstNames.value = patientInfo.allFirstNames;
4860 19 Jun 18 olle 381       }
4786 27 Apr 18 olle 382     }
4860 19 Jun 18 olle 383     if (caseInfo)
4786 27 Apr 18 olle 384     {
4786 27 Apr 18 olle 385       if (caseInfo.consent)
4786 27 Apr 18 olle 386       {
4786 27 Apr 18 olle 387         // A consent has already been registered for this case
4786 27 Apr 18 olle 388         // We do not support updating this
4786 27 Apr 18 olle 389         consent.enableConsentOption(consentToId[caseInfo.consent], true);
4786 27 Apr 18 olle 390         Wizard.setInputStatus('consent', '', '"' + caseInfo.consent + '" has already been registered for this case. It is not possible to change with this wizard.');
4786 27 Apr 18 olle 391         if (caseInfo.consentDate)
4786 27 Apr 18 olle 392         {
4786 27 Apr 18 olle 393           frm.consentDate.value = caseInfo.consentDate;
4786 27 Apr 18 olle 394           frm.consentDate.disabled = true;
4786 27 Apr 18 olle 395         }
4786 27 Apr 18 olle 396         Doc.show('gorestart');
4786 27 Apr 18 olle 397       }
4786 27 Apr 18 olle 398       else
4786 27 Apr 18 olle 399       {
4786 27 Apr 18 olle 400         consent.enableConsentOption('consent.no', true);
4786 27 Apr 18 olle 401         consent.enableConsentOption('consent.notAsked');
4786 27 Apr 18 olle 402         consent.enableConsentOption('consent.yes');
4786 27 Apr 18 olle 403         if (caseInfo.consentDate)
4786 27 Apr 18 olle 404         {
4786 27 Apr 18 olle 405           frm.consentDate.value = caseInfo.consentDate;
4786 27 Apr 18 olle 406           frm.consentDate.disabled = true;
4786 27 Apr 18 olle 407         }
4786 27 Apr 18 olle 408         Doc.show('morehelp.any', 'inline');
4860 19 Jun 18 olle 409         //Doc.show('gocancel');
4860 19 Jun 18 olle 410         //Doc.show('goregister');
4860 19 Jun 18 olle 411         Doc.show('step-2');
4860 19 Jun 18 olle 412         Doc.show('gonext');
4786 27 Apr 18 olle 413       }
4786 27 Apr 18 olle 414     }
4786 27 Apr 18 olle 415     else if (specimenInfo)
4786 27 Apr 18 olle 416     {
4789 04 May 18 olle 417       if (specimen.pad && !hasPAD) 
4789 04 May 18 olle 418       {
4789 04 May 18 olle 419         hasPAD = true;
4789 04 May 18 olle 420         thisCasePAD = specimen.pad;
4789 04 May 18 olle 421       }
4786 27 Apr 18 olle 422       // There is no existing case but there are specimen related to it
4786 27 Apr 18 olle 423       // This wizard will only allow 'Yes' option on the consent form
4786 27 Apr 18 olle 424       consent.enableConsentOption('consent.yes', true);
4786 27 Apr 18 olle 425       Wizard.setInputStatus('consent', 'valid', 'Specimen tubes for this case already exists.');
4786 27 Apr 18 olle 426       Doc.show('morehelp.yesonly', 'inline');
4860 19 Jun 18 olle 427       //Doc.show('gocancel');
4860 19 Jun 18 olle 428       //Doc.show('goregister');
4860 19 Jun 18 olle 429       Doc.show('step-2');
4860 19 Jun 18 olle 430       Doc.show('gonext');
4786 27 Apr 18 olle 431     }
4786 27 Apr 18 olle 432     else
4786 27 Apr 18 olle 433     {
4786 27 Apr 18 olle 434       // We have no information about this case -- but allow a consent to be registered in any case
4786 27 Apr 18 olle 435       consent.enableConsentOption('consent.no', true);
4786 27 Apr 18 olle 436       consent.enableConsentOption('consent.notAsked');
4786 27 Apr 18 olle 437       consent.enableConsentOption('consent.yes');
4786 27 Apr 18 olle 438       Doc.show('morehelp.any', 'inline');
4860 19 Jun 18 olle 439       //Doc.show('gocancel');
4860 19 Jun 18 olle 440       //Doc.show('goregister');
4860 19 Jun 18 olle 441       Doc.show('step-2');
4860 19 Jun 18 olle 442       Doc.show('gonext');
4786 27 Apr 18 olle 443     }
4786 27 Apr 18 olle 444
4786 27 Apr 18 olle 445     Wizard.setCurrentStep(2);
4860 19 Jun 18 olle 446     if (!frm.consentDate.disabled) frm.consentDate.focus();    
4860 19 Jun 18 olle 447   }
4860 19 Jun 18 olle 448   
4860 19 Jun 18 olle 449   consent.personalNumberOnChange = function()
4860 19 Jun 18 olle 450   {
4860 19 Jun 18 olle 451     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 452     var pnr = frm.personalNumber.value;
4860 19 Jun 18 olle 453     pnrIsValid = false;
4860 19 Jun 18 olle 454     pnrIsAcceptable = true;
4786 27 Apr 18 olle 455     
4860 19 Jun 18 olle 456     var pnrLen = pnr.length;
4860 19 Jun 18 olle 457     if (pnrLen != 12 && pnrLen != 10)
4860 19 Jun 18 olle 458     {
4860 19 Jun 18 olle 459       Wizard.setInputStatus('personalNumber', 'warning', pnrLen < 12 ? 'Too short' : 'Too long');
4860 19 Jun 18 olle 460       return;
4860 19 Jun 18 olle 461     }
4860 19 Jun 18 olle 462
4860 19 Jun 18 olle 463     if (!pnr.match(/^\d+$/))
4860 19 Jun 18 olle 464     {
4860 19 Jun 18 olle 465       Wizard.setInputStatus('personalNumber', 'warning', 'Non-standard personal number');
4860 19 Jun 18 olle 466       return;
4860 19 Jun 18 olle 467     }
4860 19 Jun 18 olle 468     
4860 19 Jun 18 olle 469     var datePart = pnr.substring(0, pnrLen - 4); // Remove last four digits
4860 19 Jun 18 olle 470     var dateFormat = pnrLen == 10 ? 'yyMMdd' : 'yyyyMMdd';
4860 19 Jun 18 olle 471     var isValidDate = Dates.isDate(datePart, dateFormat);
4860 19 Jun 18 olle 472     if (!isValidDate)
4860 19 Jun 18 olle 473     {
4860 19 Jun 18 olle 474       var dayInMonth = parseInt(datePart.substring(-2), 10); // Last two characters
4860 19 Jun 18 olle 475       if (dayInMonth > 60)
4860 19 Jun 18 olle 476       {
4860 19 Jun 18 olle 477         // 'Samordningsnummer' has day-in-month + 60; check this
4860 19 Jun 18 olle 478         dayInMonth -= 60;
4860 19 Jun 18 olle 479         var tmpPnr = pnr.substring(0, pnrLen - 6); // First 4 or 6 digits is year+month
4860 19 Jun 18 olle 480         if (dayInMonth < 10) tmpPnr += '0';
4860 19 Jun 18 olle 481         tmpPnr += dayInMonth;
4860 19 Jun 18 olle 482         isValidDate = Dates.isDate(tmpPnr, dateFormat);
4860 19 Jun 18 olle 483       }
4860 19 Jun 18 olle 484     }
4860 19 Jun 18 olle 485     if (!isValidDate)
4860 19 Jun 18 olle 486     {
4860 19 Jun 18 olle 487       Wizard.setInputStatus('personalNumber', 'warning', 'Not a valid date');
4860 19 Jun 18 olle 488       return;
4860 19 Jun 18 olle 489     }
4860 19 Jun 18 olle 490     
4860 19 Jun 18 olle 491     if (!Meludi.personalNumberControlDigitCheck(pnr.substr(pnrLen == 10 ? 0 : 2)))
4860 19 Jun 18 olle 492     {
4860 19 Jun 18 olle 493       Wizard.setInputStatus('personalNumber', 'warning', 'Invalid control digit');
4860 19 Jun 18 olle 494       return;
4860 19 Jun 18 olle 495     }
4860 19 Jun 18 olle 496
4860 19 Jun 18 olle 497     Wizard.setInputStatus('personalNumber', 'valid');
4860 19 Jun 18 olle 498     pnrIsValid = true;
4860 19 Jun 18 olle 499     Wizard.hideGoNextConfirmation();
4786 27 Apr 18 olle 500   }
4860 19 Jun 18 olle 501
4860 19 Jun 18 olle 502   consent.initializeStep3 = function(event)
4860 19 Jun 18 olle 503   {
4860 19 Jun 18 olle 504     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 505     var pnr = frm.personalNumber.value;
4860 19 Jun 18 olle 506     if (pnr.length == 10 && pnrIsValid) 
4860 19 Jun 18 olle 507     {
4860 19 Jun 18 olle 508       var year = Meludi.fullYear(parseInt(pnr.substr(0, 2), 10));
4860 19 Jun 18 olle 509       pnr = year + pnr.substr(2);
4860 19 Jun 18 olle 510     }
4786 27 Apr 18 olle 511   
4860 19 Jun 18 olle 512     var url = '../ConsentForm.servlet?ID='+App.getSessionId();
4860 19 Jun 18 olle 513     url += '&cmd=GetPatientInfo';
4860 19 Jun 18 olle 514     url += '&personalNumber=' + encodeURIComponent(pnr);
4860 19 Jun 18 olle 515     url += '&pnrIsValid=' + pnrIsValid;
4860 19 Jun 18 olle 516
4860 19 Jun 18 olle 517     Wizard.showLoadingAnimation('Loading patient information...');
4860 19 Jun 18 olle 518     Wizard.asyncJsonRequest(url, consent.patientInfoLoaded);
4860 19 Jun 18 olle 519   }
4860 19 Jun 18 olle 520
4786 27 Apr 18 olle 521   
4860 19 Jun 18 olle 522   consent.patientInfoLoaded = function(response)
4860 19 Jun 18 olle 523   {
4860 19 Jun 18 olle 524     Wizard.setCurrentStep(3);
4860 19 Jun 18 olle 525     // Get patient information from the AJAX response
4860 19 Jun 18 olle 526     patientInfo = response.patientInfo;
4860 19 Jun 18 olle 527     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 528
4860 19 Jun 18 olle 529
4860 19 Jun 18 olle 530     frm.patientCode.value=patientInfo.name;
4860 19 Jun 18 olle 531     frm.familyName.value = patientInfo.familyName || '';
4860 19 Jun 18 olle 532     frm.allFirstNames.value = patientInfo.allFirstNames || '';
4860 19 Jun 18 olle 533     Doc.element('dateOfBirth').innerHTML = patientInfo.dateOfBirth ? Strings.encodeTags(patientInfo.dateOfBirth) : '---';
4860 19 Jun 18 olle 534     Doc.element('gender').innerHTML = patientInfo.gender ? Strings.encodeTags(patientInfo.gender) : '---';
4860 19 Jun 18 olle 535     frm.familyName.focus();
4860 19 Jun 18 olle 536
4860 19 Jun 18 olle 537     if (!patientInfo.id)
4860 19 Jun 18 olle 538     {
4860 19 Jun 18 olle 539       if (!pnrIsValid)
4860 19 Jun 18 olle 540       {
4860 19 Jun 18 olle 541         Wizard.setInputStatus('gender', 'warning', 'Gender and DateOfBirth can\'t be automatically generated for non-standard Personal number');
4860 19 Jun 18 olle 542       }
4860 19 Jun 18 olle 543     }
4860 19 Jun 18 olle 544     else
4860 19 Jun 18 olle 545     {
4860 19 Jun 18 olle 546       Doc.element('step-3-title').innerHTML = 'Existing patient: Verify names';
4860 19 Jun 18 olle 547       frm.patientCode.disabled = true;
4860 19 Jun 18 olle 548     }
4860 19 Jun 18 olle 549     
4860 19 Jun 18 olle 550     //Doc.show('gonext');
4860 19 Jun 18 olle 551     //Doc.show('gocancel');    
4860 19 Jun 18 olle 552     Doc.show('gocancel');
4860 19 Jun 18 olle 553     Doc.show('goregister');
4860 19 Jun 18 olle 554   }
4860 19 Jun 18 olle 555   
4860 19 Jun 18 olle 556   consent.nameOnChange = function(event)
4860 19 Jun 18 olle 557   {
4860 19 Jun 18 olle 558     var field = event.target;
4860 19 Jun 18 olle 559     patientInfo[field.name] = field.value;
4860 19 Jun 18 olle 560     if (field.value == '')
4860 19 Jun 18 olle 561     {
4860 19 Jun 18 olle 562       Wizard.setInputStatus(field, 'warning', 'Missing');
4860 19 Jun 18 olle 563     }
4860 19 Jun 18 olle 564     else
4860 19 Jun 18 olle 565     {
4860 19 Jun 18 olle 566       Wizard.setInputStatus(field, 'valid');
4860 19 Jun 18 olle 567       Wizard.hideGoNextConfirmation();
4860 19 Jun 18 olle 568     }
4860 19 Jun 18 olle 569   }
4860 19 Jun 18 olle 570
4860 19 Jun 18 olle 571   consent.validateStep3 = function(event)
4860 19 Jun 18 olle 572   {
4860 19 Jun 18 olle 573     var valid = true;
4860 19 Jun 18 olle 574     var acceptable = true;
4860 19 Jun 18 olle 575     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 576
4860 19 Jun 18 olle 577     if (frm.allFirstNames.value == '')
4860 19 Jun 18 olle 578     {
4860 19 Jun 18 olle 579       Wizard.setInputStatus('allFirstNames', 'warning', 'Missing');
4860 19 Jun 18 olle 580       valid = false;
4860 19 Jun 18 olle 581     }
4860 19 Jun 18 olle 582     else
4860 19 Jun 18 olle 583     {
4860 19 Jun 18 olle 584       Wizard.setInputStatus('allFirstNames', 'valid');
4860 19 Jun 18 olle 585     }
4860 19 Jun 18 olle 586     
4860 19 Jun 18 olle 587     if (frm.familyName.value == '')
4860 19 Jun 18 olle 588     {
4860 19 Jun 18 olle 589       Wizard.setInputStatus('familyName', 'warning', 'Missing');
4860 19 Jun 18 olle 590       valid = false;
4860 19 Jun 18 olle 591     }
4860 19 Jun 18 olle 592     else
4860 19 Jun 18 olle 593     {
4860 19 Jun 18 olle 594       Wizard.setInputStatus('familyName', 'valid');
4860 19 Jun 18 olle 595     }
4860 19 Jun 18 olle 596
4860 19 Jun 18 olle 597     // New patient only
4860 19 Jun 18 olle 598     if (!patientInfo.id)
4860 19 Jun 18 olle 599     {
4860 19 Jun 18 olle 600       if (frm.patientCode.value == '')
4860 19 Jun 18 olle 601       {
4860 19 Jun 18 olle 602         Wizard.setInputStatus('patientCode', 'invalid', 'Missing');
4860 19 Jun 18 olle 603         frm.patientCode.focus();
4860 19 Jun 18 olle 604         valid = false;
4860 19 Jun 18 olle 605         acceptable = false;
4860 19 Jun 18 olle 606       }
4860 19 Jun 18 olle 607       else
4860 19 Jun 18 olle 608       {
4860 19 Jun 18 olle 609         Wizard.setInputStatus('patientCode', 'valid');
4860 19 Jun 18 olle 610         patientInfo.name = frm.patientCode.value;
4860 19 Jun 18 olle 611       }  
4860 19 Jun 18 olle 612     }
4860 19 Jun 18 olle 613
4860 19 Jun 18 olle 614 /*    
4860 19 Jun 18 olle 615     if (event.detail.auto)
4860 19 Jun 18 olle 616     {
4860 19 Jun 18 olle 617       if (!valid)
4860 19 Jun 18 olle 618       {
4860 19 Jun 18 olle 619         Wizard.showGoNextConfirmation(true, 'Check to verify registration with missing name(s).');
4860 19 Jun 18 olle 620         event.preventDefault();
4860 19 Jun 18 olle 621       }
4860 19 Jun 18 olle 622     }
4860 19 Jun 18 olle 623     else
4860 19 Jun 18 olle 624     {
4860 19 Jun 18 olle 625       if (!acceptable) event.preventDefault();
4860 19 Jun 18 olle 626     }  
4860 19 Jun 18 olle 627 */  
4860 19 Jun 18 olle 628     if (!acceptable) event.preventDefault();
4860 19 Jun 18 olle 629   }
4860 19 Jun 18 olle 630   
4786 27 Apr 18 olle 631   consent.submit = function()
4786 27 Apr 18 olle 632   {
4786 27 Apr 18 olle 633     
4786 27 Apr 18 olle 634     var frm = document.forms['meludi'];
4860 19 Jun 18 olle 635     var updateMode = caseInfo.id;
4786 27 Apr 18 olle 636
4786 27 Apr 18 olle 637     var consentInfo = {};
4860 19 Jun 18 olle 638     consentInfo.referralId = frm.referralId.value;
4786 27 Apr 18 olle 639     consentInfo.caseName = frm.caseName.value;
4786 27 Apr 18 olle 640     consentInfo.consentDate = frm.consentDate.value;
4786 27 Apr 18 olle 641     consentInfo.consent = Forms.getCheckedRadio(frm.consent).value;
4786 27 Apr 18 olle 642     if (consentInfo.consent == 'Not asked')
4786 27 Apr 18 olle 643     {
4786 27 Apr 18 olle 644       var reasonIfNotAsked = '';
4786 27 Apr 18 olle 645       for (var i = 0; i < frm.reasonIfNotAsked.length; i++)
4786 27 Apr 18 olle 646       {
4786 27 Apr 18 olle 647         var option = frm.reasonIfNotAsked[i];
4786 27 Apr 18 olle 648         if (option.checked)
4786 27 Apr 18 olle 649         {
4786 27 Apr 18 olle 650           if (option.id == 'notAsked.other')
4786 27 Apr 18 olle 651           {
4786 27 Apr 18 olle 652             reasonIfNotAsked += frm.otherReasonIfNotAsked.value;
4786 27 Apr 18 olle 653           }
4786 27 Apr 18 olle 654           else
4786 27 Apr 18 olle 655           {
4786 27 Apr 18 olle 656             var label = Doc.element(option.id + '.label');
4786 27 Apr 18 olle 657             reasonIfNotAsked += label.innerHTML + '\n';
4786 27 Apr 18 olle 658           }
4786 27 Apr 18 olle 659         }
4786 27 Apr 18 olle 660       }
4786 27 Apr 18 olle 661       consentInfo.reasonIfNotAsked = reasonIfNotAsked;
4786 27 Apr 18 olle 662     }
4879 27 Jun 18 olle 663     consentInfo.diagnosisConfirmed = frm.diagnosisConfirmedCB.value;
4786 27 Apr 18 olle 664     
4786 27 Apr 18 olle 665     if (patientInfo)
4786 27 Apr 18 olle 666     {
4786 27 Apr 18 olle 667       var selectedSamples = [];
4786 27 Apr 18 olle 668       if (patientInfo.allCases)
4786 27 Apr 18 olle 669       {
4786 27 Apr 18 olle 670         for (var i = 0; i < patientInfo.allCases.length; i++)
4786 27 Apr 18 olle 671         {
4786 27 Apr 18 olle 672           var c = patientInfo.allCases[i];
4786 27 Apr 18 olle 673           var chk = frm['case.'+c.id];
4786 27 Apr 18 olle 674           if (chk.checked) selectedSamples.push(c.id);
4786 27 Apr 18 olle 675         }
4786 27 Apr 18 olle 676       }
4786 27 Apr 18 olle 677       
4786 27 Apr 18 olle 678       if (patientInfo.allBlood)
4786 27 Apr 18 olle 679       {
4786 27 Apr 18 olle 680         for (var i = 0; i < patientInfo.allBlood.length; i++)
4786 27 Apr 18 olle 681         {
4786 27 Apr 18 olle 682           var c = patientInfo.allBlood[i];
4786 27 Apr 18 olle 683           var chk = frm['blood.'+c.id];
4786 27 Apr 18 olle 684           if (chk.checked) selectedSamples.push(c.id);
4786 27 Apr 18 olle 685         }
4786 27 Apr 18 olle 686       }
4786 27 Apr 18 olle 687       consentInfo.selectedSamples = selectedSamples;
4786 27 Apr 18 olle 688     }
4860 19 Jun 18 olle 689     else
4860 19 Jun 18 olle 690     {
4860 19 Jun 18 olle 691       patientInfo.name = frm.patientCode.value;
4860 19 Jun 18 olle 692       patientInfo.personalNumber = frm.personalNumber.value;
4860 19 Jun 18 olle 693       patientInfo.familyName = frm.familyName.value;
4860 19 Jun 18 olle 694       patientInfo.allFirstNames = frm.allFirstNames.value;
4860 19 Jun 18 olle 695     }
4786 27 Apr 18 olle 696
4786 27 Apr 18 olle 697     var submitInfo = {};
4786 27 Apr 18 olle 698     submitInfo.consentInfo = consentInfo;
4860 19 Jun 18 olle 699     submitInfo.patientInfo = patientInfo;
4786 27 Apr 18 olle 700     
4786 27 Apr 18 olle 701     var url = '../ConsentForm.servlet?ID=' + App.getSessionId();
4786 27 Apr 18 olle 702     url += '&cmd=RegisterConsent';
4786 27 Apr 18 olle 703     
4786 27 Apr 18 olle 704     Wizard.showLoadingAnimation('Registering consent information...');
4786 27 Apr 18 olle 705     Wizard.asyncJsonRequest(url, consent.submissionResults, 'POST', JSON.stringify(submitInfo));
4786 27 Apr 18 olle 706   }
4786 27 Apr 18 olle 707
4786 27 Apr 18 olle 708   
4786 27 Apr 18 olle 709   consent.submissionResults = function(response)
4786 27 Apr 18 olle 710   {
4786 27 Apr 18 olle 711     Wizard.showFinalMessage(response.messages);
4786 27 Apr 18 olle 712     Doc.show('gorestart');
4786 27 Apr 18 olle 713   }
4786 27 Apr 18 olle 714
4786 27 Apr 18 olle 715   consent.enableConsentOption = function(option, checkIt)
4786 27 Apr 18 olle 716   {
4786 27 Apr 18 olle 717     option = Doc.element(option); // The radio button
4786 27 Apr 18 olle 718     option.disabled = false;
4786 27 Apr 18 olle 719     if (checkIt) option.checked = true;
4786 27 Apr 18 olle 720     
4786 27 Apr 18 olle 721     var label = Doc.element(option.id + '.label'); // The label
4786 27 Apr 18 olle 722     Doc.removeClass(label, 'disabled');
4786 27 Apr 18 olle 723   }
4786 27 Apr 18 olle 724
4786 27 Apr 18 olle 725
4786 27 Apr 18 olle 726
4786 27 Apr 18 olle 727   consent.consentOnChange = function()
4786 27 Apr 18 olle 728   {
4786 27 Apr 18 olle 729     // If "Not asked" is selected we must enable the second question
4786 27 Apr 18 olle 730     var isAsked = !Doc.element('consent.notAsked').checked;
4786 27 Apr 18 olle 731     
4786 27 Apr 18 olle 732     var frm = document.forms['meludi'];
4786 27 Apr 18 olle 733     var reasonIfNotAsked = frm.reasonIfNotAsked;
4786 27 Apr 18 olle 734     for (var i = 0; i < reasonIfNotAsked.length; i++)
4786 27 Apr 18 olle 735     {
4786 27 Apr 18 olle 736       reasonIfNotAsked[i].disabled = isAsked;
4786 27 Apr 18 olle 737       Doc.addOrRemoveClass(reasonIfNotAsked[i].id + '.label', 'disabled', isAsked);
4786 27 Apr 18 olle 738     }
4786 27 Apr 18 olle 739     frm.otherReasonIfNotAsked.disabled = isAsked;    
4786 27 Apr 18 olle 740   }
4786 27 Apr 18 olle 741   
4786 27 Apr 18 olle 742   consent.onOtherReasonFocus = function()
4786 27 Apr 18 olle 743   {
4786 27 Apr 18 olle 744     Doc.element('notAsked.other').checked = true;
4786 27 Apr 18 olle 745   }
4786 27 Apr 18 olle 746
4786 27 Apr 18 olle 747   return consent;
4786 27 Apr 18 olle 748 }();
4786 27 Apr 18 olle 749
4786 27 Apr 18 olle 750 Doc.onLoad(Consent.initPage);
4786 27 Apr 18 olle 751