1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<link rel="prefetch" href="https://cdn.files.rapidlms.com/view/57/f0/4c/9d/e0/e1/7d/80/d0/53/86/ae/53/34/c2/65/original/homepage-hero-image.png"> 5 6
6<script type="text/javascript"> 7 /*! js-cookie v3.0.1 | MIT */ 8 (function (global, factory) { 9 typeof exports === "object" && typeof module !== "undefined" ? 10 (module.exports = factory()) : 11 typeof define === "function" && define.amd ? 12 define(factory) : 13 ((global = global || self), 14 (function () { 15 var current = global.Cookies; 16 var exports = (global.Cookies = factory()); 17 exports.noConflict = function () { 18 global.Cookies = current; 19 return exports; 20 }; 21 })()); 22 })(this, function () { 23 "use strict"; 24 /* eslint-disable no-var */ 25 function assign(target) { 26 for (var i = 1; i < arguments.length; i++) { 27 var source = arguments[i]; 28 for (var key in source) { 29 target[key] = source[key]; 30 } 31 } 32 return target; 33 } 34 /* eslint-enable no-var */ 35 /* eslint-disable no-var */ 36 var defaultConverter = { 37 read: function (value) { 38 if (value[0] === '"') { 39 value = value.slice(1, -1); 40 } 41 return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent); 42 }, 43 write: function (value) { 44 return encodeURIComponent(value).replace( 45 /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, 46 decodeURIComponent 47 ); 48 }, 49 }; 50 /* eslint-enable no-var */ 51 /* eslint-disable no-var */ 52 function init(converter, defaultAttributes) { 53 function set(key, value, attributes) { 54 if (typeof document === "undefined") { 55 return; 56 } 57 attributes = assign({}, defaultAttributes, attributes); 58 if (typeof attributes.expires === "number") { 59 attributes.expires = new Date( 60 Date.now() + attributes.expires * 864e5 61 ); 62 } 63 if (attributes.expires) { 64 attributes.expires = attributes.expires.toUTCString(); 65 } 66 key = encodeURIComponent(key) 67 .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent) 68 .replace(/[()]/g, escape); 69 var stringifiedAttributes = ""; 70 for (var attributeName in attributes) { 71 if (!attributes[attributeName]) { 72 continue; 73 } 74 stringifiedAttributes += "; " + attributeName; 75 if (attributes[attributeName] === true) { 76 continue; 77 } 78 // Considers RFC 6265 section 5.2: 79 // ... 80 // 3. If the remaining unparsed-attributes contains a %x3B (";") 81 // character: 82 // Consume the characters of the unparsed-attributes up to, 83 // not including, the first %x3B (";") character. 84 // ... 85 stringifiedAttributes += 86 "=" + attributes[attributeName].split(";")[0]; 87 } 88 return (document.cookie = 89 key + "=" + converter.write(value, key) + stringifiedAttributes); 90 } 91 92 function get(key) { 93 if (typeof document === "undefined" || (arguments.length && !key)) { 94 return; 95 } 96 // To prevent the for loop in the first place assign an empty array 97 // in case there are no cookies at all. 98 var cookies = document.cookie ? document.cookie.split("; ") : []; 99 var jar = { }; 100 for (var i = 0; i < cookies.length; i++) { 101 var parts = cookies[i].split("="); 102 var value = parts.slice(1).join("="); 103 try { 104 var foundKey = decodeURIComponent(parts[0]); 105 jar[foundKey] = converter.read(value, foundKey); 106 if (key === foundKey) { 107 break; 108 } 109 } catch (e) { } 110 } 111 return key ? jar[key] : jar; 112 } 113 return Object.create({ 114 set: set, 115 get: get, 116 remove: function (key, attributes) { 117 set( 118 key, 119 "", 120 assign({}, attributes, { 121 expires: -1, 122 }) 123 ); 124 }, 125 withAttributes: function (attributes) { 126 return init( 127 this.converter, 128 assign({ }, this.attributes, attributes) 129 ); 130 }, 131 withConverter: function (converter) { 132 return init(assign({ }, this.converter, converter), this.attributes); 133 }, 134 }, { 135 attributes: { 136 value: Object.freeze(defaultAttributes) 137 }, 138 converter: { 139 value: Object.freeze(converter) 140 }, 141 }); 142 } 143 var api = init(defaultConverter, { 144 path: "/" 145 });
146 /* eslint-enable no-var */ 147 return api; 148 }); 149 </script>
149 150 151
151<script> 152 document.addEventListener('DOMContentLoaded', function() { 153 const product_ids = [8617, 8616, 8615, 8614, 8613]; 154 product_ids.forEach(product_id => { 155 const p = document.querySelector(`.container[product-id="${product_id}"] .product-features-container`); 156 157 if (p) { 158 const xpath = './/strong[text()="Certification:"]/following-sibling::span'; 159 const span = document.evaluate(xpath, p, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 160 if (span) { 161 span.textContent = "Yes"; 162 } 163 } 164 }); 165 }); 166 </script>
166 167 168 169
169<script> 170 document.addEventListener('DOMContentLoaded', function() { 171 const toggleButton = document.getElementById('toggleButton'); 172 const section = document.getElementById('set-up-account'); 173 174 if (toggleButton) { 175 toggleButton.addEventListener('click', function() { 176 if (section.classList.contains('hidden')) { 177 section.classList.remove('hidden'); 178 toggleButton.textContent = 'Set Up Account'; 179 } else { 180 section.classList.add('hidden'); 181 toggleButton.textContent = 'Set Up Account'; 182 } 183 }); 184 } 185 }); 186 </script>
186 187 188 189
189<script> 190 document.addEventListener("DOMContentLoaded", function() { 191 const viewMoreButton = document.getElementById('view-more'); 192 193 if (!viewMoreButton) { 194 return; 195 } 196 197 viewMoreButton.addEventListener('click', function() { 198 const hiddenWidgets = document.querySelectorAll('#widget-39756, #widget-39759, #widget-39760, #widget-39762, #widget-39779, #widget-39780, #widget-39781, #widget-39782, #widget-39783'); 199 200 // Check if hidden widgets are currently hidden 201 if (hiddenWidgets[0].style.display === 'none') { 202 // Show hidden widgets 203 hiddenWidgets.forEach(widget => { 204 widget.style.display = 'block'; // Show the hidden widgets 205 }); 206 this.textContent = 'View Less Modules'; 207 } else { 208 // Hide widgets again 209 hiddenWidgets.forEach(widget => { 210 widget.style.display = 'none'; // Hide the widgets 211 }); 212 this.textContent = 'View More Modules'; 213 } 214 }); 215 }); 216 </script>
216 217 218 219 220
221<script> 222 window.dataLayer = window.dataLayer || []; 223 function gtag(){dataLayer.push(arguments);} 224 gtag('consent', 'default', { 225 ad_storage: 'denied', 226 ad_user_data: 'denied', 227 ad_personalization: 'denied', 228 analytics_storage: 'denied', 229 wait_for_update: 500 230 }); 231</script>
231 232 233<!-- Google Tag Manager -->
234<script data-cookie-consent="tracking"> 235//<![CDATA[
vendor: 339 bytes, lines 235-241
235 236 237 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 238 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 239 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 240 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 241 })(window,document,'script','dataLayer',"
241GTM-KWQKRDC
vendor: 5 bytes, lines 241-242
241"); 242
243//]]> 244</script>
244<script data-cookie-consent="tracking"> 245//<![CDATA[
vendor: 339 bytes, lines 245-251
245 246 247 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 248 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 249 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 250 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 251 })(window,document,'script','dataLayer',"
251GTM-T6ZT69J
vendor: 5 bytes, lines 251-252
251"); 252
253//]]> 254</script>
254<!-- End Google Tag Manager --> 255 256<meta content="false" name="turbo-prefetch"> 257<meta content="width=device-width, initial-scale=1, user-scalable=0" name="viewport"> 258<meta name="csrf-param" content="authenticity_token" /> 259<meta name="csrf-token" content="NkP0PITd-xCwNZM9VPpUbKNImuRYP9KseSnh01D8lQFxAiwAnfsXZz1wNEN3e_Haau0eSEtbJ1OZfHuR7HCzlw" /> 260<link rel="icon" type="image/png" href="https://cdn.files.rapidlms.com/view/34/8b/06/94/e3/98/aa/1f/e0/90/77/54/20/2b/37/7e/48x48%3E/danatec-icon.png" /> 261<link rel="stylesheet" href="https://cdn.assets.rapidlms.com/assets/fontawesome-fonts-7c2d238744ff7f56c895e443356f401eaeba0d2e495359b42ecb27659f411bd3.css" media="all" data-turbo-track="reload" /> 262<link rel="stylesheet" href="https://cdn.assets.rapidlms.com/assets/fontawesome-classes-8d5f7096fe7706a2fe940378c660b563892be8be4dd99cb6cee0632c3a3a8651.css" media="print" data-turbo-track="reload" onload="this.media='all'" /> 263<noscript><link rel="stylesheet" href="https://cdn.assets.rapidlms.com/assets/fontawesome-classes-8d5f7096fe7706a2fe940378c660b563892be8be4dd99cb6cee0632c3a3a8651.css" media="all" data-turbo-track="reload" /></noscript> 264<style>@layer base, sections, widgets;</style> 265<link rel="stylesheet" href="https://cdn.assets.rapidlms.com/assets/page-layered-1427cf85bf06b9e9fda21792bb78c9b9bb8755371a25195488ffa5a7f1373e16.css" media="all" data-turbo-track="reload" /> 266<link rel="stylesheet" href="https://cdn.assets.rapidlms.com/assets/print-layered-b166e22f10443325dcfc0a0ce73014d6d0e84855a11085e374e905f8256edbad.css" media="print" data-turbo-track="reload" /> 267<link crossorigin="true" href="https://cdn.assets.rapidlms.com" rel="preconnect"> 268<link crossorigin="true" href="https://fonts.gstatic.com" rel="preconnect"> 269<link as="style" crossorigin="true" href="https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700&display=swap" rel="preload"> 270<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700&display=swap" media="print" reloadable="true" data-turbo-track="reload" onload="this.media="all"" /> 271<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700&display=swap" media="all" reloadable="true" data-turbo-track="reload" /></noscript> 272<style> 273 body, button, input, select, textarea { 274 font-family: "Montserrat", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; 275 } 276 277 html, body { 278 color: #333333; 279 background: #ffffff; 280 } 281</style> 282<link rel="stylesheet" href="https://danatec.com/stylesheets/3679.css" media="all" reloadable="true" data-turbo-track="reload" /> 283<link rel="stylesheet" href="https://cdn.assets.rapidlms.com/assets/protected-82d1ef8d9ef37530cba87ea47d52d09692039a77c9fa636d1f288e4904cfe662.css" media="all" data-turbo-track="reload" /> 284 285
286<script src="https://cdn.assets.rapidlms.com/assets/translations-ebe6e3ca8cead927cdfeb1d05f2ee6b5078c7c053fc828dcfe3ab6a98898f888.js"></script>
vendor: 1 bytes, line 286
286
287<script> 288//<![CDATA[ 289I18n.defaultLocale = "en"; 290I18n.locale = "en"; 291I18n.availableLocales = ["en", "fr", "es", "pa", "pt"]; 292 293//]]> 294</script>
vendor: 1 bytes, line 294
294
295<script src="https://cdn.assets.rapidlms.com/assets/page_libs-888971a3489bd6f9bce874fdd79127097b771ec2b9a9139bb4852985738919b4.js" data-cookie-consent="strictly-necessary"></script>
vendor: 1 bytes, line 295
295
296<script src="https://cdn.assets.rapidlms.com/assets/im_shim-452b6840370e2efb2d149917404fc3eb0a55d1734d610b9f9880f9011afd4d11.js" data-cookie-consent="strictly-necessary"></script>
vendor: 1 bytes, line 296
296
297<script type="importmap" data-turbo-track="reload">{ 298 "imports": { 299 "@rails/request.js": "https://cdn.assets.rapidlms.com/assets/requestjs-1bf707251186c966aab06cc66da90858ce9ffc09b3e866ea7c8e73377c80d0b2.js", 300 "im_application": "https://cdn.assets.rapidlms.com/assets/im_application-aa8a4186ed6ff96df268cc47bba7aa6ced9c44c8c08e96000d92f6e24d49f5f9.js", 301 "@hotwired/turbo-rails": "https://cdn.assets.rapidlms.com/assets/turbo.min-eb73648d459b381664c55223c766b5d546a14bfe9aa58ee9755a626884dcb622.js", 302 "@hotwired/stimulus": "https://cdn.assets.rapidlms.com/assets/stimulus.min-429fc329533681b24900fa4f44f31ae4bed48e78fe9093e4d787db7bf0655b03.js", 303 "@hotwired/stimulus-loading": "https://cdn.assets.rapidlms.com/assets/stimulus-loading-25bf9d9fa64457bd6c50eeea0e22e761c986662c73b15d29201d380a28dea872.js", 304 "slick-carousel": "https://cdn.assets.rapidlms.com/assets/slick-carousel-dcfe891d6caac59bafa4b5cd29d00134950a2f6a1f0b9b64b6a7b7e7c98716e3.js", 305 "wow.js": "https://cdn.assets.rapidlms.com/assets/wow.js-84e4d81b336353fb191f7624780a5b1ed0bd381f4288c8a4fa8c262bf1c1d792.js", 306 "zxcvbn": "https://cdn.assets.rapidlms.com/assets/zxcvbn-f1a8533621700d8d30d2311a5fdca1910ee8fb9c197e1cfb6fa6ea98c41879ef.js", 307 "@rails/actioncable": "https://cdn.assets.rapidlms.com/assets/@rails--actioncable-027a7169da1258047b753eb099daa6fb54aacdc141a0667c0fe119b5ecca19e4.js", 308 "underscore": "https://cdn.assets.rapidlms.com/assets/underscore/underscore-esm-432399347b2d66d9dbf7103bc8cbe5e760832939fe85e9c9992f6918ccf2dade.js", 309 "controllers/ace_controller": "https://cdn.assets.rapidlms.com/assets/controllers/ace_controller-b9cece669dd972388dac4db7b5705072142a95a97b93e5f2ee9d30385d101cfc.js", 310 "controllers/add_to_cart_controller": "https://cdn.assets.rapidlms.com/assets/controllers/add_to_cart_controller-42199d0cf87c162c89b3270d781c4f2d6ca76301be17373cdcb50fd8df69f5ab.js", 311 "controllers/address_controller": "https://cdn.assets.rapidlms.com/assets/controllers/address_controller-17ab382705d15e204034ae4bf882e3ee36b5ca390df7596108c81919e81e16c1.js", 312 "controllers/admin/autocomplete_controller": "https://cdn.assets.rapidlms.com/assets/controllers/admin/autocomplete_controller-9f47c10d233302af63ec7d3d3603178293e1631514c1484f9a48d37d02c6b947.js", 313 "controllers/application": "https://cdn.assets.rapidlms.com/assets/controllers/application-7053e605fe0bf7bcec405a97237a075accbc231295412d0c41f95b23a7999af0.js", 314 "controllers/attache_controller": "https://cdn.assets.rapidlms.com/assets/controllers/attache_controller-41442909e31be9262b6149da9a021f2d88bb37085091b305d62d4e459b009143.js", 315 "controllers/broadcast_event_controller": "https://cdn.assets.rapidlms.com/assets/controllers/broadcast_event_controller-6aad3eb02be9ef9b75528cd040cfbd51db0b58e583654a699a3dd52a3005cc33.js", 316 "controllers/call_to_action_controller": "https://cdn.assets.rapidlms.com/assets/controllers/call_to_action_controller-86ba87abbd0664fa08ff433934875e13115dcdcb63d1850a8d92c596ee11abf6.js", 317 "controllers/catalog_controller": "https://cdn.assets.rapidlms.com/assets/controllers/catalog_controller-b2c069287f7a4088a3b4eeb1a7651a1d23a7e3ea810785db0dca75e72166a0fe.js", 318 "controllers/checkbox_toggle_controller": "https://cdn.assets.rapidlms.com/assets/controllers/checkbox_toggle_controller-a8c454ca54f168605a3f7af1feb9e61c3a7af8c4a26a22428b4c5d0ec620a377.js", 319 "controllers/checkout_controller": "https://cdn.assets.rapidlms.com/assets/controllers/checkout_controller-3328d42329b8676d897ae6a889d9b26f7b4e7ee7f620530fba4135bc46cf2d5a.js", 320 "controllers/color_picker_controller": "https://cdn.assets.rapidlms.com/assets/controllers/color_picker_controller-26c6684c35aba963de96ae5836ad457fd6383dbbe05776d339113871f151ddd2.js", 321 "controllers/conditional_content_show_controller": "https://cdn.assets.rapidlms.com/assets/controllers/conditional_content_show_controller-8e0a42e35b0c0e83e113bc1c87417ca51af73b955c489e8cd5bc7525970c7e68.js", 322 "controllers/contact_form_controller": "https://cdn.assets.rapidlms.com/assets/controllers/contact_form_controller-491f39edf32362ecbdd5937aacb70c2c7326dc8370207b9bc68c63d9f5599292.js", 323 "controllers/container_toggle_controller": "https://cdn.assets.rapidlms.com/assets/controllers/container_toggle_controller-72d07c5de9efd84224e7cc8fe382221b4ca44051c2921cdd28a3c68b1e5e212a.js", 324 "controllers/content_toggle_controller": "https://cdn.assets.rapidlms.com/assets/controllers/content_toggle_controller-b44e72484b4a1eb8a0d98cea3c45d1f2529bef4f0381b6b5f11f26f78cedce9a.js", 325 "controllers/cookie_consent_controller": "https://cdn.assets.rapidlms.com/assets/controllers/cookie_consent_controller-37e5826a073bd3aae61b15265702480d06e7d1268b1548bb2624a08ed941d498.js", 326 "controllers/coordinate_user_controller": "https://cdn.assets.rapidlms.com/assets/controllers/coordinate_user_controller-2955d5f8c5522b97615bdde5e918bc4561a43eb920e467cabff5024eef5b5657.js", 327 "controllers/coordinate_user_migration_controller": "https://cdn.assets.rapidlms.com/assets/controllers/coordinate_user_migration_controller-3fdc325edd75cb394d
32777ffe78a821f9cb9cc46cc4212e080e6db9ff191c24c2f.js", 328 "controllers/dismiss_controller": "https://cdn.assets.rapidlms.com/assets/controllers/dismiss_controller-ff1a86d214955d193337e91a12114281c78c6db213e5afb3d6d371dfa5cad253.js", 329 "controllers/dual_range_slider_controller": "https://cdn.assets.rapidlms.com/assets/controllers/dual_range_slider_controller-460b995c1537f59bed21d5248e89c9ba53284c1ab310beb75806756f638d8b17.js", 330 "controllers/fa_select_controller": "https://cdn.assets.rapidlms.com/assets/controllers/fa_select_controller-2d8633e776684a5131e098e876ea70d6e42becebcbf9bc7c791d41489687bd68.js", 331 "controllers/form_validation_controller": "https://cdn.assets.rapidlms.com/assets/controllers/form_validation_controller-3f538d03d1b6d1f58ac9e36cb731b4f22c9586431b8f979c45ce25c433c5191e.js", 332 "controllers/ga_controller": "https://cdn.assets.rapidlms.com/assets/controllers/ga_controller-2a830394c4b9085de62991a2e9ffb3f3f1745d9e45907e691c637d224db7e10e.js", 333 "controllers/image_slides_controller": "https://cdn.assets.rapidlms.com/assets/controllers/image_slides_controller-1433ed1c8ebb444f3e88355d9f1419b2adf53cc0b50fc755a7d581867949a292.js", 334 "controllers": "https://cdn.assets.rapidlms.com/assets/controllers/index-029224d129cd1066e14bada3512553d2df176e613b43f7fcdfdd9a1c68c853dc.js", 335 "controllers/lv_system_check_controller": "https://cdn.assets.rapidlms.com/assets/controllers/lv_system_check_controller-f5978abee4d2c89e4f01b299da0a44c1b001c9903c951f58774f67b7e118ac4a.js", 336 "controllers/menu_toggle_controller": "https://cdn.assets.rapidlms.com/assets/controllers/menu_toggle_controller-59368ae2e065c95f97a82f2157d3c50e3497208e1ecb8789c8cc794ab00729fd.js", 337 "controllers/mfa_resend_controller": "https://cdn.assets.rapidlms.com/assets/controllers/mfa_resend_controller-196beb758cf396fe80e429f821a50308c2a00a8e011924d04caaa600a6d1c5cf.js", 338 "controllers/multi_select_controller": "https://cdn.assets.rapidlms.com/assets/controllers/multi_select_controller-a90fa04ae9906e159b6a5d9a78abb84e55451dcb28f9fe25be86e518de09461f.js", 339 "controllers/no_scroll_controller": "https://cdn.assets.rapidlms.com/assets/controllers/no_scroll_controller-c6924af45eb4fef04047a69e960d8ad4835225b12b058e6c3f8226a314c186c1.js", 340 "controllers/overlay_controller": "https://cdn.assets.rapidlms.com/assets/controllers/overlay_controller-095056295e06800e8d14d8932eec60b39517930966de3efbd72605788e068182.js", 341 "controllers/page_editor_controller": "https://cdn.assets.rapidlms.com/assets/controllers/page_editor_controller-6de039726cf12455097ff24e485f8eb8af1c48f1717617f42fbb8e434bb7f627.js", 342 "controllers/page_preview_controller": "https://cdn.assets.rapidlms.com/assets/controllers/page_preview_controller-20350ebd7a5fc0c4a24c83d5819e9b9cc7c22d210fe31a856e112d6ca6210799.js", 343 "controllers/password_complexity_controller": "https://cdn.assets.rapidlms.com/assets/controllers/password_complexity_controller-634815180d1785421194b8e8ae504b6ce155accdc8b065e2b6e0c3908aca33ce.js", 344 "controllers/pricing_table_controller": "https://cdn.assets.rapidlms.com/assets/controllers/pricing_table_controller-720120833a981734b20a6e7c35bf7b111a0bb14ec6db36839c196eff15ec1507.js", 345 "controllers/print_controller": "https://cdn.assets.rapidlms.com/assets/controllers/print_controller-2abe71dc94a8275d14ab863d2f17715c94ddad20e5d127a78075c1c92862ab42.js", 346 "controllers/product_catalog_controller": "https://cdn.assets.rapidlms.com/assets/controllers/product_catalog_controller-d3c14665c4da5b11fde705319217251c321dba53345f39577d6fc0d8909d1bc0.js", 347 "controllers/product_rating_controller": "https://cdn.assets.rapidlms.com/assets/controllers/product_rating_controller-9ccc8e05568275b79a89817a434af5883d9394c23774e5b85ffc26a60891a362.js", 348 "controllers/rapid_events_controller": "https://cdn.assets.rapidlms.com/assets/controllers/rapid_events_controller-910ae070aa69cf1600d40a5e66f55d79e939bc39ff0fe9db5ef39c06a9e2777e.js", 349 "controllers/redactor_controller": "https://cdn.assets.rapidlms.com/assets/controllers/redactor_controller-d201cd01d33a328510beede3704f145f61af44da43ce54bdfa3ca870b2ce887e.js", 350 "controllers/reveal_password_controller": "https://cdn.assets.rapidlms.com/assets/controllers/reveal_password_controller-157127fc71c104fba1165052e7df26c9bb621dff791625be9d1bdf674a3450ba.js", 351 "controllers/show_all_controller": "https://cdn.assets.rapidlms.com/assets/controllers/show_all_controller-dd30966da659707030a4241b4f12a0e7a30f8ef71155d42faae77af6579f8494.js",
352 "controllers/site_nav_controller": "https://cdn.assets.rapidlms.com/assets/controllers/site_nav_controller-f61662cf3a96b083b54a2b0b224ab215ba1487734d1d1237948e6ff760223967.js", 353 "controllers/site_search_controller": "https://cdn.assets.rapidlms.com/assets/controllers/site_search_controller-2bce7acc1a6a1134e8daadd8d5233130e5fd5c187abc179f4012ced24a161d7a.js", 354 "controllers/slick_controller": "https://cdn.assets.rapidlms.com/assets/controllers/slick_controller-8bd3f3a61dba9b45f54b564790b57ed9ba492e1b89fe3934d2d7b3404b829162.js", 355 "controllers/slider_controller": "https://cdn.assets.rapidlms.com/assets/controllers/slider_controller-4f2c9d4c37f3c292d0f77b9fa51b21ca0fda97f296ed80a5dbcab58f98bd4f8f.js", 356 "controllers/stripe_subscription_controller": "https://cdn.assets.rapidlms.com/assets/controllers/stripe_subscription_controller-7fb49d38bc7ad96430103ed21d376ce387f2610a6da838bd5e9587bce34f62b1.js", 357 "controllers/submit_form_controller": "https://cdn.assets.rapidlms.com/assets/controllers/submit_form_controller-ef706bdbe306f962bc9edfae4e444de0f7416d90839fd18b05f3037e8f0953cc.js", 358 "controllers/tabs_controller": "https://cdn.assets.rapidlms.com/assets/controllers/tabs_controller-2f6a3110b7f4f3925663738b611e804ae3b115be882db1cd6f7fd6083be5f1e2.js", 359 "controllers/testimonials_controller": "https://cdn.assets.rapidlms.com/assets/controllers/testimonials_controller-500d5055d5d47db96d809de7cfb89beca3055367683457a17f43881bcb74272f.js", 360 "controllers/tooltip_controller": "https://cdn.assets.rapidlms.com/assets/controllers/tooltip_controller-0ba083a718f8e8076396d41fa495b37ed1c1625d9e4139dce83332506081a446.js", 361 "channels/consumer": "https://cdn.assets.rapidlms.com/assets/channels/consumer-1f32b1fa3d579d7ca3e5b517b397f4984d9e9803744fe8ab7b2a5c27e6427ccc.js" 362 } 363}</script>
363 364<link rel="modulepreload" href="https://cdn.assets.rapidlms.com/assets/im_application-aa8a4186ed6ff96df268cc47bba7aa6ced9c44c8c08e96000d92f6e24d49f5f9.js"> 365<link rel="modulepreload" href="https://cdn.assets.rapidlms.com/assets/turbo.min-eb73648d459b381664c55223c766b5d546a14bfe9aa58ee9755a626884dcb622.js"> 366<link rel="modulepreload" href="https://cdn.assets.rapidlms.com/assets/stimulus.min-429fc329533681b24900fa4f44f31ae4bed48e78fe9093e4d787db7bf0655b03.js"> 367<link rel="modulepreload" href="https://cdn.assets.rapidlms.com/assets/stimulus-loading-25bf9d9fa64457bd6c50eeea0e22e761c986662c73b15d29201d380a28dea872.js"> 368<link rel="modulepreload" href="https://cdn.assets.rapidlms.com/assets/slick-carousel-dcfe891d6caac59bafa4b5cd29d00134950a2f6a1f0b9b64b6a7b7e7c98716e3.js"> 369<link rel="modulepreload" href="https://cdn.assets.rapidlms.com/assets/wow.js-84e4d81b336353fb191f7624780a5b1ed0bd381f4288c8a4fa8c262bf1c1d792.js">
370<script type="module">import "im_application"</script>
370 371 372<link rel="canonical" href="https://danatec.com/contact"> 373<meta content="Contact Us | Danatec Locations and Hours | Danatec.com" property="og:title"> 374<meta content="website" property="og:type"> 375<meta content="https://danatec.com/contact" property="og:url"> 376<meta content="Danatec.com" property="og:site_name"> 377<meta content="https://cdn.files.rapidlms.com/view/b5/d3/18/fc/92/1f/ca/e9/c4/f9/38/9b/0e/51/0f/da/original/danatec_preview_link_logojpg.jpg" property="og:image"> 378<meta content="Contact Danatec for Safety Training " name="description" property="og:description"> 379 380 381<title>Contact Us | Danatec Locations and Hours | Danatec.com</title> 382 383 384</head> 385<body class="regular-header country-unknown" data-action="keydown.esc@document->overlay#close" data-controller="rapid-events ga overlay " data-ga-debug-value="false" data-page-preview-page-gid-value="Z2lkOi8vZmVuaXgvUGFnZS8zNjc5" data-page-preview-theme-gid-value="Z2lkOi8vZmVuaXgvVGhlbWUvNzcy" id="page_3679"> 386<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 386-387
386 387<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
387GTM-KWQKRDC
vendor: 152 bytes, lines 387-389
387" 388 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 389<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
389GTM-T6ZT69J
vendor: 85 bytes, lines 389-390
389" 390 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
391<!-- End Google Tag Manager (noscript) --> 392 393<div class="container"> 394<header class="page-header" data-controller="site-nav"> 395<nav class="global-nav"> 396<ul> 397<li class="sign-in"> 398<a href="/users/sign_in"><i aria-hidden="true" class="fa fa-sign-in"></i> 399<span>Log In or Create Account</span> 400</a></li> 401<li class="review-cart"> 402<turbo-frame class="cart_header" id="cart_header"><details class="shopping-cart"> 403<summary> 404<turbo-frame class="cart_count" id="cart_count"><div class="toggle-review"> 405<i aria-hidden="true" class="fa fa-shopping-cart"></i> 406<sup>0</sup> 407<span>Cart</span> 408</div> 409</turbo-frame> 410</summary> 411<div class="review-items"> 412<div class="cart-wrap"> 413<turbo-frame class="cart_items" id="cart_items"><table class="shopping-cart"> 414<thead> 415<tr> 416<th>Item</th> 417<th>Price</th> 418<th>QTY</th> 419<th>Total</th> 420<th></th> 421</tr> 422</thead> 423<tbody> 424 425</tbody> 426</table> 427</turbo-frame> 428</div> 429<turbo-frame class="cart-totals" id="cart_totals"><div class="cart-subtotal"><div>Subtotal:</div><div>$0.00 CAD</div></div> 430<div class="cart-total"><div>Total:</div><div>$0.00 CAD</div></div> 431</turbo-frame> 432<div class="review-actions"> 433<a class="button proceed-to-checkout" target="_top" href="/orders/new"><span>Checkout</span> 434<i aria-hidden="true" class="fa fa-chevron-right"></i> 435</a></div> 436</div> 437</details> 438</turbo-frame> 439</li> 440<li class="product-search" data-controller="site-search"> 441<a class="toggle-search" data-action="click->site-search#toggle"> 442<i aria-hidden="true" class="fa fa-search"></i> 443<form class="search-form" action="/search" accept-charset="UTF-8" method="get"><input type="text" name="q" id="q" class="search-input" placeholder="Search" data-site-search-target="input" /> 444</form></a> 445</li> 446</ul> 447</nav> 448<nav class="site-nav" data-site-nav-target="menu"> 449<div class="center-wrap"> 450<div class="logo"> 451<a href="/"><img src="https://cdn.files.rapidlms.com/view/4f/d9/7a/d0/83/99/7f/bd/ea/87/db/b5/df/50/e7/06/240x75%3E/Danatec_Logo_Two-Colour_RGB+%281%29.png" loading="lazy" /> 452</a></div> 453<a class="menu-toggle is-closed" data-controller="menu-toggle"> 454<span></span> 455</a> 456<ul class="menu-stack menu-items"> 457<li class=""> 458<a class="menu-item" href="/industries"><span class="bold">Industries</span> 459<i aria-hidden="true" class="fa fa-caret-down"></i> 460</a><ul class="menu-stack"> 461<li class=""> 462<a class="menu-item" href="/industries/construction-safety-training">Construction Site Safety Training & Courses for Professionals | Danatec.com</a> 463</li> 464<li class=""> 465<a class="menu-item" href="/industries/workplace-safety-training">Workplace Safety Training | Workplace Health & Safety Courses</a> 466</li> 467<li class=""> 468<a class="menu-item" href="/industries/energy-utilities-safety-training">Energy & Utilities Training for Professionals and Teams</a> 469</li> 470<li class=""> 471<a class="menu-item" href="/industries/manufacturing-safety-training">Manufacturing & Warehousing Safety Training</a> 472</li> 473<li class=""> 474<a class="menu-item" href="/industries/mining-safety-training">Mining & Forestry Safety Training for Professionals and Teams</a> 475</li> 476<li class=""> 477<a class="menu-item" href="/industries/oil-gas-safety-training">Oil & Gas Safety Training for Professionals and Teams</a> 478</li> 479<li class=""> 480<a class="menu-item" href="/industries/hospitality-safety-training">Safety Training for Retail, Hospitality & Public Services Training for Professionals and Teams</a> 481</li> 482<li class=""> 483<a class="menu-item" href="/industries/transportation-safety-training">Transportation & Logistics Training</a> 484</li> 485 486</ul> 487</li> 488<li class=""> 489<a class="menu-item" href="/courses"><span class="bold">Courses</span> 490<i aria-hidden="true" class="fa fa-caret-down"></i> 491</a><ul class="menu-stack"> 492<li class=""> 493<a class="menu-item" href="https://danatec.com/courses">All Courses</a> 494</li> 495<li class=""> 496<a class="menu-item" href="/courses/instructor-led-courses">Instructor Led Courses</a> 497</li> 498<li class=""> 499<a class="menu-item" href="/courses/driver-safety-training">Driver Safety Training</a> 500</li> 501<li class=""> 502<a class="menu-item" href="/courses/electrical-safety-courses">Electrical Safety Training</a> 503</li> 504<li class=""> 505<a class="menu-item" href="/courses/fall-protection-courses">Fall Protection Training</a> 506</li> 507<li class=""> 508<a class="menu-item" href="/courses/ground-disturbance-courses">Ground Disturbance Training</a> 509</li> 510<li class=""> 511<a class="menu-item" href="/courses/joint-health-safety-committee-courses">Joint Health and Safety Committee (JHSC) Certification</a> 512</li> 513<li class=""> 514<a class="menu-item" href="/courses/lifting-device-courses">Lifting Devices Training</a> 515</li> 516<li class=""> 517<a class="menu-item" href="/courses/transportation-dangerous-goods-courses">Transportation of Dangerous Goods (TDG) Training</a> 518</li> 519<li class=""> 520<a class="menu-item" href="/courses/whmis">WHMIS Training</a> 521</li> 522 523</ul> 524</li> 525<li class=""> 526<a class="menu-item" href="/business-solutions"><span class="bold">Business Solutions</span> 527<i aria-hidden="true" class="fa fa-caret-down"></i> 528</a><ul class="menu-stack"> 529<li class=""> 530<a class="menu-item" href="/business-solutions/dispatch">SCORM LMS Compliant Training Integration | Dispatch</a> 531</li> 532<li class=""> 533<a class="menu-item" href="/business-solutions/train-your-team">Safety Training for Employees â Online & Instructor-Led Programs</a> 534</li> 535<li class=""> 536<a class="menu-item" href="/business-solutions/reseller-program">Reseller Program | Partner to Offer Trusted Safety Training</a> 537</li> 538 539</ul> 540</li> 541<li class=""> 542<a class="menu-item" href="https://danatec.com/books-materials">Publications</a> 543</li> 544<li class=""> 545<a class="menu-item" href="https://danatec.com/contact">Contact Us</a> 546</li> 547 548</ul> 549</div> 550</nav> 551 552</header> 553 554<main class="page-main" data-page-preview-target="sectionContainer"> 555<turbo-frame id="flash_message"><div class="dynamic-flash"> 556</div> 557</turbo-frame> 558<section class="widget-section" data-section-id="15549" data-wow-delay="0s" id="section_15549"> 559 560 561 562<div class="widget-container"> 563<div class="widget html" data-widget-id="32370" data-wow-delay="0s" id="widget-32370"> 564<div class="widget-elements"> 565<div class="hero-header"> 566 <div id="breadcrumbs"> 567 <ul> 568 <li><a href="/">Home</a></li> 569 <li>Contact</li> 570 </ul> 571 </div> 572 <div class="row"> 573 <div class="col"> 574 <h1>Contact our Support Team</h1> 575 </div> 576 </div> 577</div> 578</div> 579 580</div> 581 582</div> 583</section> 584<section class="widget-section" data-section-id="15569" data-wow-delay="0s" id="section_15569"> 585 586 587 588<div class="widget-container"> 589<div class="widget html" data-widget-id="32409" data-wow-delay="0s" id="widget-32409"> 590<div class="widget-elements"> 591<div class="contact-methods"> 592 <div class="row"> 593 <div class="col form-wrap"> 594 <div class="contact-form"> 595 <h2>Send us an email</h2> 596 <div class="description"> 597 <p>Our Support Team is available 5 days a week, from Monday to Frid
597ay, from 7:00 AM to 5:00 PM MST.</p> 598 <p>We are closed on Statutory Holidays.</p> 599 <p>You can also reach us by phone at <a href="tel:1-800-465-3366">1-800-465-3366</a>.</p> 600 </div> 601 602 <p class="note">Fields marked with * are mandatory.</p> 603 604 <form class="contact-form" id="contact-form" action="https://n8n.sandbox.it.weknowtraining.ca/webhook/contact-form" method="post" novalidate="true"> 605 <div class="row"> 606 <div class="col"> 607 <div class="field-wrap"> 608 <label for="fname">First name*</label> 609 <input type="text" name="fname" id="fname" required="required" aria-required="true"> 610 </div> 611 </div> 612 <div class="col"> 613 <div class="field-wrap"> 614 <label for="lname">Last name*</label> 615 <input type="text" name="lname" id="lname" required="required" aria-required="true"> 616 </div> 617 </div> 618 </div> 619 620 <div class="row"> 621 <div class="col"> 622 <div class="field-wrap"> 623 <label for="email">Email*</label> 624 <input id="email" name="email" type="email" required="required" aria-required="true"> 625 </div> 626 </div> 627 <div class="col"> 628 <div class="field-wrap"> 629 <label for="tel">Phone*</label> 630 <input id="tel" name="tel" type="tel" required> 631 </div> 632 </div> 633 </div> 634 635 <div class="field-wrap"> 636 <label for="subject">Subject*</label> 637 <input type="text" name="subject" id="subject" required="required"> 638 </div> 639 640 <div class="field-wrap"> 641 <label for="message">Question or Comment Details*</label> 642 <p>Please let us know a few details about your question or comment.</p> 643 <textarea name="message" id="message" required="required"></textarea> 644 </div> 645 646 <input type="hidden" id="ip" name="ip"> 647 <input type="hidden" id="gclid" name="gclid" value="" autocomplete="off"> 648 649 <input type="hidden" name="storefront_id" value="Danatec Training" autocomplete="off"> 650 <input type="hidden" name="product_id" value="Danatec" autocomplete="off"> 651 <input type="hidden" name="redirect_url" value="https://danatec.com/contact/?success=true" autocomplete="off"> 652 653 <input type="hidden" name="utm_term" value="" autocomplete="off"> 654 <input type="hidden" name="utm_source" value="adwords" autocomplete="off"> 655 <input type="hidden" name="utm_medium" value="ppc" autocomplete="off"> 656 657 <div class="submit-wrap"> 658 <button type="submit" name="submit" class="button primary">Submit</button> 659 </div> 660 </form> 661 </div> 662 </div> 663 664 <div class="col info-wrap"> 665 <div class="contact-info"> 666 <div class="item"> 667 <p class="title">Toll-free:</p> 668 <p class="details"><a href="tel:1-800-465-3366">1-800-465-3366</a></p> 669 </div> 670 <div class="item"> 671 <p class="title">Sales inquiry:</p> 672 <p class="details">[email protected]</p> 673 </div> 674 <div class="item address-wrap"> 675 <p class="strong">Address</p> 676 <p class="address">15315 123 Ave NW <br>Edmonton, AB<br> T5V 1S6</p> 677 <p class="directions"><a href="https://maps.app.goo.gl/hRFiCorZ9uaZWDWC6" target="_blank" rel="noopener">Get directions</a></p> 678 </div> 679 </div> 680 681 <div class="contact-help"> 682 <h3>Already a Danatec Customer?</h3> 683 <p>Visit our <a href="https://support.danatec.com">Help Center</a> or contact us using the form.</p> 684 </div> 685 </div> 686 </div> 687 </div> 688 689 <!-- FD Form scripts --> 690 691
691<script> 692 document.addEventListener('DOMContentLoaded', function () { 693 fetch('https://api.ipify.org?format=json') // Use 'https://api.ipify64.org?format=json' for IPv6 694 .then(response => { 695 if (!response.ok) { 696 throw new Error(`HTTP error! status: ${response.status}`); 697 } 698 return response.json(); 699 }) 700 .then(data => { 701 const ipInput = document.getElementById('ip'); 702 if (ipInput) { 703 ipInput.value = data.ip; 704 console.log(`IP address: ${ipInput.value}`); 705 } else { 706 console.log(`No IP address was detected.`); 707 } 708 }) 709 .catch(error => console.error('Error fetching IP:', error)); 710 }); 711 </script>
711 712 713
713<script type="text/javascript"> 714 function waitForElm(selector) { 715 return new Promise((resolve) => { 716 if (document.querySelector(selector)) { 717 return resolve(document.querySelector(selector)); 718 } 719 720 const observer = new MutationObserver(() => { 721 if (document.querySelector(selector)) { 722 resolve(document.querySelector(selector)); 723 observer.disconnect(); 724 } 725 }); 726 727 observer.observe(document.body, { 728 childList: true, 729 subtree: true, 730 }); 731 }); 732 } 733 734 const elements = Array.from(document.querySelectorAll("[id]")); 735 736 elements.forEach(element => { 737 const id = element.id; 738 739 if (id.includes("page_")) { 740 console.log("ID found: " + id); 741 742 const page_id = document.querySelector(`#${id}`); 743 console.log(page_id); 744 745 const { url, params } = getUrlParams(); 746 if (page_id && params.success === "true" && params.ticket_id) { 747 const formContainer = document.querySelector(`#${id} main section:first-of-type .widget-container`); 748 const container = document.createElement("div"); 749 container.className = "message"; 750 container.textContent = `Thank you for submitting your message. Your ticket ID is: ${params.ticket_id}.`; 751 formContainer.insertAdjacentHTML('afterbegin', container.outerHTML); 752 } 753 754 console.log(url); 755 console.log(params); 756 } 757 }); 758 759 function getUrlParams() { 760 const urlParams = {}; 761 const queryString = window.location.search; 762 if (queryString.length > 0) { 763 queryString 764 .slice(1) 765 .split("&") 766 .forEach((param) => { 767 const keyValue = param.split("="); 768 urlParams[keyValue[0]] = decodeURIComponent(keyValue[1] || ""); 769 }); 770 } 771 772 return { 773 url: window.location.href, 774 params: urlParams, 775 }; 776 } 777 </script>
777 778 779 <!-- Form input validation --> 780
780<script type="text/javascript"> 781 function validateForm(form) { 782 var requiredFields = form.querySelectorAll("[required]"); 783 784 var errorMessages = form.querySelectorAll(".error-message"); 785 for (var i = 0; i < errorMessages.length; i++) { 786 errorMessages[i].remove(); 787 } 788 789 var inputErrorFields = form.querySelectorAll(".has-error-message"); 790 for (var i = 0; i < inputErrorFields.length; i++) { 791 inputErrorFields[i].classList.remove("has-error-message"); 792 } 793 794 var errorSummary = form.querySelector(".error-summary"); 795 if (errorSummary) { 796 errorSummary.remove(); 797 } 798 799 var errorList = []; 800 801 for (var i = 0; i < requiredFields.length; i++) { 802 var field = requiredFields[i]; 803 var fieldValue = field.value.trim(); 804 if (fieldValue === "") { 805 var errorMessage = document.createElement("div"); 806 var inputId = field.getAttribute("id"); 807 errorMessage.id = "error-" + inputId; 808 errorMessage.classList.add("error-message"); 809 errorMessage.textContent = "This field is required."; 810 field.parentNode.insertBefore(errorMessage, field.nextSibling); 811 field.parentNode.classList.add("has-error-message"); 812 field.parentNode.id = "anchor-" + inputId; 813 errorList.push({ inputId: inputId, message: "This field is required" }); 814 } 815 } 816 817 var emailField = form.querySelector("[type='email']"); 818 if (emailField && emailField.value.trim() !== "") { 819 var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 820 if (!emailRegex.test(emailField.value.trim())) { 821 var errorMessage = document.createElement("div"); 822 var inputId = emailField.getAttribute("id"); 823 errorMessage.id = "error-" + inputId; 824 errorMessage.classList.add("error-message"); 825 errorMessage.textContent = "Please enter a valid email address."; 826 emailField.parentNode.insertBefore(errorMessage, emailField.nextSibling); 827 emailField.parentNode.classList.add("has-error-message"); 828 emailField.parentNode.id = "anchor-" + inputId; 829 errorList.push({ inputId: inputId, message: "Please enter a valid email address" }); 830 } 831 } 832 833 if (errorList.length > 0) { 834 var errorSummary = document.createElement("div"); 835 errorSummary.classList.add("error-summary"); 836 var errorListHTML = ""; 837 for (var i = 0; i < errorList.length; i++) { 838 var inputLabel = form 839 .querySelector("label[for='" + errorList[i].inputId + "']") 840 .textContent.trim() 841 .replace("*", ""); 842 errorListHTML += 843 "<li>" + 844 errorList[i].message + 845 ": <a href='#anchor-" + 846 errorList[i].inputId + 847 "'>" + 848 inputLabel + 849 "</a></li>"; 850 } 851 errorSummary.innerHTML = 852 "<p><strong>ERROR:</strong> Please correct the following before continuing</p><ul>" + 853 errorListHTML + 854 "</ul>"; 855 form.appendChild(errorSummary); 856 return false; 857 } 858 859 return true; 860 } 861 </script>
vendor: 66 bytes, lines 861-863
861 862 863 <script src="https://www.google.com/recaptcha/api.js?render=
8636LcDCDIqAAAAALxvj0be6Eomf1nCycVM63WHcEPx
vendor: 17 bytes, lines 863-865
863"></script> 864 865
865<script> 866 function onClick(e) { 867 e.preventDefault(); 868 grecaptcha.ready(() => { 869 grecaptcha.execute("6LcDCDIqAAAAALxvj0be6Eomf1nCycVM63WHcEPx", { action: "submit" }).then(token => { 870 const form = document.querySelector(".contact-form form"); 871 if (form) { 872 const hiddenInput = document.createElement("input"); 873 hiddenInput.type = "hidden"; 874 hiddenInput.name = "g-recaptcha-response"; 875 hiddenInput.value = token; 876 form.appendChild(hiddenInput); 877 878 console.log(document.querySelector('input[name="g-recaptcha-response"]').value); 879 if (validateForm(form)) { 880 HTMLFormElement.prototype.submit.call(form); 881 } 882 } 883 }); 884 }); 885 } 886 887 document.addEventListener("DOMContentLoaded", () => { 888 const form = document.querySelector(".contact-form form"); 889 if (form) { 890 form.setAttribute("novalidate", true); 891 form.addEventListener("submit", onClick); 892 } 893 }); 894 895 waitForElm(".error-summary").then(function () { 896 document.querySelectorAll(".error-summary a[href^='#']").forEach(a => 897 a.onclick = function (e) { 898 e.preventDefault(); 899 var target = document.querySelector(a.getAttribute("href")); 900 if (target) { 901 window.scrollTo({ top: target.offsetTop, behavior: "smooth" }); 902 } 903 } 904 ); 905 }); 906 </script>
906 907
908<script> 909 (function () { 910 const COOKIE_NAME = "gclid"; 911 const COOKIE_DAYS = 90; 912 913 function getParam(name) { 914 const params = new URLSearchParams(window.location.search); 915 const val = params.get(name); 916 return val && val.trim() ? val.trim() : ""; 917 } 918 919 function setCookie(name, value, days) { 920 if (!value) return; 921 const date = new Date(); 922 date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); 923 document.cookie = 924 name + 925 "=" + 926 encodeURIComponent(value) + 927 "; expires=" + 928 date.toUTCString() + 929 "; path=/" + 930 "; SameSite=Lax"; 931 } 932 933 function getCookie(name) { 934 const match = document.cookie.match(new RegExp("(^| )" + name + "=([^;]+)")); 935 return match ? decodeURIComponent(match[2]) : ""; 936 } 937 938 function getGclidFromGclAwCookie() { 939 // _gcl_aw looks like: _gcl_aw=GCL.<timestamp>.<gclid> 940 const match = document.cookie.match(/(?:^|;\s*)_gcl_aw=GCL\.\d+\.([^;]+)/); 941 return match ? decodeURIComponent(match[1]) : ""; 942 } 943 944 function applyGclidToForm(form) { 945 if (!form) return; 946 947 // Precedence: 948 // 1) URL param gclid 949 // 2) _gcl_aw cookie (Google Ads auto-tagging) 950 // 3) our own stored "gclid" cookie 951 const gclidFromUrl = getParam("gclid"); 952 if (gclidFromUrl) setCookie(COOKIE_NAME, gclidFromUrl, COOKIE_DAYS); 953 954 const gclidValue = gclidFromUrl || getGclidFromGclAwCookie() || getCookie(COOKIE_NAME); 955 if (!gclidValue) return; 956 957 let input = form.querySelector('input[name="gclid"]'); 958 if (!input) { 959 input = document.createElement("input"); 960 input.type = "hidden"; 961 input.name = "gclid"; 962 input.id = "gclid"; 963 input.autocomplete = "off"; 964 form.appendChild(input); 965 } 966 input.value = gclidValue; 967 } 968 969 document.addEventListener("DOMContentLoaded", function () { 970 waitForElm("form#contact-form").then(function (form) { 971 applyGclidToForm(form); 972 form.addEventListener("submit", function () { 973 applyGclidToForm(form); 974 }); 975 }); 976 }); 977 })(); 978</script>
978 979 980</div> 981 982</div> 983 984</div> 985</section> 986 987</main> 988 989<footer class="page-footer widget-section" custom-footer="true" data-page-preview-target="footer" data-section-id="15415" data-wow-delay="0s" id="section_15415" sectionable-id="772" sectionable-type="Theme"> 990 991 992 993<div class="widget-container"> 994<div class="widget html" data-widget-id="32147" data-wow-delay="0s" id="widget-32147"> 995<div class="widget-elements"> 996<div class="footer-wrap"> 997 <div class="first-section"> 998 <div class="wrap"> 999 <div class="row"> 1000 <div class="col"> 1001 <a href="/contact"> 1002 <h4>Questions?</h4> 1003 <h3>Have questions for our expert safety team?</h3> 1004 <p> 1005 <span class="text">Get in touch</span> 1006 <span class="icon"></span> 1007 </p> 1008 </a> 1009 </div> 1010 <div class="col"> 1011 <a href="/courses"> 1012 <h4>Certification Training</h4> 1013 <h3>Get the certifications you need to keep your team compliant.</h3> 1014 <p> 1015 <span class="text">Find a course</span> 1016 <span class="icon"></span> 1017 </p> 1018 </a> 1019 </div> 1020 <div class="col"> 1021 <a href="/books-materials"> 1022 <h4>Books & Materials</h4> 1023 <h3>
1023Browse our library of self-study materials, and learn at your own pace.</h3> 1024 <p> 1025 <span class="text">See Books & Materials</span> 1026 <span class="icon"></span> 1027 </p> 1028 </a> 1029 </div> 1030 </div> 1031 </div> 1032 </div> 1033 1034 <div class="second-section"> 1035 <div class="wrap"> 1036 <div class="row"> 1037 <div class="col"> 1038 <h4 style="color: white;">Products</h4> 1039 <ul> 1040 <li><a href="/courses">Courses</a></li> 1041 <li><a href="/books-materials">Books & Materials</a></li> 1042 </ul> 1043 </div> 1044 <div class="col"> 1045 <h4 style="color: white;">Industries</h4> 1046 <ul> 1047 <li><a href="/construction-safety-training">Construction & Trades</a></li> 1048 <li><a href="/workplace-safety-training">Corporate & General Workplace</a></li> 1049 <li><a href="/energy-safety-training">Energy & Utilities</a></li> 1050 <li><a href="/manufacturing-safety-training">Manufacturing & Warehousing</a></li> 1051 <li><a href="/mining-safety-training">Mining & Forestry</a></li> 1052 <li><a href="/oil-gas-safety-training">Oil & Gas</a></li> 1053 <li><a href="/hospitality-safety-training">Retail, Hospitality & Public Services</a></li> 1054 <li><a href="/transportation-safety-training">Transportation & Logistics</a></li> 1055 </ul> 1056 </div> 1057 <div class="col"> 1058 <h4 style="color: white;">Company</h4> 1059 <ul> 1060 <li><a href="/about">About</a></li> 1061 <li><a href="/train-your-team">Train Your Team</a></li> 1062 <li><a href="https://news.danatec.com/">News & Updates</a></li> 1063 <li><a href="/contact">Contact</a></li> 1064 <li><a href="/verify">Verify Certificate</a></li> 1065 <li><a class="light-blue" href="/terms">Terms of Use</a></li> 1066 <li><a class="light-blue" href="/privacy">Privacy Policy</a></li> 1067 <li><a class="light-blue" href="/refunds">Refund Policy</a></li> 1068 </ul> 1069 </div> 1070 <div class="col"> 1071 <h4 style="color: white;">Sign Up</h4> 1072 <p>Join our mailing list to learn about new course launches, industry updates, regulatory changes and more.</p> 1073 1074 <form action="https://customerioforms.com/forms/submit_action?site_id=479392e7d19153b5088d&form_id=danatec_footer_newsletter&success_url=https%3A%2F%2Fdanatec.com%2Fthank-you" 1075 method="post" 1076 id="drip-ef-802682065" 1077 class="signup-form"> 1078 1079 <div> 1080 <label for="drip-email">Email Address</label> 1081 <input type="email" id="drip-email" name="email" 1082 placeholder="Email address" value="" required autocomplete="email"> 1083 </div> 1084 1085 <div style="display: none;" aria-hidden="true"> 1086 <label for="website">Website</label> 1087 <input type="text" id="website" name="website" 1088 tabindex="-1" autocomplete="off" value=""> 1089 </div> 1090 1091 <input type="hidden" name="brand" value="Danatec"> 1092 <input type="hidden" name="brand_danatec" value="true"> 1093 <input type="hidden" name="source" value="storefront_footer_form"> 1094 <input type="hidden" name="consent_status" value="subscribed"> 1095 <input type="hidden" name="consent_source" value="danatec_footer_form"> 1096 <input type="hidden" name="consent_text" value="Sign up for Danatec news and course updates."> 1097 1098 <div> 1099 <input type="submit" value="Sign Up" data-drip-attribute="sign-up-button"> 1100 </div> 1101 </form> 1102 </div> 1103 </div> 1104 </div> 1105 </div> 1106 1107 <div class="third-section"> 1108 <div class="wrap"> 1109 <p>Learn more about:</p> 1110 <img src="https://cdn.files.rapidlms.com/view/d3/03/81/d1/9b/54/f9/94/64/72/17/f6/cb/51/68/21/original/WKT_logo_white.png" alt="We Know Training Logo"> 1111 <a href="https://weknowtraining.ca">wkt.ca</a> 1112 </div> 1113 </div> 1114</div> 1115 1116</div> 1117 1118</div> 1119<div class="widget html" data-widget-id="32275" data-wow-delay="0s" id="widget-32275"> 1120<div class="widget-elements"> 1121<div id="footer-scripts" style="width:100%;margin:0;padding:15px;margin-top:-30px;"> 1122
1122<script type="text/javascript"> 1123 const IS_ANGULAR = !!document.querySelector('[ng-app]'); 1124 1125 function waitForElm(selector) { 1126 return new Promise(resolve => { 1127 if (document.querySelector(selector)) { 1128 return resolve(document.querySelector(selector)); 1129 } 1130 const observer = new MutationObserver(mutations => { 1131 if (document.querySelector(selector)) { 1132 resolve(document.querySelector(selector)); 1133 observer.disconnect(); 1134 } 1135 }); 1136 observer.observe(document.body, { 1137 childList: true, 1138 subtree: true 1139 }); 1140 }); 1141 } 1142 1143 function debounce(func, delay) { 1144 var timeoutId; 1145 return function () { 1146 var args = arguments; 1147 if (timeoutId) { 1148 clearTimeout(timeoutId); 1149 } 1150 timeoutId = setTimeout(function () { 1151 func.apply(null, args); 1152 }, delay); 1153 }; 1154 } 1155 </script>
1155 1156 1157
1157<script type="module"> 1158 import 'slick-carousel'; 1159 var args = { 1160 prevArrow: '<div class="prev"><span class="label">Prev</span></div>', 1161 nextArrow: '<div class="next"><span class="label">Next</span></div>', 1162 dots: false, 1163 infinite: true, 1164 speed: 300, 1165 slidesToShow: 1, 1166 centerMode: false, 1167 variableWidth: true 1168 }; 1169 $('.logos-list').slick(args); 1170 $('.awards-list').slick(args); 1171 $('.testimonials .list').slick({ 1172 prevArrow: '<div class="prev"><span class="label">Prev</span></div>', 1173 nextArrow: '<div class="next"><span class="label">Next</span></div>', 1174 dots: true, 1175 }); 1176 var signUpText = $('.sign-up-options .learner-content a.toggle-review p').detach(); 1177 $('.sign-up-options a.toggle-review').remove(); 1178 $('.sign-up-options .learner-content').prepend(signUpText); 1179 $('.sign-up-options .learner-content p, .checkout .learner-content p').not('.bold').html('I need to purchase or have received an Account Activation Code from my employer to take training.'); 1180 $('.sign-up-options .tm-content p, .checkout .tm-content p').not('.bold').html('I need to purchase and assign training to people in my organization.'); 1181 </script>
1181 1182
1182<script type="text/javascript"> 1183 $('.industries .col').css({ 1184 width: "calc(33.33% - 30px)" 1185 }); 1186 $('.courses-by-topic .col').css({ 1187 width: "calc(33.33% - 30px)" 1188 }); 1189 $('.industry-value-add .col').css({ 1190 width: "calc(50% - 60px)" 1191 }); 1192 $('#section_15554 .widget.feature-product').css({ 1193 width: "calc(25% - 30px)" 1194 }).parent().wrap('<div class="products-list" />'); 1195 $('.product-discounts table th').first().html('# Licenses'); 1196 $('.product-discounts table').after('<p class="disclaimer">For additional information please contact us at 1.800.465.3366.</p>') 1197 $('.product-discounts table').before('<h3 class="title">Bulk Pricing</h3>'); 1198 </script>
1198 1199 1200
1200<script type="text/javascript"> 1201 $.get( 1202 'https://api.reviews.io/merchant/reviews?store=danatec-com', 1203 function (response) { 1204 if (typeof response === 'object' && response.hasOwnProperty('stats')) { 1205 var average_rating = response.stats.average_rating; 1206 var star_percentage = (average_rating / 5 * 100) + '%'; 1207 var total_reviews = response.stats.total_reviews; 1208 var template = '' + 1209 '<div class="star-rating" style="--star-percent:' + star_percentage + '"></div>' + 1210 '<div class="rating">' + 1211 average_rating + ' Average' + '<span class="pipe">|</span>' + total_reviews + ' Reviews' + 1212 '</div>' + 1213 '<img class="reviewsio-logo" src="https://cdn.files.rapidlms.com/view/d6/20/9a/c2/13/96/28/da/10/44/6a/8a/d0/aa/96/ee/original/reviewsio-logo.svg" alt="REVIEWS.io Logo" width="120" height="19">' + 1214 ''; 1215 $('#company-reviews').html(template); 1216 //console.log('The average rating is ' + average_rating + '.'); 1217 //console.log('The star rating is ' + starRating + '.'); 1218 } else { 1219 console.log('The response does not have the expected format.'); 1220 } 1221 } 1222 ); 1223 </script>
1223 1224 1225
1225<script type="text/javascript"> 1226 //Social Media Channels 1227 var SocialMedia = function () { 1228 var channels = [{ 1229 title: 'LinkedIn', 1230 url: 'https://www.linkedin.com/company/danatec/', 1231 icon: 'fa-linkedin' 1232 }, 1233 { 1234 title: 'Facebook', 1235 url: 'https://www.facebook.com/Danatec/', 1236 icon: 'fa-facebook' 1237 }, 1238 { 1239 title: 'Instagram', 1240 url: 'https://www.instagram.com/danatec_safety/', 1241 icon: 'fa-instagram' 1242 }, 1243 { 1244 title: 'Youtube', 1245 url: 'https://www.youtube.com/@danatec', 1246 icon: 'fa-youtube' 1247 } 1248 ]; 1249 1250 function embedSocialMedia() { 1251 var container = $('.global-nav'); 1252 var html = getSocialMediaHTML(channels); 1253 container.prepend(html); 1254 } 1255 1256 function getSocialMediaHTML(channels) { 1257 if (channels.length == 0) { 1258 return; 1259 } 1260 var html = ''; 1261 html += '<ul class="social-media">'; 1262 for (var i = 0; i < channels.length; i++) { 1263 html += '' + 1264 '<li>' + 1265 '<a href="' + channels[i].url + '" target="_blank">' + 1266 '<span class="icon">' + 1267 '<i class="fa ' + channels[i].icon + '" aria-hidden="true"></i>' + 1268 '</span>' + 1269 '<span class="text">' + channels[i].title + '</span>' + 1270 '</a>' + 1271 '</li>'; 1272 } 1273 html += '</ul>'; 1274 return html; 1275 } 1276 embedSocialMedia(); 1277 }; 1278 SocialMedia(); 1279 </script>
1279 1280 1281
1281<script> 1282 /* Change hours to day */ 1283 function hoursToDay() { 1284 1285 var course_details_list = document.querySelectorAll('.icon-label-value[label="Course Length:"]'); 1286 course_details_list.forEach(function (course_details_list_item) { 1287 1288 var course_length = course_details_list_item.querySelector('span'); 1289 var length_content = course_length.textContent; 1290 var text = length_content.trim(); 1291 var parts = text.split(" "); 1292 var time = parseInt(parts[0]); 1293 var unit = parts[1]; 1294 1295 if (unit === "hours") { 1296 if (time >= 24 && time % 24 === 0) { 1297 var days = time / 24; 1298 var daysText = days === 1 ? " day" : " days"; // Display only days if hours are divisible by 24 1299 // console.log(days + daysText); 1300 course_length.textContent = days + daysText; 1301 } else if (time >= 24 && time % 24 !== 0) { 1302 var days = Math.floor(time / 24); 1303 var remainingHours = time % 24; 1304 var hoursText = remainingHours === 0 ? "" : " " + remainingHours + " hours"; 1305 var remainingMinutes = time % 60; 1306 var minutesText = remainingMinutes === 0 ? "" : " " + remainingMinutes + " minutes"; 1307 var daysText = days === 1 ? " day" : " days"; 1308 // console.log(days + daysText + hoursText); 1309 course_length.textContent = days + daysText + hoursText; 1310 } else if (time < 24 ) { 1311 // console.log(time + " hours"); 1312 course_length.textContent = hoursText + minutesText; 1313 } 1314 } else { 1315 // console.log(time + " minutes"); 1316 course_length.textContent = time + " minutes"; 1317 } 1318 }); 1319 } 1320 1321 waitForElm('.container[product-id="8492"] .icon-label-value[label="Course Length:"] span').then(elm => { 1322 hoursToDay(); 1323 }) 1324 </script>
1324 1325 1326</div> 1327 1328</div> 1329 1330</div> 1331 1332</div> 1333<div class="copyright"><p>Copyright © 2026 Danatec Educational Services All rights reserved · RapidLMS, LearnerVerified, and the LearnerVerified double checkmark logo are trademarks of We Know Training.</p></div> 1334</footer> 1335 1336 1337</div> 1338 1339<style class="inline-css accumulated" data-layer="sections">@layer sections { 1340 #section_15549{color:inherit;background-color:inherit}#section_15549 img.section-background{filter:blur(0px)}#section_15549 .title h2{color:inherit} 1341 1342#section_15569{color:inherit;background-color:inherit}#section_15569 img.section-background{filter:blur(0px)}#section_15569 .title h2{color:inherit} 1343 1344#section_15415{color:inherit;background-color:inherit}#section_15415 img.section-background{filter:blur(0px)}#section_15415 .title h2{color:inherit} 1345 1346 1347} 1348</style><style class="inline-css accumulated" data-layer="widgets">@layer widgets { 1349 1350 1351 1352 1353 1354} 1355</style> 1356<div class="overlays-container stimulus" data-overlay-target="overlayContainer"> 1357<a class="dismiss" data-action="click->overlay#close"> 1358<i aria-hidden="true" class="fa fa-times-circle"></i> 1359</a> 1360<div class="overlay" data-overlay-target="overlay"> 1361<div class="overlay-content" data-overlay-target="contentContainer"></div> 1362</div> 1363</div> 1364
1365<script src="https://widget.reviews.io/rating-snippet/dist.js" data-cookie-consent="functionality" type="text/plain"></script>
1365 1366<link rel="stylesheet" href="https://widget.reviews.io/rating-snippet/dist.css" /> 1367 1368<!-- REDUXED Scripts -->
1369<script type="text/javascript"> 1370 $(document).ready(() => { 1371 const productContainer = document.querySelector('.container[product-id]'); 1372 const revised = document.querySelector('.product-page-revised'); 1373 const reduxed = document.querySelector('.product-page-reduxed'); 1374 const ratingWrapper = document.querySelector('.product-rating-wrapper'); 1375 const heroLeft = document.querySelector('.hero-left'); 1376 1377 if (!!reduxed) { 1378 const category = Array.from(reduxed?.classList).pop(); 1379 const summaryContainer = document.querySelector('.product-summary-container'); 1380 const listContainer = document.querySelector('.product-list-container'); 1381 1382 var summaryHtml, listHtml; 1383 switch (category) { 1384 case 'physical-product': 1385 summaryHtml = '<p>Keep critical information close at hand with our printed books and posters. These invaluable resources can help you learn on your own schedule, and keep information close by whenever you need it.</p>'; 1386 listHtml = '<ul class="checkmark"><li>Information at your fingertips</li><li>High-quality printing</li><li>Comprehensive info</li></ul>'; 1387 break; 1388 case 'instructor-led-training': 1389 summaryHtml = '<p>Learn from an instructor in real time, and get on-the-spot feedback and immediate answers with our ILT courses. With an instructor-led training course, you\'ll have access to our industry-leading instructors\' extensive real-world experience, and invaluable context about applying what you learn to actual jobsites. Ask questions, get clarity, and go beyond the textbook with ILT courses.</p>'; 1390 listHtml = '<ul class="checkmark"><li>Industry-leading instructors</li><li>Real-world experience</li><li>Immediate feedback</li></ul>'; 1391 break; 1392 case 'online-training': 1393 case 'blended-training': 1394 default: 1395 summaryHtml = '<p>Get your team the training they need in a convenient online format. This course provides comprehensive, industry-recognized training that will keep your teams safe and your business compliant. All of our courses are designed by industry experts who have decades real-world experience on busy jobsites.</p>'; 1396 listHtml = '<ul class="checkmark"><li>Industry-recognized training</li><li>Meets compliance requirements</li><li>Accessible from any device</li></ul>'; 1397 break; 1398 } 1399 1400 listContainer.innerHTML = listHtml; 1401 1402 if (summaryContainer.innerText === '') { 1403 summaryContainer.innerHTML = summaryHtml; 1404 } 1405 1406 waitForElm('.ruk-rating-snippet-count').then((starRating) => { 1407 starRating.style.color = '#f78c28'; 1408 heroLeft.prepend(ratingWrapper); 1409 }); 1410 } 1411 }); 1412</script>
vendor: 2 bytes, line 1412
1412
1413<script> 1414/* 1415DISABLED 1416document.addEventListener('DOMContentLoaded', () => { 1417 const customHTML = ` 1418 <div class="notification-bar"> 1419 <strong>Spots still available for our Defensive Driving 3 Demerit Reduction Course on June 10 in Calgary</strong><a href="https://danatec.com/products/11001-defensive-driving-course-3-demerit-reduction-alberta-only-in-person-class">sign up now > </a> 1420 </div> 1421 `; 1422 const pageMains = document.querySelectorAll('.page-main'); 1423 pageMains.forEach(mainPage => { 1424 mainPage.insertAdjacentHTML('afterbegin', customHTML); 1425 }); 1426}); 1427*/ 1428</script>
1428 1429 1430 1431 1432<!-- Custom product-list-container content -->
1433<script> 1434 $(document).ready(function () { 1435 const productContainer = document.querySelector('.container[product-id]'); 1436 const original = document.querySelector('.product-page-original'); 1437 1438 if (productContainer && original) { 1439 const productId = productContainer.getAttribute('product-id'); 1440 const productData = { 1441 9284: { 1442 list: `<ul class="checkmark"> 1443 <li>Self-paced learning, expert instruction</li> 1444 <li>Hands-on, jobsite-tested skills</li> 1445 <li>Real-time feedback from instructors</li> 1446 </ul>`, 1447 courseLength: '29 hours', 1448 }, 1449 // Electrical safety: 1450 7839: { 1451 languages: 'English, French', 1452 }, 1453 1454 // TDG Role courses: 1455 8399: { 1456 languages: 'English, French, Punjabi', 1457 }, 1458 8402: { 1459 languages: 'English, French, Punjabi', 1460 }, 1461 8400: { 1462 languages: 'English, French, Punjabi', 1463 }, 1464 8401: { 1465 languages: 'English, French, Punjabi', 1466 }, 1467 1468// ###### just add the products here and their required attributes ########## 1469 }; 1470 const product = productData[productId]; 1471 1472 const discounts = document.querySelector('.product-discounts'); 1473 console.log(discounts); 1474 if (product) { 1475 if (product.list) { 1476 // list container under price 1477 document.querySelector('.product-list-container').innerHTML = product.list; 1478 // document.querySelector('.product-list-container').innerHTML = discounts; 1479 } 1480 if (product.link) { 1481 // custom container under add to cart buttons 1482 document.querySelector('.product-links-container-gtm').innerHTML = product.link; 1483 } 1484 if (product.custom) { 1485 // custom container under product details 1486 document.querySelector('.product-custom-container').innerHTML = product.custom; 1487 } 1488 1489 1490 if (product.courseLength) { 1491 const lengthEl = document.querySelector('.product-features-container .icon-label-value:has(i.fa-clock-o) span'); 1492 if (lengthEl) { 1493 lengthEl.textContent = product.courseLength; 1494 } 1495 } 1496 1497 if (product.languages) { 1498 const languages = document.querySelector('.product-features > div:nth-child(3) > .feature-value'); 1499 if (languages) { 1500 languages.textContent = product.languages; 1501 } 1502 } 1503 } 1504 } 1505 }); 1506</script>
vendor: 1 bytes, line 1506
1506
1507<script src="https://www.termsfeed.com/public/cookie-consent/4.2.0/cookie-consent.js" charset="UTF-8" data-controller="cookie-consent" data-cookie-consent-storefront-name-value="Danatec.com" data-cookie-consent-consent-type-value="express" data-cookie-consent-page-load-consent-levels-value="["strictly-necessary"]"></script>
1507 1508 1509</body> 1510</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.