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="Join the community of the European Digital Education Hub"></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="da1ce884-cac6-4b7a-a2fd-3464fdd669cc"/> <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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/jquery-ui.structure.min.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/jquery-ui.theme.min.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/common.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/bootstrap-slider.min.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/Chart.min.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/bootstrap.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/common-extension.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" 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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7'></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery-1.12.3.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery-ui.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.ui.touch-punch.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/spin.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.hotkeys.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/bootstrap.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.addplaceholder.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/jquery.validate.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/scroll-sneak.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/system.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/tinymce/jquery.tinymce.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/tinymce/tinymce.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/Chart.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/chartjs-plugin-colorschemes.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/math.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></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/EDEH_registration?'; 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.4 447f3468b7cc956dfc27c59100d4b40b05bf7eb7 (14/02/2025 15:52)"; 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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/includes.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/yellowfocus.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <link href="/eusurvey/resources/css/fileuploader.css?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7" rel="stylesheet" type="text/css"></link> <script type="text/javascript" src="/eusurvey/resources/js/fileuploader.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/runner.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/runner2.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/graph_data_loader.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/runnerviewmodels.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type='text/javascript' src='/eusurvey/resources/js/knockout-3.5.1.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7'></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=856492&slang=EN&as="; $.ajax({ type:'GET', dataType: 'json', url: "/eusurvey/runner/elements/856492", 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> <style type="text/css"> .answertext { color: #333; } .info-box { background-color: #FDF5D9; font-size: 13px; } .link { } .linkstitle { color: #333; font-size: 16px; font-weight: bold; } .matrix-header { } .questionhelp { color: #A6A6A6; font-size: 11px; } .questiontitle { color: #333; font-size: 13px; font-weight: normal; } .right-area { } .sectiontitle { color: #004F98; border-color: #004F98; font-size: 20px; } .surveytitle { font-size: 24px; } .table-header { } .text { } </style> </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>&#160;&#160;&#160;&#160; &#160;&#160; </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&nbsp; <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&nbsp; <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="EDEH_registration" method="POST" autocomplete="off"><input id="survey.id" name="survey.id" type="hidden" value="856492"/><input id="survey.uniqueId" name="survey.uniqueId" type="hidden" value="d7e8e24c-01ec-438f-9713-af942b711e5e"/><input id="language.code" name="language.code" type="hidden" value="EN"/><input type="hidden" name="uniqueCode" id="uniqueCode" value="25924fa5-c748-4a25-8f19-181ce6b3ad05" /> <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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/d3.layout.cloud.min.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <script type="text/javascript" src="/eusurvey/resources/js/wordcloud.js?version=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></script> <input type="hidden" id="validatedPerPage" value="true" /> <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 style="max-width: 900px"> <img src="/eusurvey/files/d7e8e24c-01ec-438f-9713-af942b711e5e/43c837a1-9d08-4feb-b110-e0e1a22a772f" alt="European Digital Education Hub visual identity" style="max-width: 1300px;" /> </div> <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">Join the community of the European Digital Education Hub</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="136434918" id="tab0" class="pagebutton active" data-toggle="" title=""> <a href="#page0" style="cursor:pointer;" onclick="return selectPage(0);"> Start</a> </li> <li data-id="136434961" id="tab1" class="pagebutton " data-toggle="" title=""> <a href="#page1" style="cursor:pointer;" onclick="return selectPage(1);"> Work</a> </li> <li data-id="136435009" id="tab2" class="pagebutton " data-toggle="" title=""> <a href="#page2" style="cursor:pointer;" onclick="return selectPage(2);"> Expert</a> </li> <li data-id="136435021" id="tab3" class="pagebutton " data-toggle="" title=""> <a href="#page3" style="cursor:pointer;" onclick="return selectPage(3);"> Data Protection</a> </li> </ul> </div> </div> </div> <div style="clear: left"></div> <div class="single-page" tabindex="-1" id="page0" onmouseleave="validateLastContainer()"> <fieldset> <legend>Text</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="136434918" data-id="136434918" data-uid="7a9647ce-58a9-4dde-a576-fb829604e500"> <a class="survey-element-anchor" id="E136434918"></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="136434919" data-id="136434919" data-uid="5a029613-e99b-430f-a168-88057fa9c2c7"> <a class="survey-element-anchor" id="E136434919"></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="136434920" data-id="136434920" data-uid="a39c7c82-aeed-8396-7114-567c76d737aa"> <a class="survey-element-anchor" id="E136434920"></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="136434921" data-id="136434921" data-uid="4c55942b-cfb6-40fc-9c79-4b4ca36e2156"> <a class="survey-element-anchor" id="E136434921"></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="136434922" data-id="136434922" data-uid="0d7a8e54-6d01-4c3f-8d9c-598a13db2763"> <a class="survey-element-anchor" id="E136434922"></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="false" id="136434951" data-id="136434951" data-triggers="136434950;" data-uid="57626ed3-a960-4695-8ee3-4e877075f596" style="display: none;"> <a class="survey-element-anchor" id="E136434951"></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="136434952" data-id="136434952" data-uid="243802fc-b99b-4c13-a275-9892dfca71fb"> <a class="survey-element-anchor" id="E136434952"></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="136434960" data-id="136434960" data-triggers="136434959;" data-uid="4ed53c0f-ca7f-466d-a6b7-418115eabd62" style="display: none;"> <a class="survey-element-anchor" id="E136434960"></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="136434961" data-id="136434961" data-uid="15a46529-3cf8-daed-f5f0-451714f4e98f"> <a class="survey-element-anchor" id="E136434961"></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="136434962" data-id="136434962" data-uid="cfd560e4-c854-4372-9b5a-11828202b4c6"> <a class="survey-element-anchor" id="E136434962"></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="false" id="136434976" data-id="136434976" data-triggers="136434975;" data-uid="fbf32846-599c-4976-849e-62546c1b5bbe" style="display: none;"> <a class="survey-element-anchor" id="E136434976"></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="136434977" data-id="136434977" data-uid="937340b4-03bd-400c-b889-4fa215a66045"> <a class="survey-element-anchor" id="E136434977"></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="false" id="136434993" data-id="136434993" data-triggers="136434992;" data-uid="e0def8ba-6115-4ca4-a3cf-9909570639e5" style="display: none;"> <a class="survey-element-anchor" id="E136434993"></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="136434994" data-id="136434994" data-uid="9f8a02ac-15d6-4473-a8a7-2ab01b243c9e"> <a class="survey-element-anchor" id="E136434994"></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="false" id="136435008" data-id="136435008" data-triggers="136435007;" data-uid="0fcfd7fb-90fa-57e8-2772-dbcd928a7071" style="display: none;"> <a class="survey-element-anchor" id="E136435008"></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="136435009" data-id="136435009" data-uid="f2cc0c44-a730-c779-da33-90d4f99f7e47"> <a class="survey-element-anchor" id="E136435009"></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="136435010" data-id="136435010" data-uid="ad4cb57d-278d-47db-bf87-b4def9eba66c"> <a class="survey-element-anchor" id="E136435010"></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 untriggered dependent 3" data-useAndLogic="true" id="136435013" data-id="136435013" data-triggers="136435011;" data-uid="2b980621-5dd7-6fd8-6c12-0088c6a84d97" style="display: none;"> <a class="survey-element-anchor" id="E136435013"></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="136435018" data-id="136435018" data-triggers="136435011;" data-uid="2e6992cb-6673-4c0f-a005-75501830a47f" style="display: none;"> <a class="survey-element-anchor" id="E136435018"></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="136435019" data-id="136435019" data-triggers="136435011;" data-uid="2efa61c2-857b-4b02-b3be-fe04cca5beab" style="display: none;"> <a class="survey-element-anchor" id="E136435019"></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="136435020" data-id="136435020" data-triggers="136435011;" data-uid="7eb0c440-41c0-f692-1280-35aef3089aa1" style="display: none;"> <a class="survey-element-anchor" id="E136435020"></a> <img alt="wait animation" src="/eusurvey/resources/images/ajax-loader.gif"/> </div> </div> </fieldset> </div> <div class="single-page" tabindex="-1" id="page3" style="display: none" onmouseleave="validateLastContainer()"> <fieldset> <legend>Section</legend> <div class="elementwrapper"> <div class="emptyelement survey-element 5" id="136435021" data-id="136435021" data-uid="6682bd3f-4732-814d-69bd-2330ddf08867"> <a class="survey-element-anchor" id="E136435021"></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="136435022" data-id="136435022" data-uid="113effcb-9785-bb59-360d-aed2749dda45"> <a class="survey-element-anchor" id="E136435022"></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="136435025" data-id="136435025" data-uid="36d0b6e6-f4fc-8486-f854-0bf32b20d15a"> <a class="survey-element-anchor" id="E136435025"></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="136435028" data-id="136435028" data-uid="c08b99e4-7b31-1212-4ef2-22a47df8b2c0"> <a class="survey-element-anchor" id="E136435028"></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="136435031" data-id="136435031" data-triggers="136435023;136435026;" data-uid="dcc2f0f9-3032-4eb0-97dc-9b037c39fab4" style="display: none;"> <a class="survey-element-anchor" id="E136435031"></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&#160; <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>&#160; 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> <i class="icon icon-envelope" style="vertical-align: middle"></i> <a class="link" href="mailto:edeh-support&#x40;stifterverband.de">edeh-support&#x40;stifterverband.de</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=856492" 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=447f3468b7cc956dfc27c59100d4b40b05bf7eb7"></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 = "d7e8e24c-01ec-438f-9713-af942b711e5e"; 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&amp;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&amp;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">&#x283F;</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/d7e8e24c-01ec-438f-9713-af942b711e5e/' + 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>&nbsp;<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(),'25924fa5-c748-4a25-8f19-181ce6b3ad05',$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/d7e8e24c-01ec-438f-9713-af942b711e5e/' + 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/d7e8e24c-01ec-438f-9713-af942b711e5e/'+ 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/d7e8e24c-01ec-438f-9713-af942b711e5e/'+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.&nbsp;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(),'25924fa5-c748-4a25-8f19-181ce6b3ad05',$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>&nbsp;</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["7a9647ce-58a9-4dde-a576-fb829604e500"] = ""; idsforuids["7a9647ce-58a9-4dde-a576-fb829604e500"] = "136434918"; triggers["5a029613-e99b-430f-a168-88057fa9c2c7"] = ""; idsforuids["5a029613-e99b-430f-a168-88057fa9c2c7"] = "136434919"; triggers["a39c7c82-aeed-8396-7114-567c76d737aa"] = ""; idsforuids["a39c7c82-aeed-8396-7114-567c76d737aa"] = "136434920"; triggers["4c55942b-cfb6-40fc-9c79-4b4ca36e2156"] = ""; idsforuids["4c55942b-cfb6-40fc-9c79-4b4ca36e2156"] = "136434921"; triggers["0d7a8e54-6d01-4c3f-8d9c-598a13db2763"] = ""; idsforuids["0d7a8e54-6d01-4c3f-8d9c-598a13db2763"] = "136434922"; triggers["785b72b8-71ed-4da7-94fb-7c1c811206e4"] = ""; idsforuids["785b72b8-71ed-4da7-94fb-7c1c811206e4"] = "136434923"; triggers["314cc8da-09b3-4036-87dc-6a1a5c7ab822"] = ""; idsforuids["314cc8da-09b3-4036-87dc-6a1a5c7ab822"] = "136434924"; triggers["d216f0f3-e75d-44b0-82fc-4a8331f92afd"] = ""; idsforuids["d216f0f3-e75d-44b0-82fc-4a8331f92afd"] = "136434925"; triggers["727ea2d3-fda7-4861-8eb4-6f06610d642e"] = ""; idsforuids["727ea2d3-fda7-4861-8eb4-6f06610d642e"] = "136434926"; triggers["f3437179-0768-4013-972f-6af5d2f93873"] = ""; idsforuids["f3437179-0768-4013-972f-6af5d2f93873"] = "136434927"; triggers["286250b7-d3c4-4816-af40-e639c5d7abcb"] = ""; idsforuids["286250b7-d3c4-4816-af40-e639c5d7abcb"] = "136434928"; triggers["5e2500fa-32f5-4a5a-bf67-337cb074a4b1"] = ""; idsforuids["5e2500fa-32f5-4a5a-bf67-337cb074a4b1"] = "136434929"; triggers["db6f2c8e-ba19-488f-9731-53b8bc5360df"] = ""; idsforuids["db6f2c8e-ba19-488f-9731-53b8bc5360df"] = "136434930"; triggers["56c02b89-e43b-4130-93c5-78ebea87c927"] = ""; idsforuids["56c02b89-e43b-4130-93c5-78ebea87c927"] = "136434931"; triggers["8f76d5b8-b3d2-4fb2-b1eb-fbe0679f4e79"] = ""; idsforuids["8f76d5b8-b3d2-4fb2-b1eb-fbe0679f4e79"] = "136434932"; triggers["a3282ff4-65e1-4ee7-b1e3-9861552d0b31"] = ""; idsforuids["a3282ff4-65e1-4ee7-b1e3-9861552d0b31"] = "136434933"; triggers["723de685-10d9-482d-a2bb-1d74f3a122cc"] = ""; idsforuids["723de685-10d9-482d-a2bb-1d74f3a122cc"] = "136434934"; triggers["e5c6b488-05c1-4f27-8bb9-e8eccc036aff"] = ""; idsforuids["e5c6b488-05c1-4f27-8bb9-e8eccc036aff"] = "136434935"; triggers["d01ba3ca-6b8b-4c08-93da-dd271c25abc8"] = ""; idsforuids["d01ba3ca-6b8b-4c08-93da-dd271c25abc8"] = "136434936"; triggers["a37db756-0206-4abf-bd70-09b8ce3f34db"] = ""; idsforuids["a37db756-0206-4abf-bd70-09b8ce3f34db"] = "136434937"; triggers["dac456ae-0892-40ba-b62a-52a90649fc30"] = ""; idsforuids["dac456ae-0892-40ba-b62a-52a90649fc30"] = "136434938"; triggers["ad97b850-672b-4e94-b934-aa49ce429891"] = ""; idsforuids["ad97b850-672b-4e94-b934-aa49ce429891"] = "136434939"; triggers["b007d82c-b401-4acc-b493-df03c8146559"] = ""; idsforuids["b007d82c-b401-4acc-b493-df03c8146559"] = "136434940"; triggers["6b05b3cf-3413-4058-af7c-5e4378b11bf5"] = ""; idsforuids["6b05b3cf-3413-4058-af7c-5e4378b11bf5"] = "136434941"; triggers["9778e0ed-bfe1-4a2a-b9fb-eaddf459ee22"] = ""; idsforuids["9778e0ed-bfe1-4a2a-b9fb-eaddf459ee22"] = "136434942"; triggers["5ef12221-6249-49de-8e1a-1d5701e67885"] = ""; idsforuids["5ef12221-6249-49de-8e1a-1d5701e67885"] = "136434943"; triggers["8c829b2f-b8ed-4c73-b67b-ee63fc9529b2"] = ""; idsforuids["8c829b2f-b8ed-4c73-b67b-ee63fc9529b2"] = "136434944"; triggers["80e6c927-be30-4083-a72a-766c7ca2a6c5"] = ""; idsforuids["80e6c927-be30-4083-a72a-766c7ca2a6c5"] = "136434945"; triggers["c91fc368-de28-49e9-bbf8-0edab96f90ca"] = ""; idsforuids["c91fc368-de28-49e9-bbf8-0edab96f90ca"] = "136434946"; triggers["f4015fd9-220e-4a94-8122-b62ab9aea85f"] = ""; idsforuids["f4015fd9-220e-4a94-8122-b62ab9aea85f"] = "136434947"; triggers["944ef026-1ce2-44ec-af92-86529bb2e6cd"] = ""; idsforuids["944ef026-1ce2-44ec-af92-86529bb2e6cd"] = "136434948"; triggers["857fad86-8724-43ac-979d-5f12bd0795f5"] = ""; idsforuids["857fad86-8724-43ac-979d-5f12bd0795f5"] = "136434949"; triggers["5b89fc6a-c753-4356-ba0b-a8a8a39329f1"] = ""; idsforuids["5b89fc6a-c753-4356-ba0b-a8a8a39329f1"] = "136434950"; triggers["57626ed3-a960-4695-8ee3-4e877075f596"] = "136434950;"; idsforuids["57626ed3-a960-4695-8ee3-4e877075f596"] = "136434951"; triggers["243802fc-b99b-4c13-a275-9892dfca71fb"] = ""; idsforuids["243802fc-b99b-4c13-a275-9892dfca71fb"] = "136434952"; triggers["5d45ae4e-ae26-4f40-a2f0-9cf1d8bead57"] = ""; idsforuids["5d45ae4e-ae26-4f40-a2f0-9cf1d8bead57"] = "136434953"; triggers["4ab92869-93aa-4b7c-b302-73961d4e8c6e"] = ""; idsforuids["4ab92869-93aa-4b7c-b302-73961d4e8c6e"] = "136434954"; triggers["5ac6cdb3-b720-4216-b0fb-cc7972d6f80b"] = ""; idsforuids["5ac6cdb3-b720-4216-b0fb-cc7972d6f80b"] = "136434955"; triggers["31b222eb-1c0a-4111-95c7-c66ac552836b"] = ""; idsforuids["31b222eb-1c0a-4111-95c7-c66ac552836b"] = "136434956"; triggers["3ca622e1-7bde-47aa-bcf5-1c70d6a7adcc"] = ""; idsforuids["3ca622e1-7bde-47aa-bcf5-1c70d6a7adcc"] = "136434957"; triggers["b3823e11-a707-4569-b901-cdfb0bb32ba3"] = ""; idsforuids["b3823e11-a707-4569-b901-cdfb0bb32ba3"] = "136434958"; triggers["168ddae8-af75-4b17-b7bb-f90815fba224"] = ""; idsforuids["168ddae8-af75-4b17-b7bb-f90815fba224"] = "136434959"; triggers["4ed53c0f-ca7f-466d-a6b7-418115eabd62"] = "136434959;"; idsforuids["4ed53c0f-ca7f-466d-a6b7-418115eabd62"] = "136434960"; triggers["15a46529-3cf8-daed-f5f0-451714f4e98f"] = ""; idsforuids["15a46529-3cf8-daed-f5f0-451714f4e98f"] = "136434961"; triggers["cfd560e4-c854-4372-9b5a-11828202b4c6"] = ""; idsforuids["cfd560e4-c854-4372-9b5a-11828202b4c6"] = "136434962"; triggers["824842bd-c44b-41d4-929e-80186b2d646e"] = ""; idsforuids["824842bd-c44b-41d4-929e-80186b2d646e"] = "136434963"; triggers["e180d3b9-b11f-4a1b-9d08-3d852d082fc5"] = ""; idsforuids["e180d3b9-b11f-4a1b-9d08-3d852d082fc5"] = "136434964"; triggers["591c1974-d951-4531-8a4c-84555fe434d3"] = ""; idsforuids["591c1974-d951-4531-8a4c-84555fe434d3"] = "136434965"; triggers["d9219d70-2216-448c-97d3-818d9a4d4046"] = ""; idsforuids["d9219d70-2216-448c-97d3-818d9a4d4046"] = "136434966"; triggers["f80952de-bded-4394-bbda-9ab0cdd198e0"] = ""; idsforuids["f80952de-bded-4394-bbda-9ab0cdd198e0"] = "136434967"; triggers["d76c6283-b595-47b5-8e27-770468936fbf"] = ""; idsforuids["d76c6283-b595-47b5-8e27-770468936fbf"] = "136434968"; triggers["bd9e293f-8b47-4741-bc7f-1ff4a4e7d5f9"] = ""; idsforuids["bd9e293f-8b47-4741-bc7f-1ff4a4e7d5f9"] = "136434969"; triggers["8f2e96c9-2e8f-42a2-9e9b-9a4315bd6b34"] = ""; idsforuids["8f2e96c9-2e8f-42a2-9e9b-9a4315bd6b34"] = "136434970"; triggers["cd9bb38d-2d2b-4e1c-b4d5-a061025e12ad"] = ""; idsforuids["cd9bb38d-2d2b-4e1c-b4d5-a061025e12ad"] = "136434971"; triggers["a287c322-172b-4022-99dc-ab497c1db233"] = ""; idsforuids["a287c322-172b-4022-99dc-ab497c1db233"] = "136434972"; triggers["5ece46b4-d91f-4cac-9fd5-8bd32fe7a512"] = ""; idsforuids["5ece46b4-d91f-4cac-9fd5-8bd32fe7a512"] = "136434973"; triggers["5c6d733a-e197-4061-b5b9-16efe63d6c45"] = ""; idsforuids["5c6d733a-e197-4061-b5b9-16efe63d6c45"] = "136434974"; triggers["72b07236-4266-4f2e-af53-9a35802680b2"] = ""; idsforuids["72b07236-4266-4f2e-af53-9a35802680b2"] = "136434975"; triggers["fbf32846-599c-4976-849e-62546c1b5bbe"] = "136434975;"; idsforuids["fbf32846-599c-4976-849e-62546c1b5bbe"] = "136434976"; triggers["937340b4-03bd-400c-b889-4fa215a66045"] = ""; idsforuids["937340b4-03bd-400c-b889-4fa215a66045"] = "136434977"; triggers["002c58ce-830e-4f7a-9052-0af88fc32ed3"] = ""; idsforuids["002c58ce-830e-4f7a-9052-0af88fc32ed3"] = "136434978"; triggers["729ce999-5b90-425b-a309-9611d0ba8cf4"] = ""; idsforuids["729ce999-5b90-425b-a309-9611d0ba8cf4"] = "136434979"; triggers["47f914c5-8ef6-49ea-9a03-c123e70f899e"] = ""; idsforuids["47f914c5-8ef6-49ea-9a03-c123e70f899e"] = "136434980"; triggers["ee23a099-7e1e-4567-afaa-61d58425f307"] = ""; idsforuids["ee23a099-7e1e-4567-afaa-61d58425f307"] = "136434981"; triggers["49fed0c0-9f41-42c6-8b27-0109ae46cb47"] = ""; idsforuids["49fed0c0-9f41-42c6-8b27-0109ae46cb47"] = "136434982"; triggers["582479b3-9062-4ce7-9680-1c7becc7b068"] = ""; idsforuids["582479b3-9062-4ce7-9680-1c7becc7b068"] = "136434983"; triggers["8a1e3a35-f2a0-4f13-ab97-a84708a36b97"] = ""; idsforuids["8a1e3a35-f2a0-4f13-ab97-a84708a36b97"] = "136434984"; triggers["33f7732e-8030-425e-9bdb-4c269afb97a0"] = ""; idsforuids["33f7732e-8030-425e-9bdb-4c269afb97a0"] = "136434985"; triggers["70320460-c2bf-4656-baa3-86fae6b6579a"] = ""; idsforuids["70320460-c2bf-4656-baa3-86fae6b6579a"] = "136434986"; triggers["85fe7a33-bd4d-4615-b048-b4a712258d4e"] = ""; idsforuids["85fe7a33-bd4d-4615-b048-b4a712258d4e"] = "136434987"; triggers["7593ff29-9ff9-402e-8721-9b5cf67b9243"] = ""; idsforuids["7593ff29-9ff9-402e-8721-9b5cf67b9243"] = "136434988"; triggers["5044818f-7d59-4a55-9026-fe9d0dd77a72"] = ""; idsforuids["5044818f-7d59-4a55-9026-fe9d0dd77a72"] = "136434989"; triggers["175407bc-6ea9-430e-80eb-5fc211b3939c"] = ""; idsforuids["175407bc-6ea9-430e-80eb-5fc211b3939c"] = "136434990"; triggers["3c038770-9137-4fe4-92ca-bbeb3247a48d"] = ""; idsforuids["3c038770-9137-4fe4-92ca-bbeb3247a48d"] = "136434991"; triggers["6d32a901-de74-4ebe-8275-35fcc8f55f3e"] = ""; idsforuids["6d32a901-de74-4ebe-8275-35fcc8f55f3e"] = "136434992"; triggers["e0def8ba-6115-4ca4-a3cf-9909570639e5"] = "136434992;"; idsforuids["e0def8ba-6115-4ca4-a3cf-9909570639e5"] = "136434993"; triggers["9f8a02ac-15d6-4473-a8a7-2ab01b243c9e"] = ""; idsforuids["9f8a02ac-15d6-4473-a8a7-2ab01b243c9e"] = "136434994"; triggers["06d88ad4-4fc8-4536-95f7-7bd38e7ae945"] = ""; idsforuids["06d88ad4-4fc8-4536-95f7-7bd38e7ae945"] = "136434995"; triggers["8a1febf2-48fe-45cf-9447-5579ba6ae4f1"] = ""; idsforuids["8a1febf2-48fe-45cf-9447-5579ba6ae4f1"] = "136434996"; triggers["f06bb3d6-0b5b-4a7a-969a-7fab38f3ebdd"] = ""; idsforuids["f06bb3d6-0b5b-4a7a-969a-7fab38f3ebdd"] = "136434997"; triggers["3709786b-6637-4a8f-87ab-000ecc9cd8ee"] = ""; idsforuids["3709786b-6637-4a8f-87ab-000ecc9cd8ee"] = "136434998"; triggers["821e4ca0-8200-4d0b-b9a7-71fd872aa72f"] = ""; idsforuids["821e4ca0-8200-4d0b-b9a7-71fd872aa72f"] = "136434999"; triggers["dea36fcf-635e-4a5c-9423-8706f245a14e"] = ""; idsforuids["dea36fcf-635e-4a5c-9423-8706f245a14e"] = "136435000"; triggers["ee1df473-e69f-4e7a-bc7f-f75962cd5383"] = ""; idsforuids["ee1df473-e69f-4e7a-bc7f-f75962cd5383"] = "136435001"; triggers["f4b6d9ae-100c-4513-80f7-3c62afd3f7da"] = ""; idsforuids["f4b6d9ae-100c-4513-80f7-3c62afd3f7da"] = "136435002"; triggers["e0a8d6b5-ead2-4478-accc-fe83877fa0c7"] = ""; idsforuids["e0a8d6b5-ead2-4478-accc-fe83877fa0c7"] = "136435003"; triggers["2dac27a6-9615-48cf-93c6-b4750664c8ef"] = ""; idsforuids["2dac27a6-9615-48cf-93c6-b4750664c8ef"] = "136435004"; triggers["719352ac-ba88-4af7-b228-d1e32ebe4abc"] = ""; idsforuids["719352ac-ba88-4af7-b228-d1e32ebe4abc"] = "136435005"; triggers["0864927f-cee6-4a0c-b5cf-f5bb236dc2fa"] = ""; idsforuids["0864927f-cee6-4a0c-b5cf-f5bb236dc2fa"] = "136435006"; triggers["8256f903-2f47-475e-adf6-1dbf0a2ff2e8"] = ""; idsforuids["8256f903-2f47-475e-adf6-1dbf0a2ff2e8"] = "136435007"; triggers["0fcfd7fb-90fa-57e8-2772-dbcd928a7071"] = "136435007;"; idsforuids["0fcfd7fb-90fa-57e8-2772-dbcd928a7071"] = "136435008"; triggers["f2cc0c44-a730-c779-da33-90d4f99f7e47"] = ""; idsforuids["f2cc0c44-a730-c779-da33-90d4f99f7e47"] = "136435009"; triggers["ad4cb57d-278d-47db-bf87-b4def9eba66c"] = ""; idsforuids["ad4cb57d-278d-47db-bf87-b4def9eba66c"] = "136435010"; triggers["17b02fa4-8993-4cec-adad-2f62471b833b"] = ""; idsforuids["17b02fa4-8993-4cec-adad-2f62471b833b"] = "136435011"; triggers["410c91f9-4e9f-4748-9f5e-d9a72e1f875e"] = ""; idsforuids["410c91f9-4e9f-4748-9f5e-d9a72e1f875e"] = "136435012"; triggers["2b980621-5dd7-6fd8-6c12-0088c6a84d97"] = "136435011;"; idsforuids["2b980621-5dd7-6fd8-6c12-0088c6a84d97"] = "136435013"; triggers["9c8898d9-bcd8-4714-8c08-4afc1c02d5ab"] = ""; idsforuids["9c8898d9-bcd8-4714-8c08-4afc1c02d5ab"] = "136435014"; triggers["b1e3135d-0e4b-4775-8a3d-ed54e59ee32a"] = ""; idsforuids["b1e3135d-0e4b-4775-8a3d-ed54e59ee32a"] = "136435015"; triggers["688b5823-92c1-4ef4-960a-75427c27e12b"] = ""; idsforuids["688b5823-92c1-4ef4-960a-75427c27e12b"] = "136435016"; triggers["9fbb8e74-de97-47c6-b907-f4dd49fbc424"] = ""; idsforuids["9fbb8e74-de97-47c6-b907-f4dd49fbc424"] = "136435017"; triggers["2e6992cb-6673-4c0f-a005-75501830a47f"] = "136435011;"; idsforuids["2e6992cb-6673-4c0f-a005-75501830a47f"] = "136435018"; triggers["2efa61c2-857b-4b02-b3be-fe04cca5beab"] = "136435011;"; idsforuids["2efa61c2-857b-4b02-b3be-fe04cca5beab"] = "136435019"; triggers["7eb0c440-41c0-f692-1280-35aef3089aa1"] = "136435011;"; idsforuids["7eb0c440-41c0-f692-1280-35aef3089aa1"] = "136435020"; triggers["6682bd3f-4732-814d-69bd-2330ddf08867"] = ""; idsforuids["6682bd3f-4732-814d-69bd-2330ddf08867"] = "136435021"; triggers["113effcb-9785-bb59-360d-aed2749dda45"] = ""; idsforuids["113effcb-9785-bb59-360d-aed2749dda45"] = "136435022"; triggers["d4a2fdd6-284c-4a4e-a97e-cc503df2f55e"] = ""; idsforuids["d4a2fdd6-284c-4a4e-a97e-cc503df2f55e"] = "136435023"; triggers["983e9e6c-89da-4d28-8e72-11b973a9f9c6"] = ""; idsforuids["983e9e6c-89da-4d28-8e72-11b973a9f9c6"] = "136435024"; triggers["36d0b6e6-f4fc-8486-f854-0bf32b20d15a"] = ""; idsforuids["36d0b6e6-f4fc-8486-f854-0bf32b20d15a"] = "136435025"; triggers["97886f60-85de-4f16-ac90-4bb54b8c0b1d"] = ""; idsforuids["97886f60-85de-4f16-ac90-4bb54b8c0b1d"] = "136435026"; triggers["0951f736-8f3e-49f9-b7bf-0522e9a754a7"] = ""; idsforuids["0951f736-8f3e-49f9-b7bf-0522e9a754a7"] = "136435027"; triggers["c08b99e4-7b31-1212-4ef2-22a47df8b2c0"] = ""; idsforuids["c08b99e4-7b31-1212-4ef2-22a47df8b2c0"] = "136435028"; triggers["6c2f4cff-ff3f-4954-84bd-238c1b3ee271"] = ""; idsforuids["6c2f4cff-ff3f-4954-84bd-238c1b3ee271"] = "136435029"; triggers["c172dc51-dd58-4ab7-abc9-f096173e9837"] = ""; idsforuids["c172dc51-dd58-4ab7-abc9-f096173e9837"] = "136435030"; triggers["dcc2f0f9-3032-4eb0-97dc-9b037c39fab4"] = "136435023;136435026;"; idsforuids["dcc2f0f9-3032-4eb0-97dc-9b037c39fab4"] = "136435031"; } function initializeAnswerData() { values = {}; pavalues = {}; pavaluesid = {}; tablevalues = {}; filevalues = {}; validationMessages = {}; if ($("#survey\\.id").length > 0) { initializeBackupHelper(); restoreBackup(); } } function initializeBackupHelper(){ backupHelper = {} backupHelper["136434918"] = { uid : "7a9647ce-58a9-4dde-a576-fb829604e500", type : "Text" } backupHelper["136434919"] = { uid : "5a029613-e99b-430f-a168-88057fa9c2c7", type : "FreeTextQuestion" } backupHelper["136434920"] = { uid : "a39c7c82-aeed-8396-7114-567c76d737aa", type : "FreeTextQuestion" } backupHelper["136434921"] = { uid : "4c55942b-cfb6-40fc-9c79-4b4ca36e2156", type : "FreeTextQuestion" } backupHelper["136434922"] = { uid : "0d7a8e54-6d01-4c3f-8d9c-598a13db2763", type : "SingleChoiceQuestion" } backupHelper["136434923"] = { uid : "785b72b8-71ed-4da7-94fb-7c1c811206e4", type : "PossibleAnswer" } backupHelper["136434924"] = { uid : "314cc8da-09b3-4036-87dc-6a1a5c7ab822", type : "PossibleAnswer" } backupHelper["136434925"] = { uid : "d216f0f3-e75d-44b0-82fc-4a8331f92afd", type : "PossibleAnswer" } backupHelper["136434926"] = { uid : "727ea2d3-fda7-4861-8eb4-6f06610d642e", type : "PossibleAnswer" } backupHelper["136434927"] = { uid : "f3437179-0768-4013-972f-6af5d2f93873", type : "PossibleAnswer" } backupHelper["136434928"] = { uid : "286250b7-d3c4-4816-af40-e639c5d7abcb", type : "PossibleAnswer" } backupHelper["136434929"] = { uid : "5e2500fa-32f5-4a5a-bf67-337cb074a4b1", type : "PossibleAnswer" } backupHelper["136434930"] = { uid : "db6f2c8e-ba19-488f-9731-53b8bc5360df", type : "PossibleAnswer" } backupHelper["136434931"] = { uid : "56c02b89-e43b-4130-93c5-78ebea87c927", type : "PossibleAnswer" } backupHelper["136434932"] = { uid : "8f76d5b8-b3d2-4fb2-b1eb-fbe0679f4e79", type : "PossibleAnswer" } backupHelper["136434933"] = { uid : "a3282ff4-65e1-4ee7-b1e3-9861552d0b31", type : "PossibleAnswer" } backupHelper["136434934"] = { uid : "723de685-10d9-482d-a2bb-1d74f3a122cc", type : "PossibleAnswer" } backupHelper["136434935"] = { uid : "e5c6b488-05c1-4f27-8bb9-e8eccc036aff", type : "PossibleAnswer" } backupHelper["136434936"] = { uid : "d01ba3ca-6b8b-4c08-93da-dd271c25abc8", type : "PossibleAnswer" } backupHelper["136434937"] = { uid : "a37db756-0206-4abf-bd70-09b8ce3f34db", type : "PossibleAnswer" } backupHelper["136434938"] = { uid : "dac456ae-0892-40ba-b62a-52a90649fc30", type : "PossibleAnswer" } backupHelper["136434939"] = { uid : "ad97b850-672b-4e94-b934-aa49ce429891", type : "PossibleAnswer" } backupHelper["136434940"] = { uid : "b007d82c-b401-4acc-b493-df03c8146559", type : "PossibleAnswer" } backupHelper["136434941"] = { uid : "6b05b3cf-3413-4058-af7c-5e4378b11bf5", type : "PossibleAnswer" } backupHelper["136434942"] = { uid : "9778e0ed-bfe1-4a2a-b9fb-eaddf459ee22", type : "PossibleAnswer" } backupHelper["136434943"] = { uid : "5ef12221-6249-49de-8e1a-1d5701e67885", type : "PossibleAnswer" } backupHelper["136434944"] = { uid : "8c829b2f-b8ed-4c73-b67b-ee63fc9529b2", type : "PossibleAnswer" } backupHelper["136434945"] = { uid : "80e6c927-be30-4083-a72a-766c7ca2a6c5", type : "PossibleAnswer" } backupHelper["136434946"] = { uid : "c91fc368-de28-49e9-bbf8-0edab96f90ca", type : "PossibleAnswer" } backupHelper["136434947"] = { uid : "f4015fd9-220e-4a94-8122-b62ab9aea85f", type : "PossibleAnswer" } backupHelper["136434948"] = { uid : "944ef026-1ce2-44ec-af92-86529bb2e6cd", type : "PossibleAnswer" } backupHelper["136434949"] = { uid : "857fad86-8724-43ac-979d-5f12bd0795f5", type : "PossibleAnswer" } backupHelper["136434950"] = { uid : "5b89fc6a-c753-4356-ba0b-a8a8a39329f1", type : "PossibleAnswer" } backupHelper["136434951"] = { uid : "57626ed3-a960-4695-8ee3-4e877075f596", type : "FreeTextQuestion" } backupHelper["136434952"] = { uid : "243802fc-b99b-4c13-a275-9892dfca71fb", type : "MultipleChoiceQuestion" } backupHelper["136434953"] = { uid : "5d45ae4e-ae26-4f40-a2f0-9cf1d8bead57", type : "PossibleAnswer" } backupHelper["136434954"] = { uid : "4ab92869-93aa-4b7c-b302-73961d4e8c6e", type : "PossibleAnswer" } backupHelper["136434955"] = { uid : "5ac6cdb3-b720-4216-b0fb-cc7972d6f80b", type : "PossibleAnswer" } backupHelper["136434956"] = { uid : "31b222eb-1c0a-4111-95c7-c66ac552836b", type : "PossibleAnswer" } backupHelper["136434957"] = { uid : "3ca622e1-7bde-47aa-bcf5-1c70d6a7adcc", type : "PossibleAnswer" } backupHelper["136434958"] = { uid : "b3823e11-a707-4569-b901-cdfb0bb32ba3", type : "PossibleAnswer" } backupHelper["136434959"] = { uid : "168ddae8-af75-4b17-b7bb-f90815fba224", type : "PossibleAnswer" } backupHelper["136434960"] = { uid : "4ed53c0f-ca7f-466d-a6b7-418115eabd62", type : "FreeTextQuestion" } backupHelper["136434961"] = { uid : "15a46529-3cf8-daed-f5f0-451714f4e98f", type : "Section" } backupHelper["136434962"] = { uid : "cfd560e4-c854-4372-9b5a-11828202b4c6", type : "MultipleChoiceQuestion" } backupHelper["136434963"] = { uid : "824842bd-c44b-41d4-929e-80186b2d646e", type : "PossibleAnswer" } backupHelper["136434964"] = { uid : "e180d3b9-b11f-4a1b-9d08-3d852d082fc5", type : "PossibleAnswer" } backupHelper["136434965"] = { uid : "591c1974-d951-4531-8a4c-84555fe434d3", type : "PossibleAnswer" } backupHelper["136434966"] = { uid : "d9219d70-2216-448c-97d3-818d9a4d4046", type : "PossibleAnswer" } backupHelper["136434967"] = { uid : "f80952de-bded-4394-bbda-9ab0cdd198e0", type : "PossibleAnswer" } backupHelper["136434968"] = { uid : "d76c6283-b595-47b5-8e27-770468936fbf", type : "PossibleAnswer" } backupHelper["136434969"] = { uid : "bd9e293f-8b47-4741-bc7f-1ff4a4e7d5f9", type : "PossibleAnswer" } backupHelper["136434970"] = { uid : "8f2e96c9-2e8f-42a2-9e9b-9a4315bd6b34", type : "PossibleAnswer" } backupHelper["136434971"] = { uid : "cd9bb38d-2d2b-4e1c-b4d5-a061025e12ad", type : "PossibleAnswer" } backupHelper["136434972"] = { uid : "a287c322-172b-4022-99dc-ab497c1db233", type : "PossibleAnswer" } backupHelper["136434973"] = { uid : "5ece46b4-d91f-4cac-9fd5-8bd32fe7a512", type : "PossibleAnswer" } backupHelper["136434974"] = { uid : "5c6d733a-e197-4061-b5b9-16efe63d6c45", type : "PossibleAnswer" } backupHelper["136434975"] = { uid : "72b07236-4266-4f2e-af53-9a35802680b2", type : "PossibleAnswer" } backupHelper["136434976"] = { uid : "fbf32846-599c-4976-849e-62546c1b5bbe", type : "FreeTextQuestion" } backupHelper["136434977"] = { uid : "937340b4-03bd-400c-b889-4fa215a66045", type : "MultipleChoiceQuestion" } backupHelper["136434978"] = { uid : "002c58ce-830e-4f7a-9052-0af88fc32ed3", type : "PossibleAnswer" } backupHelper["136434979"] = { uid : "729ce999-5b90-425b-a309-9611d0ba8cf4", type : "PossibleAnswer" } backupHelper["136434980"] = { uid : "47f914c5-8ef6-49ea-9a03-c123e70f899e", type : "PossibleAnswer" } backupHelper["136434981"] = { uid : "ee23a099-7e1e-4567-afaa-61d58425f307", type : "PossibleAnswer" } backupHelper["136434982"] = { uid : "49fed0c0-9f41-42c6-8b27-0109ae46cb47", type : "PossibleAnswer" } backupHelper["136434983"] = { uid : "582479b3-9062-4ce7-9680-1c7becc7b068", type : "PossibleAnswer" } backupHelper["136434984"] = { uid : "8a1e3a35-f2a0-4f13-ab97-a84708a36b97", type : "PossibleAnswer" } backupHelper["136434985"] = { uid : "33f7732e-8030-425e-9bdb-4c269afb97a0", type : "PossibleAnswer" } backupHelper["136434986"] = { uid : "70320460-c2bf-4656-baa3-86fae6b6579a", type : "PossibleAnswer" } backupHelper["136434987"] = { uid : "85fe7a33-bd4d-4615-b048-b4a712258d4e", type : "PossibleAnswer" } backupHelper["136434988"] = { uid : "7593ff29-9ff9-402e-8721-9b5cf67b9243", type : "PossibleAnswer" } backupHelper["136434989"] = { uid : "5044818f-7d59-4a55-9026-fe9d0dd77a72", type : "PossibleAnswer" } backupHelper["136434990"] = { uid : "175407bc-6ea9-430e-80eb-5fc211b3939c", type : "PossibleAnswer" } backupHelper["136434991"] = { uid : "3c038770-9137-4fe4-92ca-bbeb3247a48d", type : "PossibleAnswer" } backupHelper["136434992"] = { uid : "6d32a901-de74-4ebe-8275-35fcc8f55f3e", type : "PossibleAnswer" } backupHelper["136434993"] = { uid : "e0def8ba-6115-4ca4-a3cf-9909570639e5", type : "FreeTextQuestion" } backupHelper["136434994"] = { uid : "9f8a02ac-15d6-4473-a8a7-2ab01b243c9e", type : "MultipleChoiceQuestion" } backupHelper["136434995"] = { uid : "06d88ad4-4fc8-4536-95f7-7bd38e7ae945", type : "PossibleAnswer" } backupHelper["136434996"] = { uid : "8a1febf2-48fe-45cf-9447-5579ba6ae4f1", type : "PossibleAnswer" } backupHelper["136434997"] = { uid : "f06bb3d6-0b5b-4a7a-969a-7fab38f3ebdd", type : "PossibleAnswer" } backupHelper["136434998"] = { uid : "3709786b-6637-4a8f-87ab-000ecc9cd8ee", type : "PossibleAnswer" } backupHelper["136434999"] = { uid : "821e4ca0-8200-4d0b-b9a7-71fd872aa72f", type : "PossibleAnswer" } backupHelper["136435000"] = { uid : "dea36fcf-635e-4a5c-9423-8706f245a14e", type : "PossibleAnswer" } backupHelper["136435001"] = { uid : "ee1df473-e69f-4e7a-bc7f-f75962cd5383", type : "PossibleAnswer" } backupHelper["136435002"] = { uid : "f4b6d9ae-100c-4513-80f7-3c62afd3f7da", type : "PossibleAnswer" } backupHelper["136435003"] = { uid : "e0a8d6b5-ead2-4478-accc-fe83877fa0c7", type : "PossibleAnswer" } backupHelper["136435004"] = { uid : "2dac27a6-9615-48cf-93c6-b4750664c8ef", type : "PossibleAnswer" } backupHelper["136435005"] = { uid : "719352ac-ba88-4af7-b228-d1e32ebe4abc", type : "PossibleAnswer" } backupHelper["136435006"] = { uid : "0864927f-cee6-4a0c-b5cf-f5bb236dc2fa", type : "PossibleAnswer" } backupHelper["136435007"] = { uid : "8256f903-2f47-475e-adf6-1dbf0a2ff2e8", type : "PossibleAnswer" } backupHelper["136435008"] = { uid : "0fcfd7fb-90fa-57e8-2772-dbcd928a7071", type : "FreeTextQuestion" } backupHelper["136435009"] = { uid : "f2cc0c44-a730-c779-da33-90d4f99f7e47", type : "Section" } backupHelper["136435010"] = { uid : "ad4cb57d-278d-47db-bf87-b4def9eba66c", type : "SingleChoiceQuestion" } backupHelper["136435011"] = { uid : "17b02fa4-8993-4cec-adad-2f62471b833b", type : "PossibleAnswer" } backupHelper["136435012"] = { uid : "410c91f9-4e9f-4748-9f5e-d9a72e1f875e", type : "PossibleAnswer" } backupHelper["136435013"] = { uid : "2b980621-5dd7-6fd8-6c12-0088c6a84d97", type : "MultipleChoiceQuestion" } backupHelper["136435014"] = { uid : "9c8898d9-bcd8-4714-8c08-4afc1c02d5ab", type : "PossibleAnswer" } backupHelper["136435015"] = { uid : "b1e3135d-0e4b-4775-8a3d-ed54e59ee32a", type : "PossibleAnswer" } backupHelper["136435016"] = { uid : "688b5823-92c1-4ef4-960a-75427c27e12b", type : "PossibleAnswer" } backupHelper["136435017"] = { uid : "9fbb8e74-de97-47c6-b907-f4dd49fbc424", type : "PossibleAnswer" } backupHelper["136435018"] = { uid : "2e6992cb-6673-4c0f-a005-75501830a47f", type : "FreeTextQuestion" } backupHelper["136435019"] = { uid : "2efa61c2-857b-4b02-b3be-fe04cca5beab", type : "FreeTextQuestion" } backupHelper["136435020"] = { uid : "7eb0c440-41c0-f692-1280-35aef3089aa1", type : "FreeTextQuestion" } backupHelper["136435021"] = { uid : "6682bd3f-4732-814d-69bd-2330ddf08867", type : "Section" } backupHelper["136435022"] = { uid : "113effcb-9785-bb59-360d-aed2749dda45", type : "SingleChoiceQuestion" } backupHelper["136435023"] = { uid : "d4a2fdd6-284c-4a4e-a97e-cc503df2f55e", type : "PossibleAnswer" } backupHelper["136435024"] = { uid : "983e9e6c-89da-4d28-8e72-11b973a9f9c6", type : "PossibleAnswer" } backupHelper["136435025"] = { uid : "36d0b6e6-f4fc-8486-f854-0bf32b20d15a", type : "SingleChoiceQuestion" } backupHelper["136435026"] = { uid : "97886f60-85de-4f16-ac90-4bb54b8c0b1d", type : "PossibleAnswer" } backupHelper["136435027"] = { uid : "0951f736-8f3e-49f9-b7bf-0522e9a754a7", type : "PossibleAnswer" } backupHelper["136435028"] = { uid : "c08b99e4-7b31-1212-4ef2-22a47df8b2c0", type : "SingleChoiceQuestion" } backupHelper["136435029"] = { uid : "6c2f4cff-ff3f-4954-84bd-238c1b3ee271", type : "PossibleAnswer" } backupHelper["136435030"] = { uid : "c172dc51-dd58-4ab7-abc9-f096173e9837", type : "PossibleAnswer" } backupHelper["136435031"] = { uid : "dcc2f0f9-3032-4eb0-97dc-9b037c39fab4", 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="da1ce884-cac6-4b7a-a2fd-3464fdd669cc" /> </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/accessibilitystatement">Accessibility 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>&#160; <a href="?language=cs">膶e拧tina</a>&#160; <a href="?language=da">Dansk</a>&#160; <a href="?language=de">Deutsch</a>&#160; <a href="?language=et">Eesti keel</a>&#160; <a href="?language=el">螘位位畏谓喂魏维</a>&#160; <a href="?language=en">English</a>&#160; <a href="?language=es">Espa帽ol</a>&#160; <a href="?language=fr">Fran莽ais</a>&#160; <a href="?language=ga">Gaeilge</a>&#160; <a href="?language=hr">Hrvatski jezik</a>&#160; <a href="?language=it">Italiano</a>&#160; <a href="?language=lv">Latvie拧u valoda</a>&#160; <a href="?language=lt">Lietuvi懦 kalba</a>&#160; <a href="?language=hu">Magyar</a>&#160; <a href="?language=mt">Malti</a>&#160; <a href="?language=nl">Nederlands</a>&#160; <a href="?language=pl">Polski</a>&#160; <a href="?language=pt">Portugu锚s</a>&#160; <a href="?language=ro">Rom芒n膬</a>&#160; <a href="?language=sk">Sloven膷ina</a>&#160; <a href="?language=sl">Sloven拧膷ina</a>&#160; <a href="?language=fi">Suomi</a>&#160; <a href="?language=sv">Svenska</a>&#160; </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 &nbspv1.5.3.4 447f3468b7cc956dfc27c59100d4b40b05bf7eb7 (14/02/2025 15:52)</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&nbsp;<span id="export-name-dialog-type"></span>&nbsp;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="da1ce884-cac6-4b7a-a2fd-3464fdd669cc" /> </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="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 &nbsp;<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>

Pages: 1 2 3 4 5 6 7 8 9 10