CINXE.COM
EUSurvey - Survey
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xml:lang="EN" lang="EN"> <head> <title>EUSurvey - Survey</title> <meta property="og:title" content="The Rural Pact: Commitment Canvas"></meta> <meta charset="utf-8"></meta> <meta http-equiv="X-UA-Compatible" content="IE=edge"></meta> <meta name="viewport" content="width=device-width, initial-scale=1"></meta> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta> <meta http-equiv="Pragma" content="no-cache, no-store"></meta> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"></meta> <meta http-equiv="Expires" content="-1"></meta> <meta name="_csrf" content="322785ce-5f60-418d-b703-379db0137212"/> <meta name="_csrf_header" content="X-CSRF-TOKEN"/> <meta name="Description" content="EUSurvey is an online survey-management system built for the creation and publishing of globally accessible forms, such as user satisfaction surveys and public consultations." /> <meta name="robots" content="noindex"></meta> <link href="/eusurvey/resources/css/jquery-ui.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/jquery-ui.structure.min.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/jquery-ui.theme.min.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/common.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/bootstrap-slider.min.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/Chart.min.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/bootstrap.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/common-extension.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <style type="text/css"> /* html { overflow: hidden; } */ #participantsstatic thead { background-color: #fff; } @font-face { font-family: 'steinerregular'; src: url('/eusurvey/resources/fonts/steinerlight-webfont.eot'); src: url('/eusurvey/resources/fonts/steinerlight-webfont.eot?#iefix') format('embedded-opentype'), url('/eusurvey/resources/fonts/steinerlight-webfont.woff') format('woff'), url('/eusurvey/resources/fonts/steinerlight-webfont.ttf') format('truetype'), url('/eusurvey/resources/fonts/steinerlight-webfont.svg#steinerregular') format('svg'); font-weight: normal; font-style: normal; } </style> <meta itemprop="image" content="/eusurvey/resources/images/favicon5.ico" /> <link rel="shortcut icon" href="/eusurvey/resources/images/favicon5.ico" type="image/x-icon"></link> <meta name="google-site-verification" content="VJsdHVpjHp_2oE-jFxDLuRw_S7I8_T_mWKhn8jRbv8I" /> <script type='text/javascript' src='/eusurvey/resources/js/knockout-3.5.1.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311'></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery-1.12.3.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery-ui.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.ui.touch-punch.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/spin.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.hotkeys.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/bootstrap.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.addplaceholder.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.validate.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/scroll-sneak.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/system.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script defer="defer" src="https://europa.eu/webtools/load.js" type="text/javascript"></script> <script type="application/json">{ "utility": "cck" }</script> <script type="text/javascript" src="/eusurvey/resources/js/bootstrap-slider.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/tinymce/jquery.tinymce.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/tinymce/tinymce.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/Chart.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/chartjs-plugin-colorschemes.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/math.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript"> //if (top != self) top.location=location; var contextpath = "/eusurvey"; var isresponsive = false; var isdelphi = false; var isevote = false; var delphiStartPageUrl = '/eusurvey/runner/TheRuralPactCommitmentCanvas?'; var maxEVoteCandidates = "20" var unsavedChangesText = "You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes"; var requiredText = "This field is required."; var requiredTextNewSurvey = "This field is required."; var requiredTextNewSurveyReverse = "This field is required."; var confirmationMarkupError = "The metadata or ID '{0}' is not valid. "; var nomatchText = "The two values do not match"; var shortnameText = "Alias must be composed of lowercase and uppercase letters (a-z and A-Z), numbers (0-9), hyphens and underscores only."; var shortnameText2 = "Please do not use more than one hyphen in a row"; var shortnameText3 = "Your survey alias may only contain alphanumeric characters (A-Z, a-z, 0-9), underscores and hyphens."; var textnotlongenoughText = "This text is not long enough"; var texttoolongText = "This text is too long"; var bracketCountNotMatching = "The number of '{' and '}' in your text is not equal"; var texttoolong5000Text = "This question type does not allow more than 5000 characters"; var invalidnumberText = "This value is not a valid number"; var invalidCharacter = "Invalid (non UTF-8) characters detected. Please check your input."; var valuetoosmall = "This value is too small"; var valuetoolarge = "This value is too large"; var timevaluetoosmall = "Entered time is smaller than the requested range."; var timevaluetoolarge = "Entered time is greater than the requested range."; var notenoughanswers = "Not enough selections"; var toomanyanswers = "Too many selections"; var noRegExmatchText = "The value does not match the defined pattern"; var invalidDate = "This value is not a valid date"; var invalidTime = "Invalid time format. Enter a time in the format 'HH:mm:ss'."; var invalidEmail = "This is not a valid e-mail address"; var invalidCaseId = "This is not a valid contribution id"; var invalidStartEnd = "The end date must be later than the start date"; var invalidStartEndTime = "The end time must be later than the start time"; var interdependentText = "You can select each value only once"; var invalidURL = "This is not a valid URL"; var invalidPrecisionText = "decimal precision limited to {0}"; var invalidXHTML = "Your input cannot be processed (XHMTL invalid)"; var serverPrefix='https://ec.europa.eu/eusurvey/';//+'runner/'; var selectFileForUploadRunner = "Select file to upload"; var selectFilesForUpload = "Select file(s) to upload"; var uploadASkin = "Upload a skin"; var globalLanguage = 'en'; var questionTextLabel = "Question Text"; var typeLabel = "Type"; var ignoreLabel = "Ignore"; var sectionTitleLabel = "Section Title"; var alternativeTextLabel = "Alternative Text"; var modifyElementLabel = "Modify element"; var deleteElementLabel = "delete element"; var cutElementLabel = "cut element"; var copyElementLabel = "copy element"; var weakPasswordText = "Please choose a password between 8 and 16 characters with at least one digit and one non-alphanumeric character (e.g. !?$%...)."; var shortnameAlreadyExists = "A survey with this alias already exists."; var endNotificationAutomatedPublishing = "Automatic Publishing must be activated to use the End Notification feature"; var allValues = "All Values"; var checkXHTMLValidityError = "It was not possible to access the server to validate the text."; var mandatoryLabel = "Mandatory"; var optionalLabel = "Optional"; var invalidFileError = "The file is not valid."; var IndentElementLabel = "Indent element"; var LabelExternalImage = "Warning: Using resources from another location represents a security and integrity risk for your survey."; var UnindentElementLabel = "Unindent element"; var notenoughrowsanswerederror = "You did not answer enough rows."; var toomanyrowsanswerederror = "You answered too many rows."; var honeypotError = "If you are human please remove the text from this text box"; var clearLabel = "Clear Value"; var cancelLabel = "Cancel"; var showLabel = "Show"; var atLeast3Characters = "Search strings have to be at least 3 characters"; var loginExistsError = "This login already exists. Please choose a unique login."; var message_Export1 = "Export started successfully. It can be accessed via the"; var label_ExportPage = "Export Page"; var message_PublicationExportSuccess = "You will receive a link to the file by mail as soon as it is available"; var message_PublicationExportSuccess2 = "You will receive the file by mail to {0} as soon as it is available"; var message_ExportFailed = "Export failed."; var message_PublicationExportFailed = "It was not possible to create the file. Please contact the helpdesk."; var message_SuccessMailLinkDraft = "E-mail sent successfully"; var message_FailedMailLinkDraft = "An error occurred when sending you an e-mail, please try later."; var atmost3Selections = "Please select at most 3 answers"; var varExceptionDuringSave = "There was an error during saving:"; var varwaitfordependencies = "Loading dependent questions..."; var varErrorCheckValidation = "Please check for validation errors"; var varErrorCheckValidation2 = "If this error message persists, please contact the support and send a screenshot of this page."; var labelEditYourContributionLater = 'Edit your contribution later'; var labelmore = "more..."; var labelless = "less"; var labelfrom = "From"; var labelto = "To"; var messageuploadnoconnection = "File-upload not possible. Please check your internet connection."; var messageuploadwrongextension = "{0} does not match the allowed file types."; var labelnewexplanation = "New explanation"; var labeloldexplanation = "Old explanation"; var timeLimitNotZero = "Time limit cannot be equal to zero."; var infolabeluploadbutton = "Select and upload files"; var infoNoData = "No data available yet"; var validationNotEnoughCandidates = "You must select at least one candidate."; var validationTooManyCandidates = "You have selected too many candidates"; var validationTooManyListVotes = "You have made too many list votes"; var likeOwnCommentOrExplanation = "It's not possible to like own comments or explanations."; var selectFileForUpload = "Select file to upload"; var versionfootersource = "v1.5.3.3 625447edf6ac2f69bd9ee79032f971bb3c1ea311 (20/11/2024 18:10)"; var version = versionfootersource.substring(versionfootersource.indexOf("(")+1); version = version.substring(0, version.indexOf(" ")); var explanationEditorConfig = { script_url: '/eusurvey/resources/js/tinymce/tinymce.min.js', theme: 'modern', entity_encoding: 'raw', menubar: false, toolbar: ['bold italic underline strikethrough | undo redo | bullist numlist | link code | fontsizeselect forecolor fontselect'], plugins: 'paste link image code textcolor', font_formats: 'Sans Serif=FreeSans, Arial, Helvetica, Tahoma, Verdana, sans-serif;' + 'Serif=FreeSerif,Times,serif;' + 'Mono=FreeMono,Courier, mono;', language : globalLanguage, image_advtab: true, entities: '', content_css: '/eusurvey/resources/css/tinymceyellowfocus.css', popup_css_add: '/eusurvey/resources/css/tinymcepopup.css', forced_root_block: false, browser_spellcheck: true, paste_postprocess: function(pl, o) { o.node.innerHTML = replaceBRs(strip_tags(o.node.innerHTML, '<p><br>')); }, setup: function(editor) { editor.on('init', function(event) { delphiPrefill($(event.target)); }); editor.on('Change', function (event) { try { // The editor element needs to be retrieved again. Otherwise, closest() will return no elements. enableDelphiSaveButtons($('#' + event.target.id).closest('.survey-element')); } catch (e) {} }); }, relative_urls: false, remove_script_host: false, document_base_url: serverPrefix, default_link_target: '_blank', anchor_top: false, anchor_bottom: false, branding: false, invalid_elements: 'html,head,body', object_resizing: false }; </script> <script type="text/javascript" src="/eusurvey/resources/js/utf8.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/includes.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript"> //<![CDATA[ function getWrongExtensionMessage(filename) { var s; s = '[fn] does not match the allowed file types.'; return s.replace("[fn]", filename); } function getExtensionsHelp(extensions) { var e = extensions.replace(new RegExp(';', 'g'), ','); var s; s = 'Only files of the type [ex] are allowed'; return s.replace("[ex]", e); } function countChar(input) { var cs = getCharacterCount(input); var attr = $(input).attr('class'); let el = $(input).closest(".survey-element, .innercell"); if (attr != null) { let min = 0; let max = 0; attr.split(/\s+/).forEach((cla)=>{ if (cla.startsWith("min")){ min = parseInt(cla.substring(3)); } else if (cla.startsWith("max")){ max = parseInt(cla.substring(3)); } }) el.find(".charactercounter").text(cs); if (max > 0 && max - cs < 5) { el.find(".glyphicon-alert").show(); } else { el.find(".glyphicon-alert").hide(); } if (max > 0 && max - cs < 0) { el.find(".charactercounterdiv").css("color", "#f00"); } else { el.find(".charactercounterdiv").css("color", "#666"); } if(max > 0 && max - cs <= 0) { el.find(".glyphicon-alert").hide(); el.find(".characterlimitreached").show(); el.find(".charactersused").hide(); } else { el.find(".characterlimitreached").hide(); el.find(".charactersused").show(); } } } //]]> var browser = ''; </script> <script defer="defer" src="//europa.eu/webtools/load.js" type="text/javascript"></script> <script type="application/json"> { "utility":"analytics", "siteID":"63", "sitePath":["ec.europa.eu/eusurvey"], "is404":false, "is403":false, "instance":"ec.europa.eu"} </script> <script type="text/javascript" src="/eusurvey/resources/js/jqueryui/i18n/datepicker-en.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript"> $(function() { $( ".datepicker" ).datepicker( "option", $.datepicker.regional[ 'en' ] ); $( ".datepicker" ).datepicker( "option", "dateFormat", "dd/mm/yy"); }); </script> <!--[if IE 7]> <link rel="stylesheet" href="/eusurvey/resources/css/bootstrap-ie7buttonfix.css"> <style type="text/css"> .add-on { height: 19px; margin-top: 1px; } </style> <![endif]--> <!--[if IE 8]> <link rel="stylesheet" href="/eusurvey/resources/css/bootstrap-ie8buttonfix.css"> <style> .check { margin-bottom: 3px !important; } </style> <![endif]--> <!--[if IE 9 ]> <script type="text/javascript"> browser = 'IE9'; </script> <![endif]--> <link id="runnerCss" href="/eusurvey/resources/css/runner.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/yellowfocus.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/fileuploader.css?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311" rel="stylesheet" type="text/css"></link> <script type="text/javascript" src="/eusurvey/resources/js/fileuploader.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/runner.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/runner2.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/graph_data_loader.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/runnerviewmodels.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type='text/javascript' src='/eusurvey/resources/js/knockout-3.5.1.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311'></script> <script type="text/javascript"> //<![CDATA[ $(function() { $(".headerlink, .header a").each(function(){ if (!$(this).hasClass("messageicon") && $(this).attr("id") != 'logoutBtnFromHeader' && !$(this).hasClass("skipScriptAnchor")) { if ($(this).attr("href") && $(this).attr("href").indexOf("?") == -1) { $(this).attr("target","_blank").attr("href", $(this).attr("href") + "/runner"); } } }); loadElements(); }); function loadElements() { var ids = ""; if ($(".emptyelement").length > 0) { var counter = 0; $(".emptyelement").each(function(){ ids += $(this).attr("data-id") + '-'; counter++; if (counter > 20) { return false; } }) var s = "ids=" + ids.substring(0, ids.length-1) + "&survey=578797&slang=EN&as="; $.ajax({ type:'GET', dataType: 'json', url: "/eusurvey/runner/elements/578797", data: s, cache: false, success: function( result ) { for (var i = 0; i < result.length; i++) { addElement(result[i], false, false); } applyStandardWidths(); setTimeout(loadElements, 500); selectPageAndScrollToQuestionIfSet(); } }); } else { checkPages(); $("#btnSubmit").removeClass("hidden"); $("#btnSaveDraft").removeClass("hidden"); $("#btnSaveDraftMobile").removeClass("hidden"); $('[data-toggle="tooltip"]').ApplyCustomTooltips(); // Do not show motivation-popup when loaded from draft/local safe and progress already over if(!$("#motivationPopup").data("type") && $("#motivationPopup").data("popup") && calculateProgressPercentage() > $("#motivationPopup").data("progress")){ $("#motivationPopup").removeClass('not-shown'); } updateProgress(); updateEVoteStatus(); updateAllFormulas(); updateAllExclusiveAnswers(); $(".targetdatasetselect").each(function() { checkTargetDataset(this); }) } } function updateFileList(element, responseJSON) { $(element).siblings(".uploaded-files").first().empty(); $(element).siblings(".validation-error").remove(); var surveyElement = $(element).closest(".survey-element"); enableDelphiSaveButtons(surveyElement); if (responseJSON.files.length == 0) { $(surveyElement).removeClass("answered"); updateProgress(); } for (var i = 0; i < responseJSON.files.length; i++) { var f = responseJSON.files[i]; var div = document.createElement("div"); var del = document.createElement("button"); $(del).attr("type", "button").addClass("unstyledbutton").attr("data-toggle","tooltip").attr("id", "uploadlink" + $(element).attr('data-id')).attr("title","Remove uploaded file").attr("aria-label",f).attr( "onclick", 'deleteFile("' + $(element).attr('data-id') + '","' + $("#uniqueCode").val() + '","' + f + '", this);return false;'); $(del).ApplyCustomTooltips(); var ic = document.createElement("span"); $(ic).addClass("glyphicon glyphicon-trash").css("margin-right", "10px"); $(del).append(ic); $(div).html(f); $(div).prepend(del); $(element).siblings(".uploaded-files").first().append(div); } } //]]> </script> </head> <body id="body" class="grey-background" style="text-align: center;"> <div class="page-wrap"> <div class="header"> <div class="header-content-full"> <div style="float: left; line-height: 20px;"> <a class="logolink" href="/eusurvey/home/welcome" style="float: left; padding-top:3px;"><img src="/eusurvey/resources/images/logo_Eusurvey-small-white.png" style="margin-top: -3px;" alt="EUSurvey"/></a>        </div> <div style="float: right; line-height: 22px;"> <span tabindex="0" id="messages-button" onclick="$('#messages-log-div').show()" onfocus="$('#loginBtnFromHeader').focus()"> <!-- ko if: messages().length > 0 || systemMessages.length > 0 --> <span class="glyphicon glyphicon-bell" style="font-size: 17px;"></span> <span class="badge" style="background-color: #e90000; margin-left: -10px; margin-top: -3px; z-index: 100;" data-bind="visible: totalMessages() > 0, text: totalMessages"></span> <!-- /ko --> </span> <a id="loginBtnFromHeader" href="/eusurvey/auth/login">Login</a> | <div id="dropDownHelp" class="dropdown" style="display: inline-block;"> <a href="javascript:;" class="dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Help <span class="caret"></span> </a> <ul id="dropDownHelpHeader" class="dropdown-menu" aria-labelledby="dropdownMenu1"> <li><a id="linkHelpAbout" href="/eusurvey/home/about">About</a></li> <li><a id="linkHelpSupport" href="/eusurvey/home/documentation">Support</a></li> <li><a id="linkHelpDownload" href="/eusurvey/home/download">Download</a></li> </ul> </div> | <div class="dropdown" > <a href="javascript:;" class="dropdown-toggle" id="dropdownLang" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" > Language <span class="caret"></span> </a> <ul class="dropdown-menu dropdown-menu-right" id="dropdownLangElements" aria-labelledby="dropdownLang"> <li> <button type="button" class="unstyledbuttonlanguage skipScriptAnchor" onclick="$('.dropdown.open .dropdown-toggle').dropdown('toggle')">English</button> </li> </ul> </div> <a class="messageicon" id="systemmessagebutton" style="display: none;" onclick="$('#system-message-box').show();"><img style="max-width:24px;" src="/eusurvey/resources/images/info24.png" alt="system message" /></a> <a class="messageicon" id="warningmessagebutton" style="display: none;" onclick="$('#generic-warning-box').show();"><img style="max-width:24px;" src="/eusurvey/resources/images/warning24.png" alt="system message" /></a> </div> <div style="clear: both"></div> </div> </div> <div class="modal" id="show-wait-image" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-body" style="text-align: center; padding-top:30px;"> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif" /> </div> </div> </div> </div> <div class="modal" id="show-wait-image-delete-survey" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-body" style="text-align: center; padding-top:30px;"> Your survey is being deleted, please wait<br /><br /> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif" /> </div> </div> </div> </div> <script type="text/javascript"> $(document).ready(function(){ $("a.logolink").css("font-family","Helvetica"); $("a.logolink").css("font-family","steinerregular"); }); </script> <div id="system-message-box" class="alert hideme"> <div style="float: right; margin-left: 10px;"><a onclick="hideSystemMessage()"><span class="glyphicon glyphicon-remove"></span></a></div> <div style="float: left; margin: 5px; margin-top: 5px; margin-right: 10px"><img src="" alt="system message icon" /></div> <div style="margin-left: 10px; padding-top: 3px; padding-bottom: 5px;" id="system-message-box-content"></div> <div style="text-align: right"> <button id="btnDeleteUserMessage" class="btn btn-default" onclick="deleteUserMessage()">Delete Message</button> </div> </div><div class="page" style="width: 1300px;"> <div id="runner-content" class="runner-content"> <form id="runnerForm" action="TheRuralPactCommitmentCanvas" method="POST" autocomplete="off"><input id="survey.id" name="survey.id" type="hidden" value="578797"/><input id="survey.uniqueId" name="survey.uniqueId" type="hidden" value="a3879dab-1b97-48cc-b148-e73ca7bb4e97"/><input id="language.code" name="language.code" type="hidden" value="EN"/><input type="hidden" name="uniqueCode" id="uniqueCode" value="91ceaa74-cbc2-4f1f-933f-e5077f4344fa" /> <input type="hidden" name="IdAnswerSet" id="IdAnswerSet" value="" /> <input type="hidden" name="invitation" id="invitation" value="" /> <input type="hidden" name="participationGroup" value="" /> <input type="hidden" id="hfsubmit" value="true" /> <input type="hidden" id="mode" name="mode" value="runner" /> <input type="hidden" id="draftid" name="draftid" value="" /> <script type="text/javascript" src="/eusurvey/resources/js/d3.v3.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/d3.layout.cloud.min.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <script type="text/javascript" src="/eusurvey/resources/js/wordcloud.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <input type="hidden" id="validatedPerPage" value="false" /> <input type="hidden" id="preventGoingBack" value="false" /> <input type="hidden" id="newlang" name="newlang" value="EN" /> <input type="hidden" id="newlangpost" name="newlangpost" value="false" /> <input type="hidden" id="newcss" name="newcss" value="" /> <input type="hidden" id="newviewpost" name="newviewpost" value="false" /> <input type="hidden" id="wcagMode" name="wcagMode" value="false" /> <input type="hidden" id="multipaging" value="true" /> <div class="left-area"> <div id="nolocalstorage" class="hideme" style="margin-bottom: 10px; text-align: right; margin-right: 10px;"> <span class="alert-danger" style="padding: 10px;">As local storage is disabled, automatic saving is not possible</span> </div> <div id="localstorageinfo" class="visible-lg" style="margin-bottom: 10px; text-align: right; margin-right: 10px;"> <span class="focusborder"> <input class="check" type="checkbox" checked="checked" id="saveLocalBackup" onchange="checkLocalBackup()" /> <label for="saveLocalBackup">Save a backup on your local computer (disable if you are using a public/shared computer)</label> </span> </div> <h1 class="surveytitle"><div style="text-align: center;">The Rural Pact: Commitment Canvas</div></h1><br /> <div class="info-box" style="width: 400px; max-width: 100%;"> <div style="float: right; margin-top: -5px; margin-right: -5px;"> <button type="button" class="unstyledbutton" onclick="$(this).closest('.info-box').hide();" aria-label="Close info message"><span class="glyphicon glyphicon-remove"></span></button> </div> Fields marked with * are mandatory.</div> <span class="introduction"></span> <div id="page-tabs" class="panel panel-default" style="margin-top:20px;"> <div class="panel-body"> <div style="font-size: 20px;float:left; width:10%">Pages</div> <div style="float:left; width:90"> <ul class="nav nav-pills"> <li data-id="92849150" id="tab0" class="pagebutton active" data-toggle="" title=""> <a href="#page0" style="cursor:pointer;" onclick="return selectPage(0);"> Introduction</a> </li> <li data-id="92849153" id="tab1" class="pagebutton " data-toggle="" title=""> <a href="#page1" style="cursor:pointer;" onclick="return selectPage(1);"> General information</a> </li> <li data-id="92849157" id="tab2" class="pagebutton " data-toggle="" title=""> <a href="#page2" style="cursor:pointer;" onclick="return selectPage(2);"> Commitment Canvas</a> </li> </ul> </div> </div> </div> <div style="clear: left"></div> <div class="single-page" tabindex="-1" id="page0" onmouseleave="validateLastContainer()"> <fieldset> <legend>Section</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849150" data-id="92849150" data-uid="506c94df-7caf-4d60-83e8-7b40118d1835"> <a class="survey-element-anchor" id="E92849150"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Text</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849151" data-id="92849151" data-uid="34f4f96f-6dbe-47b0-9841-e7b7ecdf1b8d"> <a class="survey-element-anchor" id="E92849151"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Image</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849152" data-id="92849152" data-uid="89b29948-caea-4ca7-a86c-dce7ca35873d"> <a class="survey-element-anchor" id="E92849152"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> </div> <div class="single-page" tabindex="-1" id="page1" style="display: none" onmouseleave="validateLastContainer()"> <fieldset> <legend>Section</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849153" data-id="92849153" data-uid="f005466b-b5a9-4ace-b766-42013f81a798"> <a class="survey-element-anchor" id="E92849153"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>FreeTextQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849154" data-id="92849154" data-uid="57ddea8a-634d-43c3-91f5-9994fd21697d"> <a class="survey-element-anchor" id="E92849154"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>FreeTextQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849155" data-id="92849155" data-uid="c1681d1a-17af-4384-ae66-3a75ede5d92c"> <a class="survey-element-anchor" id="E92849155"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>EmailQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849156" data-id="92849156" data-uid="0bdb9933-6f48-4825-983e-486fd96a39f7"> <a class="survey-element-anchor" id="E92849156"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> </div> <div class="single-page" tabindex="-1" id="page2" style="display: none" onmouseleave="validateLastContainer()"> <fieldset> <legend>Section</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849157" data-id="92849157" data-uid="b1c7c335-9192-4329-8d63-994e1524256c"> <a class="survey-element-anchor" id="E92849157"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>SingleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849158" data-id="92849158" data-uid="7526ec41-58b6-5b57-840b-cdc07d66673e"> <a class="survey-element-anchor" id="E92849158"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>MultipleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849161" data-id="92849161" data-uid="acc34428-42c0-4a57-9283-e613bd3461c5"> <a class="survey-element-anchor" id="E92849161"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>SingleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="false" id="92849164" data-id="92849164" data-triggers="92849162;" data-uid="1f2e3d1a-d6e7-4f39-a2b3-e89795c154f3" style="display: none;"> <a class="survey-element-anchor" id="E92849164"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>FreeTextQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="true" id="92849193" data-id="92849193" data-triggers="92849163;" data-uid="1db120ed-eb8d-8275-9064-380f9c549ca7" style="display: none;"> <a class="survey-element-anchor" id="E92849193"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>SingleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="true" id="92849194" data-id="92849194" data-triggers="92849163;" data-uid="acfbbfbd-e953-09dc-6229-e1fb34565a55" style="display: none;"> <a class="survey-element-anchor" id="E92849194"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>SingleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="true" id="92849223" data-id="92849223" data-triggers="92849163;" data-uid="08a0c174-8c79-74a1-5f60-f2bf8703060b" style="display: none;"> <a class="survey-element-anchor" id="E92849223"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>SingleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="false" id="92849226" data-id="92849226" data-triggers="92849163;" data-uid="d4131b7e-d080-4486-a8f6-9dcaa1c7c36f" style="display: none;"> <a class="survey-element-anchor" id="E92849226"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>FreeTextQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849238" data-id="92849238" data-uid="ce60cdae-3889-436b-848d-e4491f092967"> <a class="survey-element-anchor" id="E92849238"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>SingleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="true" id="92849239" data-id="92849239" data-triggers="92849163;" data-uid="733f59ce-5e6d-7af1-30e5-294377d9f62f" style="display: none;"> <a class="survey-element-anchor" id="E92849239"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>FreeTextQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="true" id="92849283" data-id="92849283" data-triggers="92849282;" data-uid="8e5be7b6-203a-5cb6-b181-883f9e9c9ad2" style="display: none;"> <a class="survey-element-anchor" id="E92849283"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>FreeTextQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849284" data-id="92849284" data-uid="46b4c44d-14a8-390d-4da1-7b4119c6b22d"> <a class="survey-element-anchor" id="E92849284"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>FreeTextQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849285" data-id="92849285" data-uid="ab30a76f-0da1-523c-edf0-ee61996c869a"> <a class="survey-element-anchor" id="E92849285"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Text</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849286" data-id="92849286" data-uid="8e615cf7-3b7f-2792-e7d9-74aa1cf96408"> <a class="survey-element-anchor" id="E92849286"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>MultipleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849287" data-id="92849287" data-uid="164a8ab6-a586-27c0-b4e1-56aa0854d5dc"> <a class="survey-element-anchor" id="E92849287"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>SingleChoiceQuestion</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849291" data-id="92849291" data-uid="28fba47d-30b1-773c-a839-f06d674b0dec"> <a class="survey-element-anchor" id="E92849291"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Text</legend> <div class="elementwrapper"> <div class="emptyelement survey-element untriggered dependent 3" data-useAndLogic="true" id="92849294" data-id="92849294" data-triggers="92849293;" data-uid="8661aa55-cd6a-e1d7-ae06-d8a9631ee66a" style="display: none;"> <a class="survey-element-anchor" id="E92849294"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Confirmation</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849295" data-id="92849295" data-uid="ba2054cc-febd-ee4f-c759-c9b25dd52815"> <a class="survey-element-anchor" id="E92849295"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Confirmation</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849296" data-id="92849296" data-uid="ef72dabc-5259-05ae-6fff-8a59f841d747"> <a class="survey-element-anchor" id="E92849296"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Confirmation</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849297" data-id="92849297" data-uid="f0a16861-8bca-329a-86a2-aa8b8e6f5fef"> <a class="survey-element-anchor" id="E92849297"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> <fieldset> <legend>Text</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="92849298" data-id="92849298" data-uid="969171b6-0cd9-fa57-d7cc-2d0eb4a187d9"> <a class="survey-element-anchor" id="E92849298"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> </div> <div class="hpdiv"> <label for="hp-7fk9s82jShfgak">If you're human, leave this field blank</label> <textarea tabindex="-1" id="hp-7fk9s82jShfgak" name="hp-7fk9s82jShfgak" class="hp" autocomplete="false"></textarea> </div> <div style="text-align: center; margin-top: 20px;"> <button type="button" id="btnPrevious" style="display: none;" role="button" aria-label="Go to previous page" data-toggle="" title="" onclick="previousPage();this.blur();" onfocusin="validateLastContainer()" class="btn btn-default">Previous</button> <button type="button" role="button" id="btnSubmit" onclick="validateInputAndSubmitRunner($('#runnerForm'));" onfocusin="validateLastContainer()" class="btn btn-primary hidden">Submit</button> <button type="button" id="btnNext" style="display: none;" role="button" aria-label="Go to next page" data-toggle="" title="" onclick="nextPage(); this.blur();" onfocusin="validateLastContainer()" class="btn btn-default btn-primary">Next</button> </div> </div> <div class="right-area" style="z-index: 1; position: relative"> <div class="linkstitle" style="margin-bottom: 5px;">Views</div> <div id="normalcss"> Standard  <button type="button" class="unstyledbutton link visiblelink css-switch disabled" id="css-switch-disabled" onclick="switchCss('runner','wcag');">Accessibility Mode</button> </div> <div id="enhancedcss" class="hideme"> <button type="button" class="unstyledbutton link css-switch normal" id="css-switch-normal" onclick="switchCss('runner','standard');">Standard</button>  Accessibility Mode</div> <hr style="margin-top: 15px;"/> <label for="langSelectorRunner"> <div class="linkstitle" style="margin-bottom: 5px;">Languages</div> </label> <select id="langSelectorRunner" name="langSelectorRunner" oninput="changeLanguageSelectOption('runner')"> <option value="EN" selected="selected">English</option> </select> <hr style="margin-top: 15px;" /> <div id="contact-and-pdf" style="word-wrap: break-word;"> <div class="linkstitle" style="margin-bottom: 5px;">Contact</div> <a target="_blank" aria-label="Contact Form - Opens in new window" class="link visibleLink" data-toggle="tooltip" title="Contact the survey owner here" href="/eusurvey/runner/contactform/TheRuralPactCommitmentCanvas">Contact Form</a> <hr style="margin-top: 15px;" /> <input type="button" id="btnSaveDraft" value="Save as Draft" onclick="saveDraft('runner');" class="btn btn-default hidden" style="margin-top: 10px" /> <br /><br /> <a data-toggle="tooltip" aria-label="Report abuse - Opens in new window" title="If a survey contains illegal content or violates the rights of others (including intellectual property rights, competition law and general law), please use the 'Report Abuse' link." target="_blank" href="/eusurvey/home/reportAbuse?survey=578797" class="link visiblelink">Report abuse</a> </div> </div> <div style="clear: both"></div> <div class="modal confirm-explanation-deletion-modal" role="dialog" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-body"> By removing an answer, the corresponding explanation text, possibly uploaded files and discussion will be deleted.</div> <div class="modal-footer"> <button type="button" class="btn btn-default" onclick="confirmExplanationDeletion()">Confirm</button> <button type="button" class="btn btn-primary" onclick="hideModalDialog('.confirm-explanation-deletion-modal')">Cancel</button> </div> </div> </div> </div> <div class="modal" id="quizTimeoutDialog" data-backdrop="static" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-body"> The time limit for this quiz has been exceeded. It is not possible to submit your answer anymore.</div> <div class="modal-footer"> <a tabindex="0" class="btn btn-default" data-dismiss="modal">Close</a> </div> </div> </div> </div> <script type="text/javascript" src="/eusurvey/resources/js/jquery.textarea-expander.js?version=625447edf6ac2f69bd9ee79032f971bb3c1ea311"></script> <div class="modal" id="contribution-link-dialog" data-backdrop="static" role="dialog" tabindex="-1"> <div class="modal-dialog non-resizable"> <div class="modal-content"> <div class="modal-body"> <p>In order to open your contribution again later, please use the following link:</p> <p id="contribution-link-dialog__link"></p> <p>You can reopen this dialog from the survey's sidebar.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" onclick="openAskEmailToSendLinkDialog(this)"> Send by E-mail</button> <button type="button" class="btn btn-primary" onclick="hideModalDialog($('#contribution-link-dialog'))">Continue</button> </div> </div> </div> </div> <div class="modal" id="ask-email-dialog" data-backdrop="static" role="dialog"> <div class="modal-dialog non-resizable"> <div class="modal-content"> <div class="modal-body"> <p>Please enter your e-mail address to receive the link to your contribution.<br />Your e-mail address is only used once to send the e-mail and will not be saved afterwards.</p> <label for="delphiemail">E-mail</label> <input class="form-control" type="text" maxlength="255" name="delphiemail" id="delphiemail" /> <p id="ask-delphi-email-dialog-error" class="validation-error-keep hideme"> Please provide an e-mail address!</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary" onclick="sendDelphiMailLink()">Send</button> <button type="button" class="btn btn-default" onclick="cancelDelphiMailLink()">Cancel</button> </div> </div> </div> </div> <script type="text/javascript"> var surveyUniqueId = "a3879dab-1b97-48cc-b148-e73ca7bb4e97"; var labelOf = " of "; function tabpress(event){ if (event.key === "Tab"){ if (event.shiftKey){ //If tabbing backwards and this is not the first radio button if (!event.target.matches(":first-of-type")){ //Focus the previous radio button event.target.previousElementSibling.previousElementSibling.focus() event.preventDefault() } } else { //If tabbing forwards and this is not the last radio button if (!event.target.matches(":last-of-type")){ //Focus the next radio button event.target.nextElementSibling.nextElementSibling.focus() event.preventDefault() } } } } function goToNextQuestion(link) { let next_question = $(link).closest("fieldset").next(); $('html, body').animate({ 'scrollTop' : next_question.position().top - 20 }); let focusable = [...next_question.get(0).querySelectorAll('button, [href], input, select, textarea, img, [tabindex]:not([tabindex="-1"])')]; focusable= focusable.filter( el => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden') && el.type != "hidden", ); focusable[0].focus(); } </script> <div style="display: none"> <div id="section-template"> <div role="heading" data-bind="html: title, attr: {'data-level': level, 'class':'sectiontitle section' + level()}"></div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'section', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: order, attr: {'name': 'order' + id()}" /> <input type="hidden" data-bind="value: tabTitle, attr: {'name': 'tabtitle' + id()}" /> <input type="hidden" data-bind="value: level, attr: {'name': 'level' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <!-- /ko --> </div> <div id="text-template"> <div class="text" data-bind="html: title"></div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'text', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: true, attr: {'name': 'optional' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <!-- /ko --> </div> <div id="formula-template"> <label for="defaultFormulaTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: min() != null && min() != 0 && max() != null && max() != 0 --> <div class='limits' data-bind="html: getMinMax(minString(), maxString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: min() != 0 && min() != null && (max() == 0 || max() == null) --> <div class='limits' data-bind="html: getMin(minString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: (min() == 0 || min() == null) && max() != null && max() != 0 --> <div class='limits' data-bind="html: getMax(maxString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: (min() == 0 || min() == null) && (max() == 0 || max() == null) --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <input id="defaultFormulaTemplateID" data-bind="enable: !readonly(), value: result, attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : (readonly() ? '' : 'answer' + id()), 'class':css(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}" oninput="propagateChange(this);" onblur="validateInput($(this).parent())" type="text" autocomplete="off" /> <!-- ko if: readonly() --> <input type="hidden" data-bind="value: result, attr: {'name': 'answer' + id()}" /> <!-- /ko --> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'formula', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: formula, attr: {'name': 'formula' + id()}" /> <input type="hidden" data-bind="value: min, attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: max, attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: decimalPlaces, attr: {'name': 'decimalplaces' + id()}" /> <input type="hidden" data-bind="value: true, attr: {'name': 'optional' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <!-- /ko --> </div> <div id="image-template"> <div class='alignment-div' data-bind="attr: {'style': 'width: 920px; max-width: 100%; text-align:' + align()}"> <img style="max-width: 100%" alt="Image Item" data-bind="attr: {'src': url, 'alt': originalTitle() + (longdesc != '' ? '; URL ' + longdesc() : ''), 'width': usedwidth() > 0 ? usedwidth() : ''}" /> </div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'image', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: title, attr: {'name': 'name' + id()}" /> <input type="hidden" data-bind="value: scale, attr: {'name': 'scale' + id()}" /> <input type="hidden" data-bind="value: width, attr: {'name': 'width' + id()}" /> <input type="hidden" data-bind="value: align, attr: {'name': 'align' + id()}" /> <input type="hidden" data-bind="value: url, attr: {'name': 'url' + id()}" /> <input type="hidden" data-bind="value: filename, attr: {'name': 'filename' + id()}" /> <input type="hidden" data-bind="value: longdesc, attr: {'name': 'longdesc' + id()}" /> <input type="hidden" data-bind="value: true, attr: {'name': 'optional' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <!-- /ko --> </div> <div id="ruler-template"> <hr data-bind="attr: {'style': 'border-top: ' + height() + 'px ' + style() + ' ' + color() }" /> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'ruler', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: true, attr: {'name': 'optional' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <input type="hidden" data-bind="value: color, attr: {'name': 'color' + id()}" /> <input type="hidden" data-bind="value: height, attr: {'name': 'height' + id()}" /> <input type="hidden" data-bind="value: style, attr: {'name': 'style' + id()}" /> <!-- /ko --> </div> <div id="single-choice-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <span class='questiontitle' data-bind="attr: {id: 'questiontitle' + id()}"> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </span> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <div class="answer-columns" style="position: relative; overflow-x:auto; padding-bottom: 8px; padding-top: 4px;"> <!-- ko if: likert() && !(ismobile || istablet) --> <div style="margin-top: 30px; display: inline-block; position: relative;" role="radiogroup" data-bind="attr: {'class' : maxDistance() > -1 ? 'likert-div median answers-table' : 'likert-div answers-table', 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':' questionhelp' + id()}, style: { width: possibleAnswers().length * 100 + 'px' }"> <div class="likert-bar" data-bind="attr: {'style' : 'width: ' + (possibleAnswers().length - 1) + '00px;'}"></div> <!-- ko foreach: possibleAnswers() --> <div class="likert-pa"> <input id="defaultSCLikertTemplateID" data-bind="enable: !$parents[0].readonly() && !$parents[0].foreditor, checked: getPAByQuestion2($parents[0].uniqueId(), uniqueId(), id()), attr: {'data-id': $parents[0].id() + '' + id(), 'data-shortname': shortname(), 'data-dependencies': dependentElementsString(), onkeyup: 'singleKeyUp(event, this, '+$parents[0].readonly()+')', onclick: $parents[0].readonly() ? 'return false;' : 'singleClick(this); checkDependenciesAsync(this);', class: $parents[0].css + ' trigger check', name: 'answer' + $parents[0].id(), id: 'answer' + id(), value: id(), 'aria-labelledby': 'answerlabel' + id()}" type="radio" /> <div><label for="defaultSCLikertTemplateID" class="answertext" style="margin-left: 0; padding-left: 10px; padding-right: 10px;" data-bind="attr: {'data-id' : id(), 'data-pa-uid' : uniqueId(), id: 'answerlabel' + id(), for: 'answer' + id()}"> <span class="screen-reader-only">Answer</span> <span data-bind="html: titleForDisplayMode($parents[0].displayMode())"></span> </label></div> </div> <!-- /ko --> <div style="clear: both"></div> </div> <!-- ko if: foreditor --> <!-- ko foreach: possibleAnswers() --> <div class="possibleanswerrow hidden"> <div class="answertext" data-bind="html: title, attr: {'id' : id(), 'data-id' : id()}"></div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: ismobile || istablet || !likert() --> <!-- ko if: likert() || useRadioButtons() --> <!-- ko if: likert() --> <div class="likert-table-div"></div> <!-- /ko --> <table class="answers-table" role="radiogroup" data-bind="attr: {'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}"> <tr class="hideme"> <th>radio button</th> <th>label</th> </tr> <!-- ko foreach: orderedPossibleAnswersByRows(false, false) --> <tr class="possibleanswerrow"> <!-- ko foreach: $data --> <td style="vertical-align: top"> <!-- ko ifnot: id() == 'dummy' --> <input id="defaultSCRadioTemplateID" style="position: relative" data-bind="enable: !$parents[1].readonly() && !$parents[1].foreditor, checked: getPAByQuestion2($parents[1].uniqueId(), uniqueId(), id()), attr: {'data-id': $parents[1].id() + '' + id(), 'id': id(), 'data-shortname': shortname(), 'data-dependencies': dependentElementsString(), onkeyup: 'singleKeyUp(event, this, '+$parents[1].readonly()+')', onclick: $parents[1].readonly() ? 'return false;' : 'singleClick(this); checkDependenciesAsync(this);', class: $parents[1].css + ' trigger check', name: 'answer' + $parents[1].id(), value: id(), 'aria-labelledby': 'answerlabel' + id(), 'previousvalue': getPAByQuestion2($parents[1].uniqueId(), uniqueId(), id()) != '' ? 'checked' : 'false'}", type="radio" /> <!-- /ko --> </td> <td style="vertical-align: top; padding-right: 15px;"> <!-- ko ifnot: id() == 'dummy' --> <label for="defaultSCRadioTemplateID" data-bind="attr: {'for': id, 'id': 'answerlabel' + id()}"> <span class="screen-reader-only">Answer</span> <div class="answertext" data-bind="html: titleForDisplayMode($parents[1].displayMode()), attr: {'data-id' : id()}"></div> </label> <!-- /ko --> </td> <!-- /ko --> </tr> <!-- /ko --> </table> <!-- /ko --> <!-- ko if: useSelectBox --> <div class="answer-column"> <!-- ko if: isTargetDatasetQuestion() --> <select id="defaultSCSelectTemplateID" data-bind="value: getTargetDatasetByQuestion(uniqueId()), attr: {'id': 'dataset' + id(), 'oninput': !foreditor ? 'checkTargetDataset(this);' : '', 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'data-value': getTargetDatasetByQuestion(uniqueId()), 'class': css + ' single-choice targetdatasetselect', 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}" > <option value=''></option> <!-- ko foreach: targetDatasets() --> <option data-bind="html: strip_tags(name), attr: {value: id}"></option> <!-- /ko --> </select> <!-- /ko --> <!-- ko if: !isTargetDatasetQuestion() --> <select id="defaultSCSelectTemplateID" data-bind="foreach: orderedPossibleAnswers(false), enable: !readonly(), valueAllowUnset: true, value: getPAByQuestion3(uniqueId()), attr: {'id': 'answer' + id(), 'oninput': !foreditor ? 'validateInput($(this).parent(),true); checkDependenciesAsync(this); propagateChange(this);' : '', 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class': css + ' single-choice', 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}" > <option data-bind="html: strip_tags(titleForDisplayMode($parents[0].displayMode())), attr: {value: id(), 'data-dependencies': dependentElementsString(), 'id': 'trigger'+id()}" class="possible-answer trigger"></option> </select> <!-- /ko --> <label for="defaultSCSelectTemplateID" data-bind="attr: {'for': 'answer' + id()}" hidden> <span class="screen-reader-only">Select box</span> </label> <!-- ko if: foreditor --> <!-- ko foreach: possibleAnswers() --> <div class="possibleanswerrow hidden"> <div class="answertext" data-bind="html: title, attr: {'id' : id(), 'data-id' : id()}"></div> </div> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: useButtons --> <table class="answers-table" role="radiogroup" data-bind="attr: {'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}"> <tr class="possibleanswerrow"> <th style='padding: 2px; display: flex; align-items: center; flex-wrap: wrap'> <!-- ko foreach: orderedPossibleAnswers(false) --> <!-- ko ifnot: id() == 'dummy' --> <input id="defaultSCButtonTemplateID" tabindex="0" style="clip-path: circle(0); position: absolute;" type="radio" onkeydown="tabpress(event)" data-bind="enable: !$parent.readonly() && !$parent.foreditor, checked: getPAByQuestion2($parent.uniqueId(), uniqueId(), id()), attr: {'data-id': $parent.id() + '' + id(), 'id': id(), 'data-shortname': shortname(), 'data-dependencies': dependentElementsString(), onkeyup: 'singleKeyUp(event, this, '+$parent.readonly()+')', onclick: $parent.readonly() ? 'return false;' : 'singleClick(this); checkDependenciesAsync(this);', class: $parent.css + ' trigger check', name: 'answer' + $parent.id(), value: id(), 'aria-labelledby': 'answerlabel' + id(), 'previousvalue': getPAByQuestion2($parent.uniqueId(), uniqueId(), id()) != '' ? 'checked' : 'false'}" /> <label for="defaultSCButtonTemplateID" class="choice-button-label answertext" data-bind="attr: {'for': id, 'id': 'answerlabel' + id(), 'data-id' : id()}"> <span class="screen-reader-only">Answer</span> <span data-bind="html: titleForDisplayMode($parent.displayMode())"></span> </label> <!-- /ko --> <!-- /ko --> </th> </tr> </table> <!-- /ko --> <input type="hidden" data-bind="value: choiceType, attr: {'name': 'choicetype' + id()}" /> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'choice', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: 'true', attr: {'name': 'single' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: order, attr: {'name': 'order' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: delphiChartType, attr: {'name': 'delphicharttype' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <input type="hidden" data-bind="value: numColumns, attr: {'name': 'columns' + id()}" /> <input type="hidden" data-bind="value: 0, attr: {'name': 'choicemin' + id()}" /> <input type="hidden" data-bind="value: 0, attr: {'name': 'choicemax' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: scoring, attr: {'name': 'scoring' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <input type="hidden" data-bind="value: subType, attr: {'name': 'subType' + id()}" /> <input type="hidden" data-bind="value: displayMode, attr: {'name': 'displayMode' + id()}" /> <input type="hidden" data-bind="value: maxDistance, attr: {'name': 'maxDistance' + id()}" /> <input type="hidden" data-bind="value: editorRowsLocked(), attr: {'name': 'editorRowsLocked' + id()}" /> <input type="hidden" data-bind="value: isTargetDatasetQuestion(), attr: {'name': 'isTargetDatasetQuestion' + id()}" /> <input type="hidden" data-bind="value: displayAllQuestions, attr: {'name': 'displayAllQuestions' + id()}" /> <input type="hidden" data-bind="value: isSAQuestion(), attr: {'name': 'isSAQuestion' + id()}" /> <input type="hidden" data-bind="value: evaluationCriterion(), attr: {'name': 'evaluationCriterion' + id()}" /> <tr class="hideme"> <td> <!-- ko foreach: possibleAnswers() --> <input type="hidden" data-bind="value: dependentElementsString(), attr: {'name': 'dependencies' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'pashortname' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'pauid' + $parent.id(), 'data-id' : id()}" /> <label hidden><textarea data-bind="text: title, attr: {'name': 'answer' + $parent.id(), 'data-id' : id()}" ></textarea>Title</label> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'originalAnswer' + $parent.id(), 'data-id' : id()}" ></textarea>Original title</label> <input type="hidden" data-bind="value: scoring.correct, attr: {'name': 'correct' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: scoring.points, attr: {'name': 'answerpoints' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: scoring.feedback, attr: {'name': 'feedback' + $parent.id(), 'data-id' : id()}" /> <!-- /ko --> </td> </tr> <!-- /ko --> </div> </div> <div id="multiple-choice-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <span class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </span> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: minChoices() != 0 && maxChoices() != 0 --> <div class='limits' data-bind="html: getMinMaxChoice(minChoices(), maxChoices()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minChoices() != 0 && maxChoices() == 0 --> <div class='limits' data-bind="html: getMinChoice(minChoices()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minChoices() == 0 && maxChoices() != 0 --> <div class='limits' data-bind="html: getMaxChoice(maxChoices()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minChoices() == 0 && maxChoices() == 0 --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <div class="answer-columns" style="overflow-x:auto;padding-top:4px;padding-bottom:8px;"> <!-- ko if: useCheckboxes --> <table class="answers-table" role="list" data-bind="attr: {'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}"> <tr class="hideme"> <th>checkbox</th> <th>label</th> </tr> <!-- ko foreach: orderedPossibleAnswersByRows(false, false) --> <tr class="possibleanswerrow" role="listitem"> <!-- ko foreach: $data --> <td style="vertical-align: top"> <!-- ko ifnot: id() == 'dummy' --> <input id="defaultMCCheckBoxTemplateID" data-bind="enable: !$parents[1].readonly() && !$parents[1].foreditor, checked: !$parents[1].foreditor && getPAByQuestionCheckBox($parents[1].uniqueId(), uniqueId()).indexOf(uniqueId()) > -1, attr: {'data-id': $parents[1].id() + '' + id(), 'id': id(), 'data-shortname': shortname(), 'data-exclusive': exclusive(), 'data-dependencies': dependentElementsString(), onclick: $parents[1].readonly() ? 'return false;' : 'findSurveyElementAndResetValidationErrors(this); singleClick(this); checkDependenciesAsync(this);', class: $parents[1].css + ' trigger check' + (exclusive() ? ' exclusive' : ''), name: 'answer' + $parents[1].id(), value: id(), 'aria-labelledby': 'answerlabel' + id()}" type="checkbox" /> <!-- /ko --> </td> <td style="vertical-align: top; padding-right: 10px;"> <!-- ko ifnot: id() == 'dummy' --> <label for="defaultMCCheckBoxTemplateID" data-bind="attr: {'for': id, 'id': 'answerlabel' + id()}"> <span class="screen-reader-only">Answer</span> <!-- ko ifnot: id() == 'dummy' --> <div class="answertext" data-bind="html: title, attr: {'data-id' : id()}"></div> <!-- /ko --> </label> <!-- /ko --> </td> <!-- /ko --> </tr> <!-- /ko --> </table> <!-- /ko --> <!-- ko if: useListBox --> <div class="answer-column"> <ul role="listbox" data-bind="foreach: orderedPossibleAnswers(false), attr: {'class':css + ' multiple-choice', 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}"> <li role="listitem" data-bind="attr: { 'data-id': id(), 'class': 'possible-answer trigger ' + (getPAByQuestion($parent.uniqueId()).indexOf(uniqueId()) > -1 ? 'selected-choice' : '') }"> <label for="defaultMCListBoxTemplateID" data-bind="attr: {for: id()}"> <button type="button" class="unstyledbutton" data-bind="attr: {'data-shortname': shortname(), 'onclick' : $parent.readonly() || $parent.foreditor ? 'return false;' : 'selectMultipleChoiceAnswer($(this)); propagateChange($(this)); event.stopImmediatePropagation();'}" > <span class="screen-reader-only">Answer</span> <span data-bind="html: strip_tags(title()), attr: {'data-id' : id(), 'id': 'answerlabel' + id()}" class="answertext"></span> </button> </label> <input id="defaultMCListBoxTemplateID" data-bind="value: id(), checked: getPAByQuestion2($parent.uniqueId(), uniqueId(), id), attr: {'name': 'answer' + $parent.id(), 'id':id(), 'data-id': $parent.id() + id(), 'data-dependencies': dependentElementsString, 'aria-labelledby': 'answerlabel' + id()}" style="display: none" type="checkbox" /> </li> </ul> <!-- ko if: foreditor --> <!-- ko foreach: possibleAnswers() --> <div class="possibleanswerrow hidden"> <div class="answertext" data-bind="html: title, attr: {'id' : id(), 'data-id' : id()}"></div> </div> <!-- /ko --> <!-- /ko --> </div> <div style="clear: both"></div> <!-- /ko --> <!-- ko if: isEVoteList --> <table role="list" collapsed data-bind="attr: {class:'answers-table evote-table ' + choiceTypeWithEVote(''), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}"> <tr> <th style="width: 20px"> <span class="sr-only">Checkbox</span> </th> <th style="display: flex; flex-flow: row nowrap; justify-content: space-between; height: inherit; min-width: 155px;"> <div style="padding-right: 24px; align-self: center"> </div> <div class="evote-collapse" tabindex="0" onclick="$(this).closest('.evote-table').attr('collapsed', (_, val) => val == null ? '' : null); event.stopImmediatePropagation(); event.preventDefault()" onkeypress="$(this).closest('.evote-table').attr('collapsed', (_, val) => val == null ? '' : null); event.stopImmediatePropagation(); event.preventDefault()"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="m24 30.75-12-12 2.15-2.15L24 26.5l9.85-9.85L36 18.8Z"></path></svg> </div> <span class="sr-only">label</span> </th> </tr> <!-- ko foreach: orderedPossibleAnswers(false) --> <tr class="possibleanswerrow" role="listitem"> <td> <!-- ko ifnot: id() == 'dummy' --> <input id="defaultMCEVoteElementsTemplateID" data-bind="enable: !$parent.readonly() && !$parent.foreditor, checked: !$parent.foreditor && getPAByQuestion($parent.uniqueId()).indexOf(uniqueId()) > -1, event: { evoteuncheck: ()=>{ element.checked } }, attr: {'data-id': $parent.id() + '' + id(), 'id': id(), 'data-shortname': shortname(), 'data-dependencies': dependentElementsString(), onclick: $parent.readonly() || $element.disabled ? 'return false;' : 'findSurveyElementAndResetValidationErrors(this); singleClick(this); checkDependenciesAsync(this); updateEVoteList(this);', class: $parent.css + ' trigger check evote-candidate', name: 'answer' + $parent.id(), value: id(), 'aria-labelledby': 'answerlabel' + id()}" type="checkbox" /> <!-- /ko --> </td> <td style="padding-right: 10px;"> <!-- ko ifnot: id() == 'dummy' --> <label for="defaultMCEVoteElementsTemplateID" data-bind="attr: {'for': id, 'id': 'answerlabel' + id()}"> <span class="screen-reader-only">Answer</span> <!-- ko ifnot: id() == 'dummy' --> <div class="answertext" data-bind="html: title, attr: {'data-id' : id()}"></div> <!-- /ko --> </label> <!-- /ko --> </td> </tr> <!-- /ko --> </table> <!-- /ko --> <input type="hidden" data-bind="value: choiceType, attr: {'name': 'choicetype' + id()}" /> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'choice', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: 'false', attr: {'name': 'single' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: order, attr: {'name': 'order' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: delphiChartType, attr: {'name': 'delphicharttype' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <input type="hidden" data-bind="value: numColumns, attr: {'name': 'columns' + id()}" /> <!--input type="hidden" data-bind="value: choiceType, attr: {'name': 'choicetype' + id()}" /--> <input type="hidden" data-bind="value: minChoices, attr: {'name': 'choicemin' + id()}" /> <input type="hidden" data-bind="value: maxChoices, attr: {'name': 'choicemax' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: scoring, attr: {'name': 'scoring' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <input type="hidden" data-bind="value: noNegativeScore, attr: {'name': 'noNegativeScore' + id()}" /> <input type="hidden" data-bind="value: subType, attr: {'name': 'subType' + id()}" /> <input type="hidden" data-bind="value: displayMode, attr: {'name': 'displayMode' + id()}" /> <input type="hidden" data-bind="value: editorRowsLocked(), attr: {'name': 'editorRowsLocked' + id()}" /> <!-- ko foreach: possibleAnswers() --> <input type="hidden" data-bind="value: dependentElementsString(), attr: {'name': 'dependencies' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'pashortname' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'pauid' + $parent.id(), 'data-id' : id()}" /> <label hidden><textarea data-bind="text: title, attr: {'name': 'answer' + $parent.id(), 'data-id' : id()}" ></textarea>Title</label> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'originalAnswer' + $parent.id(), 'data-id' : id()}" ></textarea>Original title</label> <input type="hidden" data-bind="value: scoring.correct, attr: {'name': 'correct' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: scoring.points, attr: {'name': 'answerpoints' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: scoring.feedback, attr: {'name': 'feedback' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: exclusive, attr: {'name': 'exclusive' + $parent.id(), 'data-id' : id()}" /> <!-- /ko --> <!-- /ko --> </div> </div> <div id="ranking-question-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <span class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </span> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'rankingquestion', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: delphiChartType, attr: {'name': 'delphicharttype' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: order, attr: {'name': 'order' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <div class="ranking-question-initial-answer-message" data-bind="hidden: isAnswered"> Use drag&drop or the up/down buttons to change the order or <button type="button" class="unstyledbutton ranking-question-initial-answer-clickable" data-bind="attr: {'aria-owns': 'ranking-item-list-container' + id()}">accept the initial order</button>.</div> <!-- /ko --> <div role="group" data-bind="attr: {id: 'answer' + id(), 'aria-labelledby': 'questiontitle' + id(), 'aria-describedby' : 'questionhelp' + id() + ' listorderinfo' + id()}"> <!-- ko ifnot: foreditor --> <div class="ranking-question-initial-answer-message" data-bind="if: !isAnswered()"> Use drag&drop or the up/down buttons to change the order or <button type="button" class="unstyledbutton ranking-question-initial-answer-clickable" data-bind="click: acceptInitialAnswer, attr: {'aria-owns': id(), id: 'acceptInitialRanking' + id(), 'aria-describedby' : 'listorderinfo' + id()}">accept the initial order</button>.</div> <div class="question-reset-answer-message" data-bind="if: isAnswered()"> <button type="button" class="unstyledbutton" data-bind="click: resetOrder">Reset to initial order</a> </div> <!-- /ko --> <div class="rankingitem-list-container" data-bind="attr: {id: 'ranking-item-list-container' + id()}"> <!-- ko ifnot: foreditor --> <span class="screen-reader-only" data-bind="attr: {id: 'listorderinfo' + id()}"> <span data-bind="html: getInitialOrderInfoText()"></span> <!-- ko foreach: orderedRankingItems() --> <span data-bind="html: title()"></span> <!-- /ko --> </span> <!-- /ko --> <div class="rankingitem-list" role="list"> <!-- ko foreach: orderedRankingItems() --> <div role="listitem" class="rankingitem-form-data focussable" data-bind="attr: {'aria-labelledby': id()}"> <div class="rankingitem-decoration">⠿</div> <button type="button" role="button" class="unstyledbutton rankingitem-button" data-toggle="tooltip" title="Move up" data-bind="click: onMoveUp, event: { keydown: onKeyDownMoveItemUp }, attr: {'aria-label' : title() + ' Move up'}"><span class="glyphicon glyphicon-arrow-up"></span></button> <button type="button" role="button" class="unstyledbutton rankingitem-button" data-toggle="tooltip" title="Move down" data-bind="click: onMoveDown, event: { keydown: onKeyDownMoveItemDown }, attr: {'aria-label' : title() + ' Move down'}"><span class="glyphicon glyphicon-arrow-down"></span></button> <div class="rankingitemtext" data-bind="html: title(), attr: {'id' : id(), 'data-id' : id()}"></div> </div> <!-- /ko --> </div> </div> <!-- ko if: foreditor --> <!-- ko foreach: rankingItems() --> <div class="possibleanswerrow hidden"> <input type="hidden" data-bind="value: shortname, attr: {'name': 'rankingitemshortname' + $parents[0].id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'rankingitemuid' + $parents[0].id(), 'data-id' : id()}" /> <label hidden><textarea data-bind="text: title(), attr: {'name': 'rankingitemtitle' + $parents[0].id(), 'data-id' : id()}" ></textarea>Title</label> <label hidden><textarea data-bind="text: originalTitle(), attr: {'name': 'rankingitemoriginaltitle' + $parent.id(), 'data-id' : id()}" ></textarea>Original title</label> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: foreditor --> <input type="hidden" data-bind="value:getAnswerValuesString(), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class':css()}" type="text"></input> <!-- /ko --> </div> </div> <div id="password-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <label for="defaultPasswordTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> </label> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <input id="defaultPasswordTemplateID" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId()), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class':css(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby': 'questionhelp' + id()}" onfocus="clearStars(this);" onkeyup="countChar(this); propagateChange(this);" onblur="validateInput($(this).parent(), true)" autocomplete="off" type="password"></input> <!-- ko if: isComparable --> <br /><label for="defaultPasswordSecondTemplateID" style="margin-left: 20px" data-bind="attr: {'for' : 'secondanswer' + id()}">Please repeat</label>:<br /> <input id="defaultPasswordSecondTemplateID" data-bind="enable: !readonly(), attr: {'id': 'answer' + id() + '2', 'data-id':id() + '2', 'name' : 'secondanswer' + id(), 'class': 'comparable-second ' + css()}" onfocus="clearStars(this);" autocomplete="off" type="password"></input> <!-- /ko --> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: type == 'RegExQuestion' ? 'regex' : 'freetext', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <input type="hidden" data-bind="value: numRows, attr: {'name': 'rows' + id()}" /> <input type="hidden" data-bind="value: minCharacters, attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: maxCharacters, attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: isPassword, attr: {'name': 'password' + id()}" /> <input type="hidden" data-bind="value: isUnique, attr: {'name': 'unique' + id()}" /> <input type="hidden" data-bind="value: isComparable, attr: {'name': 'comparable' + id()}" /> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <!-- ko foreach: scoringItems() --> <input type="hidden" data-bind="value: id, attr: {'name': 'scoringitem' + $parent.id()}" /> <input type="hidden" data-bind="value: type, attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: correct, attr: {'name': 'correct' + id()}" /> <input type="hidden" data-bind="value: value, attr: {'name': 'value' + id()}" /> <input type="hidden" data-bind="value: feedback, attr: {'name': 'feedback' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <!-- /ko --> <!-- /ko --> </div> <div id="freetext-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <!-- ko if: maxCharacters() > 0 --> <label for="defaultFreetextBiggerZeroTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <!-- /ko --> <!-- ko if: maxCharacters() == 0 --> <label for="defaultFreetextZeroTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <!-- /ko --> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: minCharacters() != 0 && maxCharacters() != 0 --> <div class='limits' data-bind="html: getMinMaxCharacters(minCharacters(), maxCharacters()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minCharacters() != 0 && maxCharacters() == 0 --> <div class='limits' data-bind="html: getMinCharacters(minCharacters()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minCharacters() == 0 && maxCharacters() != 0 --> <div class='limits' data-bind="html: getMaxCharacters(maxCharacters()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minCharacters() == 0 && maxCharacters() == 0 --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: type == "RegExQuestion" --> <input type="hidden" data-bind="value: regex, attr: {'name': 'regex' + id()}" /> <!-- /ko --> <!-- ko if: foreditor --> <!-- ko if: type == "RegExQuestion" --> <input type="hidden" data-bind="value: 'regex', attr: {'name': 'type' + id()}" /> <!-- /ko --> <!-- ko ifnot: type == "RegExQuestion" --> <input type="hidden" data-bind="value: 'freetext', attr: {'name': 'type' + id()}" /> <!-- /ko --> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: delphiChartType, attr: {'name': 'delphicharttype' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <input type="hidden" data-bind="value: numRows, attr: {'name': 'rows' + id()}" /> <input type="hidden" data-bind="value: minCharacters, attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: maxCharacters, attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: isPassword, attr: {'name': 'password' + id()}" /> <input type="hidden" data-bind="value: isUnique, attr: {'name': 'unique' + id()}" /> <input type="hidden" data-bind="value: isComparable, attr: {'name': 'comparable' + id()}" /> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <input type="hidden" data-bind="value: scoring, attr: {'name': 'scoring' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <!-- ko foreach: scoringItems() --> <input type="hidden" data-bind="value: id, attr: {'name': 'scoringitem' + $parent.id()}" /> <input type="hidden" data-bind="value: type, attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: correct, attr: {'name': 'correct' + id()}" /> <input type="hidden" data-bind="value: value, attr: {'name': 'value' + id()}" /> <input type="hidden" data-bind="value: feedback, attr: {'name': 'feedback' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <!-- /ko --> <!-- /ko --> <!-- ko if: maxCharacters() > 0 --> <textarea id="defaultFreetextBiggerZeroTemplateID" class="data" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId(), true), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class':css() + ' expand', 'maxlength':maxCharacters(), 'data-rows':numRows(), 'rows':numRows(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id(), 'aria-required':!optional()}" onkeyup="countChar(this);" oninput="propagateChange(this);" onblur="validateInput($(this).parent(),true)" ></textarea> <!-- ko if: !foreditor --> <div class="charactercounterdiv limits" style="max-width: 645px; text-align: right; margin-left: 20px;" aria-live="polite" aria-atomic="true"> <span class="glyphicon glyphicon-alert" style="display: none; margin-right: 5px;" data-toggle="tooltip" title="You have less than 5 characters left." aria-label="You have less than 5 characters left."></span> <span class="charactersused"> <span data-bind="html: getCharacterCountInfo(maxCharacters()), attr: {id: 'countinfo' + id()}"></span> </span> <span class="characterlimitreached" data-toggle="tooltip" aria-label="Character limit reached.">Character limit reached.</span> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: maxCharacters() == 0 --> <textarea id="defaultFreetextZeroTemplateID" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId(), true), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class':css() + ' expand', 'data-rows':numRows(), 'rows':numRows(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id(), 'aria-required':!optional()}" onkeyup="countChar(this);" oninput="propagateChange(this);" onblur="validateInput($(this).parent(),true)"></textarea> <!-- /ko --> <!-- ko if: isComparable() --> <br /><label for="defaultFreetextSecondTemplateID" style="margin-left: 20px" data-bind="attr: {'for' : 'secondanswer' + id()}">Please repeat</label>:<br /> <textarea id="defaultFreetextSecondTemplateID" data-bind="enable: !readonly(), attr: {'data-id':id() + '2', 'class': 'comparable-second ' + css() + ' expand', 'data-rows':numRows, 'rows':numRows(), 'name' : 'secondanswer' + id(), 'id' : 'secondanswer' + id()}" onblur="validateInputForSecondAnswer($(this))"></textarea> <!-- /ko --> </div> <div id="confirmation-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <label for="defaultConfirmationTemplateID" class='questiontitle confirmationelement' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> </label> <!-- ko if: usetext --> <button type="button" class="unstyledbutton confirmationlabel" style="margin-left: 40px; cursor: pointer;" onclick="$(this).parent().find('.confirmation-dialog').modal('show')" data-bind="html:confirmationlabel">Show</button> <div class="modal confirmation-dialog"> <div class="modal-dialog modal-sm runnerdialog"> <div class="modal-content"> <div class="modal-header">Confirmation</div> <div class="modal-body" data-bind="html: confirmationtext"></div> <div class="modal-footer"> <button type="button" class="btn btn-primary" onclick="$(this).closest('.confirmation-dialog').modal('hide');">Cancel</button> </div> </div> </div> </div> <!-- /ko --> <!-- ko if: useupload --> <div class="files" style="margin-left: 40px; margin-top: 10px;" data-bind="foreach: files"> <!-- ko if: $parent.foreditor --> <input id="defaultConfirmationTemplateID" type="hidden" data-bind="value: uid(), attr: {'name': 'files' + $parent.id()}" /> <!-- /ko --> <a class="visiblelink" target="_blank" data-bind="html: name, attr: {'href':'/eusurvey/files/a3879dab-1b97-48cc-b148-e73ca7bb4e97/' + uid()}"></a> <br /> </div> <!-- /ko --> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'confirmation', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: usetext, attr: {'name': 'usetext' + id()}" /> <input type="hidden" data-bind="value: useupload, attr: {'name': 'useupload' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <label hidden><textarea data-bind="text: confirmationtext, attr: {'name': 'confirmationtext' + id()}" ></textarea>Confirmation Text</label> <label hidden><textarea data-bind="text: confirmationlabel, attr: {'name': 'confirmationlabel' + id()}" ></textarea>Confirmation Label</label> <!-- /ko --> </div> <div id="rating-template"> <div class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </div> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'rating', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: numIcons, attr: {'name': 'numIcons' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: delphiChartType, attr: {'name': 'delphicharttype' + id()}" /> <input type="hidden" data-bind="value: iconType, attr: {'name': 'iconType' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: editorRowsLocked(), attr: {'name': 'editorRowsLocked' + id()}" /> <div class="hiddenratingquestions hideme"> <!-- ko foreach: childElements() --> <div data-bind="attr: {'pos': $index, 'data-id': id}"> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'questionuid' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'questionshortname' + $parent.id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'questionoptional' + $parent.id(), 'data-id' : id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'question' + $parent.id(), 'data-id' : id()}" ></textarea>Original title</label> </div> <!-- /ko --> </div> <!-- /ko --> <table class="ratingtable" role="list" data-bind="attr: {'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}"> <thead> <tr> <th class="sr-only">Rating Item</th> <th class="sr-only">Rating</th> </tr> </thead> <tbody data-bind="foreach: childElements()"> <tr class="ratingquestion" data-bind="attr: {'data-id': id, 'data-uid': uniqueId}"> <td> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <span data-bind="html: title, attr:{id: 'answerlabel' + id()}"></span> <!-- ko if: $parents[0].ismobile || $parents[0].istablet --> <input data-bind="value:getValueByQuestion(uniqueId(), true), attr: {'id': 'input' + id(), 'data-id':id(), 'name' : 'answer' + id(), 'class' : 'rating ' + css()}" data-type="rating" type="hidden"></input> <div data-bind="foreach: new Array($parent.numIcons())"> <button type="button" class="unstyledbutton ratingitem" role="listitem" onclick="ratingClick(this)" data-bind="attr: {'data-icons' : $parents[1].numIcons(), 'data-shortname': $parents[1].shortname()}"> <!-- ko if: $parents[1].iconType() == 0 --> <img src="/eusurvey/resources/images/star_grey.png" alt="Rating Item" data-bind="title: $index()+1, attr: {'alt': $index()+1 + ' / ' + $parents[1].numIcons(), 'aria-label': $parent.title() + ' ' + ($index()+1) + labelOf + $parents[1].numIcons()}" /> <!-- /ko --> <!-- ko if: $parents[1].iconType() == 1 --> <img src="/eusurvey/resources/images/nav_plain_grey.png" alt="Rating Item" data-bind="title: $index()+1, attr: {'alt': $index()+1 + ' / ' + $parents[1].numIcons(), 'aria-label': $parent.title() + ' ' + ($index()+1) + labelOf + $parents[1].numIcons()}" /> <!-- /ko --> <!-- ko if: $parents[1].iconType() == 2 --> <img src="/eusurvey/resources/images/heart_grey.png" alt="Rating Item" data-bind="title: $index()+1, attr: {'alt': $index()+1 + ' / ' + $parents[1].numIcons(), 'aria-label': $parent.title() + ' ' + ($index()+1) + labelOf + $parents[1].numIcons()}" /> <!-- /ko --> </button> </div> <!-- /ko --> </td> <!-- ko if: !$parents[0].ismobile && !$parents[0].istablet --> <td> <input data-bind="value:getValueByQuestion(uniqueId(), true), attr: {'id': 'input' + id(), 'data-id':id(), 'name' : 'answer' + id(), 'class' : 'rating ' + css()}" data-type="rating" type="hidden"></input> <div data-bind="foreach: new Array($parent.numIcons())"> <button type="button" class="unstyledbutton ratingitem" role="listitem" onclick="ratingClick(this)" data-bind="attr: {'data-icons' : $parents[1].numIcons(), 'data-shortname': $parents[1].shortname()}"> <!-- ko if: $parents[1].iconType() == 0 --> <img src="/eusurvey/resources/images/star_grey.png" alt="Rating Item" data-bind="title: $index()+1, attr: {'alt': $index()+1 + ' / ' + $parents[1].numIcons(), 'aria-label': $parent.title() + ' ' + ($index()+1) + labelOf + $parents[1].numIcons()}" /> <!-- /ko --> <!-- ko if: $parents[1].iconType() == 1 --> <img src="/eusurvey/resources/images/nav_plain_grey.png" alt="Rating Item" data-bind="title: $index()+1, attr: {'alt': $index()+1 + ' / ' + $parents[1].numIcons(), 'aria-label': $parent.title() + ' ' + ($index()+1) + labelOf + $parents[1].numIcons()}" /> <!-- /ko --> <!-- ko if: $parents[1].iconType() == 2 --> <img src="/eusurvey/resources/images/heart_grey.png" alt="Rating Item" data-bind="title: $index()+1, attr: {'alt': $index()+1 + ' / ' + $parents[1].numIcons(), 'aria-label': $parent.title() + ' ' + ($index()+1) + labelOf + $parents[1].numIcons()}" /> <!-- /ko --> </button> </div> </td> <!-- /ko --> </tr> </tbody> </table> </div> <div id="number-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <!-- ko if: display() == 'Slider' --> <label for="defaultNumberSliderTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <div role="group" data-bind="hidden: isAnswered, attr: {'aria-labelledby': 'questiontitle' + id(), 'aria-describedby' : 'questioninfo' + id() + ' questionhelp' + id()}"> <div class="limits" data-bind="hidden: isAnswered, attr: {id: 'questioninfo' + id()}"> <!-- ko ifnot: foreditor --> Move the slider or <button type="button" class="unstyledbutton" data-bind="click: markAsAnswered, attr: {'aria-hidden': isAnswered, id: 'acceptInitialSlider' + id()}">accept the initial position</button>.<!-- /ko --> <!-- ko if: foreditor --> Move the slider or <button type="button" class="unstyledbutton">accept the initial position</button>.<!-- /ko --> </div> </div> <!-- /ko --> <!-- ko if: display() != 'Slider' --> <label for="defaultNumberTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: min() != null && min() != 0 && max() != null && max() != 0 --> <div class='limits' data-bind="html: getMinMax(minString(), maxString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: min() != 0 && min() != null && (max() == 0 || max() == null) --> <div class='limits' data-bind="html: getMin(minString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: (min() == 0 || min() == null) && max() != null && max() != 0 --> <div class='limits' data-bind="html: getMax(maxString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: (min() == 0 || min() == null) && (max() == 0 || max() == null) --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <input id="defaultNumberTemplateID" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId(), true), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class':css(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}" oninput="propagateChange(this);" onblur="validateInput($(this).parent())" type="text" ></input><span class="unit-text" data-bind="html: unit"></span> <!-- /ko --> <!-- ko if: display() == 'Slider' --> <div class="question-reset-answer-message" data-bind="hidden: !isAnswered()"> <button type="button" class="unstyledbutton" data-bind="click: resetToInitialPosition, attr: {id: 'resetSlider' + id(), 'aria-describedby' : 'questiontitle' + id()}">Reset to initial position</button> </div> <div data-bind="attr: {'class' : maxDistance() > -1 ? 'slider-div median' : 'slider-div'}"> <div style="float: left; margin-left: -20px; padding-bottom: 20px; max-width: 45%; text-align: center;" data-bind="html: minLabel()"></div> <div style="float: right; padding-bottom: 20px; max-width: 45%; text-align: center;" data-bind="html: maxLabel()"></div> <div style="clear: both"></div> <div class="slider-widget-box" role="group" data-bind="attr: {'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}"> <a data-bind='click: decrease'><svg aria-label="Decrease slider value by one step" xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-chevron-left" viewBox="0 0 16 16"> <path stroke="#337ab7" stroke-width="3" fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"/></svg></a> <input id="defaultNumberSliderTemplateID" type="text" onchange="propagateChange(this);" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId()), attr: {'class': css() + ' sliderbox', 'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'data-slider-min' : min(), 'data-slider-max' : max(), 'precision' : decimalPlaces(), 'data-slider-step' : step(),'data-slider-ticks' : ticks(), 'data-slider-value' : initialValue(), 'data-is-answered': isAnswered() ? 'true' : 'false' }" /> <a data-bind='click: increase'><svg aria-label="Increase slider value by one step" xmlns="http://www.w3.org/2000/svg" width="13" height="13" fill="currentColor" class="bi bi-chevron-right" viewBox="0 0 16 16"> <path stroke="#337ab7" stroke-width="3" fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/></svg></a> </div> </div> <!-- /ko --> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'number', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: decimalPlaces, attr: {'name': 'decimalplaces' + id()}" /> <input type="hidden" data-bind="value: unit, attr: {'name': 'unit' + id()}" /> <input type="hidden" data-bind="value: min, attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: max, attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: delphiChartType, attr: {'name': 'delphicharttype' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <input type="hidden" data-bind="value: isUnique, attr: {'name': 'unique' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: scoring, attr: {'name': 'scoring' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <!-- ko foreach: scoringItems() --> <input type="hidden" data-bind="value: id, attr: {'name': 'scoringitem' + $parent.id()}" /> <input type="hidden" data-bind="value: type, attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: correct, attr: {'name': 'correct' + id()}" /> <input type="hidden" data-bind="value: value, attr: {'name': 'value' + id()}" /> <input type="hidden" data-bind="value: value2, attr: {'name': 'value2' + id()}" /> <input type="hidden" data-bind="value: feedback, attr: {'name': 'feedback' + id()}" /> <input type="hidden" data-bind="value: min, attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: max, attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <!-- /ko --> <input type="hidden" data-bind="value: minLabel, attr: {'name': 'minLabel' + id()}" /> <input type="hidden" data-bind="value: maxLabel, attr: {'name': 'maxLabel' + id()}" /> <input type="hidden" data-bind="value: display, attr: {'name': 'display' + id()}" /> <input type="hidden" data-bind="value: initialSliderPosition, attr: {'name': 'initialSliderPosition' + id()}" /> <input type="hidden" data-bind="value: displayGraduationScale, attr: {'name': 'displayGraduationScale' + id()}" /> <input type="hidden" data-bind="value: maxDistance, attr: {'name': 'maxDistance' + id()}" /> <!-- /ko --> </div> <div id="email-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <label for="defaultEmailTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <div class="input-group" style="margin-left: 20px;"> <div class="input-group-addon" style="margin-bottom: 5px">@</div> <input id="defaultEmailTemplateID" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId(), true), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class':css(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}" onblur="validateInput($(this).parent().parent())" onkeyup="propagateChange(this);" onchange="validateInput($(this).parent());" style="width: 180px; margin-left: 0px; margin-bottom: 0px !important;" type='email' maxlength="255" /> </div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'email', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <!-- /ko --> </div> <div id="date-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <label for="defaultDateTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: min() != null && max() != null --> <div class='limits' data-bind="html: getMinMaxDate(minString(), maxString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: min() != null && max() == null --> <div class='limits' data-bind="html: getMinDate(minString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: min() == null && max() != null --> <div class='limits' data-bind="html: getMaxDate(maxString()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: min() == null && max() == null --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <div class="input-group"> <!-- ko if: !foreditor && !readonly() --> <div class="input-group-addon" tabindex="0" onclick='$(this).parent().find(".datepicker").datepicker( "show" );' onfocus='$(this).parent().find(".datepicker").datepicker( "show" );'><span class="glyphicon glyphicon-calendar" aria-hidden="true"></span></div> <!-- /ko --> <!-- ko if: foreditor || readonly() --> <div class="input-group-addon"><span class="glyphicon glyphicon-calendar" aria-hidden="true"></span></div> <!-- /ko --> <input id="defaultDateTemplateID" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId(), true), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class': 'datepicker ' + css(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}" onblur="if($(this).val().length > 0 && validateInput($(this).parent().parent())) { propagateChange(this); }" oninput="propagateChange(this);" type="text" placeholder="DD/MM/YYYY" style="display: inline; margin-left:0px; margin-bottom:0px !important;"></input> </div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'date', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: minString(), attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: maxString(), attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: scoring, attr: {'name': 'scoring' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <!-- ko foreach: scoringItems() --> <input type="hidden" data-bind="value: id, attr: {'name': 'scoringitem' + $parent.id()}" /> <input type="hidden" data-bind="value: type, attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: correct, attr: {'name': 'correct' + id()}" /> <input type="hidden" data-bind="value: value, attr: {'name': 'value' + id()}" /> <input type="hidden" data-bind="value: value2, attr: {'name': 'value2' + id()}" /> <input type="hidden" data-bind="value: feedback, attr: {'name': 'feedback' + id()}" /> <input type="hidden" data-bind="value: minDate, attr: {'name': 'minDate' + id()}" /> <input type="hidden" data-bind="value: maxDate, attr: {'name': 'maxDate' + id()}" /> <input type="hidden" data-bind="value: points, attr: {'name': 'points' + id()}" /> <!-- /ko --> <!-- /ko --> </div> <div id="time-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <label for="defaultTimeTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: min() != null && max() != null && min() != '' && max() != '' --> <div class='limits' data-bind="html: getMinMaxDate(min(), max()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: min() != null && min() != '' && (max() == null || max() == '') --> <div class='limits' data-bind="html: getMinDate(min()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: max() != null && max() != '' && (min() == null || min() == '') --> <div class='limits' data-bind="html: getMaxDate(max()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: (max() == null || max() == '') && (min() == null || min() == '') --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <div class="input-group"> <div class="input-group-addon"><span class="glyphicon glyphicon-time" aria-hidden="true"></span></div> <input id="defaultTimeTemplateID" data-bind="enable: !readonly(), value:getValueByQuestion(uniqueId()), attr: {'id': 'answer' + id(), 'data-id':id(), 'data-shortname': shortname(), 'name' : 'answer' + id(), 'class': 'timepicker ' + css(), 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}" onblur="if(validateInput($(this).parent().parent())) { propagateChange(this); }" oninput="propagateChange(this);" type="text" placeholder="HH:mm:ss" style="display: inline; margin-left:0px; margin-bottom:0px !important;"></input> </div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'time', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: min(), attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: max(), attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <!-- /ko --> </div> <div id="upload-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <label for="defaultUploadTemplateID" class='questiontitle' data-bind='attr: {for: "answer" + id(), id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </label> <span class="questionhelp" data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: extensions() != null && extensions().length > 0 --> <div class="questionhelp"> <span class='glyphicon glyphicon-question-sign'></span> <span data-bind="html: getExtensionsHelp(extensions())"></span> </div> <!-- /ko --> <div class="uploadinfo" style="display: none; padding: 10px; color: #777;"> Upload started. This may take a while.</div> <input id="defaultUploadTemplateID" type="hidden" data-bind="attr: {'id': 'answer' + id(), 'name':'answer' + id()}" value="files" /> <div class="uploaded-files" data-bind="foreach: getFileAnswer(uniqueId(), true)"> <div> <button type="button" class="unstyledbutton" data-toggle="tooltip" title="Remove uploaded file" data-bind="click: function() {deleteFile($parent.id(),'91ceaa74-cbc2-4f1f-933f-e5077f4344fa',$data,$('#uploadlink' + $parent.id()));return false;}, attr: {'id' : 'uploadlink' + $parent.id(), 'aria-label' : $data}"> <span style="margin-right: 10px;" class="glyphicon glyphicon-trash"></span> </button> <span data-bind="html: $data"></span> </div> </div> <div data-bind="attr: {'class': css() + ' file-uploader', 'data-id':id}" style="margin-left: 10px; margin-top: 10px;"></div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'upload', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: extensions, attr: {'name': 'extensions' + id()}" /> <input type="hidden" data-bind="value: maxFileSize, attr: {'name': 'maxFileSize' + id()}" /> <!-- /ko --> </div> <div id="download-template"> <div class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </div> <span class="questionhelp" data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <div class="files" role="list" data-bind="foreach: files, attr: {'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}"> <!-- ko if: $parent.foreditor --> <input type="hidden" data-bind="value: uid(), attr: {'name': 'files' + $parent.id()}" /> <!-- /ko --> <a class="visiblelink" target="_blank" data-bind="attr: {'href': '/eusurvey/files/a3879dab-1b97-48cc-b148-e73ca7bb4e97/' + uid(), 'aria-label' : 'Download file ' + name()}, html: name"></a> <br /> </div> <!-- ko if: foreditor --> <!-- ko if: files().length == 0 --> <div class="files"> <i>[Please add a file to your survey for your participants to download]</i> </div> <!-- /ko --> <input type="hidden" data-bind="value: 'download', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <!-- /ko --> </div> <div id="gallery-template"> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <span id="defaultGalleryTemplateID" class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </span> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: selection() && limit != null && limit() > 0 --> <div class='limits' data-bind="html: getMaxSelections(limit()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko ifnot: selection() && limit != null && limit() > 0 --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <div class="gallery-div" style="width: 920px; max-width: 100%; text-align:left;"> <!-- ko if: files().length == 0 --> <table data-bind="attr: {'class':'gallery-table limit' + limit()}"> <thead> <tr> <th class="sr-only">Photo Scenery"</th> <th class="sr-only">Photo Scenery"</th> </tr> </thead> <tbody> <tr> <td> <img alt="Photo Scenery" style="max-width: none;" src="/eusurvey/resources/images/photo_scenery.png" data-width="128" data-original-width="247" width="247px"> </td> <td> <img alt="Photo Scenery" style="max-width: none;" src="/eusurvey/resources/images/photo_scenery.png" data-width="128" data-original-width="247" width="247px"> </td> </tr> </tbody> </table> <!-- /ko --> <!-- ko if: files().length > 0 --> <table style="width: 100%" data-bind="attr: {'class':'gallery-table limit' + limit(), 'aria-rowcount': rows().length, 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}" > <thead data-bind="foreach: rows"> <!-- ko if: $index() == 0 --> <tr data-bind="foreach: $data"> <th class="sr-only">Gallery Image Item</th> </tr> <!-- /ko --> </thead> <tbody data-bind="foreach: rows"> <tr data-bind="foreach: $data"> <td data-bind="attr: {'data-uid':uid()}" style="vertical-align: top"> <div class="galleryinfo"> <span data-bind="if: $parents[1].selection()"> <input aria-labelledby="defaultGalleryTemplateID" data-bind="value: $parentContext.$index() * $parents[1].columns() + $index(), checked: getValueByQuestionGallery($parents[1].uniqueId()).indexOf(($parentContext.$index() * $parents[1].columns() + $index()).toString()) > -1, attr: {'onclick': $parents[1].readonly() ? 'return false;':'propagateChange(this);', 'data-shortname': $parents[1].shortname(), 'class': $parents[1].css() + ' selection', 'name':'answer'+$parents[1].id(), 'aria-labelledby': 'answerlabel' + $parents[1].id() + $index()}" type="checkbox" /> </span> <!-- ko if: $parents[1].numbering() --> <span data-bind='html: ($parentContext.$index() * $parents[1].columns() + $index()+1) + "."'></span> <!-- /ko --> <span data-bind='html: name().replace("%20"," "), attr: {id: "answerlabel" + $parents[1].id() + $index()}'></span> </div> <a onclick="showGalleryBrowser($(this).parent())"> <img class="gallery-image" alt="Gallery Image Item" data-bind="attr: {'alt': (desc() != '' ? desc() : 'Gallery Image' + $index()) + (longdesc != '' ? '; URL ' + longdesc() : ''), 'src':'/eusurvey/files/a3879dab-1b97-48cc-b148-e73ca7bb4e97/'+ uid(), 'data-width': width(), 'data-original-width': Math.round((850-20-($parents[1].columns()*30))/$parents[1].columns()), 'width': Math.round((850-20-($parents[1].columns()*30))/$parents[1].columns())+'px'}" style="max-width: 100%;" /> </a> <div class="comment" data-bind="html: comment"></div> <!-- ko if: $parents[1].foreditor --> <input type="hidden" data-bind="value: name, attr: {'name': 'name' + ($parentContext.$index() * $parents[1].columns() + $index() + 1) + $parents[1].id()}" /> <input type="hidden" data-bind="value: uid, attr: {'name': 'image' + ($parentContext.$index() * $parents[1].columns() + $index() + 1) + $parents[1].id()}" /> <input type="hidden" data-bind="value: longdesc, attr: {'name': 'longdesc' + ($parentContext.$index() * $parents[1].columns() + $index() + 1) + $parents[1].id()}" /> <input type="hidden" data-bind="value: desc, attr: {'name': 'desc' + ($parentContext.$index() * $parents[1].columns() + $index() + 1) + $parents[1].id()}" /> <label hidden><textarea data-bind="text: comment, attr: {'name': 'comment' + ($parentContext.$index() * $parents[1].columns() + $index() + 1) + $parents[1].id()}" ></textarea>Comment</label> <!-- /ko --> </td> </tr> </tbody> </table> <!-- /ko --> </div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'gallery', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: columns, attr: {'name': 'columns' + id()}" /> <input type="hidden" data-bind="value: selection, attr: {'name': 'selectable' + id()}" /> <input type="hidden" data-bind="value: numbering, attr: {'name': 'numbering' + id()}" /> <input type="hidden" data-bind="value: limit, attr: {'name': 'limit' + id()}" /> <input type="hidden" data-bind="value: files().length, attr: {'name': 'count' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <!-- /ko --> <!-- ko ifnot: foreditor --> <div class="modal" data-backdrop="static"> <div data-bind="attr: {'data-mobile': '' + ismobile, 'class': 'modal-dialog runnerdialog ' + (ismobile ? 'modal-sm' : (istablet ? 'modal-md' : 'modal-lg'))}"> <div class="modal-content"> <div class="modal-header">Browse Gallery</div> <div data-bind="foreach: files()" class="modal-body" data-bind="attr: {'style': 'overflow: auto; height: ' + ismobile ? '400px' : '600px;'}"> <div class="gallery-image hideme" style="text-align: center" data-bind="attr: {'data-uid': uid()}"> <div class="galleryinfo"> <span data-bind="if: $parent.selection()"> <input aria-labelledby="defaultGalleryTemplateID" onclick="synchronizeGallerySelection(this)" type="checkbox" data-bind="attr: {'aria-labelledby': 'answerlabel' + $parent.id() + $index()}" /> </span> <!-- ko if: $parent.numbering() --> <span data-bind='html: ($index()+1) + "."'></span> <!-- /ko --> <span data-bind='html: name().replace("%20"," "), attr: {id: "answerlabel" + $parent.id() + $index()}'></span> </div> <img style="width: 95%;" alt="Gallery Image Item" data-bind="attr: {'alt': (desc() != '' ? desc() : 'Gallery Image' + $index()) + (longdesc != '' ? '; URL ' + longdesc() : ''), 'src':'/eusurvey/files/a3879dab-1b97-48cc-b148-e73ca7bb4e97/'+uid()}" /> <div class="gallery-image-comment" style="text-align: center; padding: 15px;" data-bind="html: comment()"></div> </div> </div> <div class="modal-footer"> <a class="btn btn-default" onclick="openPreviousImage($(this).closest('.modal'))"><span class="glyphicon glyphicon-chevron-left"></span></a> <a class="btn btn-primary" onclick="$(this).closest('.modal').modal('hide');">Close</a> <a class="btn btn-default" onclick="openNextImage($(this).closest('.modal'))"><span class="glyphicon glyphicon-chevron-right"></span></a> </div> </div> </div> </div> <!-- /ko --> </div> <div id="matrix-template"> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'matrix', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: tableType, attr: {'name': 'tabletype' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: order, attr: {'name': 'order' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: isAttribute, attr: {'name': 'attribute' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: delphiChartType, attr: {'name': 'delphicharttype' + id()}" /> <input type="hidden" data-bind="value: attributeName, attr: {'name': 'nameattribute' + id()}" /> <input type="hidden" data-bind="value: isInterdependent, attr: {'name': 'interdependent' + id()}" /> <input type="hidden" data-bind="value: isSingleChoice, attr: {'name': 'single' + id()}" /> <input type="hidden" data-bind="value: minRows, attr: {'name': 'rowsmin' + id()}" /> <input type="hidden" data-bind="value: maxRows, attr: {'name': 'rowsmax' + id()}" /> <input type="hidden" data-bind="value: widths, attr: {'name': 'widths' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: editorColumnsLocked(), attr: {'name': 'editorColumnsLocked' + id()}" /> <input type="hidden" data-bind="value: editorRowsLocked(), attr: {'name': 'editorRowsLocked' + id()}" /> <!-- /ko --> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <div id="defaultMatrixTemplateID" class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </div> <span class="questionhelp" data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <!-- ko if: minRows() != 0 && maxRows() != 0 --> <div class='limits' data-bind="html: getMinMaxRows(minRows(), maxRows()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minRows() != 0 && maxRows() == 0 --> <div class='limits' data-bind="html: getMinRows(minRows()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minRows() == 0 && maxRows() != 0 --> <div class='limits' data-bind="html: getMaxRows(maxRows()), attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <!-- ko if: minRows() == 0 && maxRows() == 0 --> <div class='limits' data-bind="attr: {id: 'questioninfo' + id()}"></div> <!-- /ko --> <div style="width: 100%"> <!-- ko if: foreditor --> <div class="hiddenmatrixquestions hideme"> <!-- ko foreach: questions() --> <div data-bind="attr: {'pos': $index, 'data-id': id}"> <input type="hidden" data-bind="value: 'text', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <!-- ko foreach: $parent.answers() --> <input type="hidden" data-bind="attr: {'name': 'dependencies' + $parents[1].id(), 'value': $parents[1].dependentElementsStrings()[$index() + ($parent.originalIndex() * ($parents[1].columns()-1))], 'data-qaid': $parent.id() + '|' + id()}" /> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <div class="table-responsive"> <table data-bind="attr: {'class':'matrixtable ' + css(), 'style': tableType() == 1 ? 'width: 900px' : 'width: auto; max-width: auto', 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questioninfo' + id() + ' questionhelp' + id()}"> <thead> <tr> <td class="matrix-header firstCell" data-bind="attr: {'data-id': id(), 'style': tableType() != 2 ? '' : 'width: ' + getWidth(widths(), 0)}"> <!-- ko if: foreditor --> <textarea aria-labelledby="defaultMatrixTemplateID" style="display: none" data-bind="text: firstCellText, attr: {'name': 'firstCellText' + id()}"></textarea> <!-- /ko --> <span class="matrixheadertitle" data-bind="html: firstCellText"></span> </td> <!-- ko foreach: answers --> <td class="matrix-header" scope="col" data-bind="attr: {'id' : id(), 'data-id': id(), 'style': $parent.tableType() != 2 ? '' : 'width: ' + getWidth($parent.widths(), $index()+1)}"> <!-- ko if: $parent.foreditor --> <input type="hidden" data-bind="value: 'text', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <label hidden><textarea data-bind="text: title, attr: {'name': 'text' + id()}" ></textarea>Title</label> <!-- /ko --> <span class="matrixheadertitle" data-bind="html: title"></span> </td> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: questionsOrdered() --> <tr data-bind="attr: {'class': $data.isDependentMatrixQuestion() && isInvisible($data.uniqueId()) ? 'matrix-question untriggered hideme':'matrix-question', 'data-id': id(), 'data-uid': uniqueId(), 'data-triggers': getTriggersByQuestion(uniqueId()) + ';' + ($parent.foreditor ? '' : getTriggersByQuestion($parent.uniqueId)), 'data-useAndLogic': useAndLogic()}"> <th class="matrix-header" scope="row" data-bind="attr: {'id' : id(), 'data-id': id}"> <!-- ko if: optional() == false --> <span class="mandatory" style="position: absolute; margin-left: -7px; margin-top: 3px;">*</span> <!-- /ko --> <span class="matrixheadertitle" data-bind="html: title"></span> </th> <!-- ko foreach: $parent.answers --> <td class="matrix-cell" data-bind="attr: {'data-originalposition': ($parent.originalIndex() * ($parents[1].columns() - 1)) + $index()}"> <input aria-labelledby="defaultMatrixTemplateID" type="radio" data-bind="enable: !$parents[1].readonly() && !$parents[1].foreditor, checked: getPAByQuestion2($parent.uniqueId(), uniqueId(), id()), attr: {value: id(), 'data-shortname': $parent.shortname() + '|' + shortname(), onkeyup: 'singleKeyUp(event, this, '+$parents[1].readonly()+')', 'onclick': $parents[1].readonly() ? 'return false;' : 'findSurveyElementAndResetValidationErrors(this); checkSingleClick(this); event.stopImmediatePropagation();propagateChange(this);', 'id': $parent.id().toString() + id().toString(), 'data-id': $parent.id().toString() + id().toString(), 'aria-labelledby': $parent.id().toString() + ' ' + id().toString(), 'class': $parent.css() + ' trigger', 'name': 'answer' + $parent.id(), 'data-dependencies': $parents[1].dependentElementsStrings()[$index() + ($parent.originalIndex() * ($parents[1].columns()-1))], 'data-cellid' : $parent.id() + '|' + id(), type: $parents[1].isSingleChoice() ? 'radio' : 'checkbox', role: $parents[1].isSingleChoice() ? 'radio' : 'checkbox', 'data-dummy': getPAByQuestion2($parent.uniqueId(), uniqueId(), id())}" /> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> </div> </div> <div id="table-template"> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'table', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: tableType, attr: {'name': 'tabletype' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: isDelphiQuestion, attr: {'name': 'delphiquestion' + id()}" /> <input type="hidden" data-bind="value: showExplanationBox, attr: {'name': 'explanationbox' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <input type="hidden" data-bind="value: widths, attr: {'name': 'widths' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: editorColumnsLocked(), attr: {'name': 'editorColumnsLocked' + id()}" /> <input type="hidden" data-bind="value: editorRowsLocked(), attr: {'name': 'editorRowsLocked' + id()}" /> <!-- /ko --> <!-- ko if: optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <div id="defaultTableTemplateID" class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </div> <span class="questionhelp" data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <div class="table-responsive"> <table data-bind="attr: {'data-widths':widths(), 'id':id(), 'data-readonly': readonly, 'style': tableType() == 1 ? 'width: 900px' : 'width: auto; max-width: auto', 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}" class="tabletable"> <tbody> <tr style="background-color: #eee;"> <td class="table-header firstCell" data-bind="attr: {'data-id': id(), 'style': tableType() != 2 ? '' : 'width: ' + getWidth(widths(), 0)}"> <!-- ko if: foreditor --> <textarea aria-labelledby="defaultTableTemplateID" style="display: none" data-bind="text: firstCellText, attr: {'name': 'firstCellText' + id()}"></textarea> <!-- /ko --> <span class="matrixheadertitle" data-bind="html: firstCellText"></span> </td> <!-- ko foreach: answers --> <td class="table-header" scope="col" data-bind="attr: {'id' : id(), 'data-id' : id(), 'data-shortname' : shortname, 'data-uid' : uniqueId(), 'style': $parent.tableType() != 2 ? '' : 'width: ' + getWidth($parent.widths(), $index()+1)}"> <span data-bind="html: title"></span> <!-- ko if: $parent.foreditor --> <textarea aria-labelledby="defaultTableTemplateID" style="display: none" data-bind="text: originalTitle" ></textarea> <!-- /ko --> </td> <!-- /ko --> </tr> <!-- ko foreach: questions --> <tr data-bind="attr: {'data-id': id()}"> <th scope="row" style="padding-left: 10px" class="table-header" data-bind="attr: {'id' : id(), 'data-id' : id(),'data-shortname' : shortname, 'data-uid' : uniqueId(), 'data-optional' : optional().toString()}"> <!-- ko if: optional() == false --> <span class="mandatory" style="position: absolute; margin-left: -7px; margin-top: 3px;">*</span> <!-- /ko --> <span data-bind="html: title"></span> <!-- ko if: $parent.foreditor --> <textarea aria-labelledby="defaultTableTemplateID" style="display: none" data-bind="text: originalTitle" ></textarea> <!-- /ko --> </th> <!-- ko foreach: $parent.answers --> <td style="padding: 2px;"> <textarea aria-labelledby="defaultTableTemplateID" onblur="validateInput($(this).closest('.tabletable').parent(), true)" oninput="propagateChange(this);" data-bind="enable: !$parents[1].readonly(), value: getTableAnswer($parents[1].uniqueId(), $parentContext.$index()+1, $index()+1, true), attr: {'data-id': $parents[1].id() + $parentContext.$index() + '' + $index(), 'data-shortname': $parent.shortname() + '|' + shortname(), 'class':$parents[1].css() + ' ' + $parents[0].css(), 'name':'answer' + $parents[1].id() + '|' + ($parentContext.$index()+1) + '|' + ($index()+1), 'aria-labelledby': $parent.id().toString() + ' ' + id().toString()}"></textarea> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> </div> <div id="delphi-template" data-bind="class: ismobile || istablet ? 'delphi-template-mobile' : 'delphi-template'"> <!-- ko if: isDelphiQuestion() --> <div class="delphichildren"></div> <!-- ko if: maxDistanceExceeded() && !changedForMedian() --> <div class="maxDistanceExceededMessage"> Your answer to this question differs significantly from the group. Please change your answer or explain your decision.<input type="hidden" name="medianWarningVisible" value="true" /> <!-- ko if: median() --> <div>Group Median: <span data-bind="html: median()"></span></div> <!-- /ko --> </div> <!-- /ko --> <div class="row" style="margin-left: 0; margin-right: 0; margin-top: 20px;"> <div class="col-md-6" data-bind="style: {'padding-right': ismobile ? 0 : undefined, 'padding-left': 0}"> <!-- ko if: showExplanationBox() --> <div class="explanation-section"> <table class='table table-condensed table-bordered minh355' style="width: auto; margin-bottom: 0; background-color: #fff"> <tr> <th class='area-header'>OPTIONAL: Please feel free to provide any additional comments</th> </tr> <tr> <td> <label hidden for="explanationTemplateID" data-bind="attr: {'for': 'explanation' + id()}">Explanation</label> <textarea id="explanationTemplateID" style="height: 125px" class="explanation-editor" data-bind="attr: {'id': 'explanation' + id(), name: 'explanation' + id()}" ></textarea> </td> </tr> <tr> <td> <div class="explanation-file-upload-section"> <div class="text" style="margin-bottom: 5px;">Add a file to your explanation</div> <div class="uploadinfo" style="display: none; padding: 10px; color: #777;">Upload started. This may take a while.</div> <input type="hidden" value="files" /> <div class="uploaded-files" data-bind="foreach: getFileAnswer(uniqueId())"> <div> <button type="button" class="unstyledbutton" data-toggle="tooltip" title="Remove uploaded file" data-bind="attr: {'id' : 'uploadlink' + $parent.id(), 'aria-label' : $data}, click: function() {deleteFile($parent.id(),'91ceaa74-cbc2-4f1f-933f-e5077f4344fa',$data,$('#uploadlink' + $parent.id()));return false;}"> <span style="margin-right: 10px;" class="glyphicon glyphicon-trash"></span> </button> <span data-bind="html: $data"></span> </div> </div> <div data-bind="attr: {'class': 'file-uploader', 'data-id': id()}" style="margin-left: 10px; margin-top: 10px;"></div> </div> </td> </tr> </table> </div> <!-- /ko --> </div> <div class="col-md-6" style="padding:0;"> <!-- ko if: !foreditor --> <div class="chart-wrapper-loader"> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"> </div> <!-- /ko --> <div class="chart-wrapper" data-bind="style: {float: ismobile || istablet ? 'left' : undefined}"> <table class="table table-condensed table-bordered chart-wrapper__table"> <tr> <th class="area-header"> <span>Statistics</span> <a onclick="loadGraphDataModal(this)" class="glyphicon glyphicon-resize-full delphi-chart-expand" data-toggle="tooltip" title="Expand" aria-label="Expand"></a> </th> </tr> <tr> <td class="chart-wrapper__chart-cell"> <div class="chart-wrapper__chart-container"></div> <div data-bind="attr: {id: 'wordcloud' + uniqueId()}" class="chart-wrapper__word-cloud-container"></div> </td> </tr> </table> <div style="clear: both"></div> </div> </div> </div> <div class="row" style="margin-left: 0; margin-right: 0; margin-top: 0px;"> <div class="col-md-12" style="padding:0;"> <div class="explanation-update-section"> <button type="button" class="btn btn-primary disabled" data-type="delphisavebutton" onclick="if (!$(this).hasClass('disabled')) { delphiUpdate($(this).closest('.survey-element')) }">Save</button> <span class="inline-loader"> <img alt="wait animation" class="center" src="/eusurvey/resources/images/ajax-loader.gif"/> </span> <br /><br /> <button type="button" data-type="delphireturntostart" class="unstyledbutton link" style="margin-right: 20px;" onclick="return checkGoToDelphiStart(this)">Return to start page</button> <button type="button" data-type="delphitonextquestion" class="unstyledbutton link delphitonextquestion" onclick="goToNextQuestion(this)">Go to next question</button> </div> <div class="delphiupdatemessage"></div> <!-- ko if: delphiTableNewComments() --> <div class="newdelphicomments label">There are new comments</div> <!-- /ko --> </div> </div> <div class="modal delete-confirmation-dialog" role="dialog" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-body"> Do you really want to delete this comment?</div> <div class="modal-footer"> <a class="btn btn-default delete-confirmation-dialog__confirmation-button">Delete</a> <a class="btn btn-primary" onclick="hideModalDialog($(this).closest('.modal'))">Cancel</a> </div> </div> </div> </div> <!-- /ko --> </div> <div id="complextable-template"> <div class='questiontitle' data-bind='attr: {id: "questiontitle" + id()}'> <span class="screen-reader-only">Question</span> <span data-bind='html: title'></span> <span class="screen-reader-only" data-bind="if: help">Additional help available</span> </div> <span class='questionhelp' data-bind="html: niceHelp, attr:{id: 'questionhelp' + id()}"></span> <div class="table-responsive"> <table class="table complextable" data-bind="css: { 'table-bordered': showHeadersAndBorders() || foreditor }, attr: {'style': size() == 0 ? 'width: auto' : 'width: 900px', 'aria-labelledby':'questiontitle' + id(), 'aria-describedby':'questionhelp' + id()}"> <tr data-bind="if: showHeadersAndBorders() || foreditor"> <!-- ko foreach: answers() --> <!-- ko if: $index() == 0--> <td class="headercell cell" data-bind="html: title, attr:{'data-id': id(), colspan: columnSpan()}">placeholder</td> <!-- /ko --> <!-- ko ifnot: $index() == 0--> <th class="headercell cell" data-bind="html: title, attr:{'data-id': id(), colspan: columnSpan()}">placeholder</th> <!-- /ko --> <!-- /ko --> </tr> <!-- ko foreach: questions() --> <tr> <!-- ko if: $parent.showHeadersAndBorders() || $parent.foreditor --> <th class="headercell cell" data-bind="html: title, attr:{'data-id': id(), 'data-type': cellType(), colspan: columnSpan()}">placeholder</th> <!-- /ko --> <!-- ko foreach: new Array($parent.columns()) --> <!-- ko if: $parents[1].isCellVisible($index()+1, $parentContext.$index()+1) --> <!--ko let: {child: $parents[1].getChild($index()+1, $parentContext.$index()+1)}--> <td class="cell" data-bind="attr:{'data-id': child == null ? '' : child.id(), 'data-type': child == null ? '' : child.cellType(), colspan: child && child.columnSpan(), 'data-col': $index()+1}"> <!-- ko if: child == null || child.cellType() == 0 --> <span> </span> <!-- /ko --> <!-- ko if: child && child.cellType() > 0 --> <!-- ko if: child.optional() == false --> <span class="mandatory">*</span> <!-- /ko --> <!-- ko if: child.title() --> <span id="defaultComplextableChildTemplateID" class='questiontitle' data-bind="attr: {id: 'questiontitle' + child.id()}"> <span class="screen-reader-only">Question</span> <span data-bind='html: child.title()'></span> <span class="screen-reader-only" data-bind="if: child.help()">Additional help available</span> </span> <!-- /ko --> <!-- ko ifnot: child.title() --> <div hidden class='questiontitle' data-bind="attr: {id: 'questiontitle' + child.id()}">Question</div> <!-- /ko --> <!-- ko if: child.help() --> <span class='questionhelp' data-bind="html: child.niceHelp(), attr:{id: 'questionhelp' + child.id()}"></span> <!-- /ko --> <!-- ko ifnot: child.help() --> <span hidden class='questionhelp' data-bind="attr:{id: 'questionhelp' + child.id()}"></span> <!-- /ko --> <!-- /ko --> <!-- ko if: child && child.cellType() > 1 --> <div data-bind="attr: {class: child.cellType() == 3 ? 'innercell' : 'innercell forprogress', onfocusout: !$parents[1].foreditor ? 'validateInput($(this).closest(\'.cell\'))' : '', onmouseleave: !$parents[1].foreditor ? 'validateInput($(this).closest(\'.cell\'))' : ''}"> <!-- focusout bubbles while blur does not; this combination of mouseleave and focusout covers all Tab/Mouse cases of leaving the cell --> <!-- ko if: child && child.cellType() == 2 --> <!-- ko if: child.minCharacters() > 0 && child.maxCharacters() > 0 --> <div class='limits' data-bind="html: getMinMaxCharacters(child.minCharacters(), child.maxCharacters()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: child.minCharacters() > 0 && (child.maxCharacters() == 0 || child.maxCharacters() == null) --> <div class='limits' data-bind="html: getMinCharacters(child.minCharacters()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: (child.minCharacters() == 0 || child.minCharacters() == null) && child.maxCharacters() > 0 --> <div class='limits' data-bind="html: getMaxCharacters(child.maxCharacters()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: (child.minCharacters() == 0 || child.minCharacters() == null) && (child.maxCharacters() == 0 || child.maxCharacters() == null) --> <div class='limits' data-bind="attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <textarea aria-labelledby="defaultComplextableChildTemplateID" oninput="propagateChange(this)" data-bind="enable: child.foreditor == false && !child.readonly(), class: child.css(), value:getValueByQuestion(child.uniqueId(), true, $element), attr: {'name' : 'answer' + child.id(), rows: child.numRows(), maxlength: child.maxCharacters() > 0 ? child.maxCharacters() : '', onkeyup: child.maxCharacters() > 0 ? 'countChar(this);' : '', 'aria-labelledby':'questiontitle' + child.id(), 'aria-describedby':'questioninfo' + child.id() + ' questionhelp' + child.id()}"></textarea> <!-- ko if: child.maxCharacters() > 0 && !$parent.foreditor --> <div class="charactercounterdiv limits" style="max-width: 645px; text-align: right; margin-left: 20px;" aria-live="polite" aria-atomic="true"> <span class="glyphicon glyphicon-alert" style="display: none; margin-right: 5px;" data-toggle="tooltip" title="You have less than 5 characters left." aria-label="You have less than 5 characters left."></span> <span class="charactersused"> <span data-bind="html: getCharacterCountInfo(child.maxCharacters()), attr: {id: 'countinfo' + child.id()}"></span> </span> <span class="characterlimitreached" data-toggle="tooltip" aria-label="Character limit reached.">Character limit reached.</span> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: child && child.cellType() == 3 --> <!-- ko if: child.min() != null && child.min() != 0 && child.max() != null && child.max() != 0 --> <div class='limits' data-bind="html: getMinMax(child.min(), child.max()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: child.min() != 0 && child.min() != null && (child.max() == 0 || child.max() == null) --> <div class='limits' data-bind="html: getMin(child.min()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: (child.min() == 0 || child.min() == null) && child.max() != null && child.max() != 0 --> <div class='limits' data-bind="html: getMax(child.max()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: (child.min() == 0 || child.min() == null) && (child.max() == 0 || child.max() == null) --> <div class='limits' data-bind="attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <input aria-labelledby="defaultComplextableChildTemplateID" data-bind="enable: child.foreditor == false && !child.readonly(), value: child.result, attr: {'id': 'answer' + child.id(), 'data-id':child.id(), 'data-shortname': child.shortname(), 'name' : (child.readonly() ? '' : 'answer' + child.id()), 'class': child.css(), 'aria-labelledby':'questiontitle' + child.id(), 'aria-describedby':'questioninfo' + child.id() + ' questionhelp' + child.id()}" oninput="propagateChange(this);" onblur="resetValidationErrors($(this).closest('.cell'));validateInput($(this).parent())" type="text" autocomplete="off" /> <!-- ko if: child.readonly() --> <input type="hidden" data-bind="value: child.result, attr: {'name': 'answer' + child.id()}" /> <!-- /ko --> <!-- /ko --> <!-- ko if: child && child.cellType() == 4 --> <!-- ko if: child && child.useRadioButtons() --> <div style="display: table" role="radiogroup" data-bind="attr: {'aria-labelledby':'questiontitle' + child.id(), 'aria-describedby':'questionhelp' + child.id()}"> <div style="display: table-row"> <!-- ko foreach: child.orderedPossibleAnswersByColumn(false, false) --> <div style="display: table-cell; padding-right: 10px"> <!-- ko foreach: $data --> <input aria-labelledby="defaultComplextableChildTemplateID" type="radio" data-bind="enable: child.foreditor == false && !child.readonly(), checkedValue: true, checked: !child.foreditor && getPAByQuestion(child.uniqueId(), $element).indexOf(uniqueId()) > -1, value: id(), attr: {'name' : 'answer' + child.id(), 'id': 'answer' + child.id(), 'aria-labelledby': 'questiontitle' + child.id(), class: child.css(), 'onclick': child.readonly() ? 'return false;' : 'checkSingleClick(this); propagateChange(this);', onkeyup: 'singleKeyUp(event, this, '+child.readonly()+')', 'previousvalue': getPAByQuestion(child.uniqueId(), $element).indexOf(uniqueId()) > -1 ? 'checked' : 'false'}" /> <span data-bind="html: title()"></span><br /> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- ko if: child && !child.useRadioButtons() --> <select aria-labelledby="defaultComplextableChildTemplateID" data-bind="enable: child.foreditor == false && !child.readonly(), value: getPAByQuestion3(child.uniqueId(), $element), attr: {'id': 'answer' + child.id(), 'onclick': !child.foreditor ? 'validateInput($(this).parent(),true); checkDependenciesAsync(this); propagateChange(this);' : '', 'data-id':child.id(), 'data-shortname': child.shortname(), 'name' : child.foreditor ? '' : ('answer' + child.id()), 'class': child.css(), 'aria-labelledby':'questiontitle' + child.id(), 'aria-describedby':'questionhelp' + child.id()}"> <option selected="selected" value=''></option> <!-- ko foreach: child.orderedPossibleAnswers(false) --> <option data-bind="html: title(), attr: {value: id(), 'data-dependencies': dependentElementsString(), 'id': 'trigger'+id()}" class="possible-answer trigger"></option> <!-- /ko --> </select> <!-- /ko --> <!-- /ko --> <!-- ko if: child && child.cellType() == 5 --> <!-- ko if: child.minChoices() != 0 && child.maxChoices() != 0 --> <div class='limits' data-bind="html: getMinMaxChoice(child.minChoices(), child.maxChoices()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: child.minChoices() != 0 && child.maxChoices() == 0 --> <div class='limits' data-bind="html: getMinChoice(child.minChoices()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: child.minChoices() == 0 && child.maxChoices() != 0 --> <div class='limits' data-bind="html: getMaxChoice(child.maxChoices()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: child.minChoices() == 0 && child.maxChoices() == 0 --> <div class='limits' data-bind="attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: child && child.useCheckboxes() --> <div class="complex-multitable" style="display: table"> <div style="display: table-row" role="list" data-bind="attr: {'aria-labelledby':'questiontitle' + child.id(), 'aria-describedby':'questioninfo' + child.id() + ' questionhelp' + child.id()}"> <!-- ko foreach: child.orderedPossibleAnswersByColumn(false, false) --> <div style="display: table-cell; padding-right: 10px"> <!-- ko foreach: $data --> <input aria-labelledby="defaultComplextableChildTemplateID" type="checkbox" onclick="resetValidationErrors($(this).closest('.cell'));propagateChange(this)" data-bind="enable: child.foreditor == false && !child.readonly(), checked: !child.foreditor && getPAByQuestionCheckBox(child.uniqueId(), uniqueId(), $element).indexOf(uniqueId()) > -1, value: id(), attr: {'name' : 'answer' + child.id(), 'id': 'answer' + child.id(), 'aria-labelledby': 'questiontitle' + child.id(), class: child.css()}"/> <span data-bind="html: title()"></span><br /> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- ko if: child && !child.useCheckboxes() --> <ul role="listbox" data-bind="attr: {'class': child.css() + ' multiple-choice', 'aria-labelledby':'questiontitle' + child.id(), 'aria-describedby':'questioninfo' + child.id() + ' questionhelp' + child.id()}, foreach: child.orderedPossibleAnswers(false),"> <li role="listitem" data-bind="attr: { 'data-id': id(), 'class': 'possible-answer trigger ' + (getPAByQuestion(child.uniqueId()).indexOf(uniqueId()) > -1 ? 'selected-choice' : '')}"> <label for="defaultComplexMCListBoxTemplateID" data-bind="attr: {for: id()}"> <button type="button" class="unstyledbutton" data-bind="attr: {'data-shortname': shortname(), 'onclick' : child.readonly() || child.foreditor ? 'return false;' : 'selectMultipleChoiceAnswer($(this)); propagateChange($(this)); event.stopImmediatePropagation();'}" > <span class="screen-reader-only">Answer</span> <span data-bind="html: strip_tags(title()), attr: {'data-id' : id(), 'id': 'answerlabel' + id()}" class="answertext"></span> </button> </label> <input id="defaultComplexMCListBoxTemplateID" data-bind="value: id(), checked: getPAByQuestion2(child.uniqueId(), uniqueId(), id, $element), attr: {'name': 'answer' + child.id(), 'id':id(), 'data-id': child.id() + id(), 'data-dependencies': dependentElementsString, 'aria-labelledby': 'answerlabel' + id()}" style="display: none" type="checkbox" /> </li> </ul> <!-- /ko --> <!-- /ko --> <!-- ko if: child && child.cellType() == 6 --> <!-- ko if: child.min() != null && child.min() != 0 && child.max() != null && child.max() != 0 --> <div class='limits' data-bind="html: getMinMax(child.min(), child.max()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: child.min() != 0 && child.min() != null && (child.max() == 0 || child.max() == null) --> <div class='limits' data-bind="html: getMin(child.min()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: (child.min() == 0 || child.min() == null) && child.max() != null && child.max() != 0 --> <div class='limits' data-bind="html: getMax(child.max()), attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <!-- ko if: (child.min() == 0 || child.min() == null) && (child.max() == 0 || child.max() == null) --> <div class='limits' data-bind="attr: {id: 'questioninfo' + child.id()}"></div> <!-- /ko --> <input aria-labelledby="defaultComplextableChildTemplateID" type="number" oninput="propagateChange(this);" onblur="resetValidationErrors($(this).closest('.cell'));validateInput($(this).parent())" data-bind="enable: child.foreditor == false && !child.readonly(), class: child.css(), value:getValueByQuestion(child.uniqueId(), true, $element), attr: {'name' : 'answer' + child.id(), min: child.min(), max: child.max(), 'data-shortname': child.shortname(), 'aria-labelledby':'questiontitle' + child.id(), 'aria-describedby':'questioninfo' + child.id() + ' questionhelp' + child.id()}"/> <!-- ko if: child.unit --> <span data-bind="text: child.unit"></span> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </td> <!-- /ko --> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> </table> </div> <!-- ko if: foreditor --> <input type="hidden" data-bind="value: 'complextable', attr: {'name': 'type' + id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: useAndLogic, attr: {'name': 'useAndLogic' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: rows, attr: {'name': 'rows' + id()}" /> <input type="hidden" data-bind="value: columns, attr: {'name': 'columns' + id()}" /> <input type="hidden" data-bind="value: size, attr: {'name': 'size' + id()}" /> <input type="hidden" data-bind="value: showHeadersAndBorders, attr: {'name': 'showHeadersAndBorders' + id()}" /> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id()}" ></textarea>Original title</label> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: childIds(), attr: {'name': 'childelements' + id()}" /> <div class="children"> <!-- ko foreach: orderedChildElements --> <div data-bind="attr: {'id' : 'child' + id()}"> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'text' + id(), 'data-id': id()}" ></textarea>Original title</label> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'uid' + id()}" /> <input type="hidden" data-bind="value: shortname, attr: {'name': 'shortname' + id()}" /> <input type="hidden" data-bind="value: optional, attr: {'name': 'optional' + id()}" /> <input type="hidden" data-bind="value: cellType, attr: {'name': 'cellType' + id()}" /> <input type="hidden" data-bind="value: row, attr: {'name': 'row' + id()}" /> <input type="hidden" data-bind="value: column, attr: {'name': 'column' + id()}" /> <input type="hidden" data-bind="value: columnSpan, attr: {'name': 'columnSpan' + id()}" /> <label hidden><textarea data-bind="text: help, attr: {'name': 'help' + id()}" ></textarea>Help</label> <input type="hidden" data-bind="value: minCharacters, attr: {'name': 'minCharacters' + id()}" /> <input type="hidden" data-bind="value: maxCharacters, attr: {'name': 'maxCharacters' + id()}" /> <input type="hidden" data-bind="value: minChoices, attr: {'name': 'minChoices' + id()}" /> <input type="hidden" data-bind="value: maxChoices, attr: {'name': 'maxChoices' + id()}" /> <input type="hidden" data-bind="value: numRows, attr: {'name': 'numRows' + id()}" /> <input type="hidden" data-bind="value: useRadioButtons, attr: {'name': 'useRadioButtons' + id()}" /> <input type="hidden" data-bind="value: useCheckboxes, attr: {'name': 'useCheckboxes' + id()}" /> <input type="hidden" data-bind="value: numColumns, attr: {'name': 'numColumns' + id()}" /> <input type="hidden" data-bind="value: order, attr: {'name': 'order' + id()}" /> <input type="hidden" data-bind="value: resultText, attr: {'name': 'resultText' + id()}" /> <input type="hidden" data-bind="value: decimalPlaces, attr: {'name': 'decimalPlaces' + id()}" /> <input type="hidden" data-bind="value: unit, attr: {'name': 'unit' + id()}" /> <input type="hidden" data-bind="value: min, attr: {'name': 'min' + id()}" /> <input type="hidden" data-bind="value: max, attr: {'name': 'max' + id()}" /> <input type="hidden" data-bind="value: formula, attr: {'name': 'formula' + id()}" /> <input type="hidden" data-bind="value: readonly, attr: {'name': 'readonly' + id()}" /> <!-- ko foreach: possibleAnswers() --> <input type="hidden" data-bind="value: shortname, attr: {'name': 'pashortname' + $parents[0].id(), 'data-id' : id()}" /> <input type="hidden" data-bind="value: uniqueId(), attr: {'name': 'pauid' + $parents[0].id(), 'data-id' : id()}" /> <label hidden><textarea data-bind="text: title, attr: {'name': 'answer' + $parents[0].id(), 'data-id' : id()}" ></textarea>Title</label> <label hidden><textarea data-bind="text: originalTitle, attr: {'name': 'originalAnswer' + $parent.id(), 'data-id' : id()}" ></textarea>Original Answer</label> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> <script type="text/javascript"> function getCharacterCountInfo(max) { var s = '[current] out of [max] characters used.'; return s.replace("[max]", max).replace("[current]", "<span class='charactercounter'>0</span>"); } function getMinMaxCharacters(min,max) { var s = 'Text of [min] to [max] characters will be accepted'; return s.replace("[min]", min).replace("[max]", max); } function getMinCharacters(min) { var s = '[min] character(s) minimum'; return s.replace("[min]", min); } function getMaxCharacters(max) { var s = '[max] character(s) maximum'; return s.replace("[max]", max); } function getMinMaxChoice(min,max) { var s = 'Between [min] and [max] selections'; return s.replace("[min]", min).replace("[max]", max); } function getMinChoice(min) { var s = 'Minimum [min] selection(s)'; return s.replace("[min]", min); } function getMaxChoice(max) { var s = 'Maximum [max] selection(s)'; return s.replace("[max]", max); } function getMaxSelections(max) { var s = 'at most [max] selection(s)'; return s.replace("[max]", max); } function getRankingQuestionInfo(max) { var s = 'Ranking Question list with [max] items.'; return s.replace("[max]", max); } function getInitialOrderInfoText() { return "Initial order is as follows"; } function round(value) { var d = parseFloat(value); var s = d.toString(); if (endsWith(s, ".0")) return s.replace(".0",""); return s; } function getMinMax(min,max) { var s = 'Only values between [min] and [max] are allowed'; return "<div class='limits'>" + s.replace("[min]", round(min)).replace("[max]", round(max)) + "</div>"; } function getMin(min) { var s = 'Only values of at least [min] are allowed'; return "<div class='limits'>" + s.replace("[min]", min) + "</div>"; } function getMax(max) { var s = 'Only values of at most [max] are allowed'; return "<div class='limits'>" + s.replace("[max]", max) + "</div>"; } function getMinMaxDate(min,max) { var s = 'between [min] and [max]'; return "<div class='limits'>" + s.replace("[min]", min).replace("[max]", max) + "</div>"; } function getMinDate(min) { var s = 'after [min]'; return "<div class='limits'>" + s.replace("[min]", min) + "</div>"; } function getMaxDate(max) { var s = 'before [max]'; return "<div class='limits'>" + s.replace("[max]", max) + "</div>"; } function getMinMaxRows(min,max) { var s = 'between [min] and [max] answered rows'; return "<div class='limits'>" + s.replace("[min]", min).replace("[max]", max) + "</div>"; } function getMinRows(min) { var s = 'at least [min] answered row(s)'; return "<div class='limits'>" + s.replace("[min]", min) + "</div>"; } function getMaxRows(max) { var s = 'at most [max] answered row(s)'; return "<div class='limits'>" + s.replace("[max]", max) + "</div>"; } var idsforuids = null; function initializeTriggers() { triggers = {}; idsforuids = {}; triggers["506c94df-7caf-4d60-83e8-7b40118d1835"] = ""; idsforuids["506c94df-7caf-4d60-83e8-7b40118d1835"] = "92849150"; triggers["34f4f96f-6dbe-47b0-9841-e7b7ecdf1b8d"] = ""; idsforuids["34f4f96f-6dbe-47b0-9841-e7b7ecdf1b8d"] = "92849151"; triggers["89b29948-caea-4ca7-a86c-dce7ca35873d"] = ""; idsforuids["89b29948-caea-4ca7-a86c-dce7ca35873d"] = "92849152"; triggers["f005466b-b5a9-4ace-b766-42013f81a798"] = ""; idsforuids["f005466b-b5a9-4ace-b766-42013f81a798"] = "92849153"; triggers["57ddea8a-634d-43c3-91f5-9994fd21697d"] = ""; idsforuids["57ddea8a-634d-43c3-91f5-9994fd21697d"] = "92849154"; triggers["c1681d1a-17af-4384-ae66-3a75ede5d92c"] = ""; idsforuids["c1681d1a-17af-4384-ae66-3a75ede5d92c"] = "92849155"; triggers["0bdb9933-6f48-4825-983e-486fd96a39f7"] = ""; idsforuids["0bdb9933-6f48-4825-983e-486fd96a39f7"] = "92849156"; triggers["b1c7c335-9192-4329-8d63-994e1524256c"] = ""; idsforuids["b1c7c335-9192-4329-8d63-994e1524256c"] = "92849157"; triggers["7526ec41-58b6-5b57-840b-cdc07d66673e"] = ""; idsforuids["7526ec41-58b6-5b57-840b-cdc07d66673e"] = "92849158"; triggers["9f7431bf-626c-4ff9-a69f-4990fe8b8426"] = ""; idsforuids["9f7431bf-626c-4ff9-a69f-4990fe8b8426"] = "92849159"; triggers["276a8e30-4d02-4b4c-b3ff-58447b0d7c2a"] = ""; idsforuids["276a8e30-4d02-4b4c-b3ff-58447b0d7c2a"] = "92849160"; triggers["acc34428-42c0-4a57-9283-e613bd3461c5"] = ""; idsforuids["acc34428-42c0-4a57-9283-e613bd3461c5"] = "92849161"; triggers["5408ed75-b202-4beb-9ff4-850aff7a8c08"] = ""; idsforuids["5408ed75-b202-4beb-9ff4-850aff7a8c08"] = "92849162"; triggers["356de979-110e-40cc-81d3-740159fd32ba"] = ""; idsforuids["356de979-110e-40cc-81d3-740159fd32ba"] = "92849163"; triggers["1f2e3d1a-d6e7-4f39-a2b3-e89795c154f3"] = "92849162;"; idsforuids["1f2e3d1a-d6e7-4f39-a2b3-e89795c154f3"] = "92849164"; triggers["00e226db-c1fd-4154-a795-1500b4ec2f36"] = ""; idsforuids["00e226db-c1fd-4154-a795-1500b4ec2f36"] = "92849165"; triggers["21dd755f-eb6f-44d4-b680-6f3c104bcbc9"] = ""; idsforuids["21dd755f-eb6f-44d4-b680-6f3c104bcbc9"] = "92849166"; triggers["81d04491-e6df-4675-b6fd-57dc814eb08b"] = ""; idsforuids["81d04491-e6df-4675-b6fd-57dc814eb08b"] = "92849167"; triggers["04c876fa-0728-4b52-9b55-5821385da0c6"] = ""; idsforuids["04c876fa-0728-4b52-9b55-5821385da0c6"] = "92849168"; triggers["73da1d7b-fe27-4287-b3b8-475b056b252c"] = ""; idsforuids["73da1d7b-fe27-4287-b3b8-475b056b252c"] = "92849169"; triggers["e802d206-f96f-4a1c-8f82-6d79d18c3ae5"] = ""; idsforuids["e802d206-f96f-4a1c-8f82-6d79d18c3ae5"] = "92849170"; triggers["7fcd0f93-2209-4070-a18b-286b80dfb2bc"] = ""; idsforuids["7fcd0f93-2209-4070-a18b-286b80dfb2bc"] = "92849171"; triggers["ea3437a1-b4dc-43f0-9b9f-c0d77cf85ddb"] = ""; idsforuids["ea3437a1-b4dc-43f0-9b9f-c0d77cf85ddb"] = "92849172"; triggers["f85afd5b-0946-4191-809f-d81ffb993ca0"] = ""; idsforuids["f85afd5b-0946-4191-809f-d81ffb993ca0"] = "92849173"; triggers["941ecfa2-4f0f-4b83-a43f-ddb97f70da07"] = ""; idsforuids["941ecfa2-4f0f-4b83-a43f-ddb97f70da07"] = "92849174"; triggers["284cecb3-876c-46de-beae-404341eb880d"] = ""; idsforuids["284cecb3-876c-46de-beae-404341eb880d"] = "92849175"; triggers["bc72c413-8ef8-4d0f-b734-310ac05b8db3"] = ""; idsforuids["bc72c413-8ef8-4d0f-b734-310ac05b8db3"] = "92849176"; triggers["0405b5e3-c6bb-44ff-a6b8-da194029a559"] = ""; idsforuids["0405b5e3-c6bb-44ff-a6b8-da194029a559"] = "92849177"; triggers["66db0fd7-c0d0-4e3f-9969-a9b79e833b12"] = ""; idsforuids["66db0fd7-c0d0-4e3f-9969-a9b79e833b12"] = "92849178"; triggers["8e3853aa-2494-4de7-91be-630d20384cd9"] = ""; idsforuids["8e3853aa-2494-4de7-91be-630d20384cd9"] = "92849179"; triggers["f138a732-9d11-4efc-86ba-2fa75e505a48"] = ""; idsforuids["f138a732-9d11-4efc-86ba-2fa75e505a48"] = "92849180"; triggers["f325c091-17ea-4eb7-87f2-81dad2311eec"] = ""; idsforuids["f325c091-17ea-4eb7-87f2-81dad2311eec"] = "92849181"; triggers["7919b9d2-958f-40f0-bb48-53b65341f7dc"] = ""; idsforuids["7919b9d2-958f-40f0-bb48-53b65341f7dc"] = "92849182"; triggers["4516ace9-f019-4d0e-8775-9d4301be2bb8"] = ""; idsforuids["4516ace9-f019-4d0e-8775-9d4301be2bb8"] = "92849183"; triggers["280b73f5-e773-4478-87bc-eb79a4bf68b2"] = ""; idsforuids["280b73f5-e773-4478-87bc-eb79a4bf68b2"] = "92849184"; triggers["7e5d61ca-6d76-4af2-942e-dcf43ae20914"] = ""; idsforuids["7e5d61ca-6d76-4af2-942e-dcf43ae20914"] = "92849185"; triggers["97d4d7e5-0b8b-4128-9739-7d5a0d0c2c8b"] = ""; idsforuids["97d4d7e5-0b8b-4128-9739-7d5a0d0c2c8b"] = "92849186"; triggers["98e3863d-a418-4e9a-a7d2-5002994d1a4e"] = ""; idsforuids["98e3863d-a418-4e9a-a7d2-5002994d1a4e"] = "92849187"; triggers["75775d67-5474-4101-b2ac-c0831397d4db"] = ""; idsforuids["75775d67-5474-4101-b2ac-c0831397d4db"] = "92849188"; triggers["7763a491-588e-454a-b3f6-0f14e1923ebb"] = ""; idsforuids["7763a491-588e-454a-b3f6-0f14e1923ebb"] = "92849189"; triggers["36be3484-6a57-4be7-ab03-61be206dcd32"] = ""; idsforuids["36be3484-6a57-4be7-ab03-61be206dcd32"] = "92849190"; triggers["a3300757-53dd-4658-9f16-4b06292db958"] = ""; idsforuids["a3300757-53dd-4658-9f16-4b06292db958"] = "92849191"; triggers["a3a90169-26df-4ea0-a5ec-73c11c4ab1af"] = ""; idsforuids["a3a90169-26df-4ea0-a5ec-73c11c4ab1af"] = "92849192"; triggers["1db120ed-eb8d-8275-9064-380f9c549ca7"] = "92849163;"; idsforuids["1db120ed-eb8d-8275-9064-380f9c549ca7"] = "92849193"; triggers["acfbbfbd-e953-09dc-6229-e1fb34565a55"] = "92849163;"; idsforuids["acfbbfbd-e953-09dc-6229-e1fb34565a55"] = "92849194"; triggers["ad7556f6-6fbf-477a-a29e-a02c489989ee"] = ""; idsforuids["ad7556f6-6fbf-477a-a29e-a02c489989ee"] = "92849195"; triggers["2f7792ae-085e-4f48-a4a7-deed8d04648f"] = ""; idsforuids["2f7792ae-085e-4f48-a4a7-deed8d04648f"] = "92849196"; triggers["b40f048f-ba55-4028-9bfe-bd78ddf1a194"] = ""; idsforuids["b40f048f-ba55-4028-9bfe-bd78ddf1a194"] = "92849197"; triggers["4e3e7830-a6dd-4e60-85f9-90d540a18491"] = ""; idsforuids["4e3e7830-a6dd-4e60-85f9-90d540a18491"] = "92849198"; triggers["4dbfb365-8676-4662-90a0-edcf12f79dc5"] = ""; idsforuids["4dbfb365-8676-4662-90a0-edcf12f79dc5"] = "92849199"; triggers["a0eb420e-6a46-48c4-a665-83c0cfe89245"] = ""; idsforuids["a0eb420e-6a46-48c4-a665-83c0cfe89245"] = "92849200"; triggers["dc3e9ee3-3d75-4c7d-ac12-f05d591da2dc"] = ""; idsforuids["dc3e9ee3-3d75-4c7d-ac12-f05d591da2dc"] = "92849201"; triggers["ad0dad26-3370-4ba1-ac37-806a6f7f6d57"] = ""; idsforuids["ad0dad26-3370-4ba1-ac37-806a6f7f6d57"] = "92849202"; triggers["2248bfd3-6cf8-442b-9526-057be86bafde"] = ""; idsforuids["2248bfd3-6cf8-442b-9526-057be86bafde"] = "92849203"; triggers["1d058e52-6a5e-4d52-94f7-aa554786387d"] = ""; idsforuids["1d058e52-6a5e-4d52-94f7-aa554786387d"] = "92849204"; triggers["40ef0ebd-0ee7-458a-bf01-3e1b3cb6d5f5"] = ""; idsforuids["40ef0ebd-0ee7-458a-bf01-3e1b3cb6d5f5"] = "92849205"; triggers["847fd956-0ba2-4417-8178-afee4e468c65"] = ""; idsforuids["847fd956-0ba2-4417-8178-afee4e468c65"] = "92849206"; triggers["795e92e4-7be9-4591-9ace-742bc42731a0"] = ""; idsforuids["795e92e4-7be9-4591-9ace-742bc42731a0"] = "92849207"; triggers["c52af966-fc9e-4255-b989-687608466c59"] = ""; idsforuids["c52af966-fc9e-4255-b989-687608466c59"] = "92849208"; triggers["5b4d47e2-9853-4f52-a884-ee94243e6656"] = ""; idsforuids["5b4d47e2-9853-4f52-a884-ee94243e6656"] = "92849209"; triggers["6d2ca9b3-adeb-4525-80e5-c509409f5e2d"] = ""; idsforuids["6d2ca9b3-adeb-4525-80e5-c509409f5e2d"] = "92849210"; triggers["bcd668ca-bf83-413d-8445-484bcaffbd14"] = ""; idsforuids["bcd668ca-bf83-413d-8445-484bcaffbd14"] = "92849211"; triggers["c013b61a-4e6b-4e9e-aae7-fca929579bf8"] = ""; idsforuids["c013b61a-4e6b-4e9e-aae7-fca929579bf8"] = "92849212"; triggers["3ee6e328-9643-4dcc-a871-d7c590fae032"] = ""; idsforuids["3ee6e328-9643-4dcc-a871-d7c590fae032"] = "92849213"; triggers["3f7e1bea-9c05-4346-83a0-c4f74f6f4bb4"] = ""; idsforuids["3f7e1bea-9c05-4346-83a0-c4f74f6f4bb4"] = "92849214"; triggers["3397040a-57bc-434b-9b02-e813f214b4db"] = ""; idsforuids["3397040a-57bc-434b-9b02-e813f214b4db"] = "92849215"; triggers["ab3ba3b0-a79c-4f07-90eb-c90c5c7938d5"] = ""; idsforuids["ab3ba3b0-a79c-4f07-90eb-c90c5c7938d5"] = "92849216"; triggers["87a3e8e5-f1d0-4cce-aae3-0c34a63a62f2"] = ""; idsforuids["87a3e8e5-f1d0-4cce-aae3-0c34a63a62f2"] = "92849217"; triggers["30409428-72d9-459f-9e99-b08690894684"] = ""; idsforuids["30409428-72d9-459f-9e99-b08690894684"] = "92849218"; triggers["ba1f20b9-85dd-4a22-860e-484a128ef169"] = ""; idsforuids["ba1f20b9-85dd-4a22-860e-484a128ef169"] = "92849219"; triggers["bf306f1b-8fad-47eb-8986-bb534d842fc1"] = ""; idsforuids["bf306f1b-8fad-47eb-8986-bb534d842fc1"] = "92849220"; triggers["26a548a2-99e8-4947-98a7-bc3b1fdbd91a"] = ""; idsforuids["26a548a2-99e8-4947-98a7-bc3b1fdbd91a"] = "92849221"; triggers["9db60acb-8060-4c3a-a5fd-20cd6446cecd"] = ""; idsforuids["9db60acb-8060-4c3a-a5fd-20cd6446cecd"] = "92849222"; triggers["08a0c174-8c79-74a1-5f60-f2bf8703060b"] = "92849163;"; idsforuids["08a0c174-8c79-74a1-5f60-f2bf8703060b"] = "92849223"; triggers["3a7d1e2a-1862-4f1c-8c6a-5b9cb2bcb463"] = ""; idsforuids["3a7d1e2a-1862-4f1c-8c6a-5b9cb2bcb463"] = "92849224"; triggers["994b94cf-a89e-4bd9-a480-b230b9251da8"] = ""; idsforuids["994b94cf-a89e-4bd9-a480-b230b9251da8"] = "92849225"; triggers["d4131b7e-d080-4486-a8f6-9dcaa1c7c36f"] = "92849163;"; idsforuids["d4131b7e-d080-4486-a8f6-9dcaa1c7c36f"] = "92849226"; triggers["d34e7d20-2c6d-4619-8f0c-8ad0fbb8318b"] = ""; idsforuids["d34e7d20-2c6d-4619-8f0c-8ad0fbb8318b"] = "92849227"; triggers["cd0b828b-08c9-42b7-a94e-e8856381baad"] = ""; idsforuids["cd0b828b-08c9-42b7-a94e-e8856381baad"] = "92849228"; triggers["2d01f3e6-a953-43d8-9bce-f8e65a355bfb"] = ""; idsforuids["2d01f3e6-a953-43d8-9bce-f8e65a355bfb"] = "92849229"; triggers["452547c5-a771-4291-92f8-df5ba96678db"] = ""; idsforuids["452547c5-a771-4291-92f8-df5ba96678db"] = "92849230"; triggers["f217ff26-b412-4405-a1e3-2eac5e436aed"] = ""; idsforuids["f217ff26-b412-4405-a1e3-2eac5e436aed"] = "92849231"; triggers["777d0655-6430-4fae-be25-84384b5ce616"] = ""; idsforuids["777d0655-6430-4fae-be25-84384b5ce616"] = "92849232"; triggers["72f51ae9-bca7-45be-b42c-2864a511ece2"] = ""; idsforuids["72f51ae9-bca7-45be-b42c-2864a511ece2"] = "92849233"; triggers["ea6ea897-166a-4445-98b9-dc535338f611"] = ""; idsforuids["ea6ea897-166a-4445-98b9-dc535338f611"] = "92849234"; triggers["6ae50418-5123-4262-9b92-7651592f14c3"] = ""; idsforuids["6ae50418-5123-4262-9b92-7651592f14c3"] = "92849235"; triggers["c178b238-6292-4d64-a383-162822b32280"] = ""; idsforuids["c178b238-6292-4d64-a383-162822b32280"] = "92849236"; triggers["6f097c8c-7436-4619-9b68-9c809ba7157e"] = ""; idsforuids["6f097c8c-7436-4619-9b68-9c809ba7157e"] = "92849237"; triggers["ce60cdae-3889-436b-848d-e4491f092967"] = ""; idsforuids["ce60cdae-3889-436b-848d-e4491f092967"] = "92849238"; triggers["733f59ce-5e6d-7af1-30e5-294377d9f62f"] = "92849163;"; idsforuids["733f59ce-5e6d-7af1-30e5-294377d9f62f"] = "92849239"; triggers["0404b5c7-78a4-43c2-8806-f82c149d68c7"] = ""; idsforuids["0404b5c7-78a4-43c2-8806-f82c149d68c7"] = "92849240"; triggers["5b541669-6d21-486d-a45f-f1e8755b99c6"] = ""; idsforuids["5b541669-6d21-486d-a45f-f1e8755b99c6"] = "92849241"; triggers["d990c78e-7542-4d0c-b004-fc91e0189e96"] = ""; idsforuids["d990c78e-7542-4d0c-b004-fc91e0189e96"] = "92849242"; triggers["cf8c1528-f506-4932-aa56-e98a3cc12710"] = ""; idsforuids["cf8c1528-f506-4932-aa56-e98a3cc12710"] = "92849243"; triggers["f8144c70-f96e-4a76-b5aa-36bfe3c2ea7f"] = ""; idsforuids["f8144c70-f96e-4a76-b5aa-36bfe3c2ea7f"] = "92849244"; triggers["0221b54b-a625-4e8e-b514-8228f7706914"] = ""; idsforuids["0221b54b-a625-4e8e-b514-8228f7706914"] = "92849245"; triggers["1884a991-33b1-4cf3-a8c2-7bd8e757924b"] = ""; idsforuids["1884a991-33b1-4cf3-a8c2-7bd8e757924b"] = "92849246"; triggers["20bd8d3c-10f2-4594-95a9-8d3246f4c0ce"] = ""; idsforuids["20bd8d3c-10f2-4594-95a9-8d3246f4c0ce"] = "92849247"; triggers["eeb077b6-7de6-4d51-b386-e2c9509107e0"] = ""; idsforuids["eeb077b6-7de6-4d51-b386-e2c9509107e0"] = "92849248"; triggers["608f0a52-fefb-4e78-830c-9766f3eb4f1a"] = ""; idsforuids["608f0a52-fefb-4e78-830c-9766f3eb4f1a"] = "92849249"; triggers["caa55b81-a24c-42b2-92cf-e50bfb0c0f6f"] = ""; idsforuids["caa55b81-a24c-42b2-92cf-e50bfb0c0f6f"] = "92849250"; triggers["fe8cb88e-d47d-40db-9c74-f4fbde634837"] = ""; idsforuids["fe8cb88e-d47d-40db-9c74-f4fbde634837"] = "92849251"; triggers["b38980d3-c0f9-4a8c-a3a4-cfb694d5c0b7"] = ""; idsforuids["b38980d3-c0f9-4a8c-a3a4-cfb694d5c0b7"] = "92849252"; triggers["d4b1971b-1a2b-4511-b883-09c12d2939a9"] = ""; idsforuids["d4b1971b-1a2b-4511-b883-09c12d2939a9"] = "92849253"; triggers["cd87ae2a-2afe-4b48-adbb-09c8c4d9f353"] = ""; idsforuids["cd87ae2a-2afe-4b48-adbb-09c8c4d9f353"] = "92849254"; triggers["7631dcf4-6106-42e7-97b4-0a15b0779ed1"] = ""; idsforuids["7631dcf4-6106-42e7-97b4-0a15b0779ed1"] = "92849255"; triggers["b532482a-7a88-4bfd-bdc4-953815366f49"] = ""; idsforuids["b532482a-7a88-4bfd-bdc4-953815366f49"] = "92849256"; triggers["1b4892fd-88eb-4bda-8eda-5d4d2edf59ee"] = ""; idsforuids["1b4892fd-88eb-4bda-8eda-5d4d2edf59ee"] = "92849257"; triggers["c990c96c-3273-4759-9a9f-89918d695a8a"] = ""; idsforuids["c990c96c-3273-4759-9a9f-89918d695a8a"] = "92849258"; triggers["9558f414-b174-44e4-a4f5-516708684d6f"] = ""; idsforuids["9558f414-b174-44e4-a4f5-516708684d6f"] = "92849259"; triggers["bfa3ca35-b308-4405-add0-f58f297a7ef3"] = ""; idsforuids["bfa3ca35-b308-4405-add0-f58f297a7ef3"] = "92849260"; triggers["52b64cb1-b7a4-4f6b-b158-5ae89d44677e"] = ""; idsforuids["52b64cb1-b7a4-4f6b-b158-5ae89d44677e"] = "92849261"; triggers["986866a8-0c20-4c7a-8c91-3ea26ee588c0"] = ""; idsforuids["986866a8-0c20-4c7a-8c91-3ea26ee588c0"] = "92849262"; triggers["f0b41bb5-03ce-4d82-810a-0d003577f727"] = ""; idsforuids["f0b41bb5-03ce-4d82-810a-0d003577f727"] = "92849263"; triggers["6511a274-2139-4673-b653-b145452ef3c9"] = ""; idsforuids["6511a274-2139-4673-b653-b145452ef3c9"] = "92849264"; triggers["e2eca34e-c8b6-48e8-914a-efc56b04717b"] = ""; idsforuids["e2eca34e-c8b6-48e8-914a-efc56b04717b"] = "92849265"; triggers["11fc5761-a748-42ff-b403-07f013a0aa5d"] = ""; idsforuids["11fc5761-a748-42ff-b403-07f013a0aa5d"] = "92849266"; triggers["29df2cd4-b630-42e1-9ab4-411c26dbe34b"] = ""; idsforuids["29df2cd4-b630-42e1-9ab4-411c26dbe34b"] = "92849267"; triggers["90f8aab9-f298-4fa9-9708-50d57a333583"] = ""; idsforuids["90f8aab9-f298-4fa9-9708-50d57a333583"] = "92849268"; triggers["4385e534-e8d1-42fa-8723-cb5910befcde"] = ""; idsforuids["4385e534-e8d1-42fa-8723-cb5910befcde"] = "92849269"; triggers["19579107-f433-42dd-93b9-32eb0185a4cc"] = ""; idsforuids["19579107-f433-42dd-93b9-32eb0185a4cc"] = "92849270"; triggers["56f54fc9-d175-4241-a921-1f96a2ce2f69"] = ""; idsforuids["56f54fc9-d175-4241-a921-1f96a2ce2f69"] = "92849271"; triggers["116d81a5-7f83-4e16-95d8-98f1ff721d5d"] = ""; idsforuids["116d81a5-7f83-4e16-95d8-98f1ff721d5d"] = "92849272"; triggers["6a2b91c1-67c1-43eb-9a69-d7a0a7d64a57"] = ""; idsforuids["6a2b91c1-67c1-43eb-9a69-d7a0a7d64a57"] = "92849273"; triggers["84bf189c-d7a0-4112-83ba-28d28d833760"] = ""; idsforuids["84bf189c-d7a0-4112-83ba-28d28d833760"] = "92849274"; triggers["fe4559a8-1eaf-41b8-baa7-ee22db5dd419"] = ""; idsforuids["fe4559a8-1eaf-41b8-baa7-ee22db5dd419"] = "92849275"; triggers["ef8df275-7896-4e42-a431-57fbe481a321"] = ""; idsforuids["ef8df275-7896-4e42-a431-57fbe481a321"] = "92849276"; triggers["b46eb5fa-bd01-4cb4-a746-85de513863d1"] = ""; idsforuids["b46eb5fa-bd01-4cb4-a746-85de513863d1"] = "92849277"; triggers["a42c4373-1bd4-476e-ad50-a107ac54f04f"] = ""; idsforuids["a42c4373-1bd4-476e-ad50-a107ac54f04f"] = "92849278"; triggers["06713114-30be-4668-9b65-4a8b6a4da8a2"] = ""; idsforuids["06713114-30be-4668-9b65-4a8b6a4da8a2"] = "92849279"; triggers["599c62b0-0226-4423-b703-7aa07de1ff39"] = ""; idsforuids["599c62b0-0226-4423-b703-7aa07de1ff39"] = "92849280"; triggers["26f7dd6d-3d95-4c2a-97f1-3e233436167d"] = ""; idsforuids["26f7dd6d-3d95-4c2a-97f1-3e233436167d"] = "92849281"; triggers["87dce1a6-1b9b-40a0-8fe3-ec1583cb4b13"] = ""; idsforuids["87dce1a6-1b9b-40a0-8fe3-ec1583cb4b13"] = "92849282"; triggers["8e5be7b6-203a-5cb6-b181-883f9e9c9ad2"] = "92849282;"; idsforuids["8e5be7b6-203a-5cb6-b181-883f9e9c9ad2"] = "92849283"; triggers["46b4c44d-14a8-390d-4da1-7b4119c6b22d"] = ""; idsforuids["46b4c44d-14a8-390d-4da1-7b4119c6b22d"] = "92849284"; triggers["ab30a76f-0da1-523c-edf0-ee61996c869a"] = ""; idsforuids["ab30a76f-0da1-523c-edf0-ee61996c869a"] = "92849285"; triggers["8e615cf7-3b7f-2792-e7d9-74aa1cf96408"] = ""; idsforuids["8e615cf7-3b7f-2792-e7d9-74aa1cf96408"] = "92849286"; triggers["164a8ab6-a586-27c0-b4e1-56aa0854d5dc"] = ""; idsforuids["164a8ab6-a586-27c0-b4e1-56aa0854d5dc"] = "92849287"; triggers["4e3e97b7-0e87-47b8-ac05-3064d9596dbf"] = ""; idsforuids["4e3e97b7-0e87-47b8-ac05-3064d9596dbf"] = "92849288"; triggers["300f82a6-f159-488c-a807-68459bc772d3"] = ""; idsforuids["300f82a6-f159-488c-a807-68459bc772d3"] = "92849289"; triggers["12407b48-cd83-48ee-bba4-16933f01328b"] = ""; idsforuids["12407b48-cd83-48ee-bba4-16933f01328b"] = "92849290"; triggers["28fba47d-30b1-773c-a839-f06d674b0dec"] = ""; idsforuids["28fba47d-30b1-773c-a839-f06d674b0dec"] = "92849291"; triggers["4c9ccefb-f186-4fa7-b9ef-6036732d1c6a"] = ""; idsforuids["4c9ccefb-f186-4fa7-b9ef-6036732d1c6a"] = "92849292"; triggers["0e7f31dc-b896-4659-8680-f425da7a6404"] = ""; idsforuids["0e7f31dc-b896-4659-8680-f425da7a6404"] = "92849293"; triggers["8661aa55-cd6a-e1d7-ae06-d8a9631ee66a"] = "92849293;"; idsforuids["8661aa55-cd6a-e1d7-ae06-d8a9631ee66a"] = "92849294"; triggers["ba2054cc-febd-ee4f-c759-c9b25dd52815"] = ""; idsforuids["ba2054cc-febd-ee4f-c759-c9b25dd52815"] = "92849295"; triggers["ef72dabc-5259-05ae-6fff-8a59f841d747"] = ""; idsforuids["ef72dabc-5259-05ae-6fff-8a59f841d747"] = "92849296"; triggers["f0a16861-8bca-329a-86a2-aa8b8e6f5fef"] = ""; idsforuids["f0a16861-8bca-329a-86a2-aa8b8e6f5fef"] = "92849297"; triggers["969171b6-0cd9-fa57-d7cc-2d0eb4a187d9"] = ""; idsforuids["969171b6-0cd9-fa57-d7cc-2d0eb4a187d9"] = "92849298"; } function initializeAnswerData() { values = {}; pavalues = {}; pavaluesid = {}; tablevalues = {}; filevalues = {}; validationMessages = {}; if ($("#survey\\.id").length > 0) { initializeBackupHelper(); restoreBackup(); } } function initializeBackupHelper(){ backupHelper = {} backupHelper["92849150"] = { uid : "506c94df-7caf-4d60-83e8-7b40118d1835", type : "Section" } backupHelper["92849151"] = { uid : "34f4f96f-6dbe-47b0-9841-e7b7ecdf1b8d", type : "Text" } backupHelper["92849152"] = { uid : "89b29948-caea-4ca7-a86c-dce7ca35873d", type : "Image" } backupHelper["92849153"] = { uid : "f005466b-b5a9-4ace-b766-42013f81a798", type : "Section" } backupHelper["92849154"] = { uid : "57ddea8a-634d-43c3-91f5-9994fd21697d", type : "FreeTextQuestion" } backupHelper["92849155"] = { uid : "c1681d1a-17af-4384-ae66-3a75ede5d92c", type : "FreeTextQuestion" } backupHelper["92849156"] = { uid : "0bdb9933-6f48-4825-983e-486fd96a39f7", type : "EmailQuestion" } backupHelper["92849157"] = { uid : "b1c7c335-9192-4329-8d63-994e1524256c", type : "Section" } backupHelper["92849158"] = { uid : "7526ec41-58b6-5b57-840b-cdc07d66673e", type : "SingleChoiceQuestion" } backupHelper["92849159"] = { uid : "9f7431bf-626c-4ff9-a69f-4990fe8b8426", type : "PossibleAnswer" } backupHelper["92849160"] = { uid : "276a8e30-4d02-4b4c-b3ff-58447b0d7c2a", type : "PossibleAnswer" } backupHelper["92849161"] = { uid : "acc34428-42c0-4a57-9283-e613bd3461c5", type : "MultipleChoiceQuestion" } backupHelper["92849162"] = { uid : "5408ed75-b202-4beb-9ff4-850aff7a8c08", type : "PossibleAnswer" } backupHelper["92849163"] = { uid : "356de979-110e-40cc-81d3-740159fd32ba", type : "PossibleAnswer" } backupHelper["92849164"] = { uid : "1f2e3d1a-d6e7-4f39-a2b3-e89795c154f3", type : "SingleChoiceQuestion" } backupHelper["92849165"] = { uid : "00e226db-c1fd-4154-a795-1500b4ec2f36", type : "PossibleAnswer" } backupHelper["92849166"] = { uid : "21dd755f-eb6f-44d4-b680-6f3c104bcbc9", type : "PossibleAnswer" } backupHelper["92849167"] = { uid : "81d04491-e6df-4675-b6fd-57dc814eb08b", type : "PossibleAnswer" } backupHelper["92849168"] = { uid : "04c876fa-0728-4b52-9b55-5821385da0c6", type : "PossibleAnswer" } backupHelper["92849169"] = { uid : "73da1d7b-fe27-4287-b3b8-475b056b252c", type : "PossibleAnswer" } backupHelper["92849170"] = { uid : "e802d206-f96f-4a1c-8f82-6d79d18c3ae5", type : "PossibleAnswer" } backupHelper["92849171"] = { uid : "7fcd0f93-2209-4070-a18b-286b80dfb2bc", type : "PossibleAnswer" } backupHelper["92849172"] = { uid : "ea3437a1-b4dc-43f0-9b9f-c0d77cf85ddb", type : "PossibleAnswer" } backupHelper["92849173"] = { uid : "f85afd5b-0946-4191-809f-d81ffb993ca0", type : "PossibleAnswer" } backupHelper["92849174"] = { uid : "941ecfa2-4f0f-4b83-a43f-ddb97f70da07", type : "PossibleAnswer" } backupHelper["92849175"] = { uid : "284cecb3-876c-46de-beae-404341eb880d", type : "PossibleAnswer" } backupHelper["92849176"] = { uid : "bc72c413-8ef8-4d0f-b734-310ac05b8db3", type : "PossibleAnswer" } backupHelper["92849177"] = { uid : "0405b5e3-c6bb-44ff-a6b8-da194029a559", type : "PossibleAnswer" } backupHelper["92849178"] = { uid : "66db0fd7-c0d0-4e3f-9969-a9b79e833b12", type : "PossibleAnswer" } backupHelper["92849179"] = { uid : "8e3853aa-2494-4de7-91be-630d20384cd9", type : "PossibleAnswer" } backupHelper["92849180"] = { uid : "f138a732-9d11-4efc-86ba-2fa75e505a48", type : "PossibleAnswer" } backupHelper["92849181"] = { uid : "f325c091-17ea-4eb7-87f2-81dad2311eec", type : "PossibleAnswer" } backupHelper["92849182"] = { uid : "7919b9d2-958f-40f0-bb48-53b65341f7dc", type : "PossibleAnswer" } backupHelper["92849183"] = { uid : "4516ace9-f019-4d0e-8775-9d4301be2bb8", type : "PossibleAnswer" } backupHelper["92849184"] = { uid : "280b73f5-e773-4478-87bc-eb79a4bf68b2", type : "PossibleAnswer" } backupHelper["92849185"] = { uid : "7e5d61ca-6d76-4af2-942e-dcf43ae20914", type : "PossibleAnswer" } backupHelper["92849186"] = { uid : "97d4d7e5-0b8b-4128-9739-7d5a0d0c2c8b", type : "PossibleAnswer" } backupHelper["92849187"] = { uid : "98e3863d-a418-4e9a-a7d2-5002994d1a4e", type : "PossibleAnswer" } backupHelper["92849188"] = { uid : "75775d67-5474-4101-b2ac-c0831397d4db", type : "PossibleAnswer" } backupHelper["92849189"] = { uid : "7763a491-588e-454a-b3f6-0f14e1923ebb", type : "PossibleAnswer" } backupHelper["92849190"] = { uid : "36be3484-6a57-4be7-ab03-61be206dcd32", type : "PossibleAnswer" } backupHelper["92849191"] = { uid : "a3300757-53dd-4658-9f16-4b06292db958", type : "PossibleAnswer" } backupHelper["92849192"] = { uid : "a3a90169-26df-4ea0-a5ec-73c11c4ab1af", type : "PossibleAnswer" } backupHelper["92849193"] = { uid : "1db120ed-eb8d-8275-9064-380f9c549ca7", type : "FreeTextQuestion" } backupHelper["92849194"] = { uid : "acfbbfbd-e953-09dc-6229-e1fb34565a55", type : "SingleChoiceQuestion" } backupHelper["92849195"] = { uid : "ad7556f6-6fbf-477a-a29e-a02c489989ee", type : "PossibleAnswer" } backupHelper["92849196"] = { uid : "2f7792ae-085e-4f48-a4a7-deed8d04648f", type : "PossibleAnswer" } backupHelper["92849197"] = { uid : "b40f048f-ba55-4028-9bfe-bd78ddf1a194", type : "PossibleAnswer" } backupHelper["92849198"] = { uid : "4e3e7830-a6dd-4e60-85f9-90d540a18491", type : "PossibleAnswer" } backupHelper["92849199"] = { uid : "4dbfb365-8676-4662-90a0-edcf12f79dc5", type : "PossibleAnswer" } backupHelper["92849200"] = { uid : "a0eb420e-6a46-48c4-a665-83c0cfe89245", type : "PossibleAnswer" } backupHelper["92849201"] = { uid : "dc3e9ee3-3d75-4c7d-ac12-f05d591da2dc", type : "PossibleAnswer" } backupHelper["92849202"] = { uid : "ad0dad26-3370-4ba1-ac37-806a6f7f6d57", type : "PossibleAnswer" } backupHelper["92849203"] = { uid : "2248bfd3-6cf8-442b-9526-057be86bafde", type : "PossibleAnswer" } backupHelper["92849204"] = { uid : "1d058e52-6a5e-4d52-94f7-aa554786387d", type : "PossibleAnswer" } backupHelper["92849205"] = { uid : "40ef0ebd-0ee7-458a-bf01-3e1b3cb6d5f5", type : "PossibleAnswer" } backupHelper["92849206"] = { uid : "847fd956-0ba2-4417-8178-afee4e468c65", type : "PossibleAnswer" } backupHelper["92849207"] = { uid : "795e92e4-7be9-4591-9ace-742bc42731a0", type : "PossibleAnswer" } backupHelper["92849208"] = { uid : "c52af966-fc9e-4255-b989-687608466c59", type : "PossibleAnswer" } backupHelper["92849209"] = { uid : "5b4d47e2-9853-4f52-a884-ee94243e6656", type : "PossibleAnswer" } backupHelper["92849210"] = { uid : "6d2ca9b3-adeb-4525-80e5-c509409f5e2d", type : "PossibleAnswer" } backupHelper["92849211"] = { uid : "bcd668ca-bf83-413d-8445-484bcaffbd14", type : "PossibleAnswer" } backupHelper["92849212"] = { uid : "c013b61a-4e6b-4e9e-aae7-fca929579bf8", type : "PossibleAnswer" } backupHelper["92849213"] = { uid : "3ee6e328-9643-4dcc-a871-d7c590fae032", type : "PossibleAnswer" } backupHelper["92849214"] = { uid : "3f7e1bea-9c05-4346-83a0-c4f74f6f4bb4", type : "PossibleAnswer" } backupHelper["92849215"] = { uid : "3397040a-57bc-434b-9b02-e813f214b4db", type : "PossibleAnswer" } backupHelper["92849216"] = { uid : "ab3ba3b0-a79c-4f07-90eb-c90c5c7938d5", type : "PossibleAnswer" } backupHelper["92849217"] = { uid : "87a3e8e5-f1d0-4cce-aae3-0c34a63a62f2", type : "PossibleAnswer" } backupHelper["92849218"] = { uid : "30409428-72d9-459f-9e99-b08690894684", type : "PossibleAnswer" } backupHelper["92849219"] = { uid : "ba1f20b9-85dd-4a22-860e-484a128ef169", type : "PossibleAnswer" } backupHelper["92849220"] = { uid : "bf306f1b-8fad-47eb-8986-bb534d842fc1", type : "PossibleAnswer" } backupHelper["92849221"] = { uid : "26a548a2-99e8-4947-98a7-bc3b1fdbd91a", type : "PossibleAnswer" } backupHelper["92849222"] = { uid : "9db60acb-8060-4c3a-a5fd-20cd6446cecd", type : "PossibleAnswer" } backupHelper["92849223"] = { uid : "08a0c174-8c79-74a1-5f60-f2bf8703060b", type : "SingleChoiceQuestion" } backupHelper["92849224"] = { uid : "3a7d1e2a-1862-4f1c-8c6a-5b9cb2bcb463", type : "PossibleAnswer" } backupHelper["92849225"] = { uid : "994b94cf-a89e-4bd9-a480-b230b9251da8", type : "PossibleAnswer" } backupHelper["92849226"] = { uid : "d4131b7e-d080-4486-a8f6-9dcaa1c7c36f", type : "SingleChoiceQuestion" } backupHelper["92849227"] = { uid : "d34e7d20-2c6d-4619-8f0c-8ad0fbb8318b", type : "PossibleAnswer" } backupHelper["92849228"] = { uid : "cd0b828b-08c9-42b7-a94e-e8856381baad", type : "PossibleAnswer" } backupHelper["92849229"] = { uid : "2d01f3e6-a953-43d8-9bce-f8e65a355bfb", type : "PossibleAnswer" } backupHelper["92849230"] = { uid : "452547c5-a771-4291-92f8-df5ba96678db", type : "PossibleAnswer" } backupHelper["92849231"] = { uid : "f217ff26-b412-4405-a1e3-2eac5e436aed", type : "PossibleAnswer" } backupHelper["92849232"] = { uid : "777d0655-6430-4fae-be25-84384b5ce616", type : "PossibleAnswer" } backupHelper["92849233"] = { uid : "72f51ae9-bca7-45be-b42c-2864a511ece2", type : "PossibleAnswer" } backupHelper["92849234"] = { uid : "ea6ea897-166a-4445-98b9-dc535338f611", type : "PossibleAnswer" } backupHelper["92849235"] = { uid : "6ae50418-5123-4262-9b92-7651592f14c3", type : "PossibleAnswer" } backupHelper["92849236"] = { uid : "c178b238-6292-4d64-a383-162822b32280", type : "PossibleAnswer" } backupHelper["92849237"] = { uid : "6f097c8c-7436-4619-9b68-9c809ba7157e", type : "PossibleAnswer" } backupHelper["92849238"] = { uid : "ce60cdae-3889-436b-848d-e4491f092967", type : "FreeTextQuestion" } backupHelper["92849239"] = { uid : "733f59ce-5e6d-7af1-30e5-294377d9f62f", type : "SingleChoiceQuestion" } backupHelper["92849240"] = { uid : "0404b5c7-78a4-43c2-8806-f82c149d68c7", type : "PossibleAnswer" } backupHelper["92849241"] = { uid : "5b541669-6d21-486d-a45f-f1e8755b99c6", type : "PossibleAnswer" } backupHelper["92849242"] = { uid : "d990c78e-7542-4d0c-b004-fc91e0189e96", type : "PossibleAnswer" } backupHelper["92849243"] = { uid : "cf8c1528-f506-4932-aa56-e98a3cc12710", type : "PossibleAnswer" } backupHelper["92849244"] = { uid : "f8144c70-f96e-4a76-b5aa-36bfe3c2ea7f", type : "PossibleAnswer" } backupHelper["92849245"] = { uid : "0221b54b-a625-4e8e-b514-8228f7706914", type : "PossibleAnswer" } backupHelper["92849246"] = { uid : "1884a991-33b1-4cf3-a8c2-7bd8e757924b", type : "PossibleAnswer" } backupHelper["92849247"] = { uid : "20bd8d3c-10f2-4594-95a9-8d3246f4c0ce", type : "PossibleAnswer" } backupHelper["92849248"] = { uid : "eeb077b6-7de6-4d51-b386-e2c9509107e0", type : "PossibleAnswer" } backupHelper["92849249"] = { uid : "608f0a52-fefb-4e78-830c-9766f3eb4f1a", type : "PossibleAnswer" } backupHelper["92849250"] = { uid : "caa55b81-a24c-42b2-92cf-e50bfb0c0f6f", type : "PossibleAnswer" } backupHelper["92849251"] = { uid : "fe8cb88e-d47d-40db-9c74-f4fbde634837", type : "PossibleAnswer" } backupHelper["92849252"] = { uid : "b38980d3-c0f9-4a8c-a3a4-cfb694d5c0b7", type : "PossibleAnswer" } backupHelper["92849253"] = { uid : "d4b1971b-1a2b-4511-b883-09c12d2939a9", type : "PossibleAnswer" } backupHelper["92849254"] = { uid : "cd87ae2a-2afe-4b48-adbb-09c8c4d9f353", type : "PossibleAnswer" } backupHelper["92849255"] = { uid : "7631dcf4-6106-42e7-97b4-0a15b0779ed1", type : "PossibleAnswer" } backupHelper["92849256"] = { uid : "b532482a-7a88-4bfd-bdc4-953815366f49", type : "PossibleAnswer" } backupHelper["92849257"] = { uid : "1b4892fd-88eb-4bda-8eda-5d4d2edf59ee", type : "PossibleAnswer" } backupHelper["92849258"] = { uid : "c990c96c-3273-4759-9a9f-89918d695a8a", type : "PossibleAnswer" } backupHelper["92849259"] = { uid : "9558f414-b174-44e4-a4f5-516708684d6f", type : "PossibleAnswer" } backupHelper["92849260"] = { uid : "bfa3ca35-b308-4405-add0-f58f297a7ef3", type : "PossibleAnswer" } backupHelper["92849261"] = { uid : "52b64cb1-b7a4-4f6b-b158-5ae89d44677e", type : "PossibleAnswer" } backupHelper["92849262"] = { uid : "986866a8-0c20-4c7a-8c91-3ea26ee588c0", type : "PossibleAnswer" } backupHelper["92849263"] = { uid : "f0b41bb5-03ce-4d82-810a-0d003577f727", type : "PossibleAnswer" } backupHelper["92849264"] = { uid : "6511a274-2139-4673-b653-b145452ef3c9", type : "PossibleAnswer" } backupHelper["92849265"] = { uid : "e2eca34e-c8b6-48e8-914a-efc56b04717b", type : "PossibleAnswer" } backupHelper["92849266"] = { uid : "11fc5761-a748-42ff-b403-07f013a0aa5d", type : "PossibleAnswer" } backupHelper["92849267"] = { uid : "29df2cd4-b630-42e1-9ab4-411c26dbe34b", type : "PossibleAnswer" } backupHelper["92849268"] = { uid : "90f8aab9-f298-4fa9-9708-50d57a333583", type : "PossibleAnswer" } backupHelper["92849269"] = { uid : "4385e534-e8d1-42fa-8723-cb5910befcde", type : "PossibleAnswer" } backupHelper["92849270"] = { uid : "19579107-f433-42dd-93b9-32eb0185a4cc", type : "PossibleAnswer" } backupHelper["92849271"] = { uid : "56f54fc9-d175-4241-a921-1f96a2ce2f69", type : "PossibleAnswer" } backupHelper["92849272"] = { uid : "116d81a5-7f83-4e16-95d8-98f1ff721d5d", type : "PossibleAnswer" } backupHelper["92849273"] = { uid : "6a2b91c1-67c1-43eb-9a69-d7a0a7d64a57", type : "PossibleAnswer" } backupHelper["92849274"] = { uid : "84bf189c-d7a0-4112-83ba-28d28d833760", type : "PossibleAnswer" } backupHelper["92849275"] = { uid : "fe4559a8-1eaf-41b8-baa7-ee22db5dd419", type : "PossibleAnswer" } backupHelper["92849276"] = { uid : "ef8df275-7896-4e42-a431-57fbe481a321", type : "PossibleAnswer" } backupHelper["92849277"] = { uid : "b46eb5fa-bd01-4cb4-a746-85de513863d1", type : "PossibleAnswer" } backupHelper["92849278"] = { uid : "a42c4373-1bd4-476e-ad50-a107ac54f04f", type : "PossibleAnswer" } backupHelper["92849279"] = { uid : "06713114-30be-4668-9b65-4a8b6a4da8a2", type : "PossibleAnswer" } backupHelper["92849280"] = { uid : "599c62b0-0226-4423-b703-7aa07de1ff39", type : "PossibleAnswer" } backupHelper["92849281"] = { uid : "26f7dd6d-3d95-4c2a-97f1-3e233436167d", type : "PossibleAnswer" } backupHelper["92849282"] = { uid : "87dce1a6-1b9b-40a0-8fe3-ec1583cb4b13", type : "PossibleAnswer" } backupHelper["92849283"] = { uid : "8e5be7b6-203a-5cb6-b181-883f9e9c9ad2", type : "FreeTextQuestion" } backupHelper["92849284"] = { uid : "46b4c44d-14a8-390d-4da1-7b4119c6b22d", type : "FreeTextQuestion" } backupHelper["92849285"] = { uid : "ab30a76f-0da1-523c-edf0-ee61996c869a", type : "FreeTextQuestion" } backupHelper["92849286"] = { uid : "8e615cf7-3b7f-2792-e7d9-74aa1cf96408", type : "Text" } backupHelper["92849287"] = { uid : "164a8ab6-a586-27c0-b4e1-56aa0854d5dc", type : "MultipleChoiceQuestion" } backupHelper["92849288"] = { uid : "4e3e97b7-0e87-47b8-ac05-3064d9596dbf", type : "PossibleAnswer" } backupHelper["92849289"] = { uid : "300f82a6-f159-488c-a807-68459bc772d3", type : "PossibleAnswer" } backupHelper["92849290"] = { uid : "12407b48-cd83-48ee-bba4-16933f01328b", type : "PossibleAnswer" } backupHelper["92849291"] = { uid : "28fba47d-30b1-773c-a839-f06d674b0dec", type : "SingleChoiceQuestion" } backupHelper["92849292"] = { uid : "4c9ccefb-f186-4fa7-b9ef-6036732d1c6a", type : "PossibleAnswer" } backupHelper["92849293"] = { uid : "0e7f31dc-b896-4659-8680-f425da7a6404", type : "PossibleAnswer" } backupHelper["92849294"] = { uid : "8661aa55-cd6a-e1d7-ae06-d8a9631ee66a", type : "Text" } backupHelper["92849295"] = { uid : "ba2054cc-febd-ee4f-c759-c9b25dd52815", type : "Confirmation" } backupHelper["92849296"] = { uid : "ef72dabc-5259-05ae-6fff-8a59f841d747", type : "Confirmation" } backupHelper["92849297"] = { uid : "f0a16861-8bca-329a-86a2-aa8b8e6f5fef", type : "Confirmation" } backupHelper["92849298"] = { uid : "969171b6-0cd9-fa57-d7cc-2d0eb4a187d9", type : "Text" } } function doAnswersExist() { return false; } var invisibleElements = []; function isInvisible(uniqueId) { return true; } var validationMessages = null; function getValidationMessageByQuestion(uniqueId) { return typeof validationMessages[uniqueId] != 'undefined' ? validationMessages[uniqueId] : ""; } var triggers = null; function getTriggersByQuestion(uniqueId) { return typeof triggers[uniqueId] != 'undefined' ? triggers[uniqueId] : ""; } var values = null; function getValueByQuestion(uniqueId, readValueOnce, cellEl) { if (typeof values[uniqueId] != 'undefined' && values[uniqueId] != null) { if (cellEl != null && $(cellEl).is(".complex")){ $(cellEl).closest(".innercell").addClass("answered"); } else { $('.survey-element[data-uid="' + uniqueId + '"]').addClass("answered"); $('tr[data-uid="' + uniqueId + '"]').closest(".survey-element").addClass("answered"); } if (readValueOnce) { var ret = values[uniqueId]; values[uniqueId] = null return ret; } return values[uniqueId]; } return ""; } var valuesread = {}; function getValueByQuestionRating(uniqueId, answerUniqueId, cellEl) { if (typeof values[uniqueId] != 'undefined' && typeof valuesread[answerUniqueId] == 'undefined') { if (cellEl != null && $(cellEl).is(".complex")){ $(cellEl).closest(".innercell").addClass("answered"); } else { $('.survey-element[data-uid="' + uniqueId + '"]').addClass("answered"); $('tr[data-uid="' + uniqueId + '"]').closest(".survey-element").addClass("answered"); valuesread[answerUniqueId] += true } return values[uniqueId]; } return ""; } function getValueByQuestionGallery(uniqueId) { if (typeof values[uniqueId] != 'undefined') { return values[uniqueId]; } return ""; } var pavalues = null; var pavaluesread = {}; function getPAByQuestion(uniqueId, cellEl) { if (typeof pavalues[uniqueId] != 'undefined') { if (cellEl != null && $(cellEl).is(".complex")){ $(cellEl).closest(".innercell").addClass("answered"); } else { $('.survey-element[data-uid="' + uniqueId + '"]').addClass("answered"); } return pavalues[uniqueId]; } return ""; } var pavaluesread = {}; var pavaluesread2 = {}; function getPAByQuestionCheckBox(uniqueId, answerUniqueId, cellEl) { if (typeof pavalues[uniqueId] != 'undefined' && typeof pavaluesread2[answerUniqueId] == 'undefined') { if (cellEl != null && $(cellEl).is(".complex")){ $(cellEl).closest(".innercell").addClass("answered"); } else { $('.survey-element[data-uid="' + uniqueId + '"]').addClass("answered"); } if (typeof pavaluesread[answerUniqueId] != 'undefined') { pavaluesread2[answerUniqueId] += true; } else { pavaluesread[answerUniqueId] += true; } return pavalues[uniqueId]; } return ""; } var pavaluesid = null; function getPAIdByQuestion(uniqueId) { return typeof pavaluesid[uniqueId] != 'undefined' ? pavaluesid[uniqueId] : ""; } function getPAByQuestion2(parentuniqueId, uniqueId, id, cellEl) { if (getPAByQuestion(parentuniqueId).indexOf(uniqueId) > -1) { if (cellEl != null && $(cellEl).is(".complex, .multiple-choice li input")) { $(cellEl).closest(".innercell").addClass("answered"); } else { $('tr[data-uid="' + parentuniqueId + '"]').closest(".survey-element").addClass("answered"); } return id.toString(); } return ""; } function getPAByQuestion3(parentuniqueId, cellEl) { if (getPAByQuestion(parentuniqueId).length > 0) { var result = getIdForUniqueId(getPAByQuestion(parentuniqueId)); if (typeof result != 'undefined') { if (cellEl != null && $(cellEl).is("select.complex")){ $(cellEl).closest(".innercell").addClass("answered"); } return result; } } return ""; } function getTargetDatasetByQuestion(uniqueId) { return values[uniqueId]; } function getIdForUniqueId(uniqueId) { return typeof idsforuids[uniqueId] != 'undefined' ? idsforuids[uniqueId] : ""; } var tablevalues = null; function getTableAnswer(uniqueId, row, col, readOnce) { if (typeof tablevalues[uniqueId + "#" + row + "#" + col] != 'undefined' && tablevalues[uniqueId + "#" + row + "#" + col] != null) { $('.survey-element[data-uid="' + uniqueId + '"]').addClass("answered"); if (readOnce) { var res = tablevalues[uniqueId + "#" + row + "#" + col]; tablevalues[uniqueId + "#" + row + "#" + col] = null; return res; } return tablevalues[uniqueId + "#" + row + "#" + col]; } return ""; } var filevalues = null; var filesread = {}; var filesread2 = {}; function getFileAnswer(uniqueId) { const result = filevalues[uniqueId]; if (typeof result != 'undefined' && typeof filesread2[uniqueId] == 'undefined') { $('.survey-element[data-uid="' + uniqueId + '"]').addClass("answered"); if (typeof filesread[uniqueId] != 'undefined') { filesread2[uniqueId] += true; } else { filesread[uniqueId] += true; } return result; } return ""; } function deleteDelphiCommentFromRunner(button, isReply) { const dialog = $(button).closest(".survey-element").children("div").eq(1).find(".delete-confirmation-dialog"); showModalDialog(dialog, button); var deleteButton = $(dialog).find(".delete-confirmation-dialog__confirmation-button"); $(deleteButton).off("click"); $(deleteButton).click(function() { const questionUid = $(button).closest(".survey-element").attr("data-uid"); const viewModel = modelsForDelphiQuestions[questionUid]; const errorCallback = () => { showError("error"); } const successCallback = () => { loadTableData(questionUid, viewModel); } hideModalDialog(dialog); deleteDelphiComment(button, viewModel, isReply, errorCallback, successCallback); }); } initializeAnswerData(); initializeTriggers(); // showPopup function showPopup() { $("#motivationPopup").modal('show'); $("#motivationPopup").removeClass('not-shown'); } </script> <div> <input type="hidden" name="_csrf" value="322785ce-5f60-418d-b703-379db0137212" /> </div></form></div> <div class="modal" id="busydialog" data-backdrop="static"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-body" style="padding-left: 30px; text-align: center"> Please wait<br /><br /> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif" /> </div> </div> </div> </div> <div class="modal" id="unsaveddelphichangesdialog" role="dialog" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-body"> There are unsaved changed. Do you want to skip these changes and return to the overview page?</div> <div class="modal-footer"> <button type="button" class="btn btn-default" id="unsaveddelphichangesdialoglink">Yes</button> <button type="button" class="btn btn-primary" onclick="hideModalDialog($('#unsaveddelphichangesdialog'))">Cancel</button> </div> </div> </div> </div> </div> </div> <div class="footer2 footer-bottom" style="height: auto"> <div class="row"> <div style="max-width: 1000px; margin-left: auto; margin-right: auto"> <div class="col-md-6"> <a class="logolink" href="/eusurvey/home/welcome"><img src="/eusurvey/resources/images/logo_Eusurvey-small-white.png" alt="EUSurvey"/></a> <br /><br /> <i> <b>Intellectual Property:</b> Built by DG DIGIT and funded under the ISA, <a target="_blank" href="https://ec.europa.eu/isa2/home_en/" aria-label="ISA虏 programme - Opens in new window">ISA虏</a> and <a target="_blank" href="https://digital-strategy.ec.europa.eu/en/activities/digital-programme" aria-label="DIGITAL">Digital Europe Programme</a> (DIGITAL) EUSurvey is fully open source and published under the <a target="_blank" href="https://joinup.ec.europa.eu/collection/eupl">EUPL</a> licence. You can download the source code from GitHub: <a target="_blank" href="https://github.com/EUSurvey">https://github.com/EUSurvey</a></i> </div> <div class="col-md-3" style="padding-top: 40px;"> <a href="/eusurvey/home/privacystatement">EUSurvey Privacy Statement</a><br /> <a href="/eusurvey/home/tos">Terms of Service</a><br /> <a href="https://ec.europa.eu/info/cookies_en">Cookies</a><br /> </div> <div class="col-md-3" style="padding-top: 40px;"> <a href="https://commission.europa.eu/languages-our-websites_en">Languages policy</a><br /> <a href="https://commission.europa.eu/privacy-policy-websites-managed-european-commission_en">Privacy policy</a><br /> <a href="https://commission.europa.eu/legal-notice_en">Legal notice</a><br /> </div> </div> </div> <div class="row" id="footer-content-languages"> <div style="max-width: 970px; margin-left: auto; margin-right: auto"> <a href="?language=bg">袘褗谢谐邪褉褋泻懈</a>  <a href="?language=cs">膶e拧tina</a>  <a href="?language=da">Dansk</a>  <a href="?language=de">Deutsch</a>  <a href="?language=et">Eesti keel</a>  <a href="?language=el">螘位位畏谓喂魏维</a>  <a href="?language=en">English</a>  <a href="?language=es">Espa帽ol</a>  <a href="?language=fr">Fran莽ais</a>  <a href="?language=ga">Gaeilge</a>  <a href="?language=hr">Hrvatski jezik</a>  <a href="?language=it">Italiano</a>  <a href="?language=lv">Latvie拧u valoda</a>  <a href="?language=lt">Lietuvi懦 kalba</a>  <a href="?language=hu">Magyar</a>  <a href="?language=mt">Malti</a>  <a href="?language=nl">Nederlands</a>  <a href="?language=pl">Polski</a>  <a href="?language=pt">Portugu锚s</a>  <a href="?language=ro">Rom芒n膬</a>  <a href="?language=sk">Sloven膷ina</a>  <a href="?language=sl">Sloven拧膷ina</a>  <a href="?language=fi">Suomi</a>  <a href="?language=sv">Svenska</a>  </div> </div> <div class="row" id="footer-content-languages-form" style="display: none"> <div style="max-width: 970px; margin-left: auto; margin-right: auto"> <a href="?surveylanguage=EN">English</a> </div> </div> <div class="row" style="text-align: center"> <div id="footerVersionNumber"> Version  v1.5.3.3 625447edf6ac2f69bd9ee79032f971bb3c1ea311 (20/11/2024 18:10)</div> </div> </div> <div class="modal" id="export-name-dialog" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-header" style="font-weight: bold;"> Start <span id="export-name-dialog-type"></span> Export</div> <div class="modal-body" style="padding-left: 30px;"> <label for="export-name" style="display:inline"><span class="mandatory">*</span>Please give your export a name for identification</label> <input class="form-control" type="text" id="export-name" maxlength="255" name="export-name" style="width:220px; margin-top: 10px" /> <span id="validation-error-required" class="validation-error hideme"><br />This field is required.</span> <span id="validation-error-exportname" class="validation-error hideme">Alias must be composed of lowercase and uppercase letters (a-z and A-Z), numbers (0-9), hyphens and underscores only.</span> </div> <div class="modal-footer"> <img alt="wait animation" class="hideme" style="margin-right:90px;" src="/eusurvey/resources/images/ajax-loader.gif" /> <a id="okStartExportButton" onclick="checkAndStartExport($('#export-name').val());" class="btn btn-primary">OK</a> <a class="btn btn-default" data-dismiss="modal">Cancel</a> </div> </div> </div> </div> <div class="modal" id="generic-wait-dialog" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-body" style="text-align: center;"> <div id="generic-wait-dialog-div" class="dialog-wait-image" style="padding: 30px"> </div> </div> </div> </div> </div> <form id="logoutform" action="/eusurvey/j_spring_security_logout" method="post"><div> <input type="hidden" name="_csrf" value="322785ce-5f60-418d-b703-379db0137212" /> </div></form><script type="text/javascript"> $(function() { var spinner = new Spinner().spin(); $("#generic-wait-dialog-div").append(spinner.el); }); </script> <noscript> <div style="position: fixed; top: 0pc; left: 0px; width: 100%; height: 100%; background-color: #fff; z-index: 1002; padding: 30px;"> Javascript is disabled in your browser. In order to use EUSurvey, please enable Javascript and reload the page.<br /><br /> <a href="/eusurvey/">EUSurvey home</a> </div> </noscript> <div class="modal" id="nocookies2" data-backdrop="static"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-body" style="text-align: center"> Cookies are disabled in your browser. In order to use EUSurvey, please enable cookies and reload the page.<br /><br /> <a href="/eusurvey/">EUSurvey home</a> </div> </div> </div> </div> <script type="text/javascript"> $(function() { var date = new Date().getFullYear().toString(); document.cookie = "testcookie=" + date + "; path=/"; var nameEQ = "testcookie="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0){ var value = c.substring(nameEQ.length, c.length); if (value == date) { return; } } } $("#nocookies2").modal('show'); }); </script> <script> $('#footer-content-languages').hide(); </script><div id="export-available-box" class="alert message-success-right hideme"> <div style="float: right; margin-left: 10px;"><a onclick="$(this).parent().parent().hide();"><span class="glyphicon glyphicon-remove"></span></a></div> <div style="float: left; margin: 5px; margin-top: 5px; margin-right: 10px""><img src="/eusurvey/resources/images/check.png" alt="system message icon"></div> <div class="generic-box-text"> Export <span id="export-available-box-name" style="font-weight: bold;"></span> available for download<br /> Go to <a class="visiblelink" href="/eusurvey/exports/list">Export Page</a> </div> </div> <div id="messages-box-div" style="display: none"> <div id="messages-box"> <!-- ko foreach: systemMessages --> <!-- ko if: Hidden() == false --> <div class="message" style="display: none"> <!-- ko if: Criticality() == '1' --> <div class="message-success-header"> <div style="float: left; margin-right: 20px;"><span class="glyphicon glyphicon-ok"></span></div> <div style="float: right"><span data-bind="click: removeMessage" class="glyphicon glyphicon-remove"></span></div> <div style="clear: both"></div> </div> <!-- /ko --> <!-- ko if: Criticality() == '2' --> <div class="message-info-header"> <div style="float: left; margin-right: 20px;"><span class="glyphicon glyphicon-info-sign"></span></div> <div style="float: right"><span data-bind="click: removeMessage" class="glyphicon glyphicon-remove"></span></div> <div style="clear: both"></div> </div> <!-- /ko --> <!-- ko if: Criticality() == '3' --> <div class="message-error-header"> <div style="float: left; margin-right: 20px;"><span class="glyphicon glyphicon-exclamation-sign"></span></div> <div style="float: right"><span data-bind="click: removeMessage" class="glyphicon glyphicon-remove"></span></div> <div style="clear: both"></div> </div> <!-- /ko --> <div data-bind="html: Content"></div> </div> <!-- /ko --> <!-- /ko --> <!-- ko foreach: messages --> <!-- ko if: Hidden() == false --> <div class="message" style="display: none"> <!-- ko if: Type() == 'success' --> <div class="message-success-header"> <div style="float: left"><span class="glyphicon glyphicon-ok"></span></div> <div style="float: right"><span data-bind="click: removeMessage" class="glyphicon glyphicon-remove"></span></div> <div style="clear: both"></div> </div> <!-- /ko --> <!-- ko if: Type() == 'info' --> <div class="message-info-header"> <div style="float: left"><span class="glyphicon glyphicon-info-sign"></span></div> <div style="float: right"><span data-bind="click: removeMessage" class="glyphicon glyphicon-remove"></span></div> <div style="clear: both"></div> </div> <!-- /ko --> <!-- ko if: Type() == 'error' --> <div class="message-error-header"> <div style="float: left"><span class="glyphicon glyphicon-exclamation-sign"></span></div> <div style="float: right"><span data-bind="click: removeMessage" class="glyphicon glyphicon-remove"></span></div> <div style="clear: both"></div> </div> <!-- /ko --> <div data-bind="html: Content"></div> </div> <!-- /ko --> <!-- /ko --> </div> </div> <div id="messages-log-div" style="display: none" > <div id="messages-log"> <div id="messages-log-header"> <div style="float: left">Notifications</div> <div style="float: right"><span data-bind="click: allRead" class="glyphicon glyphicon-remove"></span></div> <div style="clear: both"></div> </div> <div style="max-height: 500px; overflow-y: auto"> <div data-bind="foreach: systemMessages"> <div class="log-message"> <div style="float: left; margin-right: 20px;"> <!-- ko if: Criticality() == '1' --> <span style="color: #4caf50" class="glyphicon glyphicon-ok"></span> <!-- /ko --> <!-- ko if: Criticality() == '2' --> <span style="color: #337ab7" class="glyphicon glyphicon-info-sign"></span> <!-- /ko --> <!-- ko if: Criticality() == '3' --> <span style="color: #c11c1c" class="glyphicon glyphicon-exclamation-sign"></span> <!-- /ko --> </div> <div data-bind="html: Content"></div> </div> </div> <table class="table" style="margin-bottom: 0px"> <thead> <tr> <th class="sr-only">Message Type</th> <th class="sr-only">Message Text</th> <th class="sr-only">Close</th> </tr> </thead> <tbody> <!-- ko foreach: messages --> <!-- ko if: Deleted() == false --> <tr class="log-message"> <td style="width: 30px; padding-right: 0px;"> <!-- ko if: Type() == 'success' --> <span style="color: #4caf50" class="glyphicon glyphicon-ok"></span> <!-- /ko --> <!-- ko if: Type() == 'info' --> <span style="color: #337ab7" class="glyphicon glyphicon-info-sign"></span> <!-- /ko --> <!-- ko if: Type() == 'error' --> <span style="color: #c11c1c" class="glyphicon glyphicon-exclamation-sign"></span> <!-- /ko --> </td> <td data-bind="html: Content"></td> <td style="width: 40px;"> <span data-bind="click: deleteMessage" class="glyphicon glyphicon-remove"></span> </td> </tr> <!-- /ko --> <!-- /ko --> </tbody> </table> </div> </div> </div> <div class="modal" id="generic-show-messages-dialog" data-backdrop="static"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-body"> <span id="generic-show-messages-dialog-text"></span> </div> <div class="modal-footer"> <a class="btn btn-primary" data-dismiss="modal">OK</a> </div> </div> </div> </div> <div class="modal" id="generic-show-multiple-messages-dialog" data-backdrop="static"> <div class="modal-dialog modal-sm"> <div class="modal-content"> <div class="modal-header"> <b>Result</b> </div> <div class="modal-body"> </div> <div class="modal-footer"> <a class="btn btn-primary" data-dismiss="modal">OK</a> </div> </div> </div> </div> <div class="modal" id="timeout-dialog" data-backdrop="static"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <b>Session Timeout</b> </div> <div class="modal-body"> <div id="timeout-dialog-info"> Your session will expire in <span style="color:#f00" id="timeoutleft"></span>.<br /> Click "Extend" if you want to stay logged in.</div> <div id="timeout-dialog-error" style="display: none"> Your session has timed out. Please reload the page.</div> </div> <div class="modal-footer"> <a class="btn btn-primary" id="timeout-dialog-extend" onclick="extend()">Extend</a> </div> </div> </div> </div> <script type="text/javascript"> var Message = function() { this.Type = ko.observable(""); this.Content = ko.observable(""); this.Hidden = ko.observable(false); this.Deleted = ko.observable(false); this.Read = ko.observable(false); this.Icon = ko.observable(""); this.Criticality = ko.observable(1); this.removeMessage = function () { this.Hidden(true); if (this.Type() == "system") { deleteUserMessage(); } _messages.saveToLocalStorage(); }; this.deleteMessage = function() { this.Deleted(true); _messages.saveToLocalStorage(); }; } var Messages = function() { var self = this; this.messages = ko.observableArray(); this.systemMessages = ko.observableArray(); this.totalMessages = ko.computed(function(){ var counter = 0; for (var i = 0; i < self.messages().length; i++) { if (!self.messages()[i].Read()) counter++; } for (var i = 0; i < self.systemMessages().length; i++) { if (!self.systemMessages()[i].Read()) counter++; } return counter; }); this.allRead = function() { for (var i = 0; i < self.messages().length; i++) { self.messages()[i].Read(true); } for (var i = 0; i < self.systemMessages().length; i++) { self.systemMessages()[i].Read(true); } $('#messages-log-div').hide(); self.saveToLocalStorage(); } this.showAll = function() { for (var i = 0; i < this.messages().length; i++) { this.messages()[i].Hidden(false); } window.setTimeout("showMessages()", 100); } this.hideSystemMessages = function() { for (var i = 0; i < this.systemMessages().length; i++) { this.systemMessages()[i].Hidden(true); } } this.addMessage = function(message, fromLoad) { this.messages.splice(0, 0, message); window.setTimeout("showMessages()", 100); window.setTimeout(function() { message.removeMessage(); }, 5000) if (!fromLoad) { self.saveToLocalStorage(); } } this.saveToLocalStorage = function() { try { localStorage.setItem("messagelog", ko.toJSON(this.messages())); } catch (e) {}; } this.addSuccessMessage = function (text) { text = self.sanitizeErrorPageText(text); var message = new Message(); message.Type("success"); message.Content(text); self.addMessage(message, false); } this.addInfoMessage = function (text) { text = self.sanitizeErrorPageText(text); var message = new Message(); message.Type("info"); message.Content(text); self.addMessage(message, false); } this.addErrorMessage = function (text) { text = self.sanitizeErrorPageText(text); var message = new Message(); message.Type("error"); message.Content(text); self.addMessage(message, false); } this.addSystemMessage = function (m) { var message = new Message(); message.Type("system"); message.Content(self.sanitizeErrorPageText(m.text)); message.Icon(m.icon) message.Criticality(m.criticality); this.systemMessages.splice(0, 0, message); window.setTimeout("showMessages()", 100); } this.sanitizeErrorPageText = function (text){ //Tomcat error responses always start with <!doctype html> //Like this they can't be added to the notifications if (text.toLowerCase().startsWith("<!doctype html>")){ let sanitizerNode = document.createElement("div") sanitizerNode.innerHTML = text return sanitizerNode.innerText.substr(0, 60) + "..." } return text } try { var messagelog = localStorage.getItem("messagelog"); var parsed = JSON.parse(messagelog); for (var i = 0; i < parsed.length; i++) { var message = new Message(); message.Type(parsed[i].Type); message.Content(parsed[i].Content); message.Deleted(parsed[i].Deleted); message.Read(parsed[i].Read); message.Hidden(parsed[i].Hidden); self.addMessage(message, true); } } catch (e) {}; } var _messages = new Messages(); $(function() { ko.applyBindings(_messages, $("#messages-box")[0]); ko.applyBindings(_messages, $("#messages-log")[0]); if ($("#messages-button").length > 0) { ko.applyBindings(_messages, $("#messages-button")[0]); } checkTimeout(); $('#messages-box-div').show(); }); function showInfo(text) { _messages.addInfoMessage(text); } function showSuccess(text) { _messages.addSuccessMessage(text); } function showError(text) { _messages.addErrorMessage(text); } let lastTimeAjaxError = new Date(0) let stopAjaxErrors = false function showAjaxError(statuscode){ if (!stopAjaxErrors && new Date().getTime() - lastTimeAjaxError.getTime() > 2500) { //Prevent Spam showError("Connection Error " + statuscode); lastTimeAjaxError = new Date() } } //When unloading the page, prevent ajaxErrors, as they might be thrown when the request is interrupted by the browser window.addEventListener("beforeunload", () => {stopAjaxErrors = true}) function showSystemMessage(message) { _messages.addSystemMessage(message); } function showMessages() { $('.message:hidden').show(); } function hideMessages() { for (var i = 0; i < _messages.messages().length; i++) { _messages.messages()[i].Hidden(true); } } function showExportDialogAndFocusEmail(caller) { $('#ask-export-dialog').find(".foremail").hide(); $('#ask-export-dialog').find(".forexport").show(); showModalDialog($('#ask-export-dialog'), caller); setTimeout(function() { $('#email').focus(); }, 1000); } function showAskEmailDialog(caller) { $('#ask-export-dialog').find(".foremail").show(); $('#ask-export-dialog').find(".forexport").hide(); showModalDialog($('#ask-export-dialog'), caller); } var sessiontimeout = 3600; var timeoutTime = new Date(); refreshTimeout(); function refreshTimeout() { timeoutTime = new Date(); timeoutTime.setSeconds(timeoutTime.getSeconds() + sessiontimeout); } function checkTimeout() { if (sessiontimeout == 0) return; var diffTimeMilliseconds = getTimeoutMilliseconds(); if (diffTimeMilliseconds < 5 * 60 * 1000) { $('#timeout-dialog').modal('show'); updateTimeout(); } else { window.setTimeout(function() { checkTimeout(); }, 60000); } } function getTimeoutMilliseconds() { var currentTime = new Date(); return timeoutTime - currentTime; } function showSessionError() { //forcing timeout by setting the timeoutTime to yesterday timeoutTime.setDate(timeoutTime.getDate() - 1); $('#timeout-dialog').modal('show'); updateTimeout(); } function showLocalBackupFilesInfo(){ showInfo("Uploaded files can not be restored from local backup") } function updateTimeout() { var diffTimeMilliseconds = getTimeoutMilliseconds(); if (diffTimeMilliseconds <= 0) { //this means the session has timed out $('#timeout-dialog-info').hide(); $('#timeout-dialog-error').show(); $('#timeout-dialog-extend').hide(); return; } if (diffTimeMilliseconds > 5 * 60 * 1000) { //this means there was a request in the meantime that extended the session $('#timeout-dialog').modal('hide'); checkTimeout(); return; } var diffTimeSeconds = diffTimeMilliseconds / 1000; var minutes = Math.floor(diffTimeSeconds / 60); var seconds = Math.floor(diffTimeSeconds - (minutes * 60)); $('#timeoutleft').html(minutes + ":" + (seconds < 10 ? "0" + seconds : seconds)); window.setTimeout(function() { updateTimeout(); }, 1000); } function extend() { $.ajax({ url: contextpath + "/info/renewsession", cache: false, error: function(e) { //this happens when there is no message }, success: function(message) { //session timeout reset $('#timeout-dialog').modal('hide'); refreshTimeout(); checkTimeout(); } }); } function testTimeoutExpiration(restTime) { lastEditDate.setDate(lastEditDate.getDate()-1); let originalTimeout = sessiontimeout sessiontimeout = 300; if (Number.isInteger(restTime)) { sessiontimeout = restTime; } refreshTimeout(); checkTimeout(); console.log("Function for testing purposes. Set Timeout to", timeoutTime); sessiontimeout = originalTimeout } </script><script type="text/javascript"> $(document).ready(function(){ $("#language-selector option").each(function(){ if($(this).val() == $("#newlang").val()) { $(this).attr("selected", "selected"); } else { $(this).removeAttr("selected"); } }); }); </script> <div class="modal" id="networkproblemsdialog" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> Network Problems</div> <div class="modal-body"> Your browser seems to have no Internet connection. Therefore you cannot save or submit your contribution. Make sure to have a valid internet connection and try again.</div> <div class="modal-footer"> <a onclick="$('#networkproblemsdialog').modal('hide')" target="_blank" class="btn btn-primary">OK</a> </div> </div> </div> </div> </body> </html>