CINXE.COM
Consumer Service Portal - Customer Service
<!DOCTYPE html><html lang="en" dir="ltr" ng-app="sn.$sp" ng-init="portal_id = '2086b814c3221200f3897bfaa2d3aea8'" style="height: 100%" class="page-{{page.sys_id}} v{{page.sys_id}} ltr" data-page-id="{{page.sys_id}}"><head sp-metatags=""><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://asiakaspalvelu.yle.fi/csp","20240331043908","https://web.archive.org/","web","/_static/", "1711859948"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <base href="/web/20240331043908/https://asiakaspalvelu.yle.fi/csp"></base><link rel="preload" href="/web/20240331043908/https://asiakaspalvelu.yle.fi/styles/fonts/glyphicons-halflings-regular.woff2" as="font" crossorigin="anonymous"></link><link rel="preload" href="/web/20240331043908/https://asiakaspalvelu.yle.fi/scripts/icon-fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" crossorigin="anonymous"></link><link rel="preload" href="/web/20240331043908/https://asiakaspalvelu.yle.fi/images/sp-agent-chat-icon.svg" as="image"></link><title>Consumer Service Portal - Customer Service</title><meta http-equiv="X-UA-Compatible" content="IE=edge; IE=10"></meta><meta name="viewport" content="width=device-width, initial-scale=1.0"></meta><meta name="apple-mobile-web-app-capable" content="yes"></meta><meta http-equiv="cache-control" content="public"></meta><meta http-equiv="cache-control" content="no-cache"></meta><meta http-equiv="cache-control" content="max-age=0"></meta><meta http-equiv="pragma" content="no-cache"></meta><link rel="shortcut icon" href="/web/20240331043908im_/https://asiakaspalvelu.yle.fi/d4bccda61b4dd5909b28a8afe54bcb0b.iix?&v=85a80de487998a50097ddbd83cbb3527"></link><link rel="apple-touch-icon" href="/web/20240331043908im_/https://asiakaspalvelu.yle.fi/d4bccda61b4dd5909b28a8afe54bcb0b.iix?&v=85a80de487998a50097ddbd83cbb3527"></link><link rel="stylesheet" href="/web/20240331043908cs_/https://asiakaspalvelu.yle.fi/styles/fonts/source-sans-pro/source-sans-pro-latin.css?v=85a80de487998a50097ddbd83cbb3527" media="none" onload="if(media!='all')media='all'"></link><link rel="stylesheet" href="/web/20240331043908cs_/https://asiakaspalvelu.yle.fi/styles/css_includes_$sp.css?v=85a80de487998a50097ddbd83cbb3527" media="none" onload="if(media!='all')media='all'"></link><link href="/web/20240331043908cs_/https://asiakaspalvelu.yle.fi/styles/scss/sp-bootstrap-rem.scss?portal_id=2086b814c3221200f3897bfaa2d3aea8&theme_id=44c19f0ac313120071d07bfaa2d3ae76&v=85a80de487998a50097ddbd83cbb3527&uxf_theme_id=null&uxf_theme_variant_id=null&is_rtl=false" rel="stylesheet" type="text/css"></link><link rel="stylesheet" href="/web/20240331043908cs_/https://asiakaspalvelu.yle.fi/styles/css_includes_$sp_later.css?v=85a80de487998a50097ddbd83cbb3527" media="none" onload="if(media!='all')media='all'"></link><style>#yle-consent-sdk-container label { margin-bottom: 0; } #yle-consent-sdk-container input[type="checkbox"] { margin: 0 1.5rem 0 0 !important; } #yle-consent-sdk-container a:hover { color: inherit !important; font-weight: 400 !important; text-decoration: underline !important; } [accessibility] [tabindex]:focus { border-color: var(--yds-color-border) !important; border-style: double !important; border-width: .6rem !important; } [accessibility] a:focus, [accessibility] button:focus, [accessibility] [role="slider"]:focus, [accessibility] [role="button"]:focus, [accessibility] .btn:focus { border-color: var(--yds-color-border) !important; border-style: double !important; border-width: .6rem !important; } body { font-family: Open Sans; } .panel-default { border-radius: .7rem; padding: 1.4rem; box-shadow: .2rem .2rem 1rem .1rem rgba(0, 0, 0, .2); background-color: white !important; } .panel { border-radius: .7rem; padding: 1.4rem; box-shadow: .2rem .2rem 1rem .1rem rgba(0, 0, 0, .2); background-color: white !important; } .panel-heading { border-top-right-radius: .7rem; border-top-left-radius: .7rem; padding: 1.4rem; background-color: transparent !important; color: #434343; } .panel-title { font-weight: bold; } .panel-title > a { color: #00b4c8; } .th-title { color: #00b4c8 !important; }</style><style>#yle-consent-sdk-container label { margin-bottom: 0; } #yle-consent-sdk-container input[type="checkbox"] { margin: 0 1.5rem 0 0 !important; } #yle-consent-sdk-container a:hover { color: inherit !important; font-weight: 400 !important; text-decoration: underline !important; } [accessibility] [tabindex]:focus { border-color: var(--yds-color-border) !important; border-style: double !important; border-width: .6rem !important; } [accessibility] a:focus, [accessibility] button:focus, [accessibility] [role="slider"]:focus, [accessibility] [role="button"]:focus, [accessibility] .btn:focus { border-color: var(--yds-color-border) !important; border-style: double !important; border-width: .6rem !important; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Thin.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Thin.woff') format("woff"); font-style: normal; font-weight: 100; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-ThinItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-ThinItalic.woff') format("woff"); font-style: italic; font-weight: 100; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Light.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Light.woff') format("woff"); font-style: normal; font-weight: 300; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-LightItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-LightItalic.woff') format("woff"); font-style: italic; font-weight: 300; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Regular.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Regular.woff') format("woff"); font-style: normal; font-weight: 400; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-RegularItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-RegularItalic.woff') format("woff"); font-style: italic; font-weight: 400; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Medium.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Medium.woff') format("woff"); font-style: normal; font-weight: 500; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-MediumItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-MediumItalic.woff') format("woff"); font-style: italic; font-weight: 500; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Bold.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Bold.woff') format("woff"); font-style: normal; font-weight: 700; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-BoldItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-BoldItalic.woff') format("woff"); font-style: italic; font-weight: 700; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Black.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-Black.woff') format("woff"); font-style: normal; font-weight: 900; } @font-face { font-family: "Yle"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-BlackItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/Yle-BlackItalic.woff') format("woff"); font-style: italic; font-weight: 900; } @font-face { font-family: "Yle Condensed"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Thin.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Thin.woff') format("woff"); font-style: normal; font-weight: 100; } @font-face { font-family: "Yle Condensed"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Light.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Light.woff') format("woff"); font-style: normal; font-weight: 300; } @font-face { font-family: "Yle Condensed"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Regular.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Regular.woff') format("woff"); font-style: normal; font-weight: 400; } @font-face { font-family: "Yle Condensed"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Medium.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Medium.woff') format("woff"); font-style: normal; font-weight: 500; } @font-face { font-family: "Yle Condensed"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Bold.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Bold.woff') format("woff"); font-style: normal; font-weight: 700; } @font-face { font-family: "Yle Condensed"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Black.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/YleCondensed-Black.woff') format("woff"); font-style: normal; font-weight: 900; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-Light.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-Light.woff') format("woff"); font-style: normal; font-weight: 300; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-LightItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-LightItalic.woff') format("woff"); font-style: italic; font-weight: 300; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-Regular.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-Regular.woff') format("woff"); font-style: normal; font-weight: 400; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-RegularItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-RegularItalic.woff') format("woff"); font-style: italic; font-weight: 400; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-SemiBold.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-SemiBold.woff') format("woff"); font-style: normal; font-weight: 600; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-SemiBoldItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-SemiBoldItalic.woff') format("woff"); font-style: italic; font-weight: 600; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-Bold.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-Bold.woff') format("woff"); font-style: normal; font-weight: 700; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-BoldItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-BoldItalic.woff') format("woff"); font-style: italic; font-weight: 700; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-ExtraBold.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-ExtraBold.woff') format("woff"); font-style: normal; font-weight: 800; } @font-face { font-family: "Open Sans"; src: url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-ExtraBoldItalic.woff2') format("woff2"), url('https://web.archive.org/web/20240331043908im_/https://design-system.cdn.yle.fi/OpenSans-ExtraBoldItalic.woff') format("woff"); font-style: italic; font-weight: 800; }</style><style>#yle-consent-sdk-container label { margin-bottom: 0; } #yle-consent-sdk-container input[type="checkbox"] { margin: 0 1.5rem 0 0 !important; } #yle-consent-sdk-container a:hover { color: inherit !important; font-weight: 400 !important; text-decoration: underline !important; } [accessibility] [tabindex]:focus { border-color: var(--yds-color-border) !important; border-style: double !important; border-width: .6rem !important; } [accessibility] a:focus, [accessibility] button:focus, [accessibility] [role="slider"]:focus, [accessibility] [role="button"]:focus, [accessibility] .btn:focus { border-color: var(--yds-color-border) !important; border-style: double !important; border-width: .6rem !important; } .panel-heading .glyphicon { font-size: 1.6rem; } a.circle_icon h3 { color: #333333; margin: 0 0 .3rem 0; } .breadcrumbs-container { padding-top: .5rem; padding-bottom: .5rem; } .avatar-container { color: #4a4a4a; } .avatar-container .avatar .sub-avatar { background-color: #e5e5e5; } .timeline-badge.success { background-color: #b5ebd4 !important; } .timeline-badge span { color: #293e40 !important; } .panel-footer { color: #515151 !important; } .help-tag { color: #3a3f51 !important; } .v4fb49e644fdf111088b241eeae72e093 .upcoming { background-color: $moderate-tertiary !important; } .v4fb49e644fdf111088b241eeae72e093 .completed { background-color: $positive-tertiary !important; } .v4fb49e644fdf111088b241eeae72e093 .cancelled { background-color: $critical-tertiary !important; }</style><script data-description="NOW glide web analytics siteid and url">window.snWebaConfig = window.snWebaConfig || {}; // glide web analytics config window.snWebaConfig.siteId = "0"; window.snWebaConfig.trackerURL = ""; window.snWebaConfig.webaScriptPath = "/scripts/piwik-3.1.1/thirdparty/piwik.min.js"; window.snWebaConfig.ambClient = (window.g_ambClient) ? window.g_ambClient : ((window.amb)? window.amb.getClient(): ""); window.snWebaConfig.subscribed = false;</script><script data-description="NOW session, user_name, etc">window.NOW = window.NOW || {}; // record watch / presence window.NOW.session_id = '1F8B7B0187598E50097DDBD83CBB35C5'; window.NOW.user_name = 'guest'; window.NOW.user_id = '5136503cc611227c0183e96598c4f706'; window.NOW.user_display_name = 'Guest'; window.NOW.user_initials = 'G'; window.NOW.user_avatar = ''; window.NOW.presence_interval = 60; window.NOW.record_presence_interval = 20; window.NOW.ambConnected = false;</script><script data-description="NOW ucm, analytics related default props">window.NOW.analytics_enabled = false; window.NOW.performance_monitoring_enabled = true; window.NOW.sp_analytics_plugin_active = false; window.NOW.sp_analytics_portal_override = false; window.NOW.ucm_invocations = 0; window.NOW.ucm_portal_id = ''; window.NOW.usage_tracking = window.NOW.usage_tracking || {}; window.NOW.usage_tracking.ucm_encountered_exception = true; window.NOW.usage_tracking.user_consent = 'NoConsentRequired'; window.NOW.user_impersonating = undefined; window.NOW.usage_tracking.usage_tracking_allowed_for_session = false; window.NOW.instrumentation_authkey = ''; window.NOW.user_id_hashed = '591bce70be21e6b30a1d83d4b795b2d49f9d2bf53042cf3a779bc475729c5b26'; window.NOW.instrumentation_api_host = ''; window.NOW.instance_id = '0b9b61ef4fc0ea0494ac220f0310c7f7'; window.NOW.instance_name = 'yle'; window.NOW.domain_id = ''; window.NOW.unauthenticated_user_tracking_enabled = false;</script><script data-description="NOW ucm, analytics related props">window.NOW.analytics_enabled = 'true' == 'true'; window.NOW.performance_monitoring_enabled = ('true' == 'true' && 'true' == 'true'); window.NOW.sp_analytics_plugin_active = true; window.NOW.sp_analytics_portal_override = '' == 'true'; window.NOW.ucm_invocations = parseInt(''); window.NOW.ucm_portal_id = ''; window.NOW.usage_tracking = window.NOW.usage_tracking || {}; window.NOW.usage_tracking.user_consent = ''; window.NOW.user_impersonating = false; window.NOW.usage_tracking.usage_tracking_allowed_for_session = '' == 'true'; window.NOW.instrumentation_authkey = '0bdbe70a6a174e48843c18c722d3e4da'; window.NOW.user_id_hashed = '591bce70be21e6b30a1d83d4b795b2d49f9d2bf53042cf3a779bc475729c5b26'; window.NOW.instrumentation_api_host = 'https://web.archive.org/web/20240331043908/https://api-appsee.service-now.com'; window.NOW.instance_id = '0b9b61ef4fc0ea0494ac220f0310c7f7'; window.NOW.instance_name = 'yle'; window.NOW.domain_id = '';window.NOW.unauthenticated_user_tracking_enabled = false;</script><script data-description="NOW vars set by properties, custom events, g_* globals"> window.g_ck = '9f8b7b0187598e50097ddbd83cbb35c5ffd41c62e54c37a420667251fd560389908679ba'; window.g_spd = '' === 'true'; window.logged_in = false; if (!window.NOW) window.NOW = {}; window.NOW.ac_wait_time = parseInt(250, 10); window.NOW.ac_max_search_matches = parseInt(100, 10); window.NOW.sp_dual_list_default_view = ''; window.NOW.sp_debug = 'false' == 'true'; window.NOW.sp_show_console_error = 'true' == 'true' && false; window.NOW.page_id = ''; window.NOW.portal_id = '2086b814c3221200f3897bfaa2d3aea8'; window.NOW.start_page_id = 'csp_index'; window.NOW.ais_enabled = 'false'; window.NOW.portal_url_suffix = 'csp'; window.NOW.has_access = 'true' === 'true'; // script checks for environment // if (NOW.sp) ... // added Aug 1, 2016 window.NOW.sp = {}; window.NOW.sp.version = {}; window.NOW.sp.version.major = 1; window.NOW.sp.version.minor = 2; window.NOW.sp.version.dot = 0; window.NOW.sp.enableTours = 'false' == 'true'; window.NOW.sp.can_debug = ('false' == 'true' || 'true' == 'false') || false; window.NOW.sp.enableDateTranslation = '' == 'true'; window.NOW.sp.widgetCSSIncludes = {}; window.NOW.currency = {}; window.NOW.currency.code = 'EUR'; window.NOW.locale = {}; window.NOW.locale.code = 'fin_FI'; window.NOW.hasAdvanceChat = "false" === "true"; try { window.NOW.dateFormat = JSON.parse("{\"timeAgo\": false, \"dateBoth\": false}"); } catch (e) { window.NOW.dateFormat = {timeAgo: false, dateBoth: false}; } var timeleft = parseInt('2', 10); window.NOW.session_timeleft = isNaN(timeleft) ? 120 : timeleft * 60; window.NOW.forgetMe = 'false' // SP Context Manager window.NOW.sp_ctx_mgr_timeout = parseInt(5000, 10); // SP doesn't define app resources yet window.SN_APP_RESOURCES = {}; // script globals var g_tz_offset = 10800000; var g_tz = 'Europe/Helsinki'; var g_first_day_of_week = parseInt(1, 10); var g_date_picker_first_day_of_week = parseInt(2, 10); var g_notif_timeout = parseInt(10, 10); var g_ck = '9f8b7b0187598e50097ddbd83cbb35c5ffd41c62e54c37a420667251fd560389908679ba'; var g_searchWaitTime = 100; var g_amb_on_login = false; var g_lang = 'en'; var g_system_lang = "en"; var g_user_date_time_format = "dd.MM.yyyy HH:mm:ss"; var g_user_date_format = "dd.MM.yyyy"; var g_user_decimal_separator = "."; var g_user_grouping_separator = ","; var g_text_direction = "ltr"; var g_accessibility = "false"; var g_accessibility_resizeText = "true" === "true"; var g_accessibility_visual_patterns = false; var g_accessibility_screen_reader_table = false; var g_glide_list_separator = ", "; var g_sort_elements_by_session_language = "true" == "true"; var g_dirty_form_warning_enabled = "true" == "true"; var g_mandatory_field_msg = 'Some fields are incomplete:'; var g_field_error_msg = 'The following fields contain errors:'; var g_tinymce_remove_script_host = "true" == "true"; var g_tinymce_convert_urls = "false" == "true"; var g_tinymce_relative_urls = "true" == "true"; var g_datepicker_validation_enable = "true" == "true"; var g_choices_show_missing = "true" == "true"; var g_builddate = "02-06-2024_1013"; var g_has_agent_chat_config = "false" === "true"; var g_portal_isrtl= "false" === "true"; var g_user_is_admin = "false" === "true"; var g_persist_msgs_through_page_nav = "true" == "true"; var g_attachment_force_download_all_mime_types = "false" === "true"; var g_attachment_force_download_mime_type = "application/xml,text/html,image/svg,image/svg+xml"; var g_universal_link_flag = "false" === "true"; var g_sso_open_in_window = "false" === "true"; var g_user_login_method = ""; var g_ref_ac_startswith = "true" == "true"; window.NOW.multisso_enabled = "" === "true"; var g_has_encryption_context = false; // PRB1395165: prevent ClientScriptScoper errors from scoped UI Scripts ScopedGlideDialogWindowGenerator = function() { return null; }; ScopedGlideAjaxGenerator = function() { return null; }; ScopedGFormGenerator = function() { return null; }; window.NOW.req_has_lang = 'false' == 'true';</script><script src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/scripts/thirdparty/dompurify/purify.min.js?sysparm_substitute=false"></script><script type="text/javascript" src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/scripts/js_includes_sp_libs_min.jsx?v=02-06-2024_1013&lp=Tue_Mar_05_04_23_09_PST_2024&c=28_613"></script><script type="text/javascript" src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/scripts/dist/sp_min.jsx?v=02-06-2024_1013"></script><script language="javascript" src="https://web.archive.org/web/20240331043908js_/https://yle-consent-sdk.yle.fi/v3/yle-consent-sdk.latest.js"></script><script type="text/javascript" src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/scripts/ec-graph-ais.js?v=02-06-2024_1013"></script><script type="text/javascript" src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/scripts/bootstrap-datetimepicker.js?v=02-06-2024_1013"></script><script type="text/javascript" src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/app_com.jsdbx?c=21"></script><script type="text/javascript" src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/app_com.modelUtil.jsdbx?c=20"></script><script type="text/javascript" src="/web/20240331043908js_/https://asiakaspalvelu.yle.fi/app_com.cxs.contextual_search.jsdbx?c=56"></script><link rel="stylesheet" type="text/css" href="/web/20240331043908cs_/https://asiakaspalvelu.yle.fi/styles/retina_icons/retina_icons.css?v=02-06-2024_1013"></link><script data-description="set sp.dependencies">(function(){ angular.module('sp.dependencies', ["sn.app_common.cxs"]); var portal = JSON.parse('{\"sp_rectangle_menu\":\"c8674194c3221200f3897bfaa2d3aec4\",\"sqanda_knowledge_base_dv\":\"Consumer Service\",\"sc_category_page_dv\":\"\",\"icon\":\"d4bccda61b4dd5909b28a8afe54bcb0b.iix\",\"sc_catalog\":\"0f910a2ac3112200b12d9f2974d3ae3c\",\"kb_knowledge_page_dv\":\"kb_home\",\"title\":\"Customer Service\",\"sc_catalog_page\":\"fe87a11147132100ba13a5554ee490b9\",\"sys_class_name\":\"sp_portal\",\"ts_index_group_dv\":\"\",\"sys_id\":\"2086b814c3221200f3897bfaa2d3aea8\",\"enable_favorites\":false,\"theme_dv\":\"Consumer Service Portal\",\"default\":false,\"sqanda_knowledge_base\":\"2b292926c3302200e7c7d44d81d3ae10\",\"enable_ais\":false,\"homepage_dv\":\"csp_index\",\"notfound_page_dv\":\"404\",\"sc_catalog_dv\":\"Consumer Service\",\"logo\":\"fba290291b07d110f3b21022b24bcbbd.iix\",\"sys_name\":\"Asiakaspalvelu\",\"sp_rectangle_menu_dv\":\"CSP Header Menu\",\"theme\":\"44c19f0ac313120071d07bfaa2d3ae76\",\"sp_chat_queue\":\"3a40c019c333120071d07bfaa2d3ae17\",\"sys_scope\":\"global\",\"search_results_configuration_dv\":\"\",\"sc_catalog_page_dv\":\"sc_home\",\"hide_portal_name\":false,\"sys_class_name_dv\":\"Service Portal\",\"search_application_dv\":\"\",\"quick_start_config\":\"[{\\n\\t\\\"tagline\\\": {\\n\\t\\t\\\"table\\\" : \\\"sp_instance\\\",\\n\\t\\t\\\"sys_id\\\" : \\\"ae17e4ecc3b2120095ccd02422d3ae49\\\",\\n\\t\\t\\\"field\\\" : \\\"title\\\"\\n\\t},\\n\\t\\\"hero_background\\\": {\\n\\t\\t\\\"table\\\" : \\\"sp_container\\\",\\n\\t\\t\\\"sys_id\\\" : \\\"f5d664ecc3b2120095ccd02422d3ae49\\\",\\n\\t\\t\\\"field\\\" : \\\"background_image\\\"\\n\\t},\\n\\t\\\"footerMenu\\\": {\\\"sys_id\\\" : \\\"f01612cf3b643200367aee1234efc48e\\\"},\\n\\t\\\"secondaryMenu\\\": {\\\"sys_id\\\": \\\"53616d1e3b013200367aee1234efc439\\\"},\\n\\t\\\"isCSPPortal\\\": true,\\n\\t\\\"default_interaction_queue\\\": \\\"fdfc02d0738513000f4012562ef6a760\\\"\\n}]\",\"kb_knowledge_page\":\"e1c919e4dbd3220099f93691f0b8f535\",\"sys_tags\":\"\",\"login_page_dv\":\"\",\"sp_chat_queue_dv\":\"Consumer Service\",\"css_variables\":\"$brand-primary: #00b4c8;\\n$body-bg: #fefefe;\\n$state-success-text: #5cb85c;\\n$sp-homepage-bg: #fff;\\n$sp-navbar-divider-color: #455464;\\n$text-color: #717171;\\n$sp-logo-margin-y: .5rem;\\n$navbar-inverse-link-hover-color: #00b4c8;\\n$panel-bg: #fff;\\n$brand-success: #5cb85c;\\n$navbar-inverse-bg: #262a2e;\\n$brand-warning: #f0ad4e;\\n$brand-danger: #cf1d25;\\n$navbar-inverse-link-color: #ffffff;\\n$brand-info: #428bca;\\n$link-color: #00b4c8;\\n$sp-logo-margin-x: 1.5rem;\\n$btn-default-bg: #fff;\\n$text-muted: #666666;\\n$sp-tagline-color: #000000;\\n\\n\\n/* Added to override some declarations INCYLE0717371 */\\n#yle-consent-sdk-container {\\n label {\\n margin-bottom: 0;\\n }\\n\\n input[type=\\\"checkbox\\\"] {\\n margin: 0 15px 0 0 !important;\\n }\\n\\n a:hover {\\n color: inherit !important;\\n font-weight: 400 !important;\\n text-decoration: underline !important;\\n }\\n}\\n\\n[accessibility] [tabindex]:focus {\\n border-color: var(--yds-color-border) !important;\\n border-style: double !important;\\n border-width: 6px !important;\\n}\\n\\n[accessibility] a:focus,\\n[accessibility] button:focus,\\n[accessibility] [role=\\\"slider\\\"]:focus,\\n[accessibility] [role=\\\"button\\\"]:focus,\\n[accessibility] .btn:focus {\\n border-color: var(--yds-color-border) !important;\\n border-style: double !important;\\n border-width: 6px !important;\\n}\",\"rtl_enabled\":false,\"notfound_page\":\"3c2c9063cb11020000f8d856634c9c1f\",\"kb_knowledge_base_dv\":\"Consumer Service\",\"kb_knowledge_base\":\"2b292926c3302200e7c7d44d81d3ae10\",\"url_suffix\":\"csp\",\"dark_theme_dv\":\"\",\"homepage\":\"30b664ecc3b2120095ccd02422d3aecb\"}'); angular.module('sp.pageData', []).factory('spPageData', function() { return { getPortal: function () { return portal; } } }); })();</script><script>$(document).ready(function() { if ('ontouchstart' in window || (navigator.maxTouchPoints !== 'undefined' && navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints !== 'undefined' && navigator.msMaxTouchPoints > 0)) { $("body").addClass('touch_scroll'); } });</script><style type="text/css">.gsfBackground { border-color: #fff779; font-size: 16; margin-bottom: 5; }</style></head><body class=" windows chrome " ng-class="[main.style, 'false' == 'true' ? 'has-agent-chat' : '' ]" ng-cloak="true" ng-controller="spPageCtrl as main" accessibility="false"><div class="sp-page-root page flex-column" ng-class="{'sp-loading': main.firstPage, 'sp-can-animate': main.doAnimate}"><div ng-if="main.firstPage" class="sp-page-loader h4" role="status"> <fa name="spinner" spin="true"></fa> Loading...</div><div><sn-banner banner-api-url="bannerApiUrl"></sn-banner></div><header ng-if="theme.header && theme.navbar_fixed" role="banner"><a class="skip-link sr-only" ng-click="main.focusOnPageTitle(true, $event)" href="javascript:void(0)">Skip to page content</a><sp-announcements></sp-announcements><sp-widget widget="theme.header" page="page"></sp-widget><div ng-if="subheader" ng-repeat="subheader in subheaders" ng-switch="subheader.semantic_tag" ng-style="main.parseJSON(subheader.background)" ng-class="::[subheader.class_name, 'c' + subheader.sys_id]"><main ng-switch-when="main" ng-class="::main.getContainerClasses(subheader)" role="main"><sp-page-row ng-repeat="row in ::subheader.rows" columns="::row.columns" row="::row" container="::subheader"></sp-page-row></main><div ng-switch-default="" ng-class="::main.getContainerClasses(subheader)"><sp-page-row ng-repeat="row in ::subheader.rows" columns="::row.columns" row="::row" container="::subheader"></sp-page-row></div></div></header><sp-notifications></sp-notifications><div class="sp-page-loader-mobile visible-xs visible-sm sp-loading-indicator la-sm" ng-class="{invisible: main.firstPage || !main.loadingIndicator}"><div></div><div></div><div></div></div><section ng-switch="page.has_custom_main_tag" class="flex-grow page sp-scroll" role="presentation" tabindex="-1"><header ng-if="theme.header && !theme.navbar_fixed" role="banner"><a class="skip-link sr-only" ng-click="main.focusOnPageTitle(true, $event)" href="javascript:void(0)">Skip to page content</a><sp-announcements></sp-announcements><sp-widget widget="theme.header" page="page"></sp-widget><div ng-if="subheader" ng-repeat="subheader in subheaders" ng-switch="subheader.semantic_tag" ng-style="main.parseJSON(subheader.background)" ng-class="::[subheader.class_name, 'c' + subheader.sys_id]"><main ng-switch-when="main" ng-class="::main.getContainerClasses(subheader)" role="main"><sp-page-row ng-repeat="row in ::subheader.rows" columns="::row.columns" row="::row" container="::subheader"></sp-page-row></main><div ng-switch-default="" ng-class="::main.getContainerClasses(subheader)"><sp-page-row ng-repeat="row in ::subheader.rows" columns="::row.columns" row="::row" container="::subheader"></sp-page-row></div></div></header><header ng-if="!theme.header" role="banner"><sp-announcements></sp-announcements></header><main ng-switch-when="false" class="body padding-top" data-page-id="{{page.sys_id}}" data-page-title="{{page.title}}" role="main"><sp-aria-page-title page-title="page.title"></sp-aria-page-title><div ng-switch="container.semantic_tag" ng-repeat="container in containers" ng-style="main.parseJSON(container.background)" ng-class="::[container.class_name, 'c' + container.sys_id]"><main ng-switch-when="main" ng-class="::main.getContainerClasses(container)" role="main"><h2 class="sr-only" ng-if="::container.title" ng-bind="::container.title"></h2><sp-page-row ng-repeat="row in ::container.rows track by row.sys_id" columns="::row.columns" row="::row" container="::container"></sp-page-row></main><div ng-switch-default="" ng-class="::main.getContainerClasses(container)"><h2 class="sr-only" ng-if="::container.title" ng-bind="::container.title"></h2><sp-page-row ng-repeat="row in ::container.rows track by row.sys_id" columns="::row.columns" row="::row" container="::container"></sp-page-row></div></div></main><div ng-switch-default="" class="body padding-top" data-page-id="{{page.sys_id}}" data-page-title="{{page.title}}"><sp-aria-page-title page-title="page.title"></sp-aria-page-title><div ng-switch="container.semantic_tag" ng-repeat="container in containers" ng-style="main.parseJSON(container.background)" ng-class="::[container.class_name, 'c' + container.sys_id]"><main ng-switch-when="main" ng-class="::main.getContainerClasses(container)" role="main"><h2 class="sr-only" ng-if="::container.title" ng-bind="::container.title"></h2><sp-page-row ng-repeat="row in ::container.rows track by row.sys_id" columns="::row.columns" row="::row" container="::container"></sp-page-row></main><div ng-switch-default="" ng-class="::main.getContainerClasses(container)"><h2 class="sr-only" ng-if="::container.title" ng-bind="::container.title"></h2><sp-page-row ng-repeat="row in ::container.rows track by row.sys_id" columns="::row.columns" row="::row" container="::container"></sp-page-row></div></div></div><footer ng-if="!main.isObjectEmpty(theme.footer) && !theme.footer_fixed"><sp-widget widget="theme.footer"></sp-widget></footer></section><footer ng-if="!main.isObjectEmpty(theme.footer) && theme.footer_fixed"><sp-widget widget="theme.footer"></sp-widget></footer></div><sp-aria-live></sp-aria-live><script id="sp_page_row_content.xml" type="text/ng-template"><div ng-repeat="column in columns track by column.sys_id" ng-switch="column.semantic_tag" class="{{::column.class_name}} {{(!container.bootstrap_alt) ? column.size_classes : ''}}"><div ng-switch-default="" ng-repeat="row in column.rows track by row.sys_id" class="repeated-row-container"><sp-page-row columns="row.columns" row="row" container="container"></sp-page-row></div><span ng-switch-default="" ng-repeat="rectangle in column.widgets track by rectangle.instance_id"><sp-widget widget="rectangle.widget"></sp-widget></span><main ng-switch-when="main"><div ng-repeat="row in column.rows track by row.sys_id" class="repeated-row-container"><sp-page-row columns="row.columns" row="row" container="container"></sp-page-row></div><span ng-repeat="rectangle in column.widgets track by rectangle.instance_id"><sp-widget widget="rectangle.widget"></sp-widget></span></main></div></script><script id="sp_image_chooser.xml" type="text/ng-template"><div class="sp-image-chooser-div"><input id="imageChooser{{ field.name }}" type="file" style="display: none;" ng-file-select="fileSelect($files, field)"></input><img ng-show="field.value" style="max-height: 200px; max-width: 200px;" ng-src="{{ field.value }}"></img><span ng-show="disabled() && !field.value">No image</span><span ng-show="!disabled()"><a ng-show="!field.value" style="margin: 5px;" class="btn btn-default" ng-click="clickChoose()">Choose</a><a ng-show="field.value" style="margin: 5px;" class="btn btn-default" ng-click="clickChoose()">Change</a><a ng-show="field.value" style="margin: 5px;" class="btn btn-default" ng-click="clickClear()">Remove</a></span></div></script><script id="sp_dialog.xml" type="text/ng-template"><span><div sn-dialog="true" disable-auto-focus="true" name="{{name}}" modal="true" role="dialog" aria-labelledby="dialog-title" context="parms" class="sp-message-dialog {{ dialogClass }}"><div class="sp-message-dialog-title" id="dialog-title"><div class="sp-message-dialog-title-inner">{{title}}</div></div><div class="sp-message-dialog-content "><div class="sp-message-dialog-content-block">{{message}}</div><div class="sp-message-dialog-content-block" ng-if="parms.details">{{parms.details}}</div><div class="sp-message-dialog-content-block" ng-if="question">{{question}}</div><div class="sp-message-dialog-content-block" ng-if="checkboxMessage"><div class="pull-left"><input type="checkbox" class="sp-message-dialog-content-input-field" ng-model="checkboxModel.value" ng-change="update()"></input></div><div class="pull-left">{{checkboxMessage}}</div></div></div><div class="sp-message-dialog-buttons"><button class="btn btn-cancel sp-message-dialog-cancel-button" title="{{cancel}}" ng-click="parms.cancel()" ng-if="cancel">{{cancel}}</button><button class="btn btn-primary sp-field-elem-margin" title="{{ok}}" ng-click="parms.ok()" ng-if="ok">{{ok}}</button></div></div></span></script><script id="sp_page_row" type="text/ng-template"><div ng-if="row.semantic_tag !== 'main'" ng-include="'sp_page_row_content.xml'" class="sp-row-content {{::row.class_name}} {{(!container.bootstrap_alt) ? 'row' : ''}}"></div><main ng-if="row.semantic_tag === 'main'" ng-include="'sp_page_row_content.xml'" class="sp-row-content {{::row.class_name}} {{(!container.bootstrap_alt) ? 'row' : ''}}" role="main"></main></script><script id="sp_form_field.xml" type="text/ng-template"><div class="form-group" ng-class="{'form-group-has-focus': hasValueOrFocus()}"><div ng-if="::c.showLabel(field)"><label class="field-label field-label-question" for="sp_formfield_{{::(field.type=='html' || field.type=='translated_html') ? (field.sys_id || field.name) : field.name }}"><span class="field-decorations"><span ng-if="field.mandatory" class="fa fa-asterisk mandatory sp-field-label-padding" ng-class="{'mandatory-filled': field.mandatory_filled()}" aria-label="{{field.mandatory_filled()? 'Required Filled ' : 'Required '}}" ng-attr-aria-hidden="{{getFieldAriaHidden(field)}}" role="img"></span><span ng-repeat="decoration in field.decorations" class="decoration {{decoration.icon}}" title="{{decoration.text}}"></span></span><span class="sp-field-label-padding" ng-attr-title="{{::accessible ? undefined : field.hint}}" data-placement="right" data-toggle="tooltip" ng-attr-aria-label="{{::accessible && field.hint ? field.label : getFieldAriaLabel(field)}}">{{field.label}}</span><sp-help-tag field="::field" ng-if="::(accessible && field.hint && !field.help_text && !field.instructions)"></sp-help-tag><sp-help-tag field="::field" ng-if="::(field.help_text || field.instructions)"></sp-help-tag></label></div><span class="type-{{::field.type}} field-actual question-width" ng-switch="::field.type" ng-class="{'state-mandatory': field.mandatory, 'state-readonly': field.read_only, 'state-hidden': field.hidden, 'has-error': field.isInvalid}"><span ng-switch-when="boolean"><label title="{{::field.hint}}" data-placement="right" data-toggle="tooltip"><input type="checkbox" name="{{::field.name}}" ng-model="fieldValue" ng-true-value="'true'" ng-false-value="'false'" ng-model-options="{getterSetter: true}" ng-disabled="field.isReadonly()" id="sp_formfield_{{::field.name}}" aria-required="{{field.isMandatory()}}" aria-labelledby="label_{{::field.sys_id}} tooltip_{{::field.sys_id}}"></input><span class="boolean-control" id="label_{{::field.sys_id}}"><span ng-if="field._parent && !formModel._fields[field._parent].render_label && formModel._fields[field._parent].mandatory && formModel._fields[field._parent].isVisible()" class="fa fa-asterisk mandatory sp-field-label-padding" ng-class="{'mandatory-filled': formModel._fields[field._parent].mandatory_filled()}" title="Required" aria-label="{{formModel._fields[field._parent].mandatory_filled()? 'Required Filled ' : 'Required '}}" ng-attr-aria-hidden="{{getFieldAriaHidden(field)}}" role="img"></span><span ng-if="!field._parent && !field.render_label && field.mandatory && field.isVisible()" class="fa fa-asterisk mandatory sp-field-label-padding" ng-class="{'mandatory-filled': field.mandatory_filled()}" title="Required" aria-label="field.mandatory_filled()? 'Required Filled ' : 'Required '}}" ng-attr-aria-hidden="{{getFieldAriaHidden(field)}}" role="img"></span>{{field.label}}<span ng-if="::enhancePriceLabels(field)" class="inline">{{getCheckBoxPrice(field)}}</span></span></label><span class="sr-only" id="tooltip_{{::field.sys_id}}">{{::field.hint}}</span></span><sp-assessment-details ng-if="::field.details" html-details="field.details" label="field.label" padding-required="true" field-id="field.sys_id" clamp-line="6" ng-class="{'text-center': formModel.is_kiosk_survey}"></sp-assessment-details><sp-choice-list ng-switch-when="choice" field="field" glide-form="getGlideForm()" default-value-setter="setDefaultValue(fieldName,fieldInternalValue,fieldDisplayValue)" sn-options="{placeholder: field.placeholder}"></sp-choice-list><span ng-switch-when="boolean_confirm"><span class="fa fa-asterisk mandatory sp-field-label-padding" ng-class="{'mandatory-filled': field.mandatory_filled()}" title="Required"></span><label title="{{::field.hint}}" data-placement="right" data-toggle="tooltip" for="sp_formfield_{{::field.name}}"><input type="checkbox" name="{{::field.name}}" ng-model="fieldValue" ng-true-value="'true'" ng-false-value="'false'" ng-model-options="{getterSetter: true}" ng-disabled="field.isReadonly()" id="sp_formfield_{{::field.name}}"></input><span class="boolean-control"><span class="sr-only" ng-show="!field.mandatory_filled()">Required -</span><span class="sr-only" ng-show="field.mandatory_filled()">Required Filled -</span>{{field.label}}</span></label><span class="sr-only">{{::field.hint}}</span><span ng-if="::field._pricing">{{getCheckBoxPrice(field)}}</span></span><sp-color-picker ng-switch-when="color" field="field" glide-form="getGlideForm()" sn-change="fieldValue(newValue)" sn-disabled="field.isReadonly()" ng-if="c.depsLoaded"></sp-color-picker><sp-css-editor ng-switch-when="css" class="form-control" field="field" id="sp_formfield_{{::field.name}}" data-length="4000" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()" ng-if="c.depsLoaded"></sp-css-editor><span ng-switch-when="currency2|document_id|domain_id|schedule_date_time|integer_date" class="padder" ng-switch-when-separator="|">{{field.displayValue}}</span><sp-duration-element ng-switch-when="glide_duration" field="field" ng-model="fieldValue" ng-model-options="{getterSetter: true}"></sp-duration-element><sp-url-element ng-switch-when="url" name="{{::field.name}}" field="field"></sp-url-element><sn-field-reference ng-switch-when="field_name" field="field" id="sp_formfield_{{::field.name}}" glide-form="getGlideForm()" sn-change="fieldValue(newValue)" sn-disabled="field.isReadonly()"></sn-field-reference><sn-field-list-element ng-switch-when="field_list" field="field" glide-form="getGlideForm()" sn-disabled="field.isReadonly()" sn-change="fieldValue(newValue, displayValue)"></sn-field-list-element><sp-date-picker sn-change="fieldValue(newValue, displayValue)" ng-switch-when="glide_date" field="field" sn-disabled="field.isReadonly()" ng-model="field.stagedValue" ng-model-options="{getterSetter: true}"></sp-date-picker><sp-date-picker sn-change="fieldValue(newValue, displayValue)" ng-switch-when="glide_date_time" field="field" sn-disabled="field.isReadonly()" ng-model="field.stagedValue" ng-model-options="{getterSetter: true}" sn-include-time="true"></sp-date-picker><sp-reference-element ng-switch-when="glide_list" field="field" sn-select-width="100%" ref-table="::formModel.table" ref-id="formModel.sys_id" glide-form="getGlideForm()" record-values="getEncodedRecordValues()" sn-options="{multiple: true, placeholder: field.placeholder}" sn-disabled="field.isReadonly()"></sp-reference-element><sp-glyph-picker ng-switch-when="glyphicon" field="field" sn-disabled="field.isReadonly()"></sp-glyph-picker><sp-html-editor ng-switch-when="xml" field="field" id="sp_formfield_{{::field.name}}" class="form-control" data-length="4000" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()" ng-if="c.depsLoaded"></sp-html-editor><sp-html-editor ng-switch-when="html_template" class="form-control" field="field" id="sp_formfield_{{::field.name}}" data-length="4000" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()" ng-if="c.depsLoaded"></sp-html-editor><sp-script-editor ng-switch-when="json" class="form-control" field="field" id="sp_formfield_{{::field.name}}" data-length="4000" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()" ng-if="c.depsLoaded"></sp-script-editor><sp-mask-element ng-switch-when="masked" field="field" placeholder="field.placeholder" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" glide-form="getGlideForm()"></sp-mask-element><sp-radio-option ng-switch-when="multiple_choice" glide-form="getGlideForm()" field="field" cat-item-sys-id="formModel.sys_id"></sp-radio-option><sp-radio-option ng-switch-when="numericscale" glide-form="getGlideForm()" field="field" cat-item-sys-id="formModel.sys_id"></sp-radio-option><sp-textarea ng-switch-when="multi_two_lines" field="field" name="{{::field.name}}" id="sp_formfield_{{::field.name}}" autocomplete="{{getAutocompleteValue()}}" class="form-control" ng-model="field.stagedValue" ng-change="stagedValueChange()" data-type="{{::field.type}}" ng-readonly="field.isReadonly()" aria-invalid="{{field.isInvalid || false}}" glide-form="getGlideForm()"></sp-textarea><sp-textarea ng-switch-when="multi_small" field="field" name="{{::field.name}}" id="sp_formfield_{{::field.name}}" autocomplete="{{getAutocompleteValue()}}" class="form-control multi-small" ng-model="field.stagedValue" ng-change="stagedValueChange()" data-type="{{::field.type}}" ng-readonly="field.isReadonly()" aria-invalid="{{field.isInvalid || false}}" glide-form="getGlideForm()"></sp-textarea><sp-currency-element ng-switch-when="price" field="field" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()"></sp-currency-element><sp-currency-element ng-switch-when="currency" field="field" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()"></sp-currency-element><input ng-switch-when="password" type="password" name="{{::field.name}}" id="sp_formfield_{{::field.name}}" autocomplete="off" class="form-control" ng-model="field.stagedValue" ng-change="stagedValueChange()" ng-disabled="field.isReadonly()"></input><input ng-switch-when="password2" type="password" name="{{::field.name}}" id="sp_formfield_{{::field.name}}" autocomplete="off" class="form-control" ng-model="field.stagedValue" ng-change="stagedValueChange()" ng-disabled="field.isReadonly()"></input><sp-code-mirror ng-switch-when="properties" class="form-control" mode="properties" field="field" id="sp_formfield_{{::field.name}}" data-length="4000" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()" ng-if="c.depsLoaded"></sp-code-mirror><sp-reference-field ng-switch-when="reference" id="sp_formfield_reference_{{::field.name}}" tabindex="-1" ng-class="{'field-has-reference': field.value != '', 'field-empty-reference': field.value == ''}"></sp-reference-field><sp-script-editor ng-switch-when="script_server" class="form-control" field="field" id="sp_formfield_{{::field.name}}" data-length="4000" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()" ng-if="c.depsLoaded"></sp-script-editor><sp-script-editor ng-switch-when="script" class="form-control" field="field" id="sp_formfield_{{::field.name}}" data-length="4000" sn-disabled="field.isReadonly()" sn-change="stagedValueChange()" sn-blur="fieldValue(field.stagedValue)" glide-form="getGlideForm()" ng-if="c.depsLoaded"></sp-script-editor><sn-table-reference ng-switch-when="table_name" field="field" sn-change="fieldValue(newValue)" sn-disabled="field.isReadonly()"></sn-table-reference><sp-textarea ng-switch-when="textarea" field="field" name="{{::field.name}}" id="sp_formfield_{{::field.name}}" class="form-control" ng-model="field.stagedValue" ng-change="stagedValueChange()" data-type="{{::field.type}}" ng-readonly="field.isReadonly()" autocomplete="{{getAutocompleteValue()}}" aria-invalid="{{field.isInvalid || false}}" glide-form="getGlideForm()"></sp-textarea><sp-tinymce-editor ng-switch-when="html" id="sp_formfield_{{::field.name}}" ng-attr-tabindex="{{field.isReadonly() ? undefined : '-1'}}" name="{{::field.name}}" text-id="sp_formfield_{{::field.sys_id || field.name}}" ng-model="field.stagedValue" ng-model-options="{getterSetter: true}" sn-blur="fieldValue(field.stagedValue)" field="field" glide-form="getGlideForm()" ng-change="stagedValueChange()" attachment-guid="c.getAttachmentGuid()"></sp-tinymce-editor><sp-tinymce-editor ng-switch-when="translated_html" id="sp_formfield_{{::field.name}}" ng-attr-tabindex="{{field.isReadonly() ? undefined : '-1'}}" name="{{::field.name}}" text-id="sp_formfield_{{::field.sys_id || field.name}}" ng-model="field.stagedValue" sn-blur="fieldValue(field.stagedValue)" ng-model-options="{getterSetter: true}" field="field" glide-form="getGlideForm()" ng-change="stagedValueChange()" attachment-guid="c.getAttachmentGuid()"></sp-tinymce-editor><span ng-switch-when="user_image"><img ng-if="field.displayValue" ng-src="{{field.displayValue}}" style="max-height: 128px; max-width: 128px;"></img><sn-image-uploader ng-if="!field.isReadonly()" table-name="{{formModel.table}}" sys-id="{{formModel._attachmentGUID || formModel.sys_id}}" field-name="{{::field.name}}" field-label="{{::field.label}}" read-only="field.isReadonly()" on-upload="onImageUpload(thumbnail, sys_id)" on-delete="onImageDelete()" upload-message="{{field.isMandatory() && !field.mandatory_filled() ? 'Required -' : ''}} Upload an image" src="field.displayValue"></sn-image-uploader></span><sp-widget ng-switch-when="widget" widget="field.widget" page="{g_form: getGlideForm(), field: field, fieldValue: fieldValue}"></sp-widget><sp-widget ng-switch-when="widget_value" widget="field.widget" page="{g_form: getGlideForm(), field: field, fieldValue: fieldValue}"></sp-widget><span ng-switch-when="integer"><input name="{{::field.name}}" id="sp_formfield_{{::field.name}}" class="form-control" ng-readonly="field.isReadonly()" ng-model="field.stagedValue" ng-change="stagedValueChange()" ng-blur="formatNumber()" autocomplete="{{getAutocompleteValue()}}" ng-attr-placeholder="{{field.placeholder}}"></input></span><span ng-switch-when="decimal|float" ng-switch-when-separator="|"><input name="{{::field.name}}" id="sp_formfield_{{::field.name}}" class="form-control" ng-readonly="field.isReadonly()" ng-model="field.stagedValue" ng-change="stagedValueChange()" ng-blur="formatNumber()" autocomplete="{{getAutocompleteValue()}}"></input></span><sp-catalog-variable ng-if="field._cat_variable" ng-switch-when="sc_multi_row"></sp-catalog-variable><sp-email-element ng-switch-when="email" field="field" glide-form="getGlideForm()"></sp-email-element><sp-rich-text-label ng-switch-when="rich_text_label" field="field"></sp-rich-text-label><sp-variable-attachment ng-switch-when="sc_attachment" field="field" attachment-guid="formModel._attachmentGUID || formModel.sys_id" g-form="getGlideForm()"></sp-variable-attachment><span ng-switch-default="true"><input sp-ignore-composition="" ng-if="::!field.max_length || 256 > field.max_length || field._force_single_line" name="{{::field.name}}" id="sp_formfield_{{::field.name}}" class="form-control" maxlength="{{::field.max_length}}" data-type="{{::field.type}}" ng-model="field.stagedValue" ng-model-options="{allowInvalid: true}" ng-change="stagedValueChange()" autocomplete="{{getAutocompleteValue()}}" ng-readonly="field.isReadonly()" ng-attr-placeholder="{{field.placeholder}}" type="text" aria-required="{{field.isMandatory()}}" aria-invalid="{{field.isInvalid || false}}" aria-label="{{field.label}}"></input><sp-textarea ng-if="::field.max_length >= 256 && !field._force_single_line" field="field" name="{{::field.name}}" id="sp_formfield_{{::field.name}}" class="form-control" data-type="{{::field.type}}" ng-model="field.stagedValue" ng-model-options="{allowInvalid: true}" ng-change="stagedValueChange()" autocomplete="{{getAutocompleteValue()}}" ng-readonly="field.isReadonly()" aria-invalid="{{field.isInvalid || false}}" glide-form="getGlideForm()"></sp-textarea></span></span><div ng-show="field.messages" id="sp_formfield_{{::field.name}}_fieldmsgs_container"><div ng-repeat="message in field.messages | unique: 'message'" class="wrapper-xs r m-t-xs" ng-class="{'bg-danger': message.type == 'error', 'bg-warning': message.type == 'warning', 'bg-info': message.type == 'info'}">{{message.message}}</div></div></div></script><script id="sp_reference_field.xml" type="text/ng-template"><span class="ref-picker-container"><div class="add-on" ng-if="field.value != ''"><button type="button" class="btn btn-default bg-white lookup" ng-click="openReference(field, formModel.view)" ng-disabled="field.isReadonly() && !field.readonlyClickthrough" data-original-title="{{field.label}}, Preview this record {{field.displayValue}}" data-toggle="tooltip" data-placement="top" aria-label="{{field.label}}, Preview this record {{field.displayValue}}"><span class="fa fa-info-circle"></span></button></div><div class="reference"><sp-reference-element field="field" sn-select-width="100%" ref-table="formModel.table" ref-id="formModel.sys_id" glide-form="getGlideForm()" sn-options="{placeholder: field.placeholder}" record-values="getEncodedRecordValues()" sn-disabled="field.isReadonly()" label-id="sp_reference_element_sr_{{::field.name}}"></sp-reference-element></div></span></script><script id="sp_model.xml" type="text/ng-template"><div><sp-variable-layout ng-if="!delayView" ng-attr-id="{{::formModel.table}}.do" embedded_in_modal="embeddedInModal"></sp-variable-layout><div ng-init="execItemScripts()"></div></div></script><script id="sp_editable_field.xml" type="text/ng-template"><span><small ng-if="block && fieldModel.displayValue" class="text-muted">{{fieldModel.label}}</small><span class="sp-editable-field" ng-style="blockDisplay" ng-class="{'editable-underline': editable}"><span ng-if="editable" ng-class="{'text-muted': !fieldModel.displayValue}" uib-popover-template="'sp_editable_popover.xml'" popover-placement="auto bottom" popover-is-open="shadowModel.popoverIsOpen" ng-click="toggleClick($event);" ng-keydown="toggleKeydown($event);" class="show-text bs-popover editable-text popover-trigger-{{::fieldID}}" aria-label="{{fieldModel.label}} - {{fieldModel.displayValue || '(Empty)'}} - Press enter to edit" aria-haspopup="dialog" aria-expanded="false" tabindex="0"><span ng-switch="fieldModel.type"><span ng-switch-when="user_image"><img ng-if="fieldModel.displayValue !=''" ng-src="{{fieldModel.displayValue}}"></img><span ng-if="fieldModel.displayValue ==''">Upload an image</span></span><span ng-switch-default="true"><span ng-if="!block" id="field-{{::fieldID}}">{{fieldModel.displayValue || "(Empty)"}}</span><span ng-if="block" id="field-{{::fieldID}}">{{fieldModel.displayValue || fieldModel.label}}</span></span></span></span><span ng-if="!editable" class="show-text" ng-switch="fieldModel.type"><span ng-switch-when="user_image"><img ng-if="fieldModel.displayValue !=''" ng-src="{{fieldModel.displayValue}}"></img><span ng-if="fieldModel.displayValue ==''">Upload an image</span></span><span ng-switch-default="true">{{fieldModel.displayValue}}</span></span></span></span></script><script id="sp_editable_field2.xml" type="text/ng-template"><form ng-submit="saveForm();"><sp-form-field form-model="fieldModel" field="fieldModel" glide-form="getGlideForm()"></sp-form-field></form></script><script id="sp_editable_popover.xml" type="text/ng-template"><div class="popover-content-body popover-{{::fieldID}}"><h3 class="popover-title" ng-bind="title" ng-show="title"></h3><div class="popover-content"><form id="editableSaveForm" ng-submit="saveForm();"><sp-form-field form-model="shadowModel" field="shadowModel" glide-form="getGlideForm()"></sp-form-field></form></div><div class="popover-footer pull-right"><button ng-click="closePopover()" type="button" class="m-b-xs m-r-xs btn btn-default">Cancel</button><button ng-click="saveForm()" type="button" class="m-b-xs m-r-xs btn btn-primary">Save</button></div></div></script><script id="sp_element_duration.xml" type="text/ng-template"><div class="form-inline"><now-message key="days" value="Days"></now-message><now-message key="hours" value="Hours"></now-message><now-message key="minutes" value="Minutes"></now-message><now-message key="seconds" value="Seconds"></now-message><fieldset class="form-group" id="sp_formfield_{{::field.name}}" tabindex="-1" role="group"><legend ng-attr-title="{{::$parent.accessible ? undefined : field.hint}}" ng-attr-aria-label="{{::$parent.accessible && field.hint ? undefined : getFieldAriaLabel(field)}}"><span class="field-decorations"><span ng-show="field.isMandatory()" class="fa fa-asterisk mandatory sp-field-label-padding" ng-class="{'mandatory-filled': field.mandatory_filled()}" aria-label="{{field.mandatory_filled()? 'Required Filled ' : 'Required '}}" role="img"></span><span ng-repeat="decoration in field.decorations" class="decoration {{decoration.icon}}" title="{{decoration.text}}"></span></span><span class="sp-field-label-padding" ng-attr-title="{{::$parent.accessible ? undefined : field.hint}}" data-placement="right" data-toggle="tooltip">{{field.label}}</span><sp-help-tag field="field"></sp-help-tag></legend><div ng-repeat="unit in visibleUnits" class="input-group input-group-sm col-xs-{{12 / visibleUnits.length}} duration"><label class="input-group-addon text-capitalize" for="dur-{{unit}}-{{::field.name}}" sn-bind-i18n="{{unit}}"></label><input type="text" class="form-control" id="dur-{{unit}}-{{::field.name}}" ng-model="parts[unit]" ng-disabled="field.isReadonly()" ng-change="updateDuration()" title="{{durationUnits[unit]}}" data-toggle="tooltip" data-placement="bottom"></input></div></fieldset></div></script><script id="sp_element_currency.xml" type="text/ng-template"><div class="input-group"><span class="input-group-addon input-group-select"><span style="position: relative; display: inline-block;"><select class="form-control currency-element" ng-model="field.currencyCode" ng-options="c.code as c.symbol for c in field.currencyCodes" ng-disabled="field.isReadonly() || field.currencyCodes.length == 1" ng-change="formatValue(true)" aria-label="Currency"></select><i ng-if="field.currencyCodes.length > 1" aria-hidden="true" class="select-indicator fa fa-chevron-down"></i></span></span><input name="{{::field.name}}" id="sp_formfield_{{::field.name}}" class="form-control decimal" maxlength="14" data-type="{{::field.type}}" ng-model="field.currencyValue" ng-model-options="{allowInvalid: true}" ng-change="formatValue()" autocomplete="off" ng-readonly="field.isReadonly()"></input></div></script><script id="sp_element_email.xml" type="text/ng-template"><span class="ng-form-element"><span class="input-group" role="presentation"><input name="{{::field.name}}" id="sp_formfield_{{::field.name}}" aria-label="{{::field.label}}" autocomplete="{{getAutocompleteValue()}}" class="form-control" ng-model="field.stagedValue" ng-model-options="{allowInvalid: true}" type="email" ng-change="stagedValueChange()" ng-disabled="field.isReadonly()" placeholder="{{field.placeholder}}" maxlength="{{::field.max_length}}" data-type="email" aria-required="{{field.isMandatory()}}" aria-invalid="{{field.isInvalid || false}}"></input><span class="input-group-btn"><a ng-if="field.stagedValue && !field.isReadonly()" href="mailto: {{field.stagedValue}}" class="btn-ref btn btn-default" data-toggle="tooltip" data-placement="top" title="Send an email to this address" aria-label="Send an email to this address"><i class="fa fa-envelope-o" aria-hidden="true"></i></a><a ng-if="!field.stagedValue || field.isReadonly()" href="#" class="btn-ref btn btn-default disabled" tabindex="-1" title="Send an email to this address" aria-label="Send an email to this address" aria-disabled="true"><i class="fa fa-envelope-o" aria-hidden="true"></i></a></span></span></span></script><script id="sp_element_mask.xml" type="text/ng-template"><span class="ng-form-element" ng-class="{'has-error' : field.isInvalid}"><span ng-if="field.catalog_view_masked"><input name="{{::field.name}}" id="sp_formfield_{{::field.name}}" ng-attr-type="{{inputType}}" autocomplete="off" class="form-control masked-element" ng-model="field.stagedValue" ng-model-options="{getterSetter: true}" ng-blur="handleValueChanged()" ng-disabled="disabled" aria-required="{{field.mandatory}}" aria-invalid="{{field.isInvalid || false}}" placeholder="{{placeholder}}" maxlength="{{::field.max_length}}" aria-label="{{field.label}}"></input><button ng-if="field.stagedValue.length" ng-click="c.togglePassword()" class="btn sp-show-hide-masked-button btn-link" title="show/hide this value">{{toggleShowHide}}</button></span><span ng-if="!field.catalog_view_masked"><input name="{{::field.name}}" id="sp_formfield_{{::field.name}}" ng-attr-type="{{inputType}}" autocomplete="off" class="form-control" ng-model="field.stagedValue" ng-model-options="{getterSetter: true}" ng-blur="c.validate()" ng-disabled="disabled" ng-keydown="c.cleanData()" aria-required="{{field.mandatory}}" aria-invalid="{{field.isInvalid || false}}" placeholder="{{placeholder}}" maxlength="{{::field.max_length}}" aria-label="{{field.label}}"></input></span><span ng-if="field.useConfirmation"><label class="field-label" for="sp_formfield_confirm.{{::field.name}}">{{reEnter}}</label><input name="sp_formfield_confirm.{{::field.name}}" id="sp_formfield_confirm.{{::field.name}}" type="password" autocomplete="off" class="form-control" ng-disabled="disabled" ng-blur="c.validate()" ng-keydown="c.cleanData()" ng-model="field.confirmPassword" ng-model-options="{getterSetter: true}" aria-invalid="{{field.isInvalid || false}}" placeholder="{{placeholder}}" maxlength="{{::field.max_length}}" aria-label="{{::reEnter}}" aria-describedby="confirmation-error.{{::field.name}}"></input><span id="confirmation-error.{{::field.name}}" ng-if="field.isInvalid" class="sp-date-format-info" style="display:table-row;" role="alert">{{misMatch}}</span></span></span></script><script id="sp_catalog_variable.xml" type="text/ng-template"><div><sp-sc-multi-row-element ng-if="field.type == spSCConf.MULTI_ROW_TYPE" field="field" glide-form="getGlideForm()" native="::formModel.native_mobile" parent-fields="::formModel._fields"></sp-sc-multi-row-element></div></script><script id="sp_element_sc_multi_row.xml" type="text/ng-template"><div class="wrapper-md r-2x" ng-if="field.columns_meta.length > 0" ng-class="{'b': !c.isMEE}"><sp-widget widget="c.activeRow" ng-if="c.activeRow"></sp-widget><div ng-if="!field.readonly && !field.sys_readonly" ng-class="{'m-l m-b ': c.isMEE, 'form-group': !c.isMEE}" style="min-height:0px;"><button type="button" title="{{::field.max_row_tooltip_msg}}" class="btn btn-primary m-r" ng-click="c.createRow()" ng-disabled="!c.canInsert()" id="{{::field.sys_id}}_add_row" aria-label="{{c.addButtonAriaLabel}}">Add</button><button type="button" class="btn btn-default" ng-click="c.clearValue()" ng-disabled="!c.canClearValue()" aria-label="{{c.removeAllButtonAriaLabel}}">Remove All</button></div><div style="overflow-x: auto;"><table class="table table-bordered table-striped" ng-class="{'m-b': c.isMEE, 'm-b-xs': !c.isMEE}" aria-describedby="id-caption-mrvs"><caption id="id-caption-mrvs-{{::field.sys_id}}" class="sr-only">{{::field.label}}</caption><thead><tr><th id="id-actions-{{::field.sys_id}}" scope="col" ng-if="!field.readonly && !field.sys_readonly" class="text-nowrap">Actions</th><th id="id-question-{{::col.id}}" scope="col" ng-repeat="col in ::field.columns_meta track by col.id" class="text-nowrap">{{::col.label}}</th></tr></thead><tbody><tr ng-if="field._value.length == 0 "><td ng-if="!field._loadingData" class="text-center" colspan="{{::field.columns_meta.length + 1}}">No data to display</td></tr><tr ng-if="field._loadingData"><td class="text-center" ng-if="field._value.length == 0" colspan="{{::field.columns_meta.length + 1}}"><i class="fa fa-spinner fa-pulse fa-3x fa-fw" aria-hidden="true" title="Updating value"></i><span class="sr-only">Updating value</span></td></tr><tr ng-repeat="row_display_value in field._displayValue track by $index" ng-animate="{enter: 'animate-enter', leave: 'animate-leave'}" style="word-break: keep-all;"><td headers="id-actions" ng-if="!field.readonly && !field.sys_readonly" ng-class="{ 'actions-mobile': {{ c.isMEE }} }"><a href="javascript:void(0);" class="wrapper-xs fa fa-pencil" role="button" data-original-title="Edit Row" aria-label="Edit Row {{$index + 1}}" data-toggle="tooltip" data-placement="top" ng-click="c.updateRow($index)" ng-class="{'btn disabled no-border' : c.disableMRVSActions}"></a><a href="javascript:void(0);" class="wrapper-xs fa fa-close" role="button" data-original-title="Remove Row" aria-label="Remove Row {{$index + 1}}" data-toggle="tooltip" data-placement="top" ng-click="c.deleteRow($index)" ng-class="{'btn disabled no-border' : c.disableMRVSActions}" id="remove-row-{{$index}}"></a></td><td headers="id-question-{{::col.id}}" ng-repeat="col in ::field.columns_meta track by col.id" style="text-overflow: ellipsis;">{{c.getCellDisplayValue(row_display_value[col.name], col.type)}}</td></tr></tbody></table></div></div></script><script id="sp_element_sc_request_for.xml" type="text/ng-template"><div class="form-group"><label class="field-label field-label-question" for="sp_formfield_requested_for_{{::field.name}}" title="{{::field.hint}}" aria-label="{{field.hint + ' '+ getReferenceLabelContents(field)}} " tooltip-right="true"><span class="field-decorations"><span ng-show="field.mandatory" class="fa fa-asterisk mandatory sp-field-label-padding" ng-class="{'mandatory-filled': field.mandatory_filled()}" title="Required" aria-label="{{field.mandatory_filled()? 'Required Filled' : 'Required'}}" role="img"></span><span ng-repeat="decoration in field.decorations" class="decoration {{decoration.icon}}" title="{{decoration.text}}"></span></span>{{field.label}}<sp-help-tag field="::field"></sp-help-tag></label><span class="type-{{::field.type}} field-actual" ng-class="{'state-mandatory': field.mandatory, 'state-readonly': field.read_only, 'state-hidden': field.hidden, 'has-error': field.isInvalid}"><div ng-class="{'input-group input-group-': alsoRequestForEnabled()}"><sp-reference-field id="sp_formfield_reference_{{::field.name}}" tabindex="-1" ng-class="{'field-has-reference': field.value != '', 'field-empty-reference': field.value == ''}"></sp-reference-field><div ng-if="alsoRequestForEnabled()" class="input-group-btn"><button type="button" class="btn btn-default bg-white lookup" id="also_request_for_button" ng-click="toggleUserSelect()" ng-disabled="disabled" aria-expanded="{{actions.isAlsoRequestForExpanded}}" data-original-title="Request for multiple users" data-toggle="tooltip" data-placement="top" aria-label="Request for multiple users"><span class="fa fa-users" ng-class="{'text-primary': showList}"></span><span class="sr-only">Request for multiple users</span></button></div></div></span><div ng-show="field.messages"><div ng-repeat="message in field.messages | unique: 'message'" class="wrapper-xs r m-t-xs" ng-class="{'bg-danger': message.type == 'error', 'bg-warning': message.type == 'warning', 'bg-info': message.type == 'info'}">{{message.message}}</div></div><div ng-if="alsoRequestForEnabled()" ng-show="showAlsoRequestFor" style="margin-top:15px"><label class="field-label" for="sp_formfield_sn_sc_also_request_for">{{::sn_sc_also_request_for.label}}</label><div ng-if="showLess" class="sp-field-elem-margin">{{sn_sc_also_request_for.display_value_list.join(", ")}}</div><span ng-show="showList"><sn-sc-also-request-for sn-select-width="100%" field="sn_sc_also_request_for" glide-form="getGlideForm()" sn-options="{placeholder: sn_sc_also_request_for.placeholder}" requested-for="field.value"></sn-sc-also-request-for></span><div ng-show="sn_sc_also_request_for.validationMessages"><div ng-repeat="message in sn_sc_also_request_for.validationMessages | unique: 'message'" class="wrapper-xs r m-t-xs" ng-class="{'bg-danger': message.type == 'error', 'bg-warning': message.type == 'warning', 'bg-info': message.type == 'info'}">{{message.message}}</div></div></div></div></script><script id="sp_element_radio_down.xml" type="text/ng-template"><fieldset id="sp_formfield_{{::field.name}}" aria-labelledby="sp_radio_down_label_{{::field.name}}" class="radio m-t-none"><legend class="ng-hide" id="sp_radio_down_label_{{::field.name}}"><span ng-show="field.isMandatory() && !field.mandatory_filled()">Required -</span><span ng-show="field.isMandatory() && field.mandatory_filled()">Required filled -</span>{{::field.label}}</legend><div role="radiogroup" class="radio-control"><div ng-repeat="c in field.choices" class="block"><label class="radio-element"><input aria-checked="{{ field.value === c.value }}" ng-value="c.value" ng-model="fieldValue" ng-model-options="{getterSetter: true}" ng-disabled="field.isReadonly()" ng-init="onButtonLoad()" name="radio_button_down_{{field.sys_id}}_{{catItemSysId}}" type="radio"></input><span>{{c.label}}<div ng-if="c.priceLabel && field.value != c.value" class="inline">{{c.priceLabel}}</div></span></label></div></div></fieldset></script><script id="sp_element_radio_across.xml" type="text/ng-template"><fieldset class="radio m-t-none" id="sp_formfield_{{::field.name}}" aria-labelledby="sp_radio_across_label_{{::field.name}}"><legend class="ng-hide" id="sp_radio_across_label_{{::field.name}}"><span ng-show="field.isMandatory() && !field.mandatory_filled()">Required -</span><span ng-show="field.isMandatory() && field.mandatory_filled()">Required filled -</span>{{::field.label}}</legend><div role="radiogroup" class="radio-control"><label ng-repeat="c in field.choices" class="radio-element"><input aria-checked="{{ field.value == c.value ? true : false}}" ng-value="c.value" ng-model="fieldValue" ng-model-options="{getterSetter: true}" ng-disabled="field.isReadonly()" role="radio" type="radio" name="radio_button_across_{{field.sys_id}}_{{catItemSysId}}" ng-init="onButtonLoad()"></input><span>{{c.label}}<div ng-if="c.priceLabel && field.value != c.value" class="inline">{{c.priceLabel}}</div></span></label></div></fieldset></script><script id="angular.do?sysparm_type=get_partial&name=directive.snImageUploader" type="text/ng-template"><div class="sn-component sn-component-image-upload"><input ng-show="false" type="file" ng-file-select="onFileSelect($files)"></input><div ng-file-drop="onFileSelect($files)" ng-file-drag-over-class="sn-dragover" title="{{getTitle()}}" style="margin-top: .5em;" aria-hidden="true"><div style="position:relative; display: inline-block;"><div ng-if="!uploading" ng-click="openFileSelector($event)" style="cursor: pointer; margin-bottom: .25em; margin-right: 0.25em; display: inline-block;"><button class="btn btn-primary" aria-label="{{uploadMessage}} - {{fieldLabel}}"><sn-glyph char="upload"></sn-glyph><small>{{uploadMessage}}</small></button></div><span class="upload-container" ng-click="activateUpload($event)" ng-if="!uploading" ng-transclude="" role="presentation" tabindex="-1"></span></div><div ng-if="uploading" style="position:relative; display: inline-block;"><button class="btn btn-default" aria-label="Uploading - {{fieldLabel}}"><sn-glyph char="refresh"></sn-glyph><small>Uploading</small></button></div><div ng-if="src" ng-click="deleteAttachment()" style="cursor: pointer; display: inline-block;" title="Immediately delete this image"><button class="btn btn-default" aria-label="Delete - {{fieldLabel}}"><sn-glyph char="remove"></sn-glyph><small>Delete</small></button></div></div></div></script><script id="angular.do?sysparm_type=get_partial&name=sp_attachment" type="text/ng-template"><div class="sp-attachment-block file-attachment" id="{{attachment.sys_id}}"><a ng-if="attachment.viewImage && attachment.thumbSrc && attachment.state === 'available'" class="view-attachment thumbnail" style="border: none;" ng-click="attachmentHandler.viewAttachment($event, attachment)" href="javascript:void(0)" aria-label="View attachment {{::attachment.file_name}}"><img alt="{{::attachment.file_name}}" class="attachment-thumbnail" ng-src="{{attachment.thumbSrc}}"></img></a><img ng-if="((!attachment.viewImage || attachment.state !== 'available' ) && attachment.thumbSrc )" style="border: none; margin-left: auto; margin-right: auto;" alt="{{::attachment.file_name}}" class="img-responsive" ng-src="{{attachment.thumbSrc}}"></img><div class="file-name"><a ng-if="attachment.state === 'available'" class="get-attachment" ng-click="attachmentHandler.downloadAttachment(attachment)" ng-attr-title="Download {{attachment.file_name}}" href="javascript:void(0)">{{::attachment.file_name}} ({{::attachment.size}})</a><a ng-if="attachment.state === '' || attachment.state === 'pending' || attachment.state === 'available_conditionally'" class="get-attachment" ng-click="attachmentHandler.scanAttachment(attachment)" ng-attr-title="Download {{attachment.file_name}}" href="javascript:void(0)">{{::attachment.file_name}} ({{::attachment.size}})</a><span ng-if="attachment.state === 'not_available'" class="get-attachment not_available" ng-attr-title="Download {{attachment.file_name}}">{{::attachment.file_name}}<span class="error">(File failed security scan)</span></span><input tabindex="-1" ng-keydown="attachmentHandler.onKeyDown($event, attachment)" ng-blur="attachmentHandler.updateAttachment($event, attachment)" aria-label="File name" class="form-control" style="display: none;"></input></div><div class="tools align-right"><div class="btn-group" role="group" ng-if="attachment.canWrite || attachment.canDelete"><button ng-if="attachment.canWrite" type="button" class="btn btn-default btn-clear" ng-click="attachmentHandler.editAttachment($event, attachment)" aria-label="Edit file name {{::attachment.file_name}}" title="Edit file name {{::attachment.file_name}}" data-toggle="tooltip" data-placement="bottom" data-container="body"><i class="fa fa-pencil" aria-hidden="true"></i></button><button ng-if="attachment.canDelete" type="button" class="btn btn-default btn-clear" ng-click="confirmDeleteAttachment(attachment, $event)" aria-label="Delete {{::attachment.file_name}}" title="Delete {{::attachment.file_name}}" data-toggle="tooltip" data-placement="bottom" data-container="body"><i class="fa fa-times" aria-hidden="true"></i></button></div><div style="text-align: center;"><time><sn-time-ago timestamp="::attachment.sys_created_on"></sn-time-ago></time></div></div></div></script><script id="sp_variable_layout.xml" type="text/ng-template"><div ng-repeat="container in containers" class="sp-form-container" ng-show="paintForm(container)" ng-attr-role="{{(container.caption || container.captionDisplay) ? 'group' : undefined}}" ng-attr-aria-labelledby="{{(container.caption || container.captionDisplay) ? 'container_' + container.id : undefined}}"><span ng-if="(container.caption || container.captionDisplay)" class="container-caption form-container-caption" style="width:100%"><span class="h4" role="heading" aria-level="{{embeddedInModal ? '2' : '3'}}" id="container_{{::container.id}}">{{container.captionDisplay || container.caption}}</span><sp-help-tag field="::formModel._fields[container.name]"></sp-help-tag></span><div class="row"><div ng-repeat="column in container.columns" class="col-md-{{::12 / container.columns.length }}"><div ng-switch="::f.type" ng-repeat="f in ::column.fields" id="{{::getVarID(f)}}" ng-class="::{'form-inline': isInlineForm === true }"><div ng-switch-when="label" ng-if="formModel._fields[f.name]" ng-show="formModel._fields[f.name].isVisible()"><label ng-bind="f.label"></label><sp-help-tag field="::formModel._fields[f.name]"></sp-help-tag><hr class="sp_label_hr"></hr></div><sp-form-field ng-switch-when="field" ng-if="formModel._fields[f.name] && formModel._fields[f.name]._class_name != 'RequestedForQuestion'" form-model="formModel" field="formModel._fields[f.name]" glide-form="getGlideForm()" ng-show="formModel._fields[f.name].isVisible()" default-value-setter="setDefaultValue(fieldName,fieldInternalValue,fieldDisplayValue)"></sp-form-field><sp-variable-layout ng-switch-when="container" ng-init="containers=[f]"></sp-variable-layout><sp-checkbox-group ng-switch-when="checkbox_container" name="f.name" form-model="formModel" containers="f.containers" glide-form="getGlideForm()" class="checkbox-container"></sp-checkbox-group><sp-widget ng-switch-when="formatter" ng-if="formModel._formatters[f.id].widgetInstance" widget="formModel._formatters[f.id].widgetInstance" page="{g_form: getGlideForm()}"></sp-widget><hr ng-switch-when="break" ng-show="formModel._fields[f.name].isVisible()"></hr><sp-sc-request-for ng-switch-when="field" ng-if="formModel._fields[f.name] && formModel._fields[f.name]._class_name == 'RequestedForQuestion'" form-model="formModel" field="formModel._fields[f.name]" glide-form="getGlideForm()" ng-show="formModel._fields[f.name].isVisible()" id="sp_formfield_requested_for_{{::field.name}}" tabindex="-1"></sp-sc-request-for></div></div></div></div></script><script id="sp_multirow_vs_summarizer.html" type="text/ng-template"><div class="table-responsive" style="max-height:400px;max-width:600px"><table class="table table-striped"><thead><tr><th ng-repeat="col in variable.table_variable[0]" class="text-nowrap">{{::col.label}}</th></tr></thead><tbody><tr ng-repeat="row in variable.table_variable" style="word-break: keep-all;"><td ng-repeat="col in row">{{::col.display_value}}</td></tr></tbody></table></div></script><script id="sp_announcements.xml" type="text/ng-template"><div class="announcement-wrapper" ng-if="c.totalAnnouncements !== 0"><div ng-repeat="a in c.announcements" ng-style="::c.getStyle(a)" ng-class="{'announcement-center-block': c.getStyle(a).textAlign === 'center'}"><div class="announcement-container" ng-class="{'linktype-none': a.linkType === 'none'}"><div aria-live="assertive" ng-init="c.linkSetup(a)" class="text-container" ng-click="::c.toggleShowAll($event)" tabindex="0" aria-expanded="{{(c.totalAnnouncements > 1 || (c.totalAnnouncements == 1 && a.summary)) && c.showAll ? 'true' : 'false'}}" ng-disabled="c.totalAnnouncements == 1 && !a.summary"><div class="icon-title" ng-style="::{justifyContent: c.getJustifyContentValue(a)}"><div class="icon"><span class="glyphicon fa title-dismiss-icons" ng-class="::('fa-' + a.glyph)" aria-hidden="true" alt="{{::a.glyphAltText}}" data-toggle="tooltip" data-placement="bottom" title="{{::a.glyphAltText}}" data-container="body"></span></div><div class="title-announcement" ng-class="{'no-glyph-title': a.glyph === 'empty', 'announcement-left': c.getStyle(a).textAlign !== 'center'}">{{::a.title}}</div></div><p class="content" ng-class="{expanded: c.showAll && a.summary}" ng-bind="::a.summary"></p></div><span ng-if="a.linkType != 'none'" class="actions-container"><a class="info-link" target="{{a.linkTarget}}" ng-href="{{::a.targetLink}}" ng-style="::{color: c.getStyle(a).color}" title="{{::a.targetLinkText || c.i18n.defaultLinkDetailText}}" data-toggle="tooltip" data-placement="auto" data-container="body">{{::a.targetLinkText || c.i18n.defaultLinkText}}</a></span><button ng-if="::a.dismissOption !== 'NOT_DISMISSIBLE'" ng-click="::c.dismiss(a.id, $index, $event)" aria-label="{{::c.i18n.dismiss_announcement}} {{::a.title}}" class="close fa fa-times fa-lg title-dismiss-icons" ng-style="::{color: c.getStyle(a).color}" title="{{::c.i18n.dismiss_announcement}} {{::a.title}}" data-toggle="tooltip" data-placement="bottom" data-container="body"></button></div><button ng-if="($first || $last) && (c.totalAnnouncements > 1 || (c.totalAnnouncements == 1 && a.summary))" ng-click="::c.toggleShowAll($event)" class="sp-announcement-list-actions" ng-style="::{'filter': 'brightness(90%)', backgroundColor: c.getStyle(a).backgroundColor}" ng-class="{'smaller-resolution': c.totalAnnouncements === 1 && a.summary}" aria-label="{{c.showMore}} {{c.totalAnnouncements === 1 ? c.i18n.announcement : c.i18n.announcements}}" aria-expanded="{{c.showAll}}"><span class="more-button">{{c.showMore}}</span><span class="fa fa-md arrow-icon" ng-class="{'fa-angle-down': !c.showAll, 'fa-angle-up': c.showAll }" aria-hidden="true"></span></button></div></div></script><script id="sp_carousel.xml" type="text/ng-template"><div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()"><div class="carousel-inner" ng-transclude=""></div><a role="button" href="javascript:void(0)" class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1" aria-label="{{getPreviousButtonAriaLabel()}}"><span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span><span class="sr-only">previous</span></a><a role="button" href="javascript:void(0)" class="right carousel-control" ng-click="next()" ng-show="slides.length > 1" aria-label="{{getNextButtonAriaLabel()}}"><span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span><span class="sr-only">next</span></a><ol class="carousel-indicators " ng-show="slides.length > 1"><li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)"><span class="sr-only ">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide) ">, currently active</span></span></li></ol></div></script><script id="sp_search_nav.xml" type="text/ng-template"><div><h2 class="sr-only">{{::c.i18n.search_categories}}</h2><sp-list-menu menu="c.searchSources" onclick-fn="c.onSearchSourceClick(menu, input)" list-view="listView" show-toggle="showToggle"></sp-list-menu></div></script><script id="sp_facet_list.xml" type="text/ng-template"><div><div ng-if="::c.show" class="sp-facet-list"><div class="panel panel-default"><div class="panel-heading"><div><span class="panel-title" aria-label="{{::listTitle}} {{::c.i18n.collapse}}"><div ng-if="!toggleSearchsource" style="background-color:inherit"><span class="label-title">{{::listTitle}}</span></div><button aria-label="{{c.collapse? c.i18n.expand : c.i18n.collapse}} {{::listTitle}}" class="toggle-icon btn" ng-if="toggleSearchsource" style="background-color:inherit" ng-click="c.toggleIcon(listTitle)"><span class="label-title">{{::listTitle}}</span><i class="fa" ng-class="{'fa-caret-right flip-icon-rtl':c.collapsed,'fa-caret-down':!c.collapsed}" aria-hidden="true"></i></button></span></div><div><span><button aria-label="{{::c.i18n.clearAllFacets}}" ng-click="c.clearAll()" ng-disabled="!c.showClearAll" class="btn btn-link clear-all pull-right" ng-class="{'disabled': !c.showClearAll}">{{::c.i18n.clearAll}}</button></span></div></div></div><div class="collapse" ng-class="{'in': !c.collapsed}"><div ng-repeat="facet in facets" class="inner-facet-list"><sp-list-menu list-view="true" collapsed="c.isCollapsed(facet.id)" menu="facet" onclick-fn="c.onSelectFacet(menu, input)" onclear-fn="c.clearFacet(menu)" ontoggle-fn="c.onFacetToggle(menuId, collapsed)" show-clear="c.showClear(facet)" show-toggle="true"></sp-list-menu></div></div></div></div></script><script id="sp_list_menu.xml" type="text/ng-template"><div class="sp-list-menu"><div data-menu-id="{{::menu.id}}" class="panel panel-default" ng-class="::{'list-view':listView, 'panel-heading-multiselect': c.isMultiSelect}" ng-if="::c.show()"><div class="panel-heading"><div><span class="panel-title" aria-label="{{::menu.label}}"><div ng-if="!c.showToggle" aria-label="{{::menu.label}}" style="background-color:inherit"><span class="label-title">{{::menu.label}}</span></div><button ng-if="c.showToggle" tabindex="0" aria-expanded="{{!c.collapsed}}" class="toggle-icon" ng-click="c.toggleIcon($event, menu.label)" aria-label="{{::menu.label}}" style="background-color:inherit"><span class="label-title">{{::menu.label}}</span><i class="fa" ng-class="{'fa-caret-right flip-icon-rtl':c.collapsed,'fa-caret-down':!c.collapsed}" ng-attr-title="{{::menu.label}}" data-toggle="tooltip" data-container="body" data-placement="right" aria-hidden="true"></i></button></span></div><div><span><button ng-if="c.showClearButton()" class="btn btn-link clear pull-right" ng-click="c.clear()" aria-label="{{::c.i18n.clear}} {{::menu.label}}">{{::c.i18n.clear}}</button></span></div></div><div class="panel-content collapse" ng-class="{'in': !c.collapsed}"><div ng-if="::c.isMultiSelect"><sp-list-menu-items menu="menu" type="MULTI_SELECT" onclick-fn="c.onItemClickFn(menu, item)"></sp-list-menu-items></div><div ng-if="::!c.isMultiSelect"><sp-list-menu-items menu="menu" onclick-fn="c.onItemClickFn(menu, item)"></sp-list-menu-items></div></div><button ng-if="c.isMultiSelect && !c.showClearButton()" ng-disabled="!c.showApplyButton()" ng-class="{'disabled': !c.showApplyButton()}" class="btn btn-link clear pull-right multiselect-apply" ng-click="c.submit()">{{::c.i18n.apply}}</button></div></div></script><script id="sp_list_menu_item.xml" type="text/ng-template"><div class="sp-list-menu-items" role="navigation" aria-label="{{c.i18n.search_by}}"><ul><li ng-repeat="item in c.items track by item.value" class="sp-list-menu-item"><button class="btn-link" ng-click="c.onClick(item)" aria-label="{{::menu.label}} {{::item.label}} {{item.selected ? c.i18n.selected : ''}}" ng-class="{'active':item.selected}" style="padding: 0" role="link">{{::item.label}}</button></li><li ng-repeat="item in c.nextItems track by item.value" class="sp-list-menu-item" ng-class="{'hidden': !c.showNextItems}"><button class="btn-link" aria-label="{{::menu.label}} {{::item.label}} {{item.selected ? c.i18n.selected : ''}}" ng-click="c.onClick(item)" ng-class="{'active':item.selected}" style="padding: 0" role="link">{{::item.label}}</button></li></ul><div ng-if="::c.nextItems" class="sp-list-menu-item"><button ng-if="c.showMoreButton()" type="button" class="btn btn-link" ng-click="c.onMoreButtonClick()">{{::c.i18n.see_more}}</button><button ng-if="c.showNextItems" type="button" class="btn btn-link" ng-click="c.onLessButtonClick()">{{::c.i18n.see_less}}</button></div></div></script><script id="sp_list_menu_checkbox.xml" type="text/ng-template"><div class="sp-list-menu-items"><ul aria-label="Filter results by category"><li ng-repeat="item in c.items track by item.value" class="sp-list-menu-item sp-facet-checkbox"><label><input type="checkbox" ng-checked="item.selected" ng-click="c.onClick(item)" aria-label="{{::item.label}}"></input><span ng-class="{'active': item.selected}">{{::item.label}}</span></label></li><li ng-repeat="item in c.nextItems track by item.value" class="sp-list-menu-item sp-facet-checkbox" ng-class="{'hidden': !c.showNextItems}"><label><input type="checkbox" ng-checked="item.selected" ng-click="c.onClick(item)"></input><span ng-class="{'active': item.selected}">{{::item.label}}</span></label></li></ul><div ng-if="::c.nextItems" class="sp-list-menu-item"><button ng-if="c.showMoreButton()" type="button" class="btn btn-link" ng-click="c.onMoreButtonClick()">{{::c.i18n.see_more}}</button><button ng-if="c.showNextItems" type="button" class="btn btn-link" ng-click="c.onLessButtonClick()">{{::c.i18n.see_less}}</button></div></div></script><script id="sp_checkbox_group.xml" type="text/ng-template"><div ng-repeat="container in containers"><fieldset ng-show="field.isVisible()" ng-class="{'state-mandatory': field.mandatory, 'has-error': field.isInvalid}"><legend class="field-label" ng-if="::field.render_label" id="sp_grp_checkbox_{{::field.name}}" ng-attr-aria-label="{{::$parent.accessible && field.hint ? undefined : getFieldAriaLabel(field)}}"><span class="field-decorations"><span ng-show="field.isMandatory()" class="fa fa-asterisk mandatory sp-field-label-padding" ng-class="{'mandatory-filled': field.mandatory_filled()}" aria-label="{{field.mandatory_filled()? 'Mandatory Filled ' : 'Mandatory '}}" role="img"></span><span ng-repeat="decoration in field.decorations" class="decoration {{decoration.icon}}" title="{{decoration.text}}"></span></span><span class="sp-field-label-padding" ng-attr-title="{{::$parent.accessible ? undefined : field.hint}}" data-placement="right" data-toggle="tooltip">{{field.label}}</span><span class="sr-only">{{::field.hint}}</span><sp-help-tag field="::field"></sp-help-tag></legend><div class="row" id="sp_formfield_{{::field.name}}"><div ng-repeat="column in container.columns" class="col-md-{{::12 / container.columns.length }}"><div ng-repeat="f in ::column.fields" id="{{::getVarID(f)}}" ng-class="::{'form-inline': isInlineForm === true , 'sp-sc-single-checkbox' : !field.render_label}"><sp-form-field ng-if="formModel._fields[f.name]" form-model="formModel" field="formModel._fields[f.name]" glide-form="getGlideForm()" ng-show="formModel._fields[f.name].isVisible()"></sp-form-field></div></div></div></fieldset></div></script><script id="sp_help_tag.xml" type="text/ng-template"><span ng-if="::(accessible && field.hint && !field.help_text && !field.instructions)" role="button" data-toggle="tooltip" data-placement="right" tabindex="0" class="fa fa-question-circle padder-xs help-tag-icon" title="{{getFieldAriaLabel(field)}}" aria-label="{{getFieldAriaLabel(field)}}"></span><span class="fa fa-question-circle padder-xs help-tag-icon" ng-click="toggleHelpText($event)" ng-if="::(field.help_text || field.instructions)" data-placement="right" data-toggle="tooltip" title="{{::field.help_tag}}" aria-label="{{::getHelpAriaLabel()}}" aria-expanded="{{field.expand_help}}" tabindex="0"></span><div class="help-tag"><div ng-if="field.expand_help" class="well wrapper-xs m-b-sm flex-row justify-between"><div class="help-tag-container"><span title="{{::field.help_text}}" ng-bind-html="::field.help_text" style="white-space: pre-line;"></span><p ng-if="::(!!field.instructions)" ng-bind-html="::trustedHTML(field.instructions)"></p></div><div><i class="fa fa-times pull-right help-tag-icon wrapper-xs padder-t-none" ng-click="hideHelp($event)" aria-label="Close {{field.help_tag}}" ng-if="field.expand_help" tabindex="0" data-placement="top" data-toggle="tooltip" title="Close"></i></div></div></div><now-message key="{h} for {f}" value="{h} for {f}"></now-message></script><script id="sp_agent_chat.xml" type="text/ng-template"><div class="sp-ac-root" ng-if="c.isVisible" ng-class="{'sp-ac-desktop': !c.isMobile}" aria-label="{{::c.i18n.agentChatWindow}}" aria-expanded="{{c.isOpen}}" role="region" tabindex="-1"><section class="sp-ac-conversation" ng-show="c.isOpen"><iframe class="sp-ac-frame" title="{{::c.i18n.agentChatWindow}}" scrolling="no" horizontalscrolling="no" verticalscrolling="no" style="border:none;" ng-src="{{c.frameUrl}}"></iframe></section><button class="sp-ac-btn" ng-class="{open: c.isOpen, closed: !c.isOpen}" ng-click="::c.toggle($event)" data-original-title="{{c.getBadgeAriaLabel()}}" data-toggle="tooltip" data-placement="top" aria-label="{{c.getBadgeAriaLabel()}}"><span class="sp-ac-unread-msg" ng-if="c.hasUnreadMessage">{{c.unreadMessages}}</span><span class="sp-ac-btn-icon"></span></button></div></script><script id="sp_element_url.xml" type="text/ng-template"><div style="display:flex;justify-content:space-between" data-unlock-empty-url="false" class="field-url"><span id="empty_url_{{::field.name}}" class="field-url-empty-label" ng-show="field.stagedValue == ''">(empty)</span><a id="sp_formfield_{{::field.name}}_link" class="web web-inline form-control-static field-url-link" target="_blank" name="sp_formfield_{{::field.name}}_link" href="{{field.stagedValue}}" ng-show="field.stagedValue != ''">{{field.stagedValue}}</a><input name="{{::field.name}}" aria-label="{{::field.label}}" id="sp_formfield_{{::field.name}}" autocomplete="url" class="form-control" ng-model="field.stagedValue" aria-required="{{field.isMandatory()}}" ng-model-options="{allowInvalid: true}" ng-change="stagedValueChange()" placeholder="{{::field.placeholder}}" ng-readonly="field.isReadonly() == true" maxlength="{{::field.max_length}}" data-type="{{::field.type}}" style="display:none"></input><button class="btn btn-default btn-ref" type="button" aria-label="Lock {{::field.label}}" id="sp_formfield_{{::field.name}}_lock" data-ref="sp_formfield_{{::field.name}}" title="Lock {{::field.label}}" ng-disabled="field.isReadonly()" style="display:none" data-toggle="tooltip" data-container="body" data-placement="top"><span class="fa fa-unlock flip-icon-rtl" aria-hidden="true"></span></button><button class="btn btn-default btn-ref" type="button" aria-label="Edit {{::field.label}}" id="sp_formfield_{{::field.name}}_unlock" data-ref="sp_formfield_{{::field.name}}" ng-disabled="field.isReadonly()" title="Edit {{::field.label}}" data-toggle="tooltip" data-container="body" data-placement="top"><span class="fa fa-lock" aria-hidden="true"></span></button></div></script><script id="sp_assessment_signature.xml" type="text/ng-template"><div><div class="row wrapper-xs"><div ng-class="{'col-xs-3': !variable.isNative}"><label class="wrapper-xs" for="sign-auth-username">{{variable.msgs.username}}</label></div><div ng-class="{'col-xs-9': !variable.isNative}"><input ng-model="variable.username" class="form-control" id="sign-auth-username" type="text" name="sign-auth-username" disabled="true"></input></div></div><div class="row wrapper-xs"><div ng-class="{'col-xs-3': !variable.isNative}"><label class="wrapper-xs" for="sign-auth-password">{{variable.msgs.password}}</label></div><div ng-class="{'col-xs-9': !variable.isNative}"><input class="form-control" id="sign-auth-password" type="password" ng-model="variable.password" name="sign-auth-password"></input></div></div></div></script><script id="sp_assessment_accordion.xml" type="text/ng-template"><div><div uib-accordion-transclude="heading" class="container-fluid no-padder accordion-header-heading sp-asmt-auto-focus"><span uib-accordion-header=""></span></div><div ng-transclude="" ng-if="isDisabled "></div><div class="'panel-collapse collapse" uib-collapse="!isOpen" ng-if="!isDisabled"><div ng-transclude=""></div></div></div></script><script id="sp_assessment_layout.xml" type="text/ng-template"><div ng-repeat="page in pages track by $index" ng-if="page.id == currentPage" class="m-b-lg"><div ng-if="!hasPagination" class="asmt-modal-layout asmt-padding-xl panel panel-default survey-intro-block"><div ng-if="(renderFields && page.isPageMandatory) || formModel.not_show_intro_note" style="overflow: hidden;" class="asmt-padding-b-xl asmt-category-border" ng-class="{'asmt-padding-b-lg' : formModel.trigger_id != ''}"><div ng-if="formModel.not_show_intro_note" class="survey-label font-bold pull-left" ng-class="formModel.trigger_id != '' ? 'asmt-margin-b-sm' : 'm-b-sm'">{{formModel.display}}</div><span ng-if="renderFields && page.isPageMandatory" class="pull-right"><span class="fa fa-asterisk mandatory" title="asterisk"><span class="sr-only">asterisk</span></span>Osoittaa pakollisen</span><div ng-if="formModel.not_show_intro_note && formModel.trigger_id" style="clear: both; padding-left: 1.2rem;">{{getTransaltedMessage('{0} for', formModel.evaluation_method_display)}}<span ng-if="::!c.isNative" style="margin: 0 2px;"><a href="?id=ticket&table={{formModel.trigger_table}}&sys_id={{formModel.trigger_id}}">{{formModel.trigger_display}}</a></span><span ng-if="::c.isNative" style="margin: 0 2px;">{{formModel.trigger_display}}</span><span ng-if="formModel.trigger_desc" style="font-size: 12px">[{{formModel.trigger_desc}}]</span></div></div><uib-accordion close-others="false"><uib-accordion-group ng-attr-style="{{formModel.is_kiosk_survey && 'margin-bottom: 0px !important; border:none;'}}" template-url="sp_assessment_accordion.xml" ng-repeat="category in page.categories track by $index" is-disabled="formModel.is_kiosk_survey" is-open="!category.collapsed" class="asmt-accordion-group asmt-category-border m-n category-container"><uib-accordion-heading uib-collapse="category.collapsed" ng-if="!formModel.is_kiosk_survey"><div role="button" ng-show="(formModel.evaluation_method == 'assessment' || formModel.evaluation_method == 'risk_assessment') && category.assessableRecord.assessable_record_name && (category.sourceId != page.categories[$index-1].sourceId)" class="font-bold break-word btn btn-group-justified wrapper-sm assessable-record-label asmt-category-border no-radius" tabindex="0" ng-class="{'disabled-view': formModel.readonly_form, 'btn-primary' : !formModel.readonly_form, 'survey-label' : formModel.evaluation_method == 'assessment' || formModel.evaluation_method == 'risk_assessment'}" aria-expanded="{{page.categoriesExpanded[category.sourceId]}}" ng-click="toggleAssessableRecordCategories(category.sourceId);"><div class="pull-left">{{category.assessableRecord.assessable_record_name}}</div><div class="pull-right"><span class="fa accordion-icon chevron-border" id="assessable_record_{{::category.sysId}}_{{::category.sourceId}}" ng-class="page.categoriesExpanded[category.sourceId] ? 'fa-chevron-up' : 'fa-chevron-down'" title="{{getTooltipTitle(category, true)}}" role="tooltip" data-placement="right" data-toggle="tooltip" data-original-title="{{getTooltipTitle(category, true)}}" tabindex="0" ng-click="updateTooltip(false, category.sysId, category.sourceId);"><div class="sr-only">{{getTooltipTitle(category, true)}}</div></span></div></div><div id="{{::category.sysId}}_{{::category.sourceId}}" role="tab" class="wrapper-sm category-heading category-heading-section cursor-pointer" tabindex="0" aria-expanded="{{!category.collapsed}}" ng-click="$parent.$parent.toggleOpen(); category.collapsed = !category.collapsed; categoryToggled(category.sourceId);"><span class="fa fa-asterisk mandatory" style="padding-right: .25em" ng-if="category.isMandatory" aria-required="category.isMandatory" aria-hidden="true"></span><span role="heading" class="font-bold break-word category-label" aria-level="2">{{category.name}}</span><span ng-if="(formModel.evaluation_method == 'assessment' || formModel.evaluation_method == 'risk_assessment') && category.assessableRecord.assessable_record_name" class="fa fa-info-circle padder-xs m-b-xs" role="tooltip" data-placement="right" data-toggle="tooltip" title="{{getTransaltedMessage('For {0}', category.assessableRecord.assessable_record_name)}}" data-original-title="{{getTransaltedMessage('For {0}', category.assessableRecord.assessable_record_name)}}" aria-label="{{getTransaltedMessage('For {0}', category.assessableRecord.assessable_record_name)}}" tabindex="0" ng-click="$event.stopPropagation();"><div class="sr-only">{{getTransaltedMessage('For {0}', category.assessableRecord.assessable_record_name)}}</div></span><div class="pull-right" style="margin-right: 3px;"><span class="fa accordion-icon" id="category_{{::category.sysId}}_{{::category.sourceId}}" ng-class="category.collapsed ? 'fa-chevron-down' : 'fa-chevron-up'" title="{{getTooltipTitle(category, false)}}" role="tooltip" data-placement="right" data-toggle="tooltip" data-original-title="{{getTooltipTitle(category, false)}}" tabindex="0" ng-click="updateTooltip(true, category.sysId, category.sourceId);"><div class="sr-only">{{getTooltipTitle(category, false)}}</div></span></div></div></uib-accordion-heading><div role="tab" ng-if="formModel.is_kiosk_survey"></div><sp-assessment-details class="asmt-cat-details" ng-if="::category.details && !formModel.is_kiosk_survey" html-details="category.details" label="category.name" padding-required="false" is-mobile="isMobile" field-id="category.sysId + category.sourceId" clamp-line="6" is-category="true"></sp-assessment-details><div class="sp-form-field-parent" ng-class="{'asmt-padding-t-xxl': !formModel.is_kiosk_survey}"><div ng-repeat="question in category.questions track by $index" ng-class="{'asmt-question-border asmt-margin-t-xxl': !formModel.is_kiosk_survey}" class="asmt-padding-t-xxl asmt-padding-l-r-md" ng-if="checkQuestionVisibility(isMobile, formModel, question)"><sp-assessment-form-field ng-if="renderFields" ng-class=" {'center-label-block': formModel.is_kiosk_survey && !isNative, 'text-center': formModel.is_kiosk_survey && formModel._fields[question].type != 'multiple_choice' && !isNative}" form-model="formModel" field="formModel._fields[question]" glide-form="getGlideForm()" ng-show="checkQuestionVisibility(isMobile, formModel, question)" is-mobile="isMobile" is-native="isNative"></sp-assessment-form-field><sp-assessment-add-info field="formModel._fields[question]" ng-if="formModel._fields[question].allow_add_info" is-mobile="isMobile" is-native="isNative"></sp-assessment-add-info></div></div></uib-accordion-group></uib-accordion><sp-assessment-nav-buttons ng-if="(!formModel.is_kiosk_survey || isMobile) && !isNative && !formModel.readonly_form"></sp-assessment-nav-buttons></div><div ng-if="hasPagination" ng-repeat="category in page.categories track by $index" class="asmt-modal-layout panel panel-default survey-intro-block" ng-class="{'asmt-padding-xl' : !isNative}"><sp-assessment-progress-bar ng-if="formModel.show_progress_bar && pages.length!=1"></sp-assessment-progress-bar><div ng-if="formModel.not_show_intro_note" class="survey-label font-bold padder-l-none padder-r-none" ng-class="formModel.trigger_id != '' ? 'asmt-margin-b-sm' : 'asmt-padding-b-l'">{{formModel.display}}</div><div ng-if="formModel.not_show_intro_note && formModel.trigger_id" style="padding-bottom: 24px;">{{getTransaltedMessage('{0} for', formModel.evaluation_method_display)}}<span ng-if="::!c.isNative" style="margin: 0 2px;"><a href="?id=ticket&table={{formModel.trigger_table}}&sys_id={{formModel.trigger_id}}">{{formModel.trigger_display}}</a></span><span ng-if="::c.isNative" style="margin: 0 2px;">{{formModel.trigger_display}}</span><span ng-if="formModel.trigger_desc" style="font-size: 12px">[{{formModel.trigger_desc}}]</span></div><div ng-if="!formModel.is_kiosk_survey || isMobile" class="category-container"><div role="heading" ng-if="(formModel.evaluation_method == 'assessment' || formModel.evaluation_method == 'risk_assessment') && category.assessableRecord.assessable_record_name" class="font-bold break-word category-label" ng-class="{'survey-label bg-primary wrapper-sm m-b': !isMobile && !isNative}" aria-level="2">{{category.assessableRecord.assessable_record_name}}</div><div style="overflow: hidden;" class="category-heading-section" ng-attr-style="{{(formModel.evaluation_method == 'assessment') && !isMobile && !isNative && 'padding: 0 10px;'}}"><div role="heading" style="margin-bottom:16px !important" ng-class="{'inline': !category.details || !page.showCategoryDetails, 'field-label': !isNative}" class="font-bold break-word" aria-level="2">{{category.name}}</div><sp-assessment-details style="display: inline-block;" ng-if="::category.details && page.showCategoryDetails" html-details="category.details" label="category.name" padding-required="false" is-mobile="isMobile" field-id="category.sysId" clamp-line="6" is-category="true"></sp-assessment-details><div ng-if="renderFields && category.isMandatory" class="pull-right" style="text-align: right;"><span ng-class="{'m-b-xs': isMobile}"><span class="fa fa-asterisk mandatory" title="asterisk" ng-attr-role="{{isNative ? 'text' : undefined}}"><span class="sr-only">asterisk</span></span>Osoittaa pakollisen</span></div></div></div><div class="sp-form-field-parent asmt-margin-t-xl panel-top-border"><div ng-repeat="question in category.questions track by $index" class="asmt-question-border asmt-margin-t-xxl asmt-padding-t-xxl asmt-padding-l-r-md" ng-if="checkQuestionVisibility(isMobile, formModel, question)"><sp-assessment-form-field ng-if="renderFields" ng-class=" {'text-center': formModel.is_kiosk_survey && !isNative}" form-model="formModel" field="formModel._fields[question]" glide-form="getGlideForm()" ng-show="checkQuestionVisibility(isMobile, formModel, question)" is-mobile="isMobile" is-native="isNative"></sp-assessment-form-field><sp-assessment-add-info field="formModel._fields[question]" ng-if="formModel._fields[question].allow_add_info" is-mobile="isMobile" is-native="isNative"></sp-assessment-add-info></div></div><div class="text-center padder-b" ng-if="isNative"><span aria-hidden="true">{{currentPage + 1}}/{{pages.length}}</span><span class="sr-only">Page {{currentPage + 1}} of {{pages.length}}</span></div><sp-assessment-nav-buttons ng-if="(!formModel.is_kiosk_survey || isMobile) && !isNative"></sp-assessment-nav-buttons></div></div></script><script id="sp_assessment_model.xml" type="text/ng-template"><div><sp-assessment-layout form-model="formModel"></sp-assessment-layout><div ng-init="execItemScripts()"></div></div></script><script id="sp_assessment_form_field.xml" type="text/ng-template"><div class="sp-asmt-auto-focus"><div ng-if="c.renderSPFormField(field)" ng-class="{'survey-question': !isMobile && !formModel.is_kiosk_survey}"><sp-form-field form-model="formModel" field="field" glide-form="getGlideForm()"></sp-form-field></div><div ng-if="!c.renderSPFormField(field)" class="form-group" ng-class="{'survey-question': !isMobile && !formModel.is_kiosk_survey}"><div class="wrap-label-text" ng-if="::c.showLabel(field)" ng-class="{'m-b-sm': isNative}"><label class="field-label label-override" for="sp_formfield_{{::field.name}}"><span class="field-decorations"><span ng-show="field.mandatory" style="padding-right: .25em" class="fa fa-asterisk mandatory" ng-class="{'mandatory-filled': field.mandatory_filled()}" title="Required" aria-label="{{field.mandatory_filled()? 'Required Filled ' : 'Required '}}" role="img"></span></span><span ng-attr-title="{{::accessible ? undefined : field.hint}}" data-placement="right" data-toggle="tooltip">{{field.label}}</span></label></div><sp-assessment-details ng-if="::field.details && (isMobile || field.type != 'template')" html-details="field.details" label="field.label" padding-required="true" field-id="field.sys_id" clamp-line="6"></sp-assessment-details><span class="type-{{::field.type}} field-actual" ng-switch="::field.type" ng-class="{'state-mandatory': field.mandatory, 'state-readonly': field.read_only, 'state-hidden': field.hidden, 'has-error': field.isInvalid}"><sp-assessment-checkbox-group ng-switch-when="multiplecheckbox" field="field" sn-change="fieldValueChanged(newValue)" id="sp_formfield_{{::field.name }}"></sp-assessment-checkbox-group><sp-assessment-attachment ng-switch-when="attachment" field="field" sn-change="fieldValueChanged(newValue)" id="sp_formfield_{{::field.name }}" allowed-file-size="formModel.sys_properties.allowedFileSize" allowed-file-extensions="formModel.sys_properties.allowedFileExtensions"></sp-assessment-attachment><sp-assessment-image-scale ng-switch-when="imagescale" field="field" sn-change="fieldValueChanged(newValue)" id="sp_formfield_{{::field.name }}" is-mobile="isMobile" is-kiosk-survey="formModel.is_kiosk_survey" is-native="isNative"></sp-assessment-image-scale><span ng-switch-when="template"><sp-assessment-template ng-if="field.template.firstQuestion && !isMobile" field="field" template-group="formModel.template_groups[field.template_group]" fields="templateGroupFields" glide-form="getGlideForm()" id="sp_formfield_{{::field.name }}"></sp-assessment-template><sp-assessment-image-scale ng-if="field.template.allow_image && isMobile" field="field" sn-change="fieldValueChanged(newValue)" id="sp_formfield_{{::field.name }}" is-mobile="isMobile" is-native="isNative"></sp-assessment-image-scale><sp-assessment-mobile-field ng-if="!field.template.allow_image && isMobile"></sp-assessment-mobile-field></span><sp-assessment-number class="question-width" ng-switch-when="number" field="field" sn-change="fieldValueChanged(newValue)" id="sp_formfield_{{::field.name }}" is-mobile="isMobile" is-native="isNative"></sp-assessment-number><sp-assessment-ranking ng-switch-when="ranking" field="field" sn-change="fieldValueChanged(newValue)" id="sp_formfield_{{::field.name }}" is-native="isNative"></sp-assessment-ranking><sp-assessment-mobile-field class="question-width" ng-switch-when="numericscale" id="sp_formfield_{{::field.name }}"></sp-assessment-mobile-field><sp-assessment-mobile-field class="question-width" ng-switch-when="multiple_choice" id="sp_formfield_{{::field.name }}"></sp-assessment-mobile-field><div ng-switch-when="signature" ng-class="{'type-boolean' : field.signType == 'checkbox'}"><label ng-style="field.signType == 'checkbox' && (!isNative && {'display':'inline-flex'}) || {'display':'inline'}" ng-class="{'no-padder' : isNative}" for="sp_formfield_{{::field.name}}"><input ng-if="field.signType == 'checkbox'" type="checkbox" ng-model="field.value" value="field.value" id="sp_formfield_{{::field.name }}" ng-change="stagedValueChange()" ng-disabled="{{field.isReadonly()}}" aria-required="{{field.mandatory}}"></input><span ng-class="{'boolean-control' : field.signType == 'checkbox'}"><span ng-show="field.signType == 'checkbox'" class="fa fa-asterisk mandatory m-r-xs" ng-class="{'mandatory-filled': field.value}" title="Required" role="img" aria-hidden="true"></span><span ng-if="field.htmlLabel" id="{{::field.sys_id}}_label" ng-bind-html="field.htmlLabel" style="display:inline-block; word-break: break-word"></span></span></label><div ng-if="field.signType == 'full_name'"><sp-form-field form-model="formModel" field="field" glide-form="getGlideForm()"></sp-form-field></div></div></span></div></div></script><script id="sp_assessment_nav_buttons.xml" type="text/ng-template"><div style="width:100%;" ng-class="{'container-fluid': !isMobile, 'asmt-sticky-buttons': formModel.actions_footer}" ng-attr-style="{{hasPagination && 'margin-top: 3.2rem;'}}"><div style="overflow: hidden;" class="row asmt-padding-t-xxxl panel-top-border" ng-if="!isMobile"><div class="m-b-xs col-sm-5"><button class="btn btn-default hidden-xs" ng-disabled="isSavingOrSubmitting()" ng-if="!formModel.hide_cancel" ng-show="currentPage == 0" ng-click="validatePageAndSave('cancel')">Cancel</button><button class="btn btn-default hidden-xs" ng-disabled="isSavingOrSubmitting()" ng-click="navigatePage('previous')" ng-show="currentPage != 0 && hasPagination">Previous</button></div><div class="m-t-sm col-sm-2 text-center hidden-xs"><span aria-hidden="true">{{currentPage + 1}}/{{pages.length}}</span><span class="sr-only">Page {{currentPage + 1}} of {{pages.length}}</span></div><div class="m-b-xs col-sm-5 flex-row justify-end"><button ng-disabled="isSavingOrSubmitting()" ng-if="!formModel.is_page_public && currentPage == pages.length-1 && !formModel.hide_save" class="btn btn-default hidden-xs asmt-margin-r-md" ng-click="validatePageAndSave('save')">{{ currentAction == 'save' ? controlMessages['Saving...'] : controlMessages['Save'] }}</button><button ng-disabled="isSavingOrSubmitting()" class="btn btn-primary hidden-xs" ng-click="validatePageAndSave('next')" ng-show="currentPage != pages.length - 1 && hasPagination">Next</button><button ng-disabled="isSavingOrSubmitting()" class="btn btn-primary hidden-xs" ng-click="validatePageAndSave('submit')" ng-show="currentPage == pages.length-1">{{ currentAction == 'submit' ? controlMessages['Submitting...'] : controlMessages['Submit'] }}</button></div></div><div class="visible-xs" style="overflow:hidden;" ng-class="{'asmt-border-top': hasPagination}"><div class="text-center" style="padding:24px 0px"><span aria-hidden="true">{{currentPage + 1}}/{{pages.length}}</span><span class="sr-only">Page {{currentPage + 1}} of {{pages.length}}}</span></div><button ng-disabled="isSavingOrSubmitting()" class="btn btn-default" style="float:left;width:48%" ng-click="navigatePage('previous')" ng-show="currentPage != 0 && hasPagination">Previous</button><button ng-disabled="isSavingOrSubmitting()" class="btn btn-primary" style="float:right;width:48%" ng-click="validatePageAndSave('next')" ng-show="currentPage != pages.length - 1 && hasPagination">Next</button><button ng-disabled="isSavingOrSubmitting()" class="btn btn-primary" style="float:right;width:48%" ng-click="validatePageAndSave('submit')" ng-show="currentPage == pages.length-1 && !formModel.readonly_form">{{ currentAction == 'submit' ? controlMessages['Submitting...'] : controlMessages['Submit'] }}</button></div></div></script><script id="sp_assessment_progressbar.xml" type="text/ng-template"><div class="m-b-lg" style="margin-top:12px"><uib-progressbar title="{{progress}}" class="assessment-progress inline m-b-none m-r" style="width:100%" value="progress"></uib-progressbar><div id="{{progress}}">{{progressText}}</div></div></script><script id="sp_assessment_mobile_field.xml" type="text/ng-template"><fieldset><legend class="sr-only"><span ng-if="field.isMandatory() && !field.mandatory_filled()">Required -</span><span ng-if="field.isMandatory() && field.mandatory_filled()">Required filled -</span><span>{{field.label}}</span></legend><div ng-repeat="c in field.choices track by $index" class="wrapper-xs" ng-class="{'m-l' : isNative}"><button class="btn btn-block" elem-id="sp-asmt-mobile-{{::c.sys_id}}" ng-click="fieldValueChanged(c.value)" aria-pressed="{{c.value == field.value}}" ng-class="{'btn-primary' : field.value == c.value, 'btn-default' : field.value != c.value, 'asmt-primary-btn-disabled': field.isReadonly() && c.value == field.value}" ng-disabled="field.isReadonly()"><span style="white-space: normal">{{c.label}}</span></button></div></fieldset></script><script id="sp_assessment_image_scale.xml" type="text/ng-template"><div><fieldset><legend class="sr-only"><span ng-if="field.isMandatory() && !field.mandatory_filled()">Required -</span><span ng-if="field.isMandatory() && field.mandatory_filled()">Required filled -</span><span>{{field.label}}</span></legend><div ng-if="!isMobile" style="display:flex; flex-wrap:wrap;" class="row" ng-class="{single_question_survey_image: isKioskSurvey}" role="radiogroup"><div ng-repeat="c in field.choices track by $index" class="sp-asmt-auto-focus col-xs-6 col-sm-2 text-center asmt-img-scale img-scale-{{::field.sys_id}} full-md-width" ng-attr-style="{{field.isReadonly() ? 'cursor: default; margin: 2rem;' : 'cursor: pointer; margin: 2rem;'}}" role="radio" ng-keydown="selectOption($event, $index)" aria-checked="{{field.value == c.value}}" aria-label="{{::c.label}}" ng-attr-tabindex="{{field.isReadonly() ? null : getTabIndex($index, c)}}" ng-click="field.isReadonly() || chooseOption($event, $index)" ng-class="{'col-sm-2': !isKioskSurvey, 'col-sm-3': isKioskSurvey, 'col-md-2': isKioskSurvey}"><label ng-if="!!c.selected_image"><img ng-if="field.unselected_image_all_present" src="{{c.value == field.value ? c.selected_image : c.unselected_image}}?t=small" role="presentation" alt="" class="asmt-img-size m-b-sm m-t-sm" ng-style="{'opacity': initialOpacity ? initialOpacity : c.opacity}" ng-click="field.isReadonly() || chooseOption($event, $index)" ng-class="{'img_size' : !isKioskSurvey, 'disabled-pointer' : field.isReadonly(), 'cursor-pointer' : !field.isReadonly()}" ng-disabled="{{field.isReadonly()}}"></img><img ng-if="!field.unselected_image_all_present" src="{{c.selected_image }}?t=small" role="presentation" alt="" class="asmt-img-size m-b-sm m-t-sm" ng-style="{'opacity': initialOpacity ? initialOpacity : c.opacity}" ng-click="field.isReadonly() || chooseOption($event, $index)" ng-class="{'img_size' : !isKioskSurvey, 'disabled-pointer' : field.isReadonly(), 'cursor-pointer' : !field.isReadonly()}" ng-disabled="{{field.isReadonly()}}"></img><span style="overflow: hidden; white-space: normal; word-wrap: break-word;" class="btn btn-default btn-block " ng-class=" { 'btn-primary': c.value == field.value, 'asmt-primary-btn-disabled': field.isReadonly() && c.value == field.value}" ng-if="!isKioskSurvey" ng-click="selectChoice($event, c)" title="{{::c.label}}" ng-disabled="{{field.isReadonly()}}">{{::c.label}}</span><span style="overflow: hidden; white-space: normal; word-wrap: break-word;font-weight:bold" class="btn btn-block" ng-click="field.isReadonly() || selectChoice($event, c)" ng-if="c.value == field.value && isKioskSurvey" ng-disabled="{{field.isReadonly()}}" title="{{::c.label}}">{{::c.label}}</span></label><label ng-if="!c.selected_image" style="margin: auto;"><div ng-click="field.isReadonly() || chooseOption($event, $index)" class="m-b-sm text-overflow-ellipsis v-middle text-center asmt-image-scale-img-not-present asmt-img-size" ng-class="{'disabled-pointer' : field.isReadonly()}" title="{{::c.label}}" ng-disabled="{{field.isReadonly()}}">{{::c.label}}</div><span style="overflow: hidden; white-space: normal; word-wrap: break-word;" class="btn btn-default btn-block " ng-class=" { 'btn-primary': c.value == field.value, 'asmt-primary-btn-disabled': field.isReadonly() && c.value == field.value}" ng-if="!isKioskSurvey" ng-click="selectChoice($event, c)" title="{{::c.label}}" ng-disabled="{{field.isReadonly()}}">{{::c.label}}</span><span style="overflow: hidden; white-space: normal; word-wrap: break-word;font-weight:bold" class="btn btn-block" ng-click="field.isReadonly() || selectChoice($event, c)" ng-if="c.value == field.value && isKioskSurvey" ng-disabled="{{field.isReadonly()}}" title="{{::c.label}}">{{::c.label}}</span></label></div></div><div ng-if="isMobile" class="wrapper-xs row"><div class="col-xs-12 wrapper-sm text-center"><div ng-if="mobileChoice.selected_image"><img src="{{mobileChoice.selected_image}}?t=small" title="{{::mobileChoice.label}}" alt="{{mobileChoice.label}}" class="asmt-img-size"></img></div><div ng-if="!mobileChoice.selected_image"><div title="{{::mobileChoice.label}}" class="m-b-sm text-overflow-ellipsis v-middle text-center asmt-image-scale-img-not-present asmt-img-size">{{mobileChoice.label}}</div></div></div><div ng-repeat="c in field.choices track by $index" class="wrapper-xs text-center" ng-class="{'m-l' : isNative}"><button class="btn btn-block" ng-class="{'btn-default' : c.value !== field.value, 'btn-primary': c.value == field.value,'asmt-primary-btn-disabled': field.isReadonly() && c.value == field.value }" aria-pressed="{{c.value == field.value}}" ng-click="field.isReadonly() || selectChoice($event, c);" title="{{::c.label}}" ng-disabled="{{field.isReadonly()}}"><span style="white-space: normal">{{::c.label}}</span></button></div></div></fieldset></div></script><script id="sp_assessment_number.xml" type="text/ng-template"><div ng-class="{'m-l' : isNative}"><div class="inline pad-right"><input id="asmt_number_{{::field.sys_id}}" aria-label="{{field.label}} range {{field.minValue}} to {{field.maxValue}}" name="{{::field.name}}" aria-required="{{field.isMandatory()}}" aria-invalid="{{field.isInvalid}}" class="form-control m-r-xs inline padder-xs" ng-class="{'text-center': isMobile}" ng-model="field.stagedValue" ng-change="validate()" style="width:75px;" ng-disabled="field.isReadonly()"></input><span ng-if="::field.showPercentage">%</span></div><div class="inline"><span>Range: {{::field.minValue}} - {{::field.maxValue}}</span></div><div><span class="asmt-inline-info"><span ng-if="field.isInvalidInput" class="asmt-error" role="alert">{{translations['The value is not valid or it is out of range.']}}</span><span ng-if="field.isConverted && !field.isInvalidInput" role="alert">{{translations['The entered value has been changed to an integer.']}}</span></span></div></div></script><script id="sp_assessment_checkbox_group.xml" type="text/ng-template"><fieldset><legend class="sr-only" id="sp_asmt_grp_checkbox_{{::field.sys_id}}"><span class="field-decorations"><span ng-if="field.isMandatory() && !field.mandatory_filled()">Required -</span><span ng-if="field.isMandatory() && field.mandatory_filled()">Required filled -</span>{{::field.label}}</span></legend><div ng-repeat="c in field.choices track by $index" role="group" aria-labelledby="sp_asmt_grp_checkbox_{{::field.sys_id}}" class="type-boolean"><label><input id="checkbox-input-{{::c.sys_id}}" aria-label="{{::c.label}}" type="checkbox" name="{{::c.name}}" ng-change="setFieldValue(c)" aria-checked="{{c.selected}}" ng-model="c.selected" ng-disabled="{{field.isReadonly()}}"></input><span class="boolean-control"><span>{{::c.label}}</span></span></label></div></fieldset></script><script id="sp_assessment_details.xml" type="text/ng-template"><div ng-class="{'padding-details': paddingRequired}"><div style="overflow-wrap: break-word;" id="sp_assessment_details_{{::fieldId}}" class="show-more-box" ng-class="{'details-text': showMore, 'no-padder': paddingRequired, 'm-l' : isNative && !isCategory, 'padder-l-none padder-r-none': isMobile}" ng-bind-html="trustedHTML(htmlDetails)"></div><div class="sp-asmt-auto-focus" ng-if="showButton"><button ng-click="showMoreClicked();" aria-label="{{showMore ? showMoreMsg : showLessMsg}}" aria-expanded="{{!showMore}}" class="btn show-more-control" ng-class="{'btn-sm show-more-control-color': !isNative, 'btn-default native-mobile-show-more-control': isNative}" ng-attr-style="{{paddingRequired && 'margin: .2rem auto 2.2rem auto !important'}}"><span>{{showMore ? controlMessages['Show more'] : controlMessages['Show less']}}</span></button></div></div></script><script id="sp_assessment_add_info.xml" type="text/ng-template"><div ng-class="{'adjust-width': !isMobile, 'm': isNative}"><span class="question-label">{{::field.add_info_label}}</span><textarea class="form-control asmt-margin-t-sm asmt-margin-b-sm" rows="4" ng-attr-style="{{field.isReadonly() ? 'resize: none' : 'resize: vertical'}}" name="{{::field.add_info_name}}" aria-label="{{::field.add_info_label + ' for ' + field.label}}" ng-model="field.add_info" autocomplete="off" ng-disabled="field.isReadonly()"></textarea></div></script><script id="sp_assessment_template.xml" type="text/ng-template"><div><table class="table table-responsive" role="presentation"><thead><tr><td ng-style="{width: questionWidth + '%'}"></td><td class="text-center" ng-style="{width: (100 - questionWidth) + '%'}"><div class="inline" style="overflow-wrap:break-word;" ng-repeat="c in field.choices track by $index" ng-style="{width: choiceWidth + '%'}">{{::c.label}}</div></td></tr></thead><tbody><tr ng-repeat="qid in templateGroup.questions track by $index" ng-class="{'has-error': _field.isInvalid}" ng-init="_field = fields[qid]"><td ng-style="{width: questionWidth + '%'}" class="padder-l-none padder-t-md" ng-if="_field.visible"><span><span class="field-decorations"><span ng-show="_field.mandatory" class="fa fa-asterisk mandatory" aria-hidden="true" ng-class="{'mandatory-filled': _field.mandatory_filled()}" style="padding-right: .25em"></span></span><span class="field-label">{{::_field.label}}</span><sp-assessment-details ng-if="::_field.details" html-details="_field.details" padding-required="true" label="_field.label" field-id="field.sys_id" clamp-line="4" class="padding-child"></sp-assessment-details></span></td><td class="text-center radio padder-t-md" ng-style="{width: (100 - questionWidth) + '%'}" style="display: table-cell;" ng-if="_field.visible"><fieldset class="radio-control m-l-none"><legend class="sr-only"><span ng-if="_field.isMandatory() && !_field.mandatory_filled()">Required -</span><span ng-if="_field.isMandatory() && _field.mandatory_filled()">Required filled -</span>{{::_field.label}}</legend><div class="inline" ng-style="{width: choiceWidth + '%'}" ng-repeat="c in _field.choices track by $index"><label ng-if="::!_field.template.allow_image || !_field.selected_image_all_present"><input name="radio-button-{{qid}}" class="template-radio-choice" aria-label="{{::c.label}}" aria-checked="{{_field.value == c.value}}" ng-checked="_field.value == c.value" ng-click="selectChoice(_field.name, c.value)" type="radio" value="{{::c.value}}" ng-disabled="field.isReadonly()"></input><span class="m-l-none m-r-none"><div class="sr-only">{{::c.label}}</div></span></label><span ng-if="_field.template.allow_image && _field.selected_image_all_present"><label><span class="sr-only">{{c.label}}</span><input class="fade" name="radio-button-{{qid}}" style="position: absolute;" aria-checked="{{_field.value == c.value}}" ng-checked="_field.value == c.value" ng-click="selectChoice(_field.name, c.value)" type="radio" value="{{::c.value}}" ng-disabled="field.isReadonly()"></input><div class="asmt-img-choice" ng-if="!_field.unselected_image_all_present" ng-class="{'disabled-pointer' : _field.isReadonly()}"><img src="{{c.selected_image}}?t=small" ng-style="{'opacity' : (c.value == _field.value) ? '1' : '0.5'}" class="asmt-img-size"></img></div><div class="asmt-img-choice" ng-if="_field.unselected_image_all_present" ng-class="{'disabled-pointer' : _field.isReadonly()}"><img src="{{(c.value == _field.value) ? c.selected_image : c.unselected_image}}?t=small" class="asmt-img-size"></img></div></label></span></div></fieldset></td></tr></tbody></table></div></script><script id="sp_assessment_attachment.xml" type="text/ng-template"><div><div class="question-width" ng-class="{'m-l m-b-xs' : isNative}"><div ng-if="field.attachments.length" class="file-list-wrap"><ul class="list-group m-b-none"><li class="list-group-item" ng-repeat="attachment in field.attachments"><ng-include src="getAttachmentTemplate()" onload="attachmentHandler.manageFocus()"></ng-include></li></ul></div><div ng-show="errorMessages.length"><div ng-repeat="error in errorMessages" class="wrapper-xs r m-t-xs bg-danger" ng-if="$last">{{error.msg}}</div></div></div><input ng-show="false" type="file" ng-file-select="onAttachmentSelect($files)" multiple="true"></input><button ng-click="isNative ? showAttachOptions() : openAttachmentSelector($event)" type="button" id="sp_asmt_formfield_{{::field.name}}" style="display:flex; align-items: center" class="btn btn-primary" ng-class="{'m-t-sm' : !isNative, 'm-l' : isNative}" aria-label="Upload Attachment for {{field.label}} " ng-disabled="field.isReadonly()"><sn-glyph char="upload" class="m-r-xs"></sn-glyph><small>{{field.isMandatory() && !field.mandatory_filled() ? "Required - Upload" : "Upload"}}</small></button></div></script><script id="sp_assessment_ranking.xml" type="text/ng-template"><div class="container-fluid"><div class="row"><div class="col-xs-12 col-sm-6"><fieldset><legend class="sr-only"><span ng-if="field.isMandatory() && !field.mandatory_filled()">Required -</span><span ng-if="field.isMandatory() && field.mandatory_filled()">Required filled -</span>{{::field.label}}</legend><input class="select2-offscreen" tabindex="-1" aria-hidden="true" ng-focus="setFocusToSelect(0)" name="asmt_ranking_{{::field.sys_id}}"></input><ul class="asmt-ranking-list item-list-style-type-none" ng-class="{'has-error': field.isInvalid, 'm-l' : isNative}"><li class="row" ng-repeat="c in field.choices track by $index"><div class="col-sm-3" ng-class="{'col-xs-4 asmt-padding-xss' : isNative, 'col-xs-4 wrapper-xs' : !isNative}"><select id="{{::c.sys_id}}" name="{{c.name}}" aria-label="{{::c.label}}" ng-change="onSelectChange(c)" autocomplete="off" class="form-control wrapper-xs" ng-model="c.value" ng-disabled="field.isReadonly()"><option value="-1" ng-selected="c.value == -1">--None--</option><option ng-repeat="i in field.choices track by $index" value="{{$index + 1}}" ng-selected="$index + 1 == c.value">{{$index + 1}}</option></select></div><div class="col-sm-8 break-word" aria-hidden="true" ng-class="{'padder-v-xs col-xs-6' : isNative, 'wrapper-sm col-xs-6' : !isNative}"><span id="label_{{::c.sys_id}}">{{c.label}}</span></div><div class="col-xs-2 col-sm-1" aria-hidden="true" ng-class="{'padder-v-xs ' : isNative, 'wrapper-sm' : !isNative}" ng-attr-style="{{field.isReadonly() ? 'opacity: .5' : undefined}}"><span class="fa fa-bars pull-right wrapper-xs"></span></div></li></ul></fieldset></div></div></div></script><script type="text/ng-template" id="sp-modal.html"><div class="modal-header" ng-style="options.headerStyle"><button type="button" class="close pull-right" ng-click="$dismiss()" title="Close" data-toggle="tooltip" data-placement="bottom" aria-label="Close" autofocus="autofocus">脳</button><h1 class="modal-title h4" ng-bind-html="options.title" id="modal-title"></h1></div><div class="modal-body" ng-keyup="keyPress($event.keyCode)"><p ng-if="options.message" ng-bind-html="options.message"></p><p ng-if="options.errorMessage" class="alert alert-danger ng-binding ng-scope" role="alert" ng-bind-html="options.errorMessage"></p><div ng-if="options.widget"><sp-widget widget="options.widget"></sp-widget></div><div ng-if="options.input"><form name="form.xpForm" ng-if="options.input" ng-submit="submit()"><div class="form-group"><label for="xpInput" ng-if="options.label"><span class="field-decorations"><span class="fa fa-asterisk mandatory sp-field-label-padding" title="Required"></span>{{options.label}}</span></label><input id="xpInput" type="text" class="form-control" ng-model="input.value" required="true" ng-change="changed=true" ng-blur="clearFocusListCache()" ng-if="!options.values || options.values.length === 0" autocomplete="off" aria-invalid="{{(changed == true && form.xpForm.$invalid) || false}}"></input><div class="input-group" ng-if="options.values"><input id="xpInput" type="text" class="form-control" ng-model="input.value" required="true" ng-change="changed=true" ng-blur="clearFocusListCache()" autocomplete="off" aria-invalid="{{(changed == true && form.xpForm.$invalid) || false}}"></input><div class="input-group-btn" dropdown="true"><button type="button" class="btn btn-default dropdown-toggle" dropdown-toggle="true" data-toggle="dropdown"><span class="caret"></span></button><ul class="dropdown-menu pull-right"><li ng-repeat="value in options.values"><a href="" ng-click="input.name = value">{{value}}</a></li></ul></div></div></div></form></div></div><div class="modal-footer" ng-style="options.footerStyle"><button ng-repeat="button in options.buttons track by button.label" sp-focus-if="button.focus" ng-disabled="button.primary && options.input && form.xpForm.$invalid" class="btn btn-default {{button.class}}" ng-class="{'btn-primary':button.primary}" ng-click="buttonClicked(button)">{{button.label}}</button></div></script><style>.modal .panel { margin-bottom: 0; } .sp-form-modal-body { padding: 0px; } .sp-form-modal-body .panel-heading { padding-right: 4rem; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; } .sp-form-modal-body .panel-title { width: calc(95% - 20px); } @media all and (max-width: 549px) { .sp-form-modal-body .panel-title { width: calc(85% - 20px); } } .sp-form-modal-body .sp-form-modal-close-button { position: absolute; right: 0px; top: 0px; z-index: 1; border-top-right-radius: 0.3rem; padding: 1.4rem 1.3rem 1.5rem 1.3rem; } /* RTL overrides */ [dir="rtl"].rtl .sp-form-modal-body .panel-heading { padding-left: 4rem; padding-right: 1.5rem; } [dir="rtl"].rtl .sp-form-modal-body .sp-form-modal-close-button { left: 0; right: auto; border-top-left-radius: 0.3rem; }</style><script type="text/ng-template" id="sp_form_modal"><div class="modal-body sp-form-modal-body"><i class="fa fa-close text-base sp-form-modal-close-button" ng-click="cancel()" role="button" aria-label="{{::closeWindowMsg}}" tabindex="0" autofocus="true" data-original-title="{{::closeWindowMsg}}" data-toggle="tooltip" data-placement="bottom"></i><sp-widget widget="item.form"></sp-widget></div></script><script type="text/ng-template" id="sp_modal"><div class="modal-header"><button type="button" class="close" ng-click="cancel()">X</button><h4>This is the title</h4></div><div class="modal-body">{{item.name}}</div><div class="modal-footer"><button class="btn btn-default" ng-click="cancel()">Cancel</button><button class="btn btn-primary" ng-click="ok()">OK</button></div></script><script type="text/ng-template" id="sp_attachment_picker.html"><div class="sn-file-drop-zone" id="sn-file-drop-zone" multiple="true" ng-paste="paste($event)" ng-file-drop="dropFiles($files)" stop-propagation="true" ng-file-drag-over-class="dragover"><div class="sn-file-drop-zone__info sn-file-drop-zone__info--default" ng-transclude=""><div class="sn-file-drop-zone__cloud-icon fa fa-cloud-upload"></div><div class="sn-file-drop-zone__drag-info" spellcheck="false"><input type="file" style="display: none" multiple="true" ng-file-select="selectFiles($files)" class="sp-attachments-input"></input><span sp-readonly-contenteditable="true" class="sn-file-drop-zone__file-button sp-attachment-add-btn btn-link" ng-click="pickFile($event)" aria-role="button" aria-describedby="sn-file-drop-zone" aria-readonly="true">{{i18Strings['Choose a file']}}</span>{{i18Strings['or drag it here.']}}</div><div ng-if="isPasteFilesSupported" class="sn-file-drop-zone__clipboard-info">{{i18Strings["Copy and paste clipboard files here."]}}</div></div><div ng-if="disablePickerOverlay != 'true'" class="sn-file-drop-zone__info sn-file-drop-zone__info--dragover"><div class="sn-file-drop-zone__add-icon icon-add"></div></div></div></script><script type="text/ng-template" id="sp_attachment_modal.html"><div class="modal-attachment-picker"><div class="modal-attachment-picker__header"><h1 class="attachment-header-title modal-attachment-picker__header-title h4" id="attachment-header-title">Add attachments</h1><button type="button" class="close pull-right" ng-click="$dismiss()" title="Close" data-toggle="tooltip" data-placement="bottom" aria-label="Close" autofocus="autofocus">脳</button></div><div class="attachment-body modal-attachment-picker__body"><sp-attachment-picker on-file-pick="fileSelectHandler($files)" ng-show="!loadingIndicator"></sp-attachment-picker><div class="modal-attachment-picker__progress-info" ng-show="loadingIndicator"><progress class="modal-attachment-picker__progress"></progress><label>Uploading</label></div><div ng-if="supportedExtensions !== ''" ng-show="!loadingIndicator" class="modal-attachment-picker__supported"><span>Supported:</span><span>{{supportedExtensions}}</span></div></div></div></script><script type="text/ng-template" id="angular.do?sysparm_type=get_partial&name=sn_avatar.xml"><div class="avatar-container" ng-class="avatarType()" title="{{ avatartooltip() }}" tabindex="0"><div class="avatar soloAvatar top" ng-if="(users.length > 1 && !groupAvatar)" context-menu="contextOptions"><div class="sub-avatar" ng-style="getBackgroundStyle(users[1])" aria-label="{{users[1].name}}, {{presenceStatus}}"><span ng-if="!users[1].avatar">{{ users[1].initials }}</span></div></div><div class="avatar soloAvatar bottom" context-menu="contextOptions"><div class="sub-avatar" ng-style="getBackgroundStyle(users[0] || primary)" aria-label="{{users[0].name}}, {{presenceStatus}}"><span ng-if="(!users[0].avatar && !groupAvatar)">{{ users[0].initials }}</span></div></div><div class="avatar soloAvatar top" ng-if="users.length > 2 && !groupAvatar" context-menu="contextOptions"><div class="sub-avatar" ng-style="getBackgroundStyle(users[2])" aria-label="{{users[2].name}}, {{presenceStatus}}"><span ng-if="!users[2].avatar">{{ users[2].initials }}</span></div></div><div class="avatar soloAvatar top" ng-if="users.length > 3 && !groupAvatar" context-menu="contextOptions"><div class="sub-avatar" ng-style="getBackgroundStyle(users[3])" aria-label="{{users[3].name}}, {{presenceStatus}}"><span ng-if="!users[3].avatar">{{ users[3].initials }}</span></div></div><span class="inner-details" ng-transclude=""></span><sn-presence ng-if="::presenceEnabled" user="(users[0].userID || users[0].document)" on-presence-change="onPresenceChange(status)"></sn-presence></div></script><script type="text/ng-template" id="angular.do?sysparm_type=get_partial&name=sp_tinymce_editor.xml"><div><div ng-show="!field.isReadonly()"><span ng-if="::accessibilityEnabled" role="note" data-toggle="tooltip" tabindex="0" class="fa fa-question-circle" aria-label="In the editor, press Alt+F10 to focus on the toolbar. Mac press Option+F10 to focus on the toolbar. Press escape to return to the editor." title="In the editor, press Alt+F10 to focus on the toolbar. Mac press Option+F10 to focus on the toolbar. Press escape to return to the editor."></span><textarea ui-tinymce="tinyMCEOptions" name="{{attrs.name}}" label="{{attrs.name}}" ng-model="model" ng-model-options="options" ng-change="onChangeModel()" rows="10" id="{{textareaId}}"></textarea><input ng-file-select="attachFiles({files: $files})" ng-click="$event.stopPropagation();" tabindex="-1" aria-hidden="true" multiple="" accept="image/jpeg,image/png,image/bmp,image/x-windows-bmp,image/gif,image/x-icon,image/svg+xml" type="file" style="display: none;"></input></div><div ng-if="field.isReadonly()" class="tinymce-html-content" ng-bind-html="::trustedHTML(model)"></div></div></script><now-message key="Created" value="Created"></now-message><now-message key="track requests from 'My Requests' in the navbar or click" value="track requests from My Requests in the navbar or click"></now-message><now-message key="here to view" value="here to view"></now-message><now-message key="Submitted" value="Submitted"></now-message><now-message key="after" value="after"></now-message><now-message key="at or after" value="at or after"></now-message><now-message key="is anything" value="is anything"></now-message><now-message key="before" value="before"></now-message><now-message key="at or before" value="at or before"></now-message><now-message key="is empty" value="is empty"></now-message><now-message key="is empty string" value="is empty string"></now-message><now-message key="ends with" value="ends with"></now-message><now-message key="is" value="is"></now-message><now-message key="greater than" value="greater than"></now-message><now-message key="greater than or is" value="greater than or is"></now-message><now-message key="is a" value="is a"></now-message><now-message key="contains" value="contains"></now-message><now-message key="less than" value="less than"></now-message><now-message key="less than or is" value="less than or is"></now-message><now-message key="is not empty" value="is not empty"></now-message><now-message key="is not" value="is not"></now-message><now-message key="does not contain" value="does not contain"></now-message><now-message key="not on" value="not on"></now-message><now-message key="on" value="on"></now-message><now-message key="starts with" value="starts with"></now-message><now-message key="Open" value="Open"></now-message><now-message key="Knowledge" value="Knowledge"></now-message><now-message key="Catalog" value="Catalog"></now-message><now-message key="Catalogs" value="Catalogs"></now-message><now-message key="Fetched" value="Fetched"></now-message><now-message key="additional {0}" value="additional {0}"></now-message><now-message key="additional items" value="additional items"></now-message><now-message key="Requests" value="Requests"></now-message><now-message key="All" value="All"></now-message><now-message key="Search" value="Hae"></now-message><now-message key="Searching..." value="Searching..."></now-message><now-message key="No matches found" value="No matches found"></now-message><now-message key="Loading more results..." value="Loading more results..."></now-message><now-message key="Price" value="Price"></now-message><now-message key="Recurring price" value="Recurring price"></now-message><now-message key="Submit" value="L盲het盲"></now-message><now-message key="price_subtract" value="subtract"></now-message><now-message key="price_add" value="-add"></now-message><now-message key="has added" value="has added"></now-message><now-message key="will add" value="will add"></now-message><now-message key="has added {0}" value="has added {0}"></now-message><now-message key="will add {0}" value="will add {0}"></now-message><now-message key="has added {0} | has added {1}" value="has added {0} | has added {1}"></now-message><now-message key="will add {0} | will add {1}" value="will add {0} | will add {1}"></now-message><now-message key="add {0} | add {1}" value="add {0} | add {1}"></now-message><now-message key="add {0} | subtract {1}" value="add {0} | subtract {1}"></now-message><now-message key="subtract {0} | add {1}" value="subtract {0} | add {1}"></now-message><now-message key="add {0}" value="add {0}"></now-message><now-message key="subtract {0} | subtract {1}" value="subtract {0} | subtract {1}"></now-message><now-message key="subtract {0}" value="subtract {0}"></now-message><now-message key="Required - " value="Required - "></now-message><now-message key="There was an error processing your request" value="There was an error processing your request"></now-message><now-message key="Drag image or click to select" value="Drag image or click to select"></now-message><now-message key="{0} {1} results returned{2}" value="{0} {1} results returned{2}"></now-message><now-message key="{0} {1} result returned{2}" value="{0} {1} result returned{2}"></now-message><now-message key="{0} {1} results returned for the corrected search term {2}" value="{0} {1} results returned for the corrected search term {2}"></now-message><now-message key="{0} {1} result returned for the corrected search term {2}" value="{0} {1} result returned for the corrected search term {2}"></now-message><now-message key="{0} results returned{1}" value="{0} results returned{1}"></now-message><now-message key="{0} result returned{1}" value="{0} result returned{1}"></now-message><now-message key="{0} results returned for the corrected search term {1}" value="{0} results returned for the corrected search term {1}"></now-message><now-message key="{0} result returned for the corrected search term {1}" value="{0} result returned for the corrected search term {1}"></now-message><now-message key="Go to {0} Homepage" value="Go to {0} Homepage"></now-message><now-message key="To preview {0} details go back to preview button" value="To preview {0} details go back to preview button"></now-message><now-message key="A new preview button has been generated before the current element. To preview {0} details go back to preview button" value="A new preview button has been generated before the current element. To preview {0} details go back to preview button"></now-message><now-message key="{0} out of {1} selected" value="{0} out of {1} selected"></now-message><now-message key="Double tap to rate {0} out of {1} star" value="Double tap to rate {0} out of {1} star"></now-message><now-message key="Filtered {0} list showing {1} to {2} of {3} records" value="Filtered {0} list showing {1} to {2} of {3} records"></now-message><now-message key="Unfiltered {0} list showing {1} to {2} of {3} records" value="Unfiltered {0} list showing {1} to {2} of {3} records"></now-message><now-message key="Filtered {0} list showing 0 records" value="Filtered {0} list showing 0 records"></now-message><now-message key="Unfiltered {0} list showing 0 records" value="Unfiltered {0} list showing 0 records"></now-message><now-message key="Search by {0}" value="Search by {0}"></now-message><now-message key="Hours" value="Hours"></now-message><now-message key="Minutes" value="Minutes"></now-message><now-message key="Seconds" value="Seconds"></now-message><now-message key="Days" value="Days"></now-message><now-message key="Instance Options" value="Instance Options"></now-message><now-message key="Instance in Page Editor {0}" value="Instance in Page Editor {0}"></now-message><now-message key="Page in Designer {0}" value="Page in Designer {0}"></now-message><now-message key="Edit Container Background" value="Edit Container Background"></now-message><now-message key="Widget Options Schema" value="Widget Options Schema"></now-message><now-message key="Widget in Form Modal" value="Widget in Form Modal"></now-message><now-message key="Widget in Editor {0}" value="Widget in Editor {0}"></now-message><now-message key="Log to console: {0}" value="Log to console: {0}"></now-message><now-message key="generated in" value="generated in"></now-message><now-message key="Read only - {0}" value="Read only - {0}"></now-message><now-message key="OK" value="OK"></now-message><now-message key="Remove" value="Remove"></now-message><now-message key="Cancel" value="Cancel"></now-message><now-message key="Keywords" value="Keywords"></now-message><now-message key="Save Filter" value="Save Filter"></now-message><now-message key="Add attachments" value="Add attachments"></now-message><now-message key="Lookup using list" value="Lookup using list"></now-message><now-message key="Closing modal page" value="Closing modal page"></now-message><now-message key="Attachment" value="Attachment"></now-message><now-message key="Enable edit mode on attachments" value="Enable edit mode on attachments"></now-message><now-message key="Finish editing attachments" value="Finish editing attachments"></now-message><now-message key="Edit" value="Edit"></now-message><now-message key="Done" value="Done"></now-message><now-message key="Attachments" value="Attachments"></now-message><now-message key="Delete" value="Delete"></now-message><now-message key="Enter date in format" value="Enter date in format"></now-message><now-message key="Date in format" value="Date in format"></now-message><now-message key="Date in format {0}" value="Date in format {0}"></now-message><now-message key="YYYY-MM-DD" value="YYYY-MM-DD"></now-message><now-message key="MM/DD/YY" value="MM/DD/YY"></now-message><now-message key="MM/DD/YYYY" value="MM/DD/YYYY"></now-message><now-message key="MM-DD-YYYY" value="MM-DD-YYYY"></now-message><now-message key="DD/MM/YYYY" value="DD/MM/YYYY"></now-message><now-message key="DD-MM-YYYY" value="DD-MM-YYYY"></now-message><now-message key="DD-MMM-YY" value="DD-MMM-YY"></now-message><now-message key="DD.MM.YYYY" value="DD.MM.YYYY"></now-message><now-message key="HH:mm:ss" value="HH:mm:ss"></now-message><now-message key="HH.mm.ss" value="HH.mm.ss"></now-message><now-message key="hh:mm:ss A" value="hh:mm:ss A"></now-message><now-message key="hh.mm.ss A" value="hh.mm.ss A"></now-message><now-message key="Use format" value="Use format"></now-message><now-message key="Entered date not valid. Enter date in format" value="Entered date not valid. Enter date in format"></now-message><now-message key="Switching to date picker." value="Switching to date picker."></now-message><now-message key="Switching to date time picker." value="Switching to date time picker."></now-message><now-message key="Showing date time picker." value="Showing date time picker."></now-message><now-message key="Showing date picker." value="Showing date picker."></now-message><now-message key="Date time picker is opened." value="Date time picker is opened."></now-message><now-message key="Date picker is opened." value="Date picker is opened."></now-message><now-message key="Date picker is closed." value="Date picker is closed."></now-message><now-message key="Date time picker is closed." value="Date time picker is closed."></now-message><now-message key="Toggle date time picker" value="Toggle date time picker"></now-message><now-message key="Date and time" value="Date and time"></now-message><now-message key="Previous month" value="Previous month"></now-message><now-message key="Previous year" value="Previous year"></now-message><now-message key="Previous decade" value="Previous decade"></now-message><now-message key="Next month" value="Next month"></now-message><now-message key="Next year" value="Next year"></now-message><now-message key="Next decade" value="Next decade"></now-message><now-message key="Toggle month" value="Toggle month"></now-message><now-message key="Toggle year" value="Toggle year"></now-message><now-message key="Toggle decade" value="Toggle decade"></now-message><now-message key="{0} hours. hour picker" value="{0} hours. hour picker"></now-message><now-message key="increment Hours" value="increment Hours"></now-message><now-message key="increment Minutes" value="increment Minutes"></now-message><now-message key="decrement Minutes" value="decrement Minutes"></now-message><now-message key="decrement Hours" value="decrement Hours"></now-message><now-message key="{0} minutes. minute picker" value="{0} minutes. minute picker"></now-message><now-message key="hour picker opened" value="hour picker opened"></now-message><now-message key="minute picker opened" value="minute picker opened"></now-message><now-message key="{0} minutes" value="{0} minutes"></now-message><now-message key="{0} hours" value="{0} hours"></now-message><now-message key="{0} is selected" value="{0} is selected"></now-message><now-message key="Date" value="Date"></now-message><now-message key="picker" value="picker"></now-message><now-message key="Show Calendar for {0}" value="Show Calendar for {0}"></now-message><now-message key="Required" value="Required"></now-message><now-message key="Remove {0} facet filter" value="Remove {0} facet filter"></now-message><now-message key="Error" value="Error"></now-message><now-message key="Close Notification" value="Close Notification"></now-message><now-message key="Close Window" value="Close Window"></now-message><now-message key="File not available" value="The file failed the security scan. We canceled the download for you and let your admin know. You can contact them for more info."></now-message><now-message key="File pending" value="Our servers got busy, and the scan timed out. Sorry about that. Please try again later."></now-message><now-message key="File failed security scan" value="File failed security scan"></now-message><now-message key="Upload file scan failed" value="Your file {0} failed the security scan. Your system is still safe - we quarantined the file and let your admin know. You can contact your admin for more info."></now-message><now-message key="Also request for" value="Also request for"></now-message><now-message key="Item is unavailable for {0}" value="Item is unavailable for {0}"></now-message><now-message key="Do you want to add a row for {0}" value="Do you want to add a row for {0}"></now-message><now-message key="Request for multiple users" value="Request for multiple users"></now-message><now-message key="Item is unavailable for this user" value="Item is unavailable for this user"></now-message><now-message key="Remove {0} from {1}" value="Remove {0} from {1}"></now-message><now-message key="Uploading" value="Uploading"></now-message><now-message key="Choose a file" value="Choose a file"></now-message><now-message key="or drag it here." value="or drag it here."></now-message><now-message key="Copy and paste clipboard files here." value="Copy and paste clipboard files here."></now-message><now-message key="Upload and Encrypt" value="Upload and Encrypt"></now-message><now-message key="Upload Without Encrypting" value="Upload Without Encrypting"></now-message><now-message key="Encrypt attachment?" value="Encrypt attachment?"></now-message><now-message key="Encrypt attachments?" value="Encrypt attachments?"></now-message><now-message key="Attached by {0} {1}" value="Attached by {0} {1}"></now-message><now-message key="Encrypted" value="Encrypted"></now-message><now-message key="Attachment successfully uploaded" value="Attachment successfully uploaded"></now-message><now-message key="Attachment deleted successfully" value="Attachment deleted successfully"></now-message><now-message key="Attachment renamed successfully" value="Attachment renamed successfully"></now-message><now-message key="Profile picture updated successfully" value="Profile picture updated successfully"></now-message><now-message key="Collapse" value="Collapse"></now-message><now-message key="Expand" value="Expand"></now-message><now-message key="announcement" value="announcement"></now-message><now-message key="announcements" value="announcements"></now-message><now-message key="More information about" value="More information about"></now-message><now-message key="Dismiss" value="Dismiss"></now-message><now-message key="Dismiss announcement" value="Dismiss announcement"></now-message><now-message key="Learn More" value="Learn More"></now-message><now-message key="MORE" value="MORE"></now-message><now-message key="LESS" value="LESS"></now-message><now-message key="Show next, Slide {0} of {1}" value="Show next, Slide {0} of {1}"></now-message><now-message key="Show previous, Slide {0} of {1}" value="Show previous, Slide {0} of {1}"></now-message><now-message key="EXPAND ALL {0}" value="EXPAND ALL {0}"></now-message><now-message key="HIDE ALL" value="HIDE ALL"></now-message><now-message key="Specified username does not match with the username of currently logged in user" value="Specified username does not match with the username of currently logged in user"></now-message><now-message key="Learn more details on this announcement" value="Learn more details on this announcement"></now-message><now-message key="User name or password invalid" value="User name or password invalid"></now-message><now-message key="User name, password or token invalid" value="User name, password or token invalid"></now-message><now-message key="Credentials for Approver and User logged in do not match" value="Credentials for Approver and User logged in do not match"></now-message><now-message key="Additional authentication required, enter your username, password and token to continue." value="Additional authentication required, enter your username, password and token to continue."></now-message><now-message key="Additional authentication is required, enter your usename and password to continue." value="Additional authentication is required, enter your usename and password to continue."></now-message><now-message key="Approver authentication" value="Approver authentication"></now-message><now-message key="Confirmation must match" value="Confirmation must match"></now-message><now-message key="Re-enter" value="Re-enter"></now-message><now-message key="Re-enter `{0}`" value="Re-enter `{0}`"></now-message><now-message key="u_show" value="SHOW"></now-message><now-message key="u_hide" value="HIDE"></now-message><now-message key="The size of the uploaded file cannot exceed {0} MB" value="The size of the uploaded file cannot exceed {0} MB"></now-message><now-message key="The uploaded file type is not permitted; allowed types are {0}" value="The uploaded file type is not permitted; allowed types are {0}"></now-message><now-message key="Invalid value" value="Invalid value"></now-message><now-message key="Save Changes" value="Save changes"></now-message><now-message key="Do you want to save your changes before leaving this page?" value="Do you want to save your changes before leaving this page?"></now-message><now-message key="Discard" value="Discard"></now-message><now-message key="Save" value="Save"></now-message><now-message key="Clear" value="Clear"></now-message><now-message key="Apply" value="Apply"></now-message><now-message key="Sources" value="Sources"></now-message><now-message key="Clear All" value="Clear All"></now-message><now-message key="Clear all active facets" value="Clear all active facets"></now-message><now-message key="Loading" value="Loading"></now-message><now-message key="See more" value="See more"></now-message><now-message key="See less" value="See less"></now-message><now-message key="Clear field {0}" value="Clear field {0}"></now-message><now-message key="Click to remove" value="Click to remove"></now-message><now-message key="Select" value="Select"></now-message><now-message key="Selected" value="Selected"></now-message><now-message key="Enabled" value="Enabled"></now-message><now-message key="Disabled" value="Disabled"></now-message><now-message key="filter selection has cleared for {0} and search results updated" value="filter selection has cleared for {0} and search results updated"></now-message><now-message key="Filter selected {0} and search results updated" value="Filter selected {0} and search results updated"></now-message><now-message key="Filter with value" value="Filter with value"></now-message><now-message key="{0} is collapsed" value="{0} is collapsed"></now-message><now-message key="{0} is Expanded" value="{0} is Expanded"></now-message><now-message key="Filter selected {0} {1} and Search results updated" value="Filter selected {0} {1} and search results updated"></now-message><now-message key="Search Categories" value="Search Categories"></now-message><now-message key="All facets have been cleared, and search results have been updated" value="All facets have been cleared, and search results are updated"></now-message><now-message key="Facet removed, search results updated" value="Facet removed, search results updated"></now-message><now-message key="There is a JavaScript error in your browser console" value="There is a JavaScript error in your browser console"></now-message><now-message key="Guided Tours" value="Guided Tours"></now-message><now-message key="This page currently has {0} tours" value="This page currently has {0} tours"></now-message><now-message key="This page currently has 1 tour" value="This page currently has 1 tour"></now-message><now-message key="Tours" value="Tours"></now-message><now-message key="You have no tours on this page" value="You have no tours on this page"></now-message><now-message key="Tours appear when your administrator creates them on specific pages" value="Tours appear when your administrator creates them on specific pages"></now-message><now-message key="Are you sure you want to delete all rows?" value="Are you sure you want to delete all rows?"></now-message><now-message key="Are you sure you want to delete the row?" value="Are you sure you want to delete the row?"></now-message><now-message key="Stop Guided Tour" value="Stop Guided Tour"></now-message><now-message key="Do you want to stop this tour from auto launching again?" value="Do you want to stop this tour from auto launching again?"></now-message><now-message key="Apply for all tours on this page" value="Apply for all tours on this page"></now-message><now-message key="Yes" value="Yes"></now-message><now-message key="No" value="No"></now-message><now-message key="Next" value="Next"></now-message><now-message key="Complete" value="Complete"></now-message><now-message key="Tour ended because the next step was not found." value="Tour ended because the next step was not found."></now-message><now-message key="Tour was abandoned" value="Tour was abandoned"></now-message><now-message key="This tour is currently in draft status" value="This tour is currently in draft status"></now-message><now-message key="Cannot start a new tour while another tour is in progress." value="Cannot start a new tour while another tour is in progress."></now-message><now-message key="Close" value="Close"></now-message><now-message key="Cancel Tour" value="Cancel Tour"></now-message><now-message key="Error in fetching tour details" value="Error in fetching tour details"></now-message><now-message key="{0} saved" value="{0} saved"></now-message><now-message key="Open chat window" value="Open chat window"></now-message><now-message key="Open chat window. {0} unread messages" value="Open chat window. {0} unread messages"></now-message><now-message key="Minimize chat window" value="Minimize chat window"></now-message><now-message key="Agent Chat Window" value="Agent Chat Window"></now-message><now-message key="Open diagnostics information" value="Open diagnostics information"></now-message><now-message key="Color codes" value="Color codes"></now-message><now-message key="Widget" value="Widget"></now-message><now-message key="Compare with Base system" value="Compare with Base system"></now-message><now-message key="Open widget in platform" value="Open widget in platform"></now-message><now-message key="Widget Diagnostics" value="Widget Diagnostics"></now-message><now-message key="Compare with previous version" value="Compare with previous version"></now-message><now-message key="Show Widget Customizations" value="Show Widget Customizations"></now-message><now-message key="Hide Widget Customizations" value="Hide Widget Customizations"></now-message><now-message key="Cloned" value="Cloned"></now-message><now-message key="New" value="New"></now-message><now-message key="Customized" value="Customized"></now-message><now-message key="Base system" value="Base system"></now-message><now-message key="Enable Analytics" value="Enable Analytics"></now-message><now-message key="Agree" value="Agree"></now-message><now-message key="Choose" value="Choose"></now-message><now-message key="Value is invalid or out of range" value="The value is not valid or it is out of range."></now-message><now-message key="The entered value has been changed to an integer." value="The entered value has been changed to an integer."></now-message><now-message key="Attached" value="Attached"></now-message><now-message key="{0} complete" value="{0} complete"></now-message><now-message key="Submitting..." value="Submitting..."></now-message><now-message key="Saving..." value="Saving..."></now-message><now-message key="Delete Attachment?" value="Delete Attachment?"></now-message><now-message key="{0} details show more" value="{0} details show more"></now-message><now-message key="{0} details show less" value="{0} details show less"></now-message><now-message key="Leave page?" value="Leave page?"></now-message><now-message key="Changes you made will be lost." value="Changes you made will be lost."></now-message><now-message key="Leave" value="Leave"></now-message><now-message key="1 item selected" value="1 item selected"></now-message><now-message key="{0} items selected" value="{0} items selected"></now-message><now-message key="For {0}" value="For {0}"></now-message><now-message key="{0} for" value="{0} for"></now-message><now-message key="Expand all categories for {0}" value="Expand all categories for {0}"></now-message><now-message key="Collapse all categories for {0}" value="Collapse all categories for {0}"></now-message><now-message key="Attached files must be smaller than {0} MB, or the files must have {1} file extensions." value="Attached files must be smaller than {0} MB, or the files must have {1} file extensions."></now-message><now-message key="Extend your session." value="Extend your session."></now-message><now-message key="Your current session will expire soon. Click extend to continue with your current session." value="Your current session will expire soon. Click extend to continue with your current session."></now-message><now-message key="Extend session." value="Extend session."></now-message><now-message key="Your session has expired." value="Your session has expired."></now-message><now-message key="Your login session has expired. Please login again." value="Your login session has expired. Please login again."></now-message><now-message key="Log in" value="Log in"></now-message><now-message key="Login" value="Log in"></now-message><now-message key="Close modal" value="Close"></now-message><now-message key="Session Expiration Notification" value="Session Expiration Notification"></now-message><now-message key="Your session will expire within {X} minutes. Please complete your ongoing tasks to prevent loss of work." value="Your session will expire within {X} minutes. Please complete your ongoing tasks to prevent loss of work."></now-message><now-message key="{0} has been approved" value="{0} has been approved"></now-message><now-message key="{0} has been rejected" value="{0} has been rejected"></now-message><now-message key="Updating the attachment will delete the previous attachment permanently. Do you want to continue?" value="Updating the attachment will delete the previous attachment permanently. Do you want to continue?"></now-message><now-message key="%d ago" value="%d ago"></now-message><now-message key="%d from now" value="%d from now"></now-message><now-message key="less than a minute" value="less than a minute"></now-message><now-message key="just now" value="just now"></now-message><now-message key="about a minute" value="%dm"></now-message><now-message key="%d minutes" value="%dm"></now-message><now-message key="about an hour" value="about an hour"></now-message><now-message key="about %d hours" value="%dh"></now-message><now-message key="a day" value="a day"></now-message><now-message key="%d days" value="%dd"></now-message><now-message key="about a month" value="about a month"></now-message><now-message key="%d months" value="%dmo"></now-message><now-message key="about a year" value="about a year"></now-message><now-message key="%d years" value="%dy"></now-message><now-message key="today" value="Today"></now-message><now-message key="{0} is typing" value="{0} is typing"></now-message><now-message key="{0} is viewing" value="{0} is viewing"></now-message><now-message key="{0} has entered" value="{0} has entered"></now-message><now-message key="{0} has probably left" value="{0} has probably left"></now-message><now-message key="{0} has exited" value="{0} has exited"></now-message><now-message key="{0} is offline" value="{0} is offline"></now-message><now-message key="{0} was {1}" value="{0} was {1}"></now-message><now-message key="was" value="was"></now-message><now-message key="entered" value="entered"></now-message><now-message key="online" value="Online"></now-message><now-message key="viewing" value="viewing"></now-message><now-message key="maybe offline" value="maybe offline"></now-message><now-message key="probably offline" value="probably offline"></now-message><now-message key="offline" value="Offline"></now-message><now-message key="Activities: {0}" value="Activities: {0}"></now-message><now-message key="The file {0} did not pass security scan and cannot be downloaded" value="The file <b> {0} </b> did not pass security scan and cannot be downloaded"></now-message></body></html><!-- FILE ARCHIVED ON 04:39:08 Mar 31, 2024 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 22:40:51 Nov 27, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.505 exclusion.robots: 0.022 exclusion.robots.policy: 0.012 esindex: 0.009 cdx.remote: 4.371 LoadShardBlock: 546.525 (3) PetaboxLoader3.datanode: 141.25 (4) PetaboxLoader3.resolve: 537.648 (2) load_resource: 154.458 -->